|
78767
|
2763
|
46
|
2026-05-27T12:58:58.061994+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886738061_m1.jpg...
|
PhpStorm
|
faVsco.js – laravel.log
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
17
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$params ' . PHP_EOL . print_r($params, true));
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}...
|
[{"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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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":"TextRelayServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'TextRelayServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'TextRelayServiceTest'","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":"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,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"17","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\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$params ' . PHP_EOL . print_r($params, true));\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$params ' . PHP_EOL . print_r($params, true));\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
2618200518122746620
|
-6434304657575212661
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
17
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$params ' . PHP_EOL . print_r($params, true));
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
78765
|
2763
|
45
|
2026-05-27T12:58:49.610930+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886729610_m1.jpg...
|
iTerm2
|
DEV (docker)
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
/Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SE /Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SECRET]
/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/.env.local:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/dev.json:18: "DB_ADMIN_PASSWORD" : "dgyt$rTe21-d",
/Users/lukas/jiminny/app/.env:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.vscode/settings.json:16: "password": "dgyt$rTe21-d"
/Users/lukas/jiminny/app/.env.root:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.env.root:394:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.other:14:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#[ENV_SECRET]
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop
320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep
a1718cfb Merge pull request #529 from jiminny/katranci-patch-1
74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3
0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2
4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue
220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url
543c60b8 Merge branch 'develop' into JY-19432-recall-api-url
f163a29e JY-19432 Fix formatting
6de60dd0 JY-19432 Fix formatting
78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances
2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3
d6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code
4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers
6426729b JY-20432 Set stopasgroup to false for dialers queue worker
92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities
e0796d89 Delete obsolete files
4a8b1ea2 Delete old docker build scripts before php-8 upgrade
d790e56d JY-20603 Fix formatting
fc758135 JY-20603 Move video ec2 instances to external subnet
ecb558d5 JY-20761 Spread php-app tasks over ec2 instances
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80
commit a8ba85203fb10fb793ff07a6e85efac833979335
Merge: c15e0c8201 a00d53bdd6
Author: Nikolay Ivanov <[EMAIL]>
Date: Fri May 15 10:44:44 2026 +0300
JY-18091 | Resolve conflicts
commit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1
Author: Nikolay Nikolov <[EMAIL]>
Date: Thu Apr 30 14:54:08 2026 +0300
JY-20625 | JY-20742 | Add laravel/mcp
# Conflicts:
# composer.lock
diff --git a/composer.json b/composer.json
index 02ffcc050e..89551995a1 100644
--- a/composer.json
+++ b/composer.json
@@ -113,6 +113,7 @@
"kalnoy/nestedset": "*",
"laravel/framework": "^12.28",
"laravel/helpers": "^1.7",
+ "laravel/mcp": "^0.7.0",
"laravel/passport": "^13.0",
"laravel/slack-notification-channel": "^3.4",
"laravel/tinker": "^2.10.1",
commit 431b4c096f4ad0272bac595d078871a78b510bb5
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 17:17:47 2026 +0300
JY-18091 | Downgrade composer.json
diff --git a/composer.json b/composer.json
index 5db26da2c9..baacefbd5f 100644
--- a/composer.json
+++ b/composer.json
@@ -187,20 +187,18 @@
"require-dev": {
"barryvdh/laravel-debugbar": "^3.15",
"barryvdh/laravel-ide-helper": "^3.5",
- "brianium/paratest": "^7.12",
+ "brianium/paratest": "^7.5",
"browserstack/browserstack-local": "^1.1.0",
"filp/whoops": "^2.9",
"friendsofphp/php-cs-fixer": "^3.66",
"infection/infection": "^0.29.14",
"jasonmccreary/laravel-test-assertions": "^2.5",
"larastan/larastan": "^3.1",
- "maglnet/composer-require-checker": "^4.8",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
"phpstan/phpstan": "^2.1",
- "phpunit/phpunit": "^12.0",
- "symfony/phpunit-bridge": "^7.0",
- "vimeo/psalm": "^6.5.0"
+ "phpunit/phpunit": "^11.5.50",
+ "symfony/phpunit-bridge": "^7.0"
},
"autoload": {
"classmap": [
commit 90e9b4034f665e2a8cacaf937e55abc070b5af4a
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 16:25:45 2026 +0300
JY-18091 | Changes, composer
diff --git a/composer.json b/composer.json
index 751005e37a..5db26da2c9 100644
--- a/composer.json
+++ b/composer.json
@@ -95,7 +95,7 @@
"google/apps-meet": "^0.5.1",
"guzzlehttp/guzzle": "^7.8",
"guzzlehttp/psr7": "^2.6",
- "halaxa/json-machine": "^1.3",
+ "halaxa/json-machine": "^1.2",
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20
a8ba85203f JY-18091 | Resolve conflicts
4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts
1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp
431b4c096f JY-18091 | Downgrade composer.json
90e9b4034f JY-18091 | Changes, composer
b63d6f5d1f JY-18091 | Composer changes
d017fbd8aa JY-18091 | Merge
7daa10a444 JY-18091 | Cs lint fixes
a472f51b71 JY-18091 | Update composer to support php 8.5
1162b04371 fix(security): bump dependencies (alerts #477)
0c1f2f35df JY-19957 | Update composer.lock with correct dep
574315fc12 JY-19957 | Update composer.locl
c97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade
e4e0e6d46d Merge branch 'master' into secfix/composer-20260415
7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)
4f5795d1d5 JY-20479: Remove unused dependencies
caa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download
07832f2eeb JY-20479: Transcript download PDF optimization
9f17a0f70e JY-20526: Remove Sentence breaker
4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 "^docker-update:" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \
|| grep -rA 20 "^docker-update:" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40
/Users/lukas/jiminny/app/Makefile:docker-update:
/Users/lukas/jiminny/app/Makefile- aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-up:
/Users/lukas/jiminny/app/Makefile- tmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-stop:
/Users/lukas/jiminny/app/Makefile- tmux kill-session -t jiminny_dev_ngrok
/Users/lukas/jiminny/app/Makefile-
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n "arm64v8\|/jiminny/app/qa" ~/jiminny/infrastructure/dev/docker/docker-compose.yml
8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
187d58491294 wernight/ngrok "/entrypoint.sh" 37 seconds ago Up 37 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
b433f55153b5 mariadb:11.4.5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
d09012232958 redis:5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
error: Your local changes to the following files would be overwritten by checkout:
tests/Unit/Services/Mail/TextRelayServiceTest.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M config/logging.php
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 124, done.
remote: Counting objects: 100% (123/123), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)
Receiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.
Resolving deltas: 100% (93/93), completed with 33 local objects.
From github.com:jiminny/app
23fdef5aa9..942ddbe31c master -> origin/master
a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app
96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration
a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
* [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only
+ 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)
* [new branch] master-reset-ES -> origin/master-reset-ES
Updating 23fdef5aa9..942ddbe31c
Fast-forward
contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------
front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----
front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--
front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-
front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------
routes/api_v2.php | 6 +++---
tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------
7 files changed, 61 insertions(+), 46 deletions(-)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env
#IMAGE_TAG="latest"
IMAGE_TAG="arm64v8-latest"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 "lamp:" | grep image
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
docker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest "docker-php-entrypoi…" lamp 3 minutes ago Exited (2) 3 minutes ago
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
87804ee14786 wernight/ngrok "/entrypoint.sh" 18 minutes ago Up 53 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
bc04ffad01b2 mariadb:11.4.5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
e985cd5cfbf7 redis:5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
Filter, search, and stream logs from all your Compose services
in one place with Docker Desktop's Logs view. [URL_WITH_CREDENTIALS]
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2
Learn more at [URL_WITH_CREDENTIALS] php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 9.84ms DONE
cache [PASSWORD_DOTS] 69.91ms DONE
compiled [PASSWORD_DOTS] 2.96ms DONE
events [PASSWORD_DOTS] 1.19ms DONE
routes [PASSWORD_DOTS] 0.65ms DONE
views [PASSWORD_DOTS] 4.44ms DONE
worker-crm-update:worker-crm-update_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-download:worker-download_00: stopped
worker-nudges:worker-nudges_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-emails:worker-emails_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan tinker
Psy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman
New PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`
> app(\Jiminny\Services\Mail\TextRelayService::class)->sync();
= []
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 3.45ms DONE
cache [PASSWORD_DOTS] 10.26ms DONE
compiled [PASSWORD_DOTS] 1.84ms DONE
events [PASSWORD_DOTS] 0.72ms DONE
routes [PASSWORD_DOTS] 6.62ms DONE
views [PASSWORD_DOTS] 4.33ms DONE
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-download:worker-download_00: stopped
worker-emails:worker-emails_00: stopped
worker-nudges:worker-nudges_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-conferences:worker-conferences_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan mailbox:text-relay:sync
Relayed 0 message(s).
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 2.50ms DONE
cache [PASSWORD_DOTS] 9.59ms DONE
compiled [PASSWORD_DOTS] 1.39ms DONE
events [PASSWORD_DOTS] 1.06ms DONE
routes [PASSWORD_DOTS] 1.07ms DONE
views [PASSWORD_DOTS] 4.84ms DONE
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-crm-update:worker-crm-update_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-download:worker-download_00: stopped
worker:worker_00: stopped
worker-nudges:worker-nudges_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
worker-emails:worker-emails_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan mailbox:text-relay:sync
DOCKER
Close Tab
DEV (docker)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ec2-user@ip-10-30-129-190:~ (nc)
Close Tab
ec2-user@ip-10-30-140-255:~ (-zsh)
Close Tab
⌥⌘1
DEV (docker)...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"/Users/lukas/jiminny/app/.env.nikilocal:22:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/.env.local:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/dev.json:18: \"DB_ADMIN_PASSWORD\" : \"dgyt$rTe21-d\",\n/Users/lukas/jiminny/app/.env:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.vscode/settings.json:16: \"password\": \"dgyt$rTe21-d\"\n/Users/lukas/jiminny/app/.env.root:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.root:394:DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.other:14:DB_PASSWORD=dgyt\\$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop\n320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep\na1718cfb Merge pull request #529 from jiminny/katranci-patch-1\n74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3\n0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2\n4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue\n220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url\n543c60b8 Merge branch 'develop' into JY-19432-recall-api-url\nf163a29e JY-19432 Fix formatting\n6de60dd0 JY-19432 Fix formatting\n78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances\n2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3\nd6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code\n4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers\n6426729b JY-20432 Set stopasgroup to false for dialers queue worker\n92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities\ne0796d89 Delete obsolete files\n4a8b1ea2 Delete old docker build scripts before php-8 upgrade\nd790e56d JY-20603 Fix formatting\nfc758135 JY-20603 Move video ec2 instances to external subnet\necb558d5 JY-20761 Spread php-app tasks over ec2 instances\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80\n\ncommit a8ba85203fb10fb793ff07a6e85efac833979335\nMerge: c15e0c8201 a00d53bdd6\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Fri May 15 10:44:44 2026 +0300\n\n JY-18091 | Resolve conflicts\n\ncommit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1\nAuthor: Nikolay Nikolov <nikolay.nikolov@jiminny.com>\nDate: Thu Apr 30 14:54:08 2026 +0300\n\n JY-20625 | JY-20742 | Add laravel/mcp\n \n # Conflicts:\n # composer.lock\n\ndiff --git a/composer.json b/composer.json\nindex 02ffcc050e..89551995a1 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -113,6 +113,7 @@\n \"kalnoy/nestedset\": \"*\",\n \"laravel/framework\": \"^12.28\",\n \"laravel/helpers\": \"^1.7\",\n+ \"laravel/mcp\": \"^0.7.0\",\n \"laravel/passport\": \"^13.0\",\n \"laravel/slack-notification-channel\": \"^3.4\",\n \"laravel/tinker\": \"^2.10.1\",\n\ncommit 431b4c096f4ad0272bac595d078871a78b510bb5\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 17:17:47 2026 +0300\n\n JY-18091 | Downgrade composer.json\n\ndiff --git a/composer.json b/composer.json\nindex 5db26da2c9..baacefbd5f 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -187,20 +187,18 @@\n \"require-dev\": {\n \"barryvdh/laravel-debugbar\": \"^3.15\",\n \"barryvdh/laravel-ide-helper\": \"^3.5\",\n- \"brianium/paratest\": \"^7.12\",\n+ \"brianium/paratest\": \"^7.5\",\n \"browserstack/browserstack-local\": \"^1.1.0\",\n \"filp/whoops\": \"^2.9\",\n \"friendsofphp/php-cs-fixer\": \"^3.66\",\n \"infection/infection\": \"^0.29.14\",\n \"jasonmccreary/laravel-test-assertions\": \"^2.5\",\n \"larastan/larastan\": \"^3.1\",\n- \"maglnet/composer-require-checker\": \"^4.8\",\n \"mockery/mockery\": \"^1.6\",\n \"nunomaduro/collision\": \"^8.6\",\n \"phpstan/phpstan\": \"^2.1\",\n- \"phpunit/phpunit\": \"^12.0\",\n- \"symfony/phpunit-bridge\": \"^7.0\",\n- \"vimeo/psalm\": \"^6.5.0\"\n+ \"phpunit/phpunit\": \"^11.5.50\",\n+ \"symfony/phpunit-bridge\": \"^7.0\"\n },\n \"autoload\": {\n \"classmap\": [\n\ncommit 90e9b4034f665e2a8cacaf937e55abc070b5af4a\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 16:25:45 2026 +0300\n\n JY-18091 | Changes, composer\n\ndiff --git a/composer.json b/composer.json\nindex 751005e37a..5db26da2c9 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -95,7 +95,7 @@\n \"google/apps-meet\": \"^0.5.1\",\n \"guzzlehttp/guzzle\": \"^7.8\",\n \"guzzlehttp/psr7\": \"^2.6\",\n- \"halaxa/json-machine\": \"^1.3\",\n+ \"halaxa/json-machine\": \"^1.2\",\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20\n\na8ba85203f JY-18091 | Resolve conflicts\n4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts\n1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp\n431b4c096f JY-18091 | Downgrade composer.json\n90e9b4034f JY-18091 | Changes, composer\nb63d6f5d1f JY-18091 | Composer changes\nd017fbd8aa JY-18091 | Merge\n7daa10a444 JY-18091 | Cs lint fixes\na472f51b71 JY-18091 | Update composer to support php 8.5\n1162b04371 fix(security): bump dependencies (alerts #477)\n0c1f2f35df JY-19957 | Update composer.lock with correct dep\n574315fc12 JY-19957 | Update composer.locl\nc97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade\ne4e0e6d46d Merge branch 'master' into secfix/composer-20260415\n7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)\n4f5795d1d5 JY-20479: Remove unused dependencies\ncaa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download\n07832f2eeb JY-20479: Transcript download PDF optimization\n9f17a0f70e JY-20526: Remove Sentence breaker\n4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 \"^docker-update:\" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \\\n || grep -rA 20 \"^docker-update:\" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40\n/Users/lukas/jiminny/app/Makefile:docker-update:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\taws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-up:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-stop:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux kill-session -t jiminny_dev_ngrok\n/Users/lukas/jiminny/app/Makefile-\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n \"arm64v8\\|/jiminny/app/qa\" ~/jiminny/infrastructure/dev/docker/docker-compose.yml\n8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 37 seconds ago Up 37 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n187d58491294 wernight/ngrok \"/entrypoint.sh\" 37 seconds ago Up 37 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nb433f55153b5 mariadb:11.4.5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\n207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 37 seconds ago Up 37 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nd09012232958 redis:5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Services/Mail/TextRelayServiceTest.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nSwitched to branch 'master'\nYour branch is up to date with 'origin/master'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 124, done.\nremote: Counting objects: 100% (123/123), done.\nremote: Compressing objects: 100% (32/32), done.\nremote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)\nReceiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.\nResolving deltas: 100% (93/93), completed with 33 local objects.\nFrom github.com:jiminny/app\n 23fdef5aa9..942ddbe31c master -> origin/master\n a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app\n 96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration\n a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details\n * [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only\n + 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)\n * [new branch] master-reset-ES -> origin/master-reset-ES\nUpdating 23fdef5aa9..942ddbe31c\nFast-forward\n contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------\n front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----\n front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--\n front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-\n front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------\n routes/api_v2.php | 6 +++---\n tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------\n 7 files changed, 61 insertions(+), 46 deletions(-)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\nphp-8.5: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\narm64v8-php-8.5: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env\n#IMAGE_TAG=\"latest\"\nIMAGE_TAG=\"arm64v8-latest\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 \"lamp:\" | grep image\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \ndocker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest \"docker-php-entrypoi…\" lamp 3 minutes ago Exited (2) 3 minutes ago \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\nlatest: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\narm64v8-latest: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\nff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 18 minutes ago Up 53 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n87804ee14786 wernight/ngrok \"/entrypoint.sh\" 18 minutes ago Up 53 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nbc04ffad01b2 mariadb:11.4.5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\ne985cd5cfbf7 redis:5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\n121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 18 minutes ago Up 53 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\n Filter, search, and stream logs from all your Compose services\n in one place with Docker Desktop's Logs view. docker-desktop://dashboard/logs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\nroot@docker_lamp_1:/home/jiminny# ^C\nroot@docker_lamp_1:/home/jiminny# \nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entity) $ dev\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> exit\n\n INFO Goodbye.\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 9.84ms DONE\n cache ............................................................................................................................... 69.91ms DONE\n compiled ............................................................................................................................. 2.96ms DONE\n events ............................................................................................................................... 1.19ms DONE\n routes ............................................................................................................................... 0.65ms DONE\n views ................................................................................................................................ 4.44ms DONE\n\nworker-crm-update:worker-crm-update_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-download:worker-download_00: stopped\nworker-nudges:worker-nudges_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> app(\\Jiminny\\Services\\Mail\\TextRelayService::class)->sync();\n\n= []\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 3.45ms DONE\n cache ............................................................................................................................... 10.26ms DONE\n compiled ............................................................................................................................. 1.84ms DONE\n events ............................................................................................................................... 0.72ms DONE\n routes ............................................................................................................................... 6.62ms DONE\n views ................................................................................................................................ 4.33ms DONE\n\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan mailbox:text-relay:sync\nRelayed 0 message(s).\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 2.50ms DONE\n cache ................................................................................................................................ 9.59ms DONE\n compiled ............................................................................................................................. 1.39ms DONE\n events ............................................................................................................................... 1.06ms DONE\n routes ............................................................................................................................... 1.07ms DONE\n views ................................................................................................................................ 4.84ms DONE\n\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-download:worker-download_00: stopped\nworker:worker_00: stopped\nworker-nudges:worker-nudges_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-emails:worker-emails_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan mailbox:text-relay:sync","depth":4,"on_screen":true,"value":"/Users/lukas/jiminny/app/.env.nikilocal:22:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/.env.local:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/dev.json:18: \"DB_ADMIN_PASSWORD\" : \"dgyt$rTe21-d\",\n/Users/lukas/jiminny/app/.env:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.vscode/settings.json:16: \"password\": \"dgyt$rTe21-d\"\n/Users/lukas/jiminny/app/.env.root:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.root:394:DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.other:14:DB_PASSWORD=dgyt\\$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop\n320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep\na1718cfb Merge pull request #529 from jiminny/katranci-patch-1\n74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3\n0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2\n4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue\n220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url\n543c60b8 Merge branch 'develop' into JY-19432-recall-api-url\nf163a29e JY-19432 Fix formatting\n6de60dd0 JY-19432 Fix formatting\n78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances\n2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3\nd6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code\n4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers\n6426729b JY-20432 Set stopasgroup to false for dialers queue worker\n92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities\ne0796d89 Delete obsolete files\n4a8b1ea2 Delete old docker build scripts before php-8 upgrade\nd790e56d JY-20603 Fix formatting\nfc758135 JY-20603 Move video ec2 instances to external subnet\necb558d5 JY-20761 Spread php-app tasks over ec2 instances\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80\n\ncommit a8ba85203fb10fb793ff07a6e85efac833979335\nMerge: c15e0c8201 a00d53bdd6\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Fri May 15 10:44:44 2026 +0300\n\n JY-18091 | Resolve conflicts\n\ncommit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1\nAuthor: Nikolay Nikolov <nikolay.nikolov@jiminny.com>\nDate: Thu Apr 30 14:54:08 2026 +0300\n\n JY-20625 | JY-20742 | Add laravel/mcp\n \n # Conflicts:\n # composer.lock\n\ndiff --git a/composer.json b/composer.json\nindex 02ffcc050e..89551995a1 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -113,6 +113,7 @@\n \"kalnoy/nestedset\": \"*\",\n \"laravel/framework\": \"^12.28\",\n \"laravel/helpers\": \"^1.7\",\n+ \"laravel/mcp\": \"^0.7.0\",\n \"laravel/passport\": \"^13.0\",\n \"laravel/slack-notification-channel\": \"^3.4\",\n \"laravel/tinker\": \"^2.10.1\",\n\ncommit 431b4c096f4ad0272bac595d078871a78b510bb5\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 17:17:47 2026 +0300\n\n JY-18091 | Downgrade composer.json\n\ndiff --git a/composer.json b/composer.json\nindex 5db26da2c9..baacefbd5f 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -187,20 +187,18 @@\n \"require-dev\": {\n \"barryvdh/laravel-debugbar\": \"^3.15\",\n \"barryvdh/laravel-ide-helper\": \"^3.5\",\n- \"brianium/paratest\": \"^7.12\",\n+ \"brianium/paratest\": \"^7.5\",\n \"browserstack/browserstack-local\": \"^1.1.0\",\n \"filp/whoops\": \"^2.9\",\n \"friendsofphp/php-cs-fixer\": \"^3.66\",\n \"infection/infection\": \"^0.29.14\",\n \"jasonmccreary/laravel-test-assertions\": \"^2.5\",\n \"larastan/larastan\": \"^3.1\",\n- \"maglnet/composer-require-checker\": \"^4.8\",\n \"mockery/mockery\": \"^1.6\",\n \"nunomaduro/collision\": \"^8.6\",\n \"phpstan/phpstan\": \"^2.1\",\n- \"phpunit/phpunit\": \"^12.0\",\n- \"symfony/phpunit-bridge\": \"^7.0\",\n- \"vimeo/psalm\": \"^6.5.0\"\n+ \"phpunit/phpunit\": \"^11.5.50\",\n+ \"symfony/phpunit-bridge\": \"^7.0\"\n },\n \"autoload\": {\n \"classmap\": [\n\ncommit 90e9b4034f665e2a8cacaf937e55abc070b5af4a\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 16:25:45 2026 +0300\n\n JY-18091 | Changes, composer\n\ndiff --git a/composer.json b/composer.json\nindex 751005e37a..5db26da2c9 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -95,7 +95,7 @@\n \"google/apps-meet\": \"^0.5.1\",\n \"guzzlehttp/guzzle\": \"^7.8\",\n \"guzzlehttp/psr7\": \"^2.6\",\n- \"halaxa/json-machine\": \"^1.3\",\n+ \"halaxa/json-machine\": \"^1.2\",\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20\n\na8ba85203f JY-18091 | Resolve conflicts\n4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts\n1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp\n431b4c096f JY-18091 | Downgrade composer.json\n90e9b4034f JY-18091 | Changes, composer\nb63d6f5d1f JY-18091 | Composer changes\nd017fbd8aa JY-18091 | Merge\n7daa10a444 JY-18091 | Cs lint fixes\na472f51b71 JY-18091 | Update composer to support php 8.5\n1162b04371 fix(security): bump dependencies (alerts #477)\n0c1f2f35df JY-19957 | Update composer.lock with correct dep\n574315fc12 JY-19957 | Update composer.locl\nc97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade\ne4e0e6d46d Merge branch 'master' into secfix/composer-20260415\n7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)\n4f5795d1d5 JY-20479: Remove unused dependencies\ncaa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download\n07832f2eeb JY-20479: Transcript download PDF optimization\n9f17a0f70e JY-20526: Remove Sentence breaker\n4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 \"^docker-update:\" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \\\n || grep -rA 20 \"^docker-update:\" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40\n/Users/lukas/jiminny/app/Makefile:docker-update:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\taws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-up:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-stop:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux kill-session -t jiminny_dev_ngrok\n/Users/lukas/jiminny/app/Makefile-\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n \"arm64v8\\|/jiminny/app/qa\" ~/jiminny/infrastructure/dev/docker/docker-compose.yml\n8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 37 seconds ago Up 37 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n187d58491294 wernight/ngrok \"/entrypoint.sh\" 37 seconds ago Up 37 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nb433f55153b5 mariadb:11.4.5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\n207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 37 seconds ago Up 37 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nd09012232958 redis:5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Services/Mail/TextRelayServiceTest.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nSwitched to branch 'master'\nYour branch is up to date with 'origin/master'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 124, done.\nremote: Counting objects: 100% (123/123), done.\nremote: Compressing objects: 100% (32/32), done.\nremote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)\nReceiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.\nResolving deltas: 100% (93/93), completed with 33 local objects.\nFrom github.com:jiminny/app\n 23fdef5aa9..942ddbe31c master -> origin/master\n a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app\n 96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration\n a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details\n * [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only\n + 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)\n * [new branch] master-reset-ES -> origin/master-reset-ES\nUpdating 23fdef5aa9..942ddbe31c\nFast-forward\n contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------\n front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----\n front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--\n front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-\n front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------\n routes/api_v2.php | 6 +++---\n tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------\n 7 files changed, 61 insertions(+), 46 deletions(-)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\nphp-8.5: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\narm64v8-php-8.5: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env\n#IMAGE_TAG=\"latest\"\nIMAGE_TAG=\"arm64v8-latest\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 \"lamp:\" | grep image\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \ndocker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest \"docker-php-entrypoi…\" lamp 3 minutes ago Exited (2) 3 minutes ago \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\nlatest: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\narm64v8-latest: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\nff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 18 minutes ago Up 53 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n87804ee14786 wernight/ngrok \"/entrypoint.sh\" 18 minutes ago Up 53 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nbc04ffad01b2 mariadb:11.4.5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\ne985cd5cfbf7 redis:5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\n121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 18 minutes ago Up 53 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\n Filter, search, and stream logs from all your Compose services\n in one place with Docker Desktop's Logs view. docker-desktop://dashboard/logs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\nroot@docker_lamp_1:/home/jiminny# ^C\nroot@docker_lamp_1:/home/jiminny# \nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entity) $ dev\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> exit\n\n INFO Goodbye.\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 9.84ms DONE\n cache ............................................................................................................................... 69.91ms DONE\n compiled ............................................................................................................................. 2.96ms DONE\n events ............................................................................................................................... 1.19ms DONE\n routes ............................................................................................................................... 0.65ms DONE\n views ................................................................................................................................ 4.44ms DONE\n\nworker-crm-update:worker-crm-update_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-download:worker-download_00: stopped\nworker-nudges:worker-nudges_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> app(\\Jiminny\\Services\\Mail\\TextRelayService::class)->sync();\n\n= []\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 3.45ms DONE\n cache ............................................................................................................................... 10.26ms DONE\n compiled ............................................................................................................................. 1.84ms DONE\n events ............................................................................................................................... 0.72ms DONE\n routes ............................................................................................................................... 6.62ms DONE\n views ................................................................................................................................ 4.33ms DONE\n\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan mailbox:text-relay:sync\nRelayed 0 message(s).\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 2.50ms DONE\n cache ................................................................................................................................ 9.59ms DONE\n compiled ............................................................................................................................. 1.39ms DONE\n events ............................................................................................................................... 1.06ms DONE\n routes ............................................................................................................................... 1.07ms DONE\n views ................................................................................................................................ 4.84ms DONE\n\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-download:worker-download_00: stopped\nworker:worker_00: stopped\nworker-nudges:worker-nudges_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-emails:worker-emails_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan mailbox:text-relay:sync","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (docker)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"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.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"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.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-129-190:~ (nc)","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"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.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-140-255:~ (-zsh)","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"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.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"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.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"DEV (docker)","depth":1,"bounds":{"left":0.46875,"top":0.033333335,"width":0.0625,"height":0.017777778},"on_screen":true,"role_description":"text"}]...
|
1093331350172892046
|
-5698040793269462310
|
visual_change
|
accessibility
|
NULL
|
/Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SE /Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SECRET]
/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/.env.local:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/dev.json:18: "DB_ADMIN_PASSWORD" : "dgyt$rTe21-d",
/Users/lukas/jiminny/app/.env:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.vscode/settings.json:16: "password": "dgyt$rTe21-d"
/Users/lukas/jiminny/app/.env.root:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.env.root:394:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.other:14:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#[ENV_SECRET]
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop
320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep
a1718cfb Merge pull request #529 from jiminny/katranci-patch-1
74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3
0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2
4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue
220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url
543c60b8 Merge branch 'develop' into JY-19432-recall-api-url
f163a29e JY-19432 Fix formatting
6de60dd0 JY-19432 Fix formatting
78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances
2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3
d6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code
4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers
6426729b JY-20432 Set stopasgroup to false for dialers queue worker
92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities
e0796d89 Delete obsolete files
4a8b1ea2 Delete old docker build scripts before php-8 upgrade
d790e56d JY-20603 Fix formatting
fc758135 JY-20603 Move video ec2 instances to external subnet
ecb558d5 JY-20761 Spread php-app tasks over ec2 instances
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80
commit a8ba85203fb10fb793ff07a6e85efac833979335
Merge: c15e0c8201 a00d53bdd6
Author: Nikolay Ivanov <[EMAIL]>
Date: Fri May 15 10:44:44 2026 +0300
JY-18091 | Resolve conflicts
commit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1
Author: Nikolay Nikolov <[EMAIL]>
Date: Thu Apr 30 14:54:08 2026 +0300
JY-20625 | JY-20742 | Add laravel/mcp
# Conflicts:
# composer.lock
diff --git a/composer.json b/composer.json
index 02ffcc050e..89551995a1 100644
--- a/composer.json
+++ b/composer.json
@@ -113,6 +113,7 @@
"kalnoy/nestedset": "*",
"laravel/framework": "^12.28",
"laravel/helpers": "^1.7",
+ "laravel/mcp": "^0.7.0",
"laravel/passport": "^13.0",
"laravel/slack-notification-channel": "^3.4",
"laravel/tinker": "^2.10.1",
commit 431b4c096f4ad0272bac595d078871a78b510bb5
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 17:17:47 2026 +0300
JY-18091 | Downgrade composer.json
diff --git a/composer.json b/composer.json
index 5db26da2c9..baacefbd5f 100644
--- a/composer.json
+++ b/composer.json
@@ -187,20 +187,18 @@
"require-dev": {
"barryvdh/laravel-debugbar": "^3.15",
"barryvdh/laravel-ide-helper": "^3.5",
- "brianium/paratest": "^7.12",
+ "brianium/paratest": "^7.5",
"browserstack/browserstack-local": "^1.1.0",
"filp/whoops": "^2.9",
"friendsofphp/php-cs-fixer": "^3.66",
"infection/infection": "^0.29.14",
"jasonmccreary/laravel-test-assertions": "^2.5",
"larastan/larastan": "^3.1",
- "maglnet/composer-require-checker": "^4.8",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
"phpstan/phpstan": "^2.1",
- "phpunit/phpunit": "^12.0",
- "symfony/phpunit-bridge": "^7.0",
- "vimeo/psalm": "^6.5.0"
+ "phpunit/phpunit": "^11.5.50",
+ "symfony/phpunit-bridge": "^7.0"
},
"autoload": {
"classmap": [
commit 90e9b4034f665e2a8cacaf937e55abc070b5af4a
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 16:25:45 2026 +0300
JY-18091 | Changes, composer
diff --git a/composer.json b/composer.json
index 751005e37a..5db26da2c9 100644
--- a/composer.json
+++ b/composer.json
@@ -95,7 +95,7 @@
"google/apps-meet": "^0.5.1",
"guzzlehttp/guzzle": "^7.8",
"guzzlehttp/psr7": "^2.6",
- "halaxa/json-machine": "^1.3",
+ "halaxa/json-machine": "^1.2",
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20
a8ba85203f JY-18091 | Resolve conflicts
4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts
1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp
431b4c096f JY-18091 | Downgrade composer.json
90e9b4034f JY-18091 | Changes, composer
b63d6f5d1f JY-18091 | Composer changes
d017fbd8aa JY-18091 | Merge
7daa10a444 JY-18091 | Cs lint fixes
a472f51b71 JY-18091 | Update composer to support php 8.5
1162b04371 fix(security): bump dependencies (alerts #477)
0c1f2f35df JY-19957 | Update composer.lock with correct dep
574315fc12 JY-19957 | Update composer.locl
c97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade
e4e0e6d46d Merge branch 'master' into secfix/composer-20260415
7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)
4f5795d1d5 JY-20479: Remove unused dependencies
caa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download
07832f2eeb JY-20479: Transcript download PDF optimization
9f17a0f70e JY-20526: Remove Sentence breaker
4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 "^docker-update:" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \
|| grep -rA 20 "^docker-update:" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40
/Users/lukas/jiminny/app/Makefile:docker-update:
/Users/lukas/jiminny/app/Makefile- aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-up:
/Users/lukas/jiminny/app/Makefile- tmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-stop:
/Users/lukas/jiminny/app/Makefile- tmux kill-session -t jiminny_dev_ngrok
/Users/lukas/jiminny/app/Makefile-
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n "arm64v8\|/jiminny/app/qa" ~/jiminny/infrastructure/dev/docker/docker-compose.yml
8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
187d58491294 wernight/ngrok "/entrypoint.sh" 37 seconds ago Up 37 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
b433f55153b5 mariadb:11.4.5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
d09012232958 redis:5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
error: Your local changes to the following files would be overwritten by checkout:
tests/Unit/Services/Mail/TextRelayServiceTest.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M config/logging.php
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 124, done.
remote: Counting objects: 100% (123/123), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)
Receiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.
Resolving deltas: 100% (93/93), completed with 33 local objects.
From github.com:jiminny/app
23fdef5aa9..942ddbe31c master -> origin/master
a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app
96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration
a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
* [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only
+ 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)
* [new branch] master-reset-ES -> origin/master-reset-ES
Updating 23fdef5aa9..942ddbe31c
Fast-forward
contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------
front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----
front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--
front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-
front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------
routes/api_v2.php | 6 +++---
tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------
7 files changed, 61 insertions(+), 46 deletions(-)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env
#IMAGE_TAG="latest"
IMAGE_TAG="arm64v8-latest"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 "lamp:" | grep image
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
docker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest "docker-php-entrypoi…" lamp 3 minutes ago Exited (2) 3 minutes ago
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
87804ee14786 wernight/ngrok "/entrypoint.sh" 18 minutes ago Up 53 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
bc04ffad01b2 mariadb:11.4.5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
e985cd5cfbf7 redis:5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
Filter, search, and stream logs from all your Compose services
in one place with Docker Desktop's Logs view. [URL_WITH_CREDENTIALS]
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2
Learn more at [URL_WITH_CREDENTIALS] php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 9.84ms DONE
cache [PASSWORD_DOTS] 69.91ms DONE
compiled [PASSWORD_DOTS] 2.96ms DONE
events [PASSWORD_DOTS] 1.19ms DONE
routes [PASSWORD_DOTS] 0.65ms DONE
views [PASSWORD_DOTS] 4.44ms DONE
worker-crm-update:worker-crm-update_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-download:worker-download_00: stopped
worker-nudges:worker-nudges_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-emails:worker-emails_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan tinker
Psy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman
New PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`
> app(\Jiminny\Services\Mail\TextRelayService::class)->sync();
= []
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 3.45ms DONE
cache [PASSWORD_DOTS] 10.26ms DONE
compiled [PASSWORD_DOTS] 1.84ms DONE
events [PASSWORD_DOTS] 0.72ms DONE
routes [PASSWORD_DOTS] 6.62ms DONE
views [PASSWORD_DOTS] 4.33ms DONE
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-download:worker-download_00: stopped
worker-emails:worker-emails_00: stopped
worker-nudges:worker-nudges_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-conferences:worker-conferences_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan mailbox:text-relay:sync
Relayed 0 message(s).
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 2.50ms DONE
cache [PASSWORD_DOTS] 9.59ms DONE
compiled [PASSWORD_DOTS] 1.39ms DONE
events [PASSWORD_DOTS] 1.06ms DONE
routes [PASSWORD_DOTS] 1.07ms DONE
views [PASSWORD_DOTS] 4.84ms DONE
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-crm-update:worker-crm-update_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-download:worker-download_00: stopped
worker:worker_00: stopped
worker-nudges:worker-nudges_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
worker-emails:worker-emails_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan mailbox:text-relay:sync
DOCKER
Close Tab
DEV (docker)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ec2-user@ip-10-30-129-190:~ (nc)
Close Tab
ec2-user@ip-10-30-140-255:~ (-zsh)
Close Tab
⌥⌘1
DEV (docker)...
|
78762
|
NULL
|
NULL
|
NULL
|
|
78766
|
2764
|
51
|
2026-05-27T12:58:48.302892+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886728302_m2.jpg...
|
iTerm2
|
DEV (docker)
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
rnostolVievNewestoCoodRefactorHunloolFv faVsco.is$ rnostolVievNewestoCoodRefactorHunloolFv faVsco.is$ JY-20915-fix-missing-header-text-relayProject(C) Kernelphp© SyncMailbox.phpphe logos.phgpp malionophe maxio.phpppmep.onoprp medta-sueamino.onophe prophet-al.phpppqueue.onpppsalestorce.ongppsamiz.oneweeetnoonopho view.ohopho webhook-sarver.ono>e contnt>M databast>e doce>e tronteend>Blang># node_modules library root>BphpstanSemihiaS IMrocmirnochvimrmitosphp api.phpphp api-v2.phpppconsole.ongpp customer apronpphe embedded.phpwPneaith.ohpww scim.ohpwpupro.ectedweb.ongppweb.ohoppwebhook.ono>Mscriotey Mstomad>Uapp→ demuanr>M frameworkcitionoreOlaudio war= custom ioalDockerfileTextRelayServiceTest.php$ !11211311511g117118119122E B= hubspot-journal-pollllogchounit.xmisltttisphp fiminny.phg.env.production₴.enclass TextRelayService=A1A1A Vstory(6oogle6mail Sservice): arraykey: 'jiminny.google text relay topic'):che:..et sropic)histony stored. WatchMai 1boxEvents nust not have run vet :false)(wwosrerreshhstorw.othtoc" => 'messageAdded",Id' = Shistonyidlokenns i'pagetoken' = SpageToken:te \Support \Facades Log::channel( channel: 'custon channel')-›info(*Sparams' . PHP EOL . print r(Sparams.esponse = Sservice-›users history->ListUsersHistory9( key: ""iminny.google text user')tHistoryPoint(Stopic, (dnt) ShistoryResponse-shistoryId):oryResponse->getHistoryo) 4ages = array nerge(Smessages, ShistoryResponse-›getHistory)=Token = ShistoryResponse->getNextPageTokenO=eption $e) {nu messao(TextRelavSerwicel Fafled to fetch Gaafl. hictory". fntsion" => Se->actMessaocotHistoryPoint(string Stopic, int ShistoryPoint): Carbon(...oP vico L/ Moy 10:00.40TextRelayServiceTest= laravel.log X SF (iminny@localhost)A console (STAGINGHSJocal jiminny@blocalhost)# console (PRont& console (EU)aer henseictcan I test it locally first. if I place env from stagingYes. The service relies on a tew thinas vou'd need in place1. Credentials file The constructor expects storage/text-relay.ison (a Google service account JSON key file)Gmbtrom sthaind and oince it there2. .env values to copy from stagingGOOGLE TEXTUSERECOOGLE TEXT HOSTGOOGLE TEXT RELAY TOPICDEPLOY REGION:the cnail mailbox address# e.g. txt.jiminny.com or txt.staging.jiminny.comaeu or us3. Run the svnc manualiv vin tinker tinside docker 1aeo 1%b bashaegdocker exec -it docker_lamp_1 php artisan tinkerapp(\Jiminny\Services\Ma1l\TextRelayService::class)-sync():Caveat: The service reads from Gmail history and dispatches jobs to the queue. If you don't want it to actuallsend SMS, make sure QUEUE_CONNECTICN»sync is not set (or use a test queue), or just call isForCurrentEnvironntioh.Ssvc = new class extends \Jiminny\Services\Mail\TextRelayService & public function _construct(som Serviceassvc-soctServicelconttatainny.googletex)# then sinsoectsasg= sonailService-susers_messages-sget(config(*iminty.google text user'), *THE_MESSAGE ID*)collect(5-s0-20etPayload()-soetWeaders())-soluck("value"thut wey von can Mrity whht handare tra nehhilm oraeset do ttat mactsod alote tha uill evoc rineAsk anything (XoL)- @ eodeAdhotvauaoae lkminutas sodP4 s...
|
NULL
|
6127453767204072471
|
NULL
|
click
|
ocr
|
NULL
|
rnostolVievNewestoCoodRefactorHunloolFv faVsco.is$ rnostolVievNewestoCoodRefactorHunloolFv faVsco.is$ JY-20915-fix-missing-header-text-relayProject(C) Kernelphp© SyncMailbox.phpphe logos.phgpp malionophe maxio.phpppmep.onoprp medta-sueamino.onophe prophet-al.phpppqueue.onpppsalestorce.ongppsamiz.oneweeetnoonopho view.ohopho webhook-sarver.ono>e contnt>M databast>e doce>e tronteend>Blang># node_modules library root>BphpstanSemihiaS IMrocmirnochvimrmitosphp api.phpphp api-v2.phpppconsole.ongpp customer apronpphe embedded.phpwPneaith.ohpww scim.ohpwpupro.ectedweb.ongppweb.ohoppwebhook.ono>Mscriotey Mstomad>Uapp→ demuanr>M frameworkcitionoreOlaudio war= custom ioalDockerfileTextRelayServiceTest.php$ !11211311511g117118119122E B= hubspot-journal-pollllogchounit.xmisltttisphp fiminny.phg.env.production₴.enclass TextRelayService=A1A1A Vstory(6oogle6mail Sservice): arraykey: 'jiminny.google text relay topic'):che:..et sropic)histony stored. WatchMai 1boxEvents nust not have run vet :false)(wwosrerreshhstorw.othtoc" => 'messageAdded",Id' = Shistonyidlokenns i'pagetoken' = SpageToken:te \Support \Facades Log::channel( channel: 'custon channel')-›info(*Sparams' . PHP EOL . print r(Sparams.esponse = Sservice-›users history->ListUsersHistory9( key: ""iminny.google text user')tHistoryPoint(Stopic, (dnt) ShistoryResponse-shistoryId):oryResponse->getHistoryo) 4ages = array nerge(Smessages, ShistoryResponse-›getHistory)=Token = ShistoryResponse->getNextPageTokenO=eption $e) {nu messao(TextRelavSerwicel Fafled to fetch Gaafl. hictory". fntsion" => Se->actMessaocotHistoryPoint(string Stopic, int ShistoryPoint): Carbon(...oP vico L/ Moy 10:00.40TextRelayServiceTest= laravel.log X SF (iminny@localhost)A console (STAGINGHSJocal jiminny@blocalhost)# console (PRont& console (EU)aer henseictcan I test it locally first. if I place env from stagingYes. The service relies on a tew thinas vou'd need in place1. Credentials file The constructor expects storage/text-relay.ison (a Google service account JSON key file)Gmbtrom sthaind and oince it there2. .env values to copy from stagingGOOGLE TEXTUSERECOOGLE TEXT HOSTGOOGLE TEXT RELAY TOPICDEPLOY REGION:the cnail mailbox address# e.g. txt.jiminny.com or txt.staging.jiminny.comaeu or us3. Run the svnc manualiv vin tinker tinside docker 1aeo 1%b bashaegdocker exec -it docker_lamp_1 php artisan tinkerapp(\Jiminny\Services\Ma1l\TextRelayService::class)-sync():Caveat: The service reads from Gmail history and dispatches jobs to the queue. If you don't want it to actuallsend SMS, make sure QUEUE_CONNECTICN»sync is not set (or use a test queue), or just call isForCurrentEnvironntioh.Ssvc = new class extends \Jiminny\Services\Mail\TextRelayService & public function _construct(som Serviceassvc-soctServicelconttatainny.googletex)# then sinsoectsasg= sonailService-susers_messages-sget(config(*iminty.google text user'), *THE_MESSAGE ID*)collect(5-s0-20etPayload()-soetWeaders())-soluck("value"thut wey von can Mrity whht handare tra nehhilm oraeset do ttat mactsod alote tha uill evoc rineAsk anything (XoL)- @ eodeAdhotvauaoae lkminutas sodP4 s...
|
78764
|
NULL
|
NULL
|
NULL
|
|
78764
|
2764
|
50
|
2026-05-27T12:58:46.784169+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886726784_m2.jpg...
|
PhpStorm
|
faVsco.js – laravel.log
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
17
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$params ' . PHP_EOL . print_r($params, true));
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.09740692,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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.8374335,"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":"TextRelayServiceTest","depth":6,"bounds":{"left":0.85272604,"top":0.019952115,"width":0.062832445,"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 'TextRelayServiceTest'","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 'TextRelayServiceTest'","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":"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.37666222,"top":0.10055866,"width":0.00731383,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"17","depth":4,"bounds":{"left":0.38597074,"top":0.10055866,"width":0.00930851,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.39694148,"top":0.09896249,"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.40425533,"top":0.09896249,"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\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$params ' . PHP_EOL . print_r($params, true));\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$params ' . PHP_EOL . print_r($params, true));\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\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":"AXTextArea","text":"","depth":4,"bounds":{"left":0.43051863,"top":0.09736632,"width":0.32280585,"height":0.8818835},"on_screen":true,"value":"","role_description":"text entry area","is_enabled":true,"is_focused":true,"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}]...
|
5130192760835644086
|
-6434374888886727797
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
17
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$params ' . PHP_EOL . print_r($params, true));
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
78763
|
2764
|
49
|
2026-05-27T12:58:46.204800+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886726204_m2.jpg...
|
PhpStorm
|
faVsco.js – laravel.log
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
17
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$params ' . PHP_EOL . print_r($params, true));
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
10
Previous Highlighted Error
Next Highlighted Error
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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.09740692,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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.8374335,"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":"TextRelayServiceTest","depth":6,"bounds":{"left":0.85272604,"top":0.019952115,"width":0.062832445,"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 'TextRelayServiceTest'","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 'TextRelayServiceTest'","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":"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.37666222,"top":0.10055866,"width":0.00731383,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"17","depth":4,"bounds":{"left":0.38597074,"top":0.10055866,"width":0.00930851,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.39694148,"top":0.09896249,"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.40425533,"top":0.09896249,"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\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$params ' . PHP_EOL . print_r($params, true));\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$params ' . PHP_EOL . print_r($params, true));\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\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":"10","depth":4,"bounds":{"left":0.72772604,"top":0.10055866,"width":0.009640957,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.7390292,"top":0.09896249,"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.7463431,"top":0.09896249,"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":"","depth":4,"bounds":{"left":0.43051863,"top":0.09736632,"width":0.32280585,"height":0.8818835},"on_screen":true,"value":"","role_description":"text entry area","is_enabled":true,"is_focused":true,"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}]...
|
3979950759907404324
|
-6434375026325943413
|
typing_pause
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
17
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$params ' . PHP_EOL . print_r($params, true));
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
10
Previous Highlighted Error
Next Highlighted Error
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
78761
|
NULL
|
NULL
|
NULL
|
|
78762
|
2763
|
44
|
2026-05-27T12:58:44.172157+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886724172_m1.jpg...
|
PhpStorm
|
faVsco.js – laravel.log
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
17
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$params ' . PHP_EOL . print_r($params, true));
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
10
Previous Highlighted Error
Next Highlighted Error
[2026-05-27 12:57:12] local.NOTICE: Monitoring start {"correlation_id":"01b85e02-17ff-44f0-8d6e-484a810b1085","trace_id":"b4d68a19-67e7-41f9-a2f3-ca98f84e617b"}
[2026-05-27 12:57:12] local.NOTICE: Monitoring end {"correlation_id":"01b85e02-17ff-44f0-8d6e-484a810b1085","trace_id":"b4d68a19-67e7-41f9-a2f3-ca98f84e617b"}
[2026-05-27 12:57:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"829043ea-15e1-40fe-a7ce-27fc8440984e","trace_id":"bd9f99cc-933a-453b-b9ff-869d04e9b49d"}
[2026-05-27 12:57:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"829043ea-15e1-40fe-a7ce-27fc8440984e","trace_id":"bd9f99cc-933a-453b-b9ff-869d04e9b49d"}
[2026-05-27 12:57:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"eb849911-4661-4753-b85d-3bd9dd3b0b9d","trace_id":"8508dc2d-48c1-4bc4-a89b-10e5cbd86d2a"}
[2026-05-27 12:57:15] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"eb849911-4661-4753-b85d-3bd9dd3b0b9d","trace_id":"8508dc2d-48c1-4bc4-a89b-10e5cbd86d2a"}
[2026-05-27 12:57:15] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"eb849911-4661-4753-b85d-3bd9dd3b0b9d","trace_id":"8508dc2d-48c1-4bc4-a89b-10e5cbd86d2a"}
[2026-05-27 12:57:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"eb849911-4661-4753-b85d-3bd9dd3b0b9d","trace_id":"8508dc2d-48c1-4bc4-a89b-10e5cbd86d2a"}
[2026-05-27 12:57:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"1743fc5e-a278-45c5-989d-06afb0bfe24e","trace_id":"872b746a-3e40-49a0-b858-c4265fb9ebf1"}
[2026-05-27 12:57:19] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"1743fc5e-a278-45c5-989d-06afb0bfe24e","trace_id":"872b746a-3e40-49a0-b858-c4265fb9ebf1"}
[2026-05-27 12:57:19] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"1743fc5e-a278-45c5-989d-06afb0bfe24e","trace_id":"872b746a-3e40-49a0-b858-c4265fb9ebf1"}
[2026-05-27 12:57:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"1743fc5e-a278-45c5-989d-06afb0bfe24e","trace_id":"872b746a-3e40-49a0-b858-c4265fb9ebf1"}
[2026-05-27 12:57:21] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 1 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"3f9ffe79-f6b7-483d-b4e2-253da2eb120e","trace_id":"872b746a-3e40-49a0-b858-c4265fb9ebf1"}
[2026-05-27 12:57:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"e4286517-4279-4047-8135-b79adc851022","trace_id":"0470f04d-52ab-4a34-9f7e-7bb500016954"}
[2026-05-27 12:57:24] local.INFO: [TextRelayService] Starting sync {"mailbox":"[EMAIL]","expected_alias":"catch-all","expected_host":"txt.staging.jiminny.com"} {"correlation_id":"e4286517-4279-4047-8135-b79adc851022","trace_id":"0470f04d-52ab-4a34-9f7e-7bb500016954"}
[2026-05-27 12:57:25] local.INFO: [TextRelayService] Sync completed {"mailbox":"[EMAIL]","messages_processed":0,"message_ids":[]} {"correlation_id":"e4286517-4279-4047-8135-b79adc851022","trace_id":"0470f04d-52ab-4a34-9f7e-7bb500016954"}
[2026-05-27 12:57:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"e4286517-4279-4047-8135-b79adc851022","trace_id":"0470f04d-52ab-4a34-9f7e-7bb500016954"}
[2026-05-27 12:58:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"7c1c4fd4-05fb-487e-bf3a-7e6aeec8362b","trace_id":"ed9dd4c2-0f01-4f46-aaae-d5a9ce425743"}
[2026-05-27 12:58:05] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {"count":0} {"correlation_id":"7c1c4fd4-05fb-487e-bf3a-7e6aeec8362b","trace_id":"ed9dd4c2-0f01-4f46-aaae-d5a9ce425743"}
[2026-05-27 12:58:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"7c1c4fd4-05fb-487e-bf3a-7e6aeec8362b","trace_id":"ed9dd4c2-0f01-4f46-aaae-d5a9ce425743"}
[2026-05-27 12:58:07] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"90309e61-fa7c-4b5f-9c02-ce974df47319","trace_id":"26186ec1-112c-4099-a7ca-00105f5a4e64"}
[2026-05-27 12:58:07] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"90309e61-fa7c-4b5f-9c02-ce974df47319","trace_id":"26186ec1-112c-4099-a7ca-00105f5a4e64"}
[2026-05-27 12:58:08] local.NOTICE: Monitoring start {"correlation_id":"39cf2e27-b157-4709-b9e2-635c7ddbbd98","trace_id":"c4377397-a3de-4f5d-a07f-e92c1b0ecb7d"}
[2026-05-27 12:58:08] local.NOTICE: Monitoring end {"correlation_id":"39cf2e27-b157-4709-b9e2-635c7ddbbd98","trace_id":"c4377397-a3de-4f5d-a07f-e92c1b0ecb7d"}
[2026-05-27 12:58:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"50cef6f9-cbe0-4cbe-b1e9-68bc9ed550eb","trace_id":"c3442d24-9553-4395-a3b8-98ce1846f584"}
[2026-05-27 12:58:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"50cef6f9-cbe0-4cbe-b1e9-68bc9ed550eb","trace_id":"c3442d24-9553-4395-a3b8-98ce1846f584"}
[2026-05-27 12:58:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"f6c5ca29-2b41-4030-a550-1335fe2c4a11","trace_id":"582ee47c-7c2a-41dc-b454-b90e9f41af1a"}
[2026-05-27 12:58:13] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f6c5ca29-2b41-4030-a550-1335fe2c4a11","trace_id":"582ee47c-7c2a-41dc-b454-b90e9f41af1a"}
[2026-05-27 12:58:13] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f6c5ca29-2b41-4030-a550-1335fe2c4a11","trace_id":"582ee47c-7c2a-41dc-b454-b90e9f41af1a"}
[2026-05-27 12:58:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"f6c5ca29-2b41-4030-a550-1335fe2c4a11","trace_id":"582ee47c-7c2a-41dc-b454-b90e9f41af1a"}
[2026-05-27 12:58:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"abd5beea-c617-4fef-b30f-87b538e08cfa","trace_id":"5a577ae2-bad7-4cdc-bee7-5e70ce7cb905"}
[2026-05-27 12:58:14] local.INFO: Running conference:monitor:count command for activities in (2026-05-27 12:56:00, 2026-05-27 12:58:00] {"correlation_id":"abd5beea-c617-4fef-b30f-87b538e08cfa","trace_id":"5a577ae2-bad7-4cdc-bee7-5e70ce7cb905"}
[2026-05-27 12:58:14] local.INFO: [conference:monitor:count] No activities found in (2026-05-27 12:56:00, 2026-05-27 12:58:00] {"correlation_id":"abd5beea-c617-4fef-b30f-87b538e08cfa","trace_id":"5a577ae2-bad7-4cdc-bee7-5e70ce7cb905"}
[2026-05-27 12:58:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"abd5beea-c617-4fef-b30f-87b538e08cfa","trace_id":"5a577ae2-bad7-4cdc-bee7-5e70ce7cb905"}
[2026-05-27 12:58:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"calendar:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"da72e8da-2f56-4b20-bfa7-d5396d6dc5d1","trace_id":"2328e196-0c82-430d-9d17-7b14a2a06770"}
[2026-05-27 12:58:18] local.NOTICE: Calendar sync start {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"da72e8da-2f56-4b20-bfa7-d5396d6dc5d1","trace_id":"2328e196-0c82-430d-9d17-7b14a2a06770"}
[2026-05-27 12:58:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1393,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:18] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1393,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1393,"provider":"google","refreshToken":"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1387,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1387,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1387,"provider":"google","refreshToken":"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1348,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1348,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1348,"provider":"google","refreshToken":"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1361,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1361,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1361,"provider":"google","refreshToken":"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1310,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1310,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1310,"provider":"google","refreshToken":"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1333,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1333,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1333,"provider":"google","refreshToken":"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1368,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1368,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1368,"provider":"google","refreshToken":"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1368,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1368,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1365,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1365,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1365,"provider":"google","refreshToken":"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1365,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1365,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1364,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1364,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1364,"provider":"google","refreshToken":"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:21] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1364,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:21] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:21] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1364,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:21] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1370,"provider":"office"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:21] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1370,"provider":"office"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:21] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:21] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1370,"provider":"office","refreshToken":"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:21] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1370,"provider":"office","responseBody":"{\"error\":\"invalid_client\",\"error_description\":\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: e8f91f16-b4dc-40e7-985c-d4a3ac516000 Correlation ID: 0a8d37fe-9d50-4b4c-a1ae-77e0327f15fc Timestamp: 2026-05-27 12:58:21Z\",\"error_codes\":[7000215],\"timestamp\":\"2026-05-27 12:58:21Z\",\"trace_id\":\"e8f91f16-b4dc-40e7-985c-d4a3ac516000\",\"correlation_id\":\"0a8d37fe-9d50-4b4c-a1ae-77e0327f15fc\",\"error_uri\":\"https://login.microsoftonline.com/error?code=7000215\"}"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:21] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:21] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1370,"provider":"office","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:21] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1202,"provider":"office"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:21] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1202,"provider":"office"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:21] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:21] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1202,"provider":"office","refreshToken":"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1202,"provider":"office","responseBody":"{\"error\":\"invalid_client\",\"error_description\":\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 3e9be67a-9c49-4a40-ad26-4af7bae65000 Correlation ID: 7fb2008c-07fe-4705-a6ff-47e70f64b2bb Timestamp: 2026-05-27 12:58:22Z\",\"error_codes\":[7000215],\"timestamp\":\"2026-05-27 12:58:22Z\",\"trace_id\":\"3e9be67a-9c49-4a40-ad26-4af7bae65000\",\"correlation_id\":\"7fb2008c-07fe-4705-a6ff-47e70f64b2bb\",\"error_uri\":\"https://login.microsoftonline.com/error?code=7000215\"}"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1202,"provider":"office","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1502,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1502,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: Calendar sync job dispatched {"calendar_id":501} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1300,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1300,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1300,"provider":"google","refreshToken":"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1300,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1300,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1409,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1409,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1409,"provider":"google","refreshToken":"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1409,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1409,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1352,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1352,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1352,"provider":"google","refreshToken":"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1352,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1352,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1296,"provider":"office"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1296,"provider":"office"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1296,"provider":"office","refreshToken":"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:23] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1296,"provider":"office","responseBody":"{\"error\":\"invalid_client\",\"error_description\":\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: cbdfd43b-d682-4397-8a35-69af29c81300 Correlation ID: 723e1e62-f593-454d-b972-845d22c92271 Timestamp: 2026-05-27 12:58:23Z\",\"error_codes\":[7000215],\"timestamp\":\"2026-05-27 12:58:23Z\",\"trace_id\":\"cbdfd43b-d682-4397-8a35-69af29c81300\",\"correlation_id\":\"723e1e62-f593-454d-b972-845d22c92271\",\"error_uri\":\"https://login.microsoftonline.com/error?code=7000215\"}"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:23] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:23] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1296,"provider":"office","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:23] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":391,"provider":"office"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:23] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":391,"provider":"office"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:23] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:23] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":391,"provider":"office","refreshToken":"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:23] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":391,"provider":"office","responseBody":"{\"error\":\"invalid_client\",\"error_description\":\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: f559a2e0-ad9d-4163-bd2c-dcf7c33f1200 Correlation ID: 44266705-aff3-4701-aa5e-a88b7867593a Timestamp: 2026-05-27 12:58:23Z\",\"error_codes\":[7000215],\"timestamp\":\"2026-05-27 12:58:23Z\",\"trace_id\":\"f559a2e0-ad9d-4163...
|
[{"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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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":"TextRelayServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'TextRelayServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'TextRelayServiceTest'","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":"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,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"17","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\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$params ' . PHP_EOL . print_r($params, true));\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$params ' . PHP_EOL . print_r($params, true));\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\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":"10","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":"[2026-05-27 12:57:12] local.NOTICE: Monitoring start {\"correlation_id\":\"01b85e02-17ff-44f0-8d6e-484a810b1085\",\"trace_id\":\"b4d68a19-67e7-41f9-a2f3-ca98f84e617b\"}\n[2026-05-27 12:57:12] local.NOTICE: Monitoring end {\"correlation_id\":\"01b85e02-17ff-44f0-8d6e-484a810b1085\",\"trace_id\":\"b4d68a19-67e7-41f9-a2f3-ca98f84e617b\"}\n[2026-05-27 12:57:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"829043ea-15e1-40fe-a7ce-27fc8440984e\",\"trace_id\":\"bd9f99cc-933a-453b-b9ff-869d04e9b49d\"}\n[2026-05-27 12:57:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"829043ea-15e1-40fe-a7ce-27fc8440984e\",\"trace_id\":\"bd9f99cc-933a-453b-b9ff-869d04e9b49d\"}\n[2026-05-27 12:57:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"eb849911-4661-4753-b85d-3bd9dd3b0b9d\",\"trace_id\":\"8508dc2d-48c1-4bc4-a89b-10e5cbd86d2a\"}\n[2026-05-27 12:57:15] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"eb849911-4661-4753-b85d-3bd9dd3b0b9d\",\"trace_id\":\"8508dc2d-48c1-4bc4-a89b-10e5cbd86d2a\"}\n[2026-05-27 12:57:15] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"eb849911-4661-4753-b85d-3bd9dd3b0b9d\",\"trace_id\":\"8508dc2d-48c1-4bc4-a89b-10e5cbd86d2a\"}\n[2026-05-27 12:57:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"eb849911-4661-4753-b85d-3bd9dd3b0b9d\",\"trace_id\":\"8508dc2d-48c1-4bc4-a89b-10e5cbd86d2a\"}\n[2026-05-27 12:57:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"1743fc5e-a278-45c5-989d-06afb0bfe24e\",\"trace_id\":\"872b746a-3e40-49a0-b858-c4265fb9ebf1\"}\n[2026-05-27 12:57:19] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"1743fc5e-a278-45c5-989d-06afb0bfe24e\",\"trace_id\":\"872b746a-3e40-49a0-b858-c4265fb9ebf1\"}\n[2026-05-27 12:57:19] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"1743fc5e-a278-45c5-989d-06afb0bfe24e\",\"trace_id\":\"872b746a-3e40-49a0-b858-c4265fb9ebf1\"}\n[2026-05-27 12:57:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"1743fc5e-a278-45c5-989d-06afb0bfe24e\",\"trace_id\":\"872b746a-3e40-49a0-b858-c4265fb9ebf1\"}\n[2026-05-27 12:57:21] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 1 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"3f9ffe79-f6b7-483d-b4e2-253da2eb120e\",\"trace_id\":\"872b746a-3e40-49a0-b858-c4265fb9ebf1\"}\n[2026-05-27 12:57:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"e4286517-4279-4047-8135-b79adc851022\",\"trace_id\":\"0470f04d-52ab-4a34-9f7e-7bb500016954\"}\n[2026-05-27 12:57:24] local.INFO: [TextRelayService] Starting sync {\"mailbox\":\"catch-all@txt.staging.jiminny.com\",\"expected_alias\":\"catch-all\",\"expected_host\":\"txt.staging.jiminny.com\"} {\"correlation_id\":\"e4286517-4279-4047-8135-b79adc851022\",\"trace_id\":\"0470f04d-52ab-4a34-9f7e-7bb500016954\"}\n[2026-05-27 12:57:25] local.INFO: [TextRelayService] Sync completed {\"mailbox\":\"catch-all@txt.staging.jiminny.com\",\"messages_processed\":0,\"message_ids\":[]} {\"correlation_id\":\"e4286517-4279-4047-8135-b79adc851022\",\"trace_id\":\"0470f04d-52ab-4a34-9f7e-7bb500016954\"}\n[2026-05-27 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"e4286517-4279-4047-8135-b79adc851022\",\"trace_id\":\"0470f04d-52ab-4a34-9f7e-7bb500016954\"}\n[2026-05-27 12:58:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"7c1c4fd4-05fb-487e-bf3a-7e6aeec8362b\",\"trace_id\":\"ed9dd4c2-0f01-4f46-aaae-d5a9ce425743\"}\n[2026-05-27 12:58:05] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {\"count\":0} {\"correlation_id\":\"7c1c4fd4-05fb-487e-bf3a-7e6aeec8362b\",\"trace_id\":\"ed9dd4c2-0f01-4f46-aaae-d5a9ce425743\"}\n[2026-05-27 12:58:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"7c1c4fd4-05fb-487e-bf3a-7e6aeec8362b\",\"trace_id\":\"ed9dd4c2-0f01-4f46-aaae-d5a9ce425743\"}\n[2026-05-27 12:58:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"90309e61-fa7c-4b5f-9c02-ce974df47319\",\"trace_id\":\"26186ec1-112c-4099-a7ca-00105f5a4e64\"}\n[2026-05-27 12:58:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"90309e61-fa7c-4b5f-9c02-ce974df47319\",\"trace_id\":\"26186ec1-112c-4099-a7ca-00105f5a4e64\"}\n[2026-05-27 12:58:08] local.NOTICE: Monitoring start {\"correlation_id\":\"39cf2e27-b157-4709-b9e2-635c7ddbbd98\",\"trace_id\":\"c4377397-a3de-4f5d-a07f-e92c1b0ecb7d\"}\n[2026-05-27 12:58:08] local.NOTICE: Monitoring end {\"correlation_id\":\"39cf2e27-b157-4709-b9e2-635c7ddbbd98\",\"trace_id\":\"c4377397-a3de-4f5d-a07f-e92c1b0ecb7d\"}\n[2026-05-27 12:58:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"50cef6f9-cbe0-4cbe-b1e9-68bc9ed550eb\",\"trace_id\":\"c3442d24-9553-4395-a3b8-98ce1846f584\"}\n[2026-05-27 12:58:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"50cef6f9-cbe0-4cbe-b1e9-68bc9ed550eb\",\"trace_id\":\"c3442d24-9553-4395-a3b8-98ce1846f584\"}\n[2026-05-27 12:58:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"f6c5ca29-2b41-4030-a550-1335fe2c4a11\",\"trace_id\":\"582ee47c-7c2a-41dc-b454-b90e9f41af1a\"}\n[2026-05-27 12:58:13] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f6c5ca29-2b41-4030-a550-1335fe2c4a11\",\"trace_id\":\"582ee47c-7c2a-41dc-b454-b90e9f41af1a\"}\n[2026-05-27 12:58:13] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f6c5ca29-2b41-4030-a550-1335fe2c4a11\",\"trace_id\":\"582ee47c-7c2a-41dc-b454-b90e9f41af1a\"}\n[2026-05-27 12:58:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"f6c5ca29-2b41-4030-a550-1335fe2c4a11\",\"trace_id\":\"582ee47c-7c2a-41dc-b454-b90e9f41af1a\"}\n[2026-05-27 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"abd5beea-c617-4fef-b30f-87b538e08cfa\",\"trace_id\":\"5a577ae2-bad7-4cdc-bee7-5e70ce7cb905\"}\n[2026-05-27 12:58:14] local.INFO: Running conference:monitor:count command for activities in (2026-05-27 12:56:00, 2026-05-27 12:58:00] {\"correlation_id\":\"abd5beea-c617-4fef-b30f-87b538e08cfa\",\"trace_id\":\"5a577ae2-bad7-4cdc-bee7-5e70ce7cb905\"}\n[2026-05-27 12:58:14] local.INFO: [conference:monitor:count] No activities found in (2026-05-27 12:56:00, 2026-05-27 12:58:00] {\"correlation_id\":\"abd5beea-c617-4fef-b30f-87b538e08cfa\",\"trace_id\":\"5a577ae2-bad7-4cdc-bee7-5e70ce7cb905\"}\n[2026-05-27 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"abd5beea-c617-4fef-b30f-87b538e08cfa\",\"trace_id\":\"5a577ae2-bad7-4cdc-bee7-5e70ce7cb905\"}\n[2026-05-27 12:58:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"da72e8da-2f56-4b20-bfa7-d5396d6dc5d1\",\"trace_id\":\"2328e196-0c82-430d-9d17-7b14a2a06770\"}\n[2026-05-27 12:58:18] local.NOTICE: Calendar sync start {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"da72e8da-2f56-4b20-bfa7-d5396d6dc5d1\",\"trace_id\":\"2328e196-0c82-430d-9d17-7b14a2a06770\"}\n[2026-05-27 12:58:18] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:18] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1393,\"provider\":\"google\",\"refreshToken\":\"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1387,\"provider\":\"google\",\"refreshToken\":\"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1348,\"provider\":\"google\",\"refreshToken\":\"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1361,\"provider\":\"google\",\"refreshToken\":\"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1310,\"provider\":\"google\",\"refreshToken\":\"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1333,\"provider\":\"google\",\"refreshToken\":\"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1368,\"provider\":\"google\",\"refreshToken\":\"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1365,\"provider\":\"google\",\"refreshToken\":\"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1364,\"provider\":\"google\",\"refreshToken\":\"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:21] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:21] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:21] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:21] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:21] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:21] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:21] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1370,\"provider\":\"office\",\"refreshToken\":\"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:21] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: e8f91f16-b4dc-40e7-985c-d4a3ac516000 Correlation ID: 0a8d37fe-9d50-4b4c-a1ae-77e0327f15fc Timestamp: 2026-05-27 12:58:21Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-27 12:58:21Z\\\",\\\"trace_id\\\":\\\"e8f91f16-b4dc-40e7-985c-d4a3ac516000\\\",\\\"correlation_id\\\":\\\"0a8d37fe-9d50-4b4c-a1ae-77e0327f15fc\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:21] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:21] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:21] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:21] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:21] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:21] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1202,\"provider\":\"office\",\"refreshToken\":\"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 3e9be67a-9c49-4a40-ad26-4af7bae65000 Correlation ID: 7fb2008c-07fe-4705-a6ff-47e70f64b2bb Timestamp: 2026-05-27 12:58:22Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-27 12:58:22Z\\\",\\\"trace_id\\\":\\\"3e9be67a-9c49-4a40-ad26-4af7bae65000\\\",\\\"correlation_id\\\":\\\"7fb2008c-07fe-4705-a6ff-47e70f64b2bb\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: Calendar sync job dispatched {\"calendar_id\":501} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1300,\"provider\":\"google\",\"refreshToken\":\"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1409,\"provider\":\"google\",\"refreshToken\":\"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1352,\"provider\":\"google\",\"refreshToken\":\"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1296,\"provider\":\"office\",\"refreshToken\":\"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:23] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: cbdfd43b-d682-4397-8a35-69af29c81300 Correlation ID: 723e1e62-f593-454d-b972-845d22c92271 Timestamp: 2026-05-27 12:58:23Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-27 12:58:23Z\\\",\\\"trace_id\\\":\\\"cbdfd43b-d682-4397-8a35-69af29c81300\\\",\\\"correlation_id\\\":\\\"723e1e62-f593-454d-b972-845d22c92271\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:23] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:23] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:23] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:23] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:23] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:23] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":391,\"provider\":\"office\",\"refreshToken\":\"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:23] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: f559a2e0-ad9d-4163-bd2c-dcf7c33f1200 Correlation ID: 44266705-aff3-4701-aa5e-a88b7867593a Timestamp: 2026-05-27 12:58:23Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-27 12:58:23Z\\\",\\\"trace_id\\\":\\\"f559a2e0-ad9d-4163-bd2c-dcf7c33f1200\\\",\\\"correlation_id\\\":\\\"44266705-aff3-4701-aa5e-a88b7867593a\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:23] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:23] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:23] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:23] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:23] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:23] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1271,\"provider\":\"office\",\"refreshToken\":\"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: cac48412-52b9-4708-8b76-a4c08ddd6e00 Correlation ID: 7e027d28-b370-4b8a-b6ae-996d6de1eb35 Timestamp: 2026-05-27 12:58:24Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-27 12:58:24Z\\\",\\\"trace_id\\\":\\\"cac48412-52b9-4708-8b76-a4c08ddd6e00\\\",\\\"correlation_id\\\":\\\"7e027d28-b370-4b8a-b6ae-996d6de1eb35\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"e95f214c-a38a-48ff-a8b5-6586e5429286\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"e95f214c-a38a-48ff-a8b5-6586e5429286\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e95f214c-a38a-48ff-a8b5-6586e5429286\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [Calendar] Processing sync {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"from\":null,\"to\":null,\"delta\":\"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=\",\"last_sync\":\"2024-12-09 07:12:53\",\"dateMode\":\"daily\"} {\"correlation_id\":\"e95f214c-a38a-48ff-a8b5-6586e5429286\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"e95f214c-a38a-48ff-a8b5-6586e5429286\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"e95f214c-a38a-48ff-a8b5-6586e5429286\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"e95f214c-a38a-48ff-a8b5-6586e5429286\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e95f214c-a38a-48ff-a8b5-6586e5429286\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"e95f214c-a38a-48ff-a8b5-6586e5429286\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"e95f214c-a38a-48ff-a8b5-6586e5429286\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"ecee7320-c24d-41cb-ba7e-d6bccb02cba0\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"ecee7320-c24d-41cb-ba7e-d6bccb02cba0\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"ecee7320-c24d-41cb-ba7e-d6bccb02cba0\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"ecee7320-c24d-41cb-ba7e-d6bccb02cba0\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1779091997,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-05-18 08:13:32\"}}} {\"correlation_id\":\"ecee7320-c24d-41cb-ba7e-d6bccb02cba0\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"ecee7320-c24d-41cb-ba7e-d6bccb02cba0\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"ecee7320-c24d-41cb-ba7e-d6bccb02cba0\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"ecee7320-c24d-41cb-ba7e-d6bccb02cba0\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"ecee7320-c24d-41cb-ba7e-d6bccb02cba0\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"ecee7320-c24d-41cb-ba7e-d6bccb02cba0\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"ecee7320-c24d-41cb-ba7e-d6bccb02cba0\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"ecee7320-c24d-41cb-ba7e-d6bccb02cba0\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"ecee7320-c24d-41cb-ba7e-d6bccb02cba0\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"ecee7320-c24d-41cb-ba7e-d6bccb02cba0\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"f1c9b413-6e5b-4c12-af21-99b5174b2c5d\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"f1c9b413-6e5b-4c12-af21-99b5174b2c5d\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f1c9b413-6e5b-4c12-af21-99b5174b2c5d\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCLbinXNUdndbb-ECUsN4LJrJG3mny6y_meJS8MAAHR5ZMrcUO3h48ocZNNnE7oP5gw1vlpVCP8G7vwKiJvMr__pTveeFSIgIX26vx0F0cDUmNI0_JTiUjIa8SS87NYFu0VC-K9UUoS_3YAmb3QbL1FzAfSGSNtasPG9UoNDP2sTOfaa0y-bXW7hGxDeemyMi5Q.mq5epx6DKMR2Kr4O2JnKftifGVfsgrCAgaghMEclE4U\",\"last_sync\":\"2026-05-27 06:58:28\",\"dateMode\":\"daily\"} {\"correlation_id\":\"f1c9b413-6e5b-4c12-af21-99b5174b2c5d\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f1c9b413-6e5b-4c12-af21-99b5174b2c5d\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f1c9b413-6e5b-4c12-af21-99b5174b2c5d\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f1c9b413-6e5b-4c12-af21-99b5174b2c5d\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"f1c9b413-6e5b-4c12-af21-99b5174b2c5d\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"f1c9b413-6e5b-4c12-af21-99b5174b2c5d\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}","depth":4,"on_screen":true,"value":"[2026-05-27 12:57:12] local.NOTICE: Monitoring start {\"correlation_id\":\"01b85e02-17ff-44f0-8d6e-484a810b1085\",\"trace_id\":\"b4d68a19-67e7-41f9-a2f3-ca98f84e617b\"}\n[2026-05-27 12:57:12] local.NOTICE: Monitoring end {\"correlation_id\":\"01b85e02-17ff-44f0-8d6e-484a810b1085\",\"trace_id\":\"b4d68a19-67e7-41f9-a2f3-ca98f84e617b\"}\n[2026-05-27 12:57:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"829043ea-15e1-40fe-a7ce-27fc8440984e\",\"trace_id\":\"bd9f99cc-933a-453b-b9ff-869d04e9b49d\"}\n[2026-05-27 12:57:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"829043ea-15e1-40fe-a7ce-27fc8440984e\",\"trace_id\":\"bd9f99cc-933a-453b-b9ff-869d04e9b49d\"}\n[2026-05-27 12:57:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"eb849911-4661-4753-b85d-3bd9dd3b0b9d\",\"trace_id\":\"8508dc2d-48c1-4bc4-a89b-10e5cbd86d2a\"}\n[2026-05-27 12:57:15] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"eb849911-4661-4753-b85d-3bd9dd3b0b9d\",\"trace_id\":\"8508dc2d-48c1-4bc4-a89b-10e5cbd86d2a\"}\n[2026-05-27 12:57:15] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"eb849911-4661-4753-b85d-3bd9dd3b0b9d\",\"trace_id\":\"8508dc2d-48c1-4bc4-a89b-10e5cbd86d2a\"}\n[2026-05-27 12:57:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"eb849911-4661-4753-b85d-3bd9dd3b0b9d\",\"trace_id\":\"8508dc2d-48c1-4bc4-a89b-10e5cbd86d2a\"}\n[2026-05-27 12:57:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"1743fc5e-a278-45c5-989d-06afb0bfe24e\",\"trace_id\":\"872b746a-3e40-49a0-b858-c4265fb9ebf1\"}\n[2026-05-27 12:57:19] local.INFO: [EmailSchedule] STARTING batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"1743fc5e-a278-45c5-989d-06afb0bfe24e\",\"trace_id\":\"872b746a-3e40-49a0-b858-c4265fb9ebf1\"}\n[2026-05-27 12:57:19] local.INFO: [EmailSchedule] FINISHED batch create {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"1743fc5e-a278-45c5-989d-06afb0bfe24e\",\"trace_id\":\"872b746a-3e40-49a0-b858-c4265fb9ebf1\"}\n[2026-05-27 12:57:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:create\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"1743fc5e-a278-45c5-989d-06afb0bfe24e\",\"trace_id\":\"872b746a-3e40-49a0-b858-c4265fb9ebf1\"}\n[2026-05-27 12:57:21] local.INFO: [Jiminny\\Jobs\\Mailbox\\CreateBatches] processed 1 inboxes and created 0 batches {\"userId\":null,\"batchSize\":30,\"maxBatches\":1000} {\"correlation_id\":\"3f9ffe79-f6b7-483d-b4e2-253da2eb120e\",\"trace_id\":\"872b746a-3e40-49a0-b858-c4265fb9ebf1\"}\n[2026-05-27 12:57:24] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"e4286517-4279-4047-8135-b79adc851022\",\"trace_id\":\"0470f04d-52ab-4a34-9f7e-7bb500016954\"}\n[2026-05-27 12:57:24] local.INFO: [TextRelayService] Starting sync {\"mailbox\":\"catch-all@txt.staging.jiminny.com\",\"expected_alias\":\"catch-all\",\"expected_host\":\"txt.staging.jiminny.com\"} {\"correlation_id\":\"e4286517-4279-4047-8135-b79adc851022\",\"trace_id\":\"0470f04d-52ab-4a34-9f7e-7bb500016954\"}\n[2026-05-27 12:57:25] local.INFO: [TextRelayService] Sync completed {\"mailbox\":\"catch-all@txt.staging.jiminny.com\",\"messages_processed\":0,\"message_ids\":[]} {\"correlation_id\":\"e4286517-4279-4047-8135-b79adc851022\",\"trace_id\":\"0470f04d-52ab-4a34-9f7e-7bb500016954\"}\n[2026-05-27 12:57:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"e4286517-4279-4047-8135-b79adc851022\",\"trace_id\":\"0470f04d-52ab-4a34-9f7e-7bb500016954\"}\n[2026-05-27 12:58:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"7c1c4fd4-05fb-487e-bf3a-7e6aeec8362b\",\"trace_id\":\"ed9dd4c2-0f01-4f46-aaae-d5a9ce425743\"}\n[2026-05-27 12:58:05] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {\"count\":0} {\"correlation_id\":\"7c1c4fd4-05fb-487e-bf3a-7e6aeec8362b\",\"trace_id\":\"ed9dd4c2-0f01-4f46-aaae-d5a9ce425743\"}\n[2026-05-27 12:58:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"7c1c4fd4-05fb-487e-bf3a-7e6aeec8362b\",\"trace_id\":\"ed9dd4c2-0f01-4f46-aaae-d5a9ce425743\"}\n[2026-05-27 12:58:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"90309e61-fa7c-4b5f-9c02-ce974df47319\",\"trace_id\":\"26186ec1-112c-4099-a7ca-00105f5a4e64\"}\n[2026-05-27 12:58:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"90309e61-fa7c-4b5f-9c02-ce974df47319\",\"trace_id\":\"26186ec1-112c-4099-a7ca-00105f5a4e64\"}\n[2026-05-27 12:58:08] local.NOTICE: Monitoring start {\"correlation_id\":\"39cf2e27-b157-4709-b9e2-635c7ddbbd98\",\"trace_id\":\"c4377397-a3de-4f5d-a07f-e92c1b0ecb7d\"}\n[2026-05-27 12:58:08] local.NOTICE: Monitoring end {\"correlation_id\":\"39cf2e27-b157-4709-b9e2-635c7ddbbd98\",\"trace_id\":\"c4377397-a3de-4f5d-a07f-e92c1b0ecb7d\"}\n[2026-05-27 12:58:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"50cef6f9-cbe0-4cbe-b1e9-68bc9ed550eb\",\"trace_id\":\"c3442d24-9553-4395-a3b8-98ce1846f584\"}\n[2026-05-27 12:58:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"50cef6f9-cbe0-4cbe-b1e9-68bc9ed550eb\",\"trace_id\":\"c3442d24-9553-4395-a3b8-98ce1846f584\"}\n[2026-05-27 12:58:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"f6c5ca29-2b41-4030-a550-1335fe2c4a11\",\"trace_id\":\"582ee47c-7c2a-41dc-b454-b90e9f41af1a\"}\n[2026-05-27 12:58:13] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"f6c5ca29-2b41-4030-a550-1335fe2c4a11\",\"trace_id\":\"582ee47c-7c2a-41dc-b454-b90e9f41af1a\"}\n[2026-05-27 12:58:13] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"f6c5ca29-2b41-4030-a550-1335fe2c4a11\",\"trace_id\":\"582ee47c-7c2a-41dc-b454-b90e9f41af1a\"}\n[2026-05-27 12:58:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"f6c5ca29-2b41-4030-a550-1335fe2c4a11\",\"trace_id\":\"582ee47c-7c2a-41dc-b454-b90e9f41af1a\"}\n[2026-05-27 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"abd5beea-c617-4fef-b30f-87b538e08cfa\",\"trace_id\":\"5a577ae2-bad7-4cdc-bee7-5e70ce7cb905\"}\n[2026-05-27 12:58:14] local.INFO: Running conference:monitor:count command for activities in (2026-05-27 12:56:00, 2026-05-27 12:58:00] {\"correlation_id\":\"abd5beea-c617-4fef-b30f-87b538e08cfa\",\"trace_id\":\"5a577ae2-bad7-4cdc-bee7-5e70ce7cb905\"}\n[2026-05-27 12:58:14] local.INFO: [conference:monitor:count] No activities found in (2026-05-27 12:56:00, 2026-05-27 12:58:00] {\"correlation_id\":\"abd5beea-c617-4fef-b30f-87b538e08cfa\",\"trace_id\":\"5a577ae2-bad7-4cdc-bee7-5e70ce7cb905\"}\n[2026-05-27 12:58:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"abd5beea-c617-4fef-b30f-87b538e08cfa\",\"trace_id\":\"5a577ae2-bad7-4cdc-bee7-5e70ce7cb905\"}\n[2026-05-27 12:58:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"da72e8da-2f56-4b20-bfa7-d5396d6dc5d1\",\"trace_id\":\"2328e196-0c82-430d-9d17-7b14a2a06770\"}\n[2026-05-27 12:58:18] local.NOTICE: Calendar sync start {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:retry-failed\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"da72e8da-2f56-4b20-bfa7-d5396d6dc5d1\",\"trace_id\":\"2328e196-0c82-430d-9d17-7b14a2a06770\"}\n[2026-05-27 12:58:18] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:18] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1393,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1393,\"provider\":\"google\",\"refreshToken\":\"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1393,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1387,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1387,\"provider\":\"google\",\"refreshToken\":\"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1387,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1348,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:19] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1348,\"provider\":\"google\",\"refreshToken\":\"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1348,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1361,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1361,\"provider\":\"google\",\"refreshToken\":\"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1361,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1310,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1310,\"provider\":\"google\",\"refreshToken\":\"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1310,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1333,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1333,\"provider\":\"google\",\"refreshToken\":\"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1333,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1368,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1368,\"provider\":\"google\",\"refreshToken\":\"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1368,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1365,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1365,\"provider\":\"google\",\"refreshToken\":\"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1365,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1364,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1364,\"provider\":\"google\",\"refreshToken\":\"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:21] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"responseBody\":{\"error\":\"unauthorized_client\",\"error_description\":\"Unauthorized\"}} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:21] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:21] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1364,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:21] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:21] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1370,\"provider\":\"office\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:21] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:21] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1370,\"provider\":\"office\",\"refreshToken\":\"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:21] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: e8f91f16-b4dc-40e7-985c-d4a3ac516000 Correlation ID: 0a8d37fe-9d50-4b4c-a1ae-77e0327f15fc Timestamp: 2026-05-27 12:58:21Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-27 12:58:21Z\\\",\\\"trace_id\\\":\\\"e8f91f16-b4dc-40e7-985c-d4a3ac516000\\\",\\\"correlation_id\\\":\\\"0a8d37fe-9d50-4b4c-a1ae-77e0327f15fc\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:21] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:21] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1370,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:21] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:21] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1202,\"provider\":\"office\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:21] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:21] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1202,\"provider\":\"office\",\"refreshToken\":\"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 3e9be67a-9c49-4a40-ad26-4af7bae65000 Correlation ID: 7fb2008c-07fe-4705-a6ff-47e70f64b2bb Timestamp: 2026-05-27 12:58:22Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-27 12:58:22Z\\\",\\\"trace_id\\\":\\\"3e9be67a-9c49-4a40-ad26-4af7bae65000\\\",\\\"correlation_id\\\":\\\"7fb2008c-07fe-4705-a6ff-47e70f64b2bb\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1202,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: Calendar sync job dispatched {\"calendar_id\":501} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1300,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1300,\"provider\":\"google\",\"refreshToken\":\"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Account has been deleted\"}} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1300,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1409,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1409,\"provider\":\"google\",\"refreshToken\":\"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1409,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1352,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1352,\"provider\":\"google\",\"refreshToken\":\"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1352,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1296,\"provider\":\"office\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1296,\"provider\":\"office\",\"refreshToken\":\"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:23] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: cbdfd43b-d682-4397-8a35-69af29c81300 Correlation ID: 723e1e62-f593-454d-b972-845d22c92271 Timestamp: 2026-05-27 12:58:23Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-27 12:58:23Z\\\",\\\"trace_id\\\":\\\"cbdfd43b-d682-4397-8a35-69af29c81300\\\",\\\"correlation_id\\\":\\\"723e1e62-f593-454d-b972-845d22c92271\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:23] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:23] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1296,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:23] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:23] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":391,\"provider\":\"office\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:23] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:23] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":391,\"provider\":\"office\",\"refreshToken\":\"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:23] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: f559a2e0-ad9d-4163-bd2c-dcf7c33f1200 Correlation ID: 44266705-aff3-4701-aa5e-a88b7867593a Timestamp: 2026-05-27 12:58:23Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-27 12:58:23Z\\\",\\\"trace_id\\\":\\\"f559a2e0-ad9d-4163-bd2c-dcf7c33f1200\\\",\\\"correlation_id\\\":\\\"44266705-aff3-4701-aa5e-a88b7867593a\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:23] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:23] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":391,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:23] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:23] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1271,\"provider\":\"office\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:23] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:23] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1271,\"provider\":\"office\",\"refreshToken\":\"118cde2c06993147b07ccaec4cbcd5026a819dea6c71081166a492933e392afb\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"responseBody\":\"{\\\"error\\\":\\\"invalid_client\\\",\\\"error_description\\\":\\\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: cac48412-52b9-4708-8b76-a4c08ddd6e00 Correlation ID: 7e027d28-b370-4b8a-b6ae-996d6de1eb35 Timestamp: 2026-05-27 12:58:24Z\\\",\\\"error_codes\\\":[7000215],\\\"timestamp\\\":\\\"2026-05-27 12:58:24Z\\\",\\\"trace_id\\\":\\\"cac48412-52b9-4708-8b76-a4c08ddd6e00\\\",\\\"correlation_id\\\":\\\"7e027d28-b370-4b8a-b6ae-996d6de1eb35\\\",\\\"error_uri\\\":\\\"https://login.microsoftonline.com/error?code=7000215\\\"}\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1271,\"provider\":\"office\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1351,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1351,\"provider\":\"google\",\"refreshToken\":\"4271d15b9e60a606439caddc68337f783e472c85b03dacff14d1b6dfded9051c\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"e95f214c-a38a-48ff-a8b5-6586e5429286\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"e95f214c-a38a-48ff-a8b5-6586e5429286\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e95f214c-a38a-48ff-a8b5-6586e5429286\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [Calendar] Processing sync {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"from\":null,\"to\":null,\"delta\":\"CIiFh8TP44kDEIiFh8TP44kDGAUgkZvkzgIokZvkzgI=\",\"last_sync\":\"2024-12-09 07:12:53\",\"dateMode\":\"daily\"} {\"correlation_id\":\"e95f214c-a38a-48ff-a8b5-6586e5429286\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"integration-app\",\"crm_owner\":1695,\"team_id\":3143} {\"correlation_id\":\"e95f214c-a38a-48ff-a8b5-6586e5429286\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"e95f214c-a38a-48ff-a8b5-6586e5429286\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1502,\"provider\":\"google\"} {\"correlation_id\":\"e95f214c-a38a-48ff-a8b5-6586e5429286\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"e95f214c-a38a-48ff-a8b5-6586e5429286\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1351,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1366,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1366,\"provider\":\"google\",\"refreshToken\":\"ae21385059b2eebfd43f68aecd56eccd702a1aabb6598f1f7ab594ed8af491b4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"responseBody\":{\"error\":\"invalid_grant\",\"error_description\":\"Bad Request\"}} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.ERROR: [SocialAccountService] Failed to refresh token {\"socialAccountId\":1366,\"provider\":\"google\",\"reason\":\"Flow refresh required.\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: Calendar sync job dispatched {\"calendar_id\":378} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:24] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: Calendar sync job dispatched {\"calendar_id\":504} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.NOTICE: Calendar sync end {\"retrieved_calendars\":31,\"processed_calendars\":3} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"calendar:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"b939891c-4c61-4fc3-b7d5-4bcf72084fce\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"e95f214c-a38a-48ff-a8b5-6586e5429286\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"a33076c1-8d97-431a-99f0-85c9524e118b\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"e95f214c-a38a-48ff-a8b5-6586e5429286\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"ecee7320-c24d-41cb-ba7e-d6bccb02cba0\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"ecee7320-c24d-41cb-ba7e-d6bccb02cba0\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"ecee7320-c24d-41cb-ba7e-d6bccb02cba0\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [Calendar] Processing sync {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"from\":null,\"to\":null,\"delta\":\"CJ_x49O3jpIDEJ_x49O3jpIDGAUgw67KlwMow67KlwM=\",\"last_sync\":\"2026-01-19 07:48:40\",\"dateMode\":\"daily\"} {\"correlation_id\":\"ecee7320-c24d-41cb-ba7e-d6bccb02cba0\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.WARNING: [Pipedrive] Account not connected for user {\"userId\":\"e6538737-e7b4-455f-a37a-3e79b665a220\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1116,\"sociable_id\":241,\"provider_user_id\":\"19555731\",\"expires\":1779091997,\"refresh_token_expires\":null,\"provider\":\"pipedrive\",\"state\":\"full-refresh\",\"auth_scope\":\"base,deals:full,activities:full,contacts:full,search:read\",\"retry_after\":null,\"created_at\":\"2023-09-08 09:44:29\",\"updated_at\":\"2026-05-18 08:13:32\"}}} {\"correlation_id\":\"ecee7320-c24d-41cb-ba7e-d6bccb02cba0\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"pipedrive\",\"crm_owner\":241,\"team_id\":19} {\"correlation_id\":\"ecee7320-c24d-41cb-ba7e-d6bccb02cba0\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"ecee7320-c24d-41cb-ba7e-d6bccb02cba0\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"pipedrive\",\"team_id\":19} {\"correlation_id\":\"ecee7320-c24d-41cb-ba7e-d6bccb02cba0\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.WARNING: [Calendar] CRM disconnected for user so events will not be matched {\"provider\":\"pipedrive\",\"user_id\":241,\"message\":\"Your Pipedrive account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"ecee7320-c24d-41cb-ba7e-d6bccb02cba0\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"ecee7320-c24d-41cb-ba7e-d6bccb02cba0\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1115,\"provider\":\"google\"} {\"correlation_id\":\"ecee7320-c24d-41cb-ba7e-d6bccb02cba0\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"ecee7320-c24d-41cb-ba7e-d6bccb02cba0\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [Google Calendar] Failed to watch channel for calendar {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"ecee7320-c24d-41cb-ba7e-d6bccb02cba0\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.WARNING: [Calendar] Sync failed {\"calendarId\":\"2676cb6d-f86c-427e-bf78-591e388e3c1e\",\"code\":400,\"reason\":\"{\n \\\"error\\\": {\n \\\"errors\\\": [\n {\n \\\"domain\\\": \\\"global\\\",\n \\\"reason\\\": \\\"push.webhookUrlNotHttps\\\",\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n ],\n \\\"code\\\": 400,\n \\\"message\\\": \\\"WebHook callback must be HTTPS: /webhook/calendar/google?resourceType=event\\\"\n }\n}\"} {\"correlation_id\":\"ecee7320-c24d-41cb-ba7e-d6bccb02cba0\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"f1c9b413-6e5b-4c12-af21-99b5174b2c5d\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1421,\"provider\":\"office\"} {\"correlation_id\":\"f1c9b413-6e5b-4c12-af21-99b5174b2c5d\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f1c9b413-6e5b-4c12-af21-99b5174b2c5d\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [Calendar] Processing sync {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\",\"from\":null,\"to\":null,\"delta\":\"R0usmcdvmMuZCBYV0hguCLbinXNUdndbb-ECUsN4LJrJG3mny6y_meJS8MAAHR5ZMrcUO3h48ocZNNnE7oP5gw1vlpVCP8G7vwKiJvMr__pTveeFSIgIX26vx0F0cDUmNI0_JTiUjIa8SS87NYFu0VC-K9UUoS_3YAmb3QbL1FzAfSGSNtasPG9UoNDP2sTOfaa0y-bXW7hGxDeemyMi5Q.mq5epx6DKMR2Kr4O2JnKftifGVfsgrCAgaghMEclE4U\",\"last_sync\":\"2026-05-27 06:58:28\",\"dateMode\":\"daily\"} {\"correlation_id\":\"f1c9b413-6e5b-4c12-af21-99b5174b2c5d\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f1c9b413-6e5b-4c12-af21-99b5174b2c5d\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [SocialAccountService] Token retrieved {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"f1c9b413-6e5b-4c12-af21-99b5174b2c5d\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"f1c9b413-6e5b-4c12-af21-99b5174b2c5d\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":89,\"team_id\":2} {\"correlation_id\":\"f1c9b413-6e5b-4c12-af21-99b5174b2c5d\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}\n[2026-05-27 12:58:25] local.INFO: [MS Office Calendar] Skipping delta sync for daily mode {\"calendarId\":\"9e8b1a2c-1a8f-42bd-b161-810fc0baf540\"} {\"correlation_id\":\"f1c9b413-6e5b-4c12-af21-99b5174b2c5d\",\"trace_id\":\"bd5ca695-f258-458c-aba7-b0d201d21b51\"}","role_description":"text entry area","is_enabled":true,"is_focused":true,"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}]...
|
-2918404396419486790
|
7358960207514864063
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
17
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$params ' . PHP_EOL . print_r($params, true));
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
10
Previous Highlighted Error
Next Highlighted Error
[2026-05-27 12:57:12] local.NOTICE: Monitoring start {"correlation_id":"01b85e02-17ff-44f0-8d6e-484a810b1085","trace_id":"b4d68a19-67e7-41f9-a2f3-ca98f84e617b"}
[2026-05-27 12:57:12] local.NOTICE: Monitoring end {"correlation_id":"01b85e02-17ff-44f0-8d6e-484a810b1085","trace_id":"b4d68a19-67e7-41f9-a2f3-ca98f84e617b"}
[2026-05-27 12:57:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"829043ea-15e1-40fe-a7ce-27fc8440984e","trace_id":"bd9f99cc-933a-453b-b9ff-869d04e9b49d"}
[2026-05-27 12:57:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"829043ea-15e1-40fe-a7ce-27fc8440984e","trace_id":"bd9f99cc-933a-453b-b9ff-869d04e9b49d"}
[2026-05-27 12:57:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"eb849911-4661-4753-b85d-3bd9dd3b0b9d","trace_id":"8508dc2d-48c1-4bc4-a89b-10e5cbd86d2a"}
[2026-05-27 12:57:15] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"eb849911-4661-4753-b85d-3bd9dd3b0b9d","trace_id":"8508dc2d-48c1-4bc4-a89b-10e5cbd86d2a"}
[2026-05-27 12:57:15] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"eb849911-4661-4753-b85d-3bd9dd3b0b9d","trace_id":"8508dc2d-48c1-4bc4-a89b-10e5cbd86d2a"}
[2026-05-27 12:57:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"eb849911-4661-4753-b85d-3bd9dd3b0b9d","trace_id":"8508dc2d-48c1-4bc4-a89b-10e5cbd86d2a"}
[2026-05-27 12:57:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"1743fc5e-a278-45c5-989d-06afb0bfe24e","trace_id":"872b746a-3e40-49a0-b858-c4265fb9ebf1"}
[2026-05-27 12:57:19] local.INFO: [EmailSchedule] STARTING batch create {"host":"docker_lamp_1"} {"correlation_id":"1743fc5e-a278-45c5-989d-06afb0bfe24e","trace_id":"872b746a-3e40-49a0-b858-c4265fb9ebf1"}
[2026-05-27 12:57:19] local.INFO: [EmailSchedule] FINISHED batch create {"host":"docker_lamp_1"} {"correlation_id":"1743fc5e-a278-45c5-989d-06afb0bfe24e","trace_id":"872b746a-3e40-49a0-b858-c4265fb9ebf1"}
[2026-05-27 12:57:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:create","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"1743fc5e-a278-45c5-989d-06afb0bfe24e","trace_id":"872b746a-3e40-49a0-b858-c4265fb9ebf1"}
[2026-05-27 12:57:21] local.INFO: [Jiminny\Jobs\Mailbox\CreateBatches] processed 1 inboxes and created 0 batches {"userId":null,"batchSize":30,"maxBatches":1000} {"correlation_id":"3f9ffe79-f6b7-483d-b4e2-253da2eb120e","trace_id":"872b746a-3e40-49a0-b858-c4265fb9ebf1"}
[2026-05-27 12:57:24] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"e4286517-4279-4047-8135-b79adc851022","trace_id":"0470f04d-52ab-4a34-9f7e-7bb500016954"}
[2026-05-27 12:57:24] local.INFO: [TextRelayService] Starting sync {"mailbox":"[EMAIL]","expected_alias":"catch-all","expected_host":"txt.staging.jiminny.com"} {"correlation_id":"e4286517-4279-4047-8135-b79adc851022","trace_id":"0470f04d-52ab-4a34-9f7e-7bb500016954"}
[2026-05-27 12:57:25] local.INFO: [TextRelayService] Sync completed {"mailbox":"[EMAIL]","messages_processed":0,"message_ids":[]} {"correlation_id":"e4286517-4279-4047-8135-b79adc851022","trace_id":"0470f04d-52ab-4a34-9f7e-7bb500016954"}
[2026-05-27 12:57:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"e4286517-4279-4047-8135-b79adc851022","trace_id":"0470f04d-52ab-4a34-9f7e-7bb500016954"}
[2026-05-27 12:58:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"7c1c4fd4-05fb-487e-bf3a-7e6aeec8362b","trace_id":"ed9dd4c2-0f01-4f46-aaae-d5a9ce425743"}
[2026-05-27 12:58:05] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {"count":0} {"correlation_id":"7c1c4fd4-05fb-487e-bf3a-7e6aeec8362b","trace_id":"ed9dd4c2-0f01-4f46-aaae-d5a9ce425743"}
[2026-05-27 12:58:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"7c1c4fd4-05fb-487e-bf3a-7e6aeec8362b","trace_id":"ed9dd4c2-0f01-4f46-aaae-d5a9ce425743"}
[2026-05-27 12:58:07] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"90309e61-fa7c-4b5f-9c02-ce974df47319","trace_id":"26186ec1-112c-4099-a7ca-00105f5a4e64"}
[2026-05-27 12:58:07] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"90309e61-fa7c-4b5f-9c02-ce974df47319","trace_id":"26186ec1-112c-4099-a7ca-00105f5a4e64"}
[2026-05-27 12:58:08] local.NOTICE: Monitoring start {"correlation_id":"39cf2e27-b157-4709-b9e2-635c7ddbbd98","trace_id":"c4377397-a3de-4f5d-a07f-e92c1b0ecb7d"}
[2026-05-27 12:58:08] local.NOTICE: Monitoring end {"correlation_id":"39cf2e27-b157-4709-b9e2-635c7ddbbd98","trace_id":"c4377397-a3de-4f5d-a07f-e92c1b0ecb7d"}
[2026-05-27 12:58:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"50cef6f9-cbe0-4cbe-b1e9-68bc9ed550eb","trace_id":"c3442d24-9553-4395-a3b8-98ce1846f584"}
[2026-05-27 12:58:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"50cef6f9-cbe0-4cbe-b1e9-68bc9ed550eb","trace_id":"c3442d24-9553-4395-a3b8-98ce1846f584"}
[2026-05-27 12:58:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"f6c5ca29-2b41-4030-a550-1335fe2c4a11","trace_id":"582ee47c-7c2a-41dc-b454-b90e9f41af1a"}
[2026-05-27 12:58:13] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"f6c5ca29-2b41-4030-a550-1335fe2c4a11","trace_id":"582ee47c-7c2a-41dc-b454-b90e9f41af1a"}
[2026-05-27 12:58:13] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"f6c5ca29-2b41-4030-a550-1335fe2c4a11","trace_id":"582ee47c-7c2a-41dc-b454-b90e9f41af1a"}
[2026-05-27 12:58:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"f6c5ca29-2b41-4030-a550-1335fe2c4a11","trace_id":"582ee47c-7c2a-41dc-b454-b90e9f41af1a"}
[2026-05-27 12:58:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"abd5beea-c617-4fef-b30f-87b538e08cfa","trace_id":"5a577ae2-bad7-4cdc-bee7-5e70ce7cb905"}
[2026-05-27 12:58:14] local.INFO: Running conference:monitor:count command for activities in (2026-05-27 12:56:00, 2026-05-27 12:58:00] {"correlation_id":"abd5beea-c617-4fef-b30f-87b538e08cfa","trace_id":"5a577ae2-bad7-4cdc-bee7-5e70ce7cb905"}
[2026-05-27 12:58:14] local.INFO: [conference:monitor:count] No activities found in (2026-05-27 12:56:00, 2026-05-27 12:58:00] {"correlation_id":"abd5beea-c617-4fef-b30f-87b538e08cfa","trace_id":"5a577ae2-bad7-4cdc-bee7-5e70ce7cb905"}
[2026-05-27 12:58:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"abd5beea-c617-4fef-b30f-87b538e08cfa","trace_id":"5a577ae2-bad7-4cdc-bee7-5e70ce7cb905"}
[2026-05-27 12:58:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"calendar:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"da72e8da-2f56-4b20-bfa7-d5396d6dc5d1","trace_id":"2328e196-0c82-430d-9d17-7b14a2a06770"}
[2026-05-27 12:58:18] local.NOTICE: Calendar sync start {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:retry-failed","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"da72e8da-2f56-4b20-bfa7-d5396d6dc5d1","trace_id":"2328e196-0c82-430d-9d17-7b14a2a06770"}
[2026-05-27 12:58:18] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1393,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:18] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1393,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1393,"provider":"google","refreshToken":"5aa7e2d96b53201cd16fca5d2e4ef3ad03320971fc064781d18aee3ae7b99fbf","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1393,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1387,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1387,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1387,"provider":"google","refreshToken":"8157ac6de94842937194009e9c50e459253600f799dacf6a40755ffdbeb5bba6","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1387,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1348,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1348,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:19] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1348,"provider":"google","refreshToken":"9e7d13d3032d0cb1b79d8e95aef01383e8e91eb52ff8ee960c8a0b6b95cd8c73","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1348,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1361,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1361,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1361,"provider":"google","refreshToken":"6c843da199c2b9907445329304fcc4ec5057a4ee748d8299641764395c08e1fd","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1361,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1310,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1310,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1310,"provider":"google","refreshToken":"e34818922c2830a660813a63f6169a4a9a992ae2cccd7dc8dd7796cfdb470ef1","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1310,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1333,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1333,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1333,"provider":"google","refreshToken":"6c902986546d8e8da1dc539b046cdc1d458f519acc972e5b5f1d6a1a295165e0","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1333,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1368,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1368,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1368,"provider":"google","refreshToken":"d2f128898ff8543bd16b69cfae37896ab85119b0f5ed2b431d739593bb600333","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1368,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1368,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1365,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1365,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1365,"provider":"google","refreshToken":"7676e4a9afcd082b413248ab5ec6e487021fec6a9bdf315860a59cefad9caad8","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1365,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1365,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1364,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1364,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:20] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1364,"provider":"google","refreshToken":"dd5882ebce76e645292ce33ae74238abbb77c0a4ecc6a2bfe723cad82e72ba8e","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:21] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1364,"provider":"google","responseBody":{"error":"unauthorized_client","error_description":"Unauthorized"}} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:21] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:21] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1364,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:21] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1370,"provider":"office"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:21] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1370,"provider":"office"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:21] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:21] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1370,"provider":"office","refreshToken":"b7ee8035306d0043cea6e00e7c4fe14f745e44074a1194db62a31cdf8b70af3e","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:21] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1370,"provider":"office","responseBody":"{\"error\":\"invalid_client\",\"error_description\":\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: e8f91f16-b4dc-40e7-985c-d4a3ac516000 Correlation ID: 0a8d37fe-9d50-4b4c-a1ae-77e0327f15fc Timestamp: 2026-05-27 12:58:21Z\",\"error_codes\":[7000215],\"timestamp\":\"2026-05-27 12:58:21Z\",\"trace_id\":\"e8f91f16-b4dc-40e7-985c-d4a3ac516000\",\"correlation_id\":\"0a8d37fe-9d50-4b4c-a1ae-77e0327f15fc\",\"error_uri\":\"https://login.microsoftonline.com/error?code=7000215\"}"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:21] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:21] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1370,"provider":"office","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:21] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1202,"provider":"office"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:21] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1202,"provider":"office"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:21] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:21] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1202,"provider":"office","refreshToken":"b458799ccc29b21a6e2eb5260fdb63e49ccba21bf942a3973fb63799bd7f0afe","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1202,"provider":"office","responseBody":"{\"error\":\"invalid_client\",\"error_description\":\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: 3e9be67a-9c49-4a40-ad26-4af7bae65000 Correlation ID: 7fb2008c-07fe-4705-a6ff-47e70f64b2bb Timestamp: 2026-05-27 12:58:22Z\",\"error_codes\":[7000215],\"timestamp\":\"2026-05-27 12:58:22Z\",\"trace_id\":\"3e9be67a-9c49-4a40-ad26-4af7bae65000\",\"correlation_id\":\"7fb2008c-07fe-4705-a6ff-47e70f64b2bb\",\"error_uri\":\"https://login.microsoftonline.com/error?code=7000215\"}"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1202,"provider":"office","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1502,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Token retrieved {"socialAccountId":1502,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: Calendar sync job dispatched {"calendar_id":501} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1300,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1300,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1300,"provider":"google","refreshToken":"4b811db0725fd9602a95943519a7da935e2a5065da7d9ebfcb170752e3e1ddb8","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1300,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Account has been deleted"}} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1300,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1409,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1409,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1409,"provider":"google","refreshToken":"e2a3f2d06894894eed1ee87d9db1ace77d4d42ee6e1288a8940ad2c10333b0c4","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1409,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1409,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1352,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1352,"provider":"google"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1352,"provider":"google","refreshToken":"dd4b16b00fdc1216da6b717c02338c073636e29162826b2de6db3f064fc029eb","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1352,"provider":"google","responseBody":{"error":"invalid_grant","error_description":"Bad Request"}} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1352,"provider":"google","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1296,"provider":"office"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1296,"provider":"office"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:22] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1296,"provider":"office","refreshToken":"011ae723c9d800c674e0b4be76f49fc046dac7d501b66c59ef0d9549cfa56ae5","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:23] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1296,"provider":"office","responseBody":"{\"error\":\"invalid_client\",\"error_description\":\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: cbdfd43b-d682-4397-8a35-69af29c81300 Correlation ID: 723e1e62-f593-454d-b972-845d22c92271 Timestamp: 2026-05-27 12:58:23Z\",\"error_codes\":[7000215],\"timestamp\":\"2026-05-27 12:58:23Z\",\"trace_id\":\"cbdfd43b-d682-4397-8a35-69af29c81300\",\"correlation_id\":\"723e1e62-f593-454d-b972-845d22c92271\",\"error_uri\":\"https://login.microsoftonline.com/error?code=7000215\"}"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:23] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:23] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":1296,"provider":"office","reason":"Flow refresh required."} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:23] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":391,"provider":"office"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:23] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":391,"provider":"office"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:23] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:23] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":391,"provider":"office","refreshToken":"00045eebae0f39b34887c6d53f92ae78064f7145e1f4b67754aebd03cfb2d881","state":"full-refresh"} {"correlation_id":"b939891c-4c61-4fc3-b7d5-4bcf72084fce","trace_id":"bd5ca695-f258-458c-aba7-b0d201d21b51"}
[2026-05-27 12:58:23] local.ERROR: [SocialAccountService] Failed to refresh token {"socialAccountId":391,"provider":"office","responseBody":"{\"error\":\"invalid_client\",\"error_description\":\"AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'bbcbb2ef-6200-4fae-82bd-d81f5dd738da'. Trace ID: f559a2e0-ad9d-4163-bd2c-dcf7c33f1200 Correlation ID: 44266705-aff3-4701-aa5e-a88b7867593a Timestamp: 2026-05-27 12:58:23Z\",\"error_codes\":[7000215],\"timestamp\":\"2026-05-27 12:58:23Z\",\"trace_id\":\"f559a2e0-ad9d-4163...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
78760
|
2763
|
43
|
2026-05-27T12:58:42.825399+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886722825_m1.jpg...
|
PhpStorm
|
faVsco.js – custom.log
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
17
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$params ' . PHP_EOL . print_r($params, true));
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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":"TextRelayServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'TextRelayServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'TextRelayServiceTest'","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":"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,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"17","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\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$params ' . PHP_EOL . print_r($params, true));\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$params ' . PHP_EOL . print_r($params, true));\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\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":"AXTextArea","text":"Editor for custom.log","depth":4,"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":true,"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}]...
|
-7759981108847106831
|
-6434374888888824949
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
17
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$params ' . PHP_EOL . print_r($params, true));
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
Editor for custom.log
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
78759
|
NULL
|
NULL
|
NULL
|
|
78761
|
2764
|
48
|
2026-05-27T12:58:42.384274+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886722384_m2.jpg...
|
Alfred
|
Alfred
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Alfred Search Field
|
[{"role":"AXTextField","text [{"role":"AXTextField","text":"Alfred Search Field","depth":1,"on_screen":true,"help_text":"Alfred Search","role_description":"text field","is_enabled":true,"is_focused":true}]...
|
7926243118367575
|
7570943109877468232
|
click
|
hybrid
|
NULL
|
Alfred Search Field
PhpStormViewNeWENNCFv faVsco.i Alfred Search Field
PhpStormViewNeWENNCFv faVsco.is$2 JY-20915-fix-mlProjectno ataituutorephe logging.phgphe logos.phpphe matl.orpHmaXro.ontHenoonephe media-streaming.pho"wrowne lcalonequeue.onosalestorce.oinsppsamiz.onewpsecure-neaders.ongwpservices.phopip slack ohephptimezones.ohgpho wennodkasarver.onecontnt→darabas.>Mdoccrontcent>Ulangnode modtles hhrar toonen chostanM oublic›ci resourcesv hroutesphe api.phpphe api_v2.phpno console.onophp customer. api.phpaemocooco.oneAo eeim.ohompuoro eeuo weo.onma web cnophp webhook.oho>On scriptsvên storage>C apo> E debuabar> En frameworkv êa loaseitionore0 audio wavEhubsoot-loumal.col lodCaravell8 nhminit ymCoocRefactoTOOI-Window(C) Kernelphp© SyncMailbox.phpDockerfileTextRelayServiceTest.php99999918310416710611011111511g118119122E Bphp fiminny.php.env.production₴.enclass TextRelayService-A1A1.story(6oogle6mail Sservice): arraykey: 'jiminny.google text relay topic'):che:.oet sropzehistony stored. WatchMai 1boxEvents nust not have run vet :false) ?wwosrerreshhstorw.othtoc" => 'messageAdded",Id' = Shistonyidlokenns i'pagetoken' = SpageToken:te \Support \Facades Log::channel( channel: 'custon channel')-›info(*Sparams' . PHP EOL . print r(Sparams.esponse = Sservice-›users history->ListUsersHistory9( key: ""iminny.google text user')tHistoryPoint(Stopic, (dnt) ShistoryResponse-shistoryId):oryResponse->getHistoryo)ages = array nerge(Smessages, ShistoryResponse-›getHistory)=Token = ShistoryResponse->getNextPageTokenO=eption $e) {nu mesntsion" => Se->actMessaoco'[TextRelavSenwicel Fafled to fetch Gaafl hictory". 1ViCoL/ woy 10:00.4sravellosSF (iminny@localhost)A console (STAGINGHSJocal jiminny@blocalhost)# console (PRontA console (EU)aer henseictcan I test it locally first. if I place env from stagingYes. The service relies on a tew thinas vou'd need in place1. Credentials file The constructor expects storage/text-relay.ison (a Google service account JSON key file)Gmbtrom sthaind and oince it there2. .env values to copy from stagingGOOGLE TEXTUSERECOOGLE TEXTI HASTGOOGLE TEXT RELAY TOPICDEPLOY REGION:the cnail nailbox address# e.g. txt.jiminny.com or txt.staging.jiminny.com# the Pub/Sub topic nameeu or ue3. Run the svnc manualiv vin tinker tinside docker 1aeo 1%b bashaegdocker exec -it docker_lamp_1 php artisan tinkeapp(\Jiminny\Services\Ma1l\TextRelayService::class)-sync():Caveat: The service reads from Gmail history and dispatches jobs to the queue. If you don't want it to actuallsend SMS, make sure QUEUE_CONNECTICN»sync is not set (or use a test queue), or just call isForCurrentEnvironntioh.Ssvc = new class extends \Jiminny\Services\Mail\TextRelayService & public function _construct(som Serviceassvc-soctServicelconttatainny.googletex)I then sinsoect aueessaaesasg= sonailService-susers_messages-sget(config(*iminty.google text user'), *THE_MESSAGE ID*)collect(5-s0-20etPayload()-soetWeaders())-soluck("value"thut wey von can Mrity whht handare tra nehhilm oraeset do ttat mactsod alote tha uill evoc rinetHistoryPoint(string Stopic, int ShistoryPoint): Carbon{...,Ask anything (XoL)- @ eodeAdhotv145uaoAe lekminutas soaP4 s...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
78759
|
2763
|
42
|
2026-05-27T12:58:41.035235+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886721035_m1.jpg...
|
Alfred
|
Alfred
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Alfred Search Field
|
[{"role":"AXTextField","text [{"role":"AXTextField","text":"Alfred Search Field","depth":1,"bounds":{"left":0.26180556,"top":0.16777778,"width":0.4763889,"height":0.05888889},"on_screen":true,"help_text":"Alfred Search","role_description":"text field","is_enabled":true,"is_focused":true}]...
|
7926243118367575
|
7570943109877468232
|
visual_change
|
hybrid
|
NULL
|
Alfred Search Field
iTerm2ShellEditViewSessionScri Alfred Search Field
iTerm2ShellEditViewSessionScriptsProfilesWindowHelp100% <DEV (docker)screenpipe"DOCKER- ₴81DEV (docker)-zshH3configcachecompiledeventsroutesviewsjiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00:stoppedworker-crm-update:worker-crm-update_00: stoppedjiminny-worker-processing-2:jiminny-worker-processing-2_00: stoppedjiminny-worker-processing-3:jiminny-worker-processing-3_00: stoppedjiminny-worker-processing-4:jiminny-worker-processing-4_00: stoppedjiminny-worker-processing-5:jiminny-worker-processing-5_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-download:worker-download_00: stoppedworker:worker_00: stoppedworker-nudges:worker-nudges_00:stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-audio:worker-audio_00: stoppedworker-calendar:worker-calendar_00:stoppedworker-conferences:worker-conferences_00: stoppedworker-crm-sync:worker-crm-sync_00: stoppedworker-emails:worker-emails_00: stoppedartisan-schedule:artisan-schedule_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00:startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00:startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00:startedroot@docker_lamp_1:/home/jiminny# l-84-zsh*5...ip-10-30-129-190:~ (nc)2.50ms DONE9.59ms DONE1.39ms DONE1.06ms DONE1.07ms DONE4.84ms DONE₴868• Wed 27 May 15:58:40181...-10-30-140-255:~ (-zsh)$7DEV...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
78758
|
2763
|
41
|
2026-05-27T12:58:38.402391+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886718402_m1.jpg...
|
PhpStorm
|
faVsco.js – custom.log
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere...
|
[{"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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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":"TextRelayServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'TextRelayServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'TextRelayServiceTest'","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}]...
|
6445247769588009110
|
-6618793407836651056
|
click
|
hybrid
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
iTerm2ShellEditViewSessionScriptsProfilesWindowHelp100% <DEV (docker)screenpipe"DOCKER₴81DEV (docker)$2-zsh883jiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00:startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00: startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00:startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan mailbox: text-relay: syncRelayed 0 message(s).root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart allINFOClearing cached bootstrap files.configcachecompiledeventsroutesviewsjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: stoppedworker-crm-update:worker-crm-update_00: stoppedjiminny-worker-processing-2:jiminny-worker-processing-2_00: stoppedjiminny-worker-processing-3:jiminny-worker-processing-3_00:stoppedjiminny-worker-processing-4:jiminny-worker-processing-4_00:stoppedjiminny-worker-processing-5:jiminny-worker-processing-5_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-download:worker-download_00: stoppedworker:worker_00: stoppedworker-nudges:worker-nudges_00: stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-audio:worker-audio_00: stoppedworker-calendar:worker-calendar_00: stoppedworker-conferences:worker-conferences_00: stoppedworker-crm-sync:worker-crm-sync_00: stoppedworker-emails:worker-emails_00: stoppedartisan-schedule:artisan-schedule_00: stoppedworker-es-update:worker-es-update_00: stopped84-zsh*5...ip-10-30-129-190:~ (nc)₴86Wed 27 May 15:58:37T81•..-10-30-140-255:~ (-zsh)$7DEV2.50ms DONE9.59ms DONE1.39ms DONE1.06ms DONE1.07ms DONE4.84ms DONE...
|
78756
|
NULL
|
NULL
|
NULL
|
|
78757
|
2764
|
47
|
2026-05-27T12:58:35.443990+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886715443_m2.jpg...
|
iTerm2
|
DEV (docker)
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
/Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SE /Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SECRET]
/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/.env.local:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/dev.json:18: "DB_ADMIN_PASSWORD" : "dgyt$rTe21-d",
/Users/lukas/jiminny/app/.env:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.vscode/settings.json:16: "password": "dgyt$rTe21-d"
/Users/lukas/jiminny/app/.env.root:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.env.root:394:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.other:14:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#[ENV_SECRET]
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop
320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep
a1718cfb Merge pull request #529 from jiminny/katranci-patch-1
74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3
0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2
4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue
220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url
543c60b8 Merge branch 'develop' into JY-19432-recall-api-url
f163a29e JY-19432 Fix formatting
6de60dd0 JY-19432 Fix formatting
78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances
2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3
d6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code
4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers
6426729b JY-20432 Set stopasgroup to false for dialers queue worker
92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities
e0796d89 Delete obsolete files
4a8b1ea2 Delete old docker build scripts before php-8 upgrade
d790e56d JY-20603 Fix formatting
fc758135 JY-20603 Move video ec2 instances to external subnet
ecb558d5 JY-20761 Spread php-app tasks over ec2 instances
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80
commit a8ba85203fb10fb793ff07a6e85efac833979335
Merge: c15e0c8201 a00d53bdd6
Author: Nikolay Ivanov <[EMAIL]>
Date: Fri May 15 10:44:44 2026 +0300
JY-18091 | Resolve conflicts
commit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1
Author: Nikolay Nikolov <[EMAIL]>
Date: Thu Apr 30 14:54:08 2026 +0300
JY-20625 | JY-20742 | Add laravel/mcp
# Conflicts:
# composer.lock
diff --git a/composer.json b/composer.json
index 02ffcc050e..89551995a1 100644
--- a/composer.json
+++ b/composer.json
@@ -113,6 +113,7 @@
"kalnoy/nestedset": "*",
"laravel/framework": "^12.28",
"laravel/helpers": "^1.7",
+ "laravel/mcp": "^0.7.0",
"laravel/passport": "^13.0",
"laravel/slack-notification-channel": "^3.4",
"laravel/tinker": "^2.10.1",
commit 431b4c096f4ad0272bac595d078871a78b510bb5
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 17:17:47 2026 +0300
JY-18091 | Downgrade composer.json
diff --git a/composer.json b/composer.json
index 5db26da2c9..baacefbd5f 100644
--- a/composer.json
+++ b/composer.json
@@ -187,20 +187,18 @@
"require-dev": {
"barryvdh/laravel-debugbar": "^3.15",
"barryvdh/laravel-ide-helper": "^3.5",
- "brianium/paratest": "^7.12",
+ "brianium/paratest": "^7.5",
"browserstack/browserstack-local": "^1.1.0",
"filp/whoops": "^2.9",
"friendsofphp/php-cs-fixer": "^3.66",
"infection/infection": "^0.29.14",
"jasonmccreary/laravel-test-assertions": "^2.5",
"larastan/larastan": "^3.1",
- "maglnet/composer-require-checker": "^4.8",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
"phpstan/phpstan": "^2.1",
- "phpunit/phpunit": "^12.0",
- "symfony/phpunit-bridge": "^7.0",
- "vimeo/psalm": "^6.5.0"
+ "phpunit/phpunit": "^11.5.50",
+ "symfony/phpunit-bridge": "^7.0"
},
"autoload": {
"classmap": [
commit 90e9b4034f665e2a8cacaf937e55abc070b5af4a
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 16:25:45 2026 +0300
JY-18091 | Changes, composer
diff --git a/composer.json b/composer.json
index 751005e37a..5db26da2c9 100644
--- a/composer.json
+++ b/composer.json
@@ -95,7 +95,7 @@
"google/apps-meet": "^0.5.1",
"guzzlehttp/guzzle": "^7.8",
"guzzlehttp/psr7": "^2.6",
- "halaxa/json-machine": "^1.3",
+ "halaxa/json-machine": "^1.2",
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20
a8ba85203f JY-18091 | Resolve conflicts
4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts
1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp
431b4c096f JY-18091 | Downgrade composer.json
90e9b4034f JY-18091 | Changes, composer
b63d6f5d1f JY-18091 | Composer changes
d017fbd8aa JY-18091 | Merge
7daa10a444 JY-18091 | Cs lint fixes
a472f51b71 JY-18091 | Update composer to support php 8.5
1162b04371 fix(security): bump dependencies (alerts #477)
0c1f2f35df JY-19957 | Update composer.lock with correct dep
574315fc12 JY-19957 | Update composer.locl
c97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade
e4e0e6d46d Merge branch 'master' into secfix/composer-20260415
7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)
4f5795d1d5 JY-20479: Remove unused dependencies
caa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download
07832f2eeb JY-20479: Transcript download PDF optimization
9f17a0f70e JY-20526: Remove Sentence breaker
4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 "^docker-update:" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \
|| grep -rA 20 "^docker-update:" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40
/Users/lukas/jiminny/app/Makefile:docker-update:
/Users/lukas/jiminny/app/Makefile- aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-up:
/Users/lukas/jiminny/app/Makefile- tmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-stop:
/Users/lukas/jiminny/app/Makefile- tmux kill-session -t jiminny_dev_ngrok
/Users/lukas/jiminny/app/Makefile-
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n "arm64v8\|/jiminny/app/qa" ~/jiminny/infrastructure/dev/docker/docker-compose.yml
8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
187d58491294 wernight/ngrok "/entrypoint.sh" 37 seconds ago Up 37 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
b433f55153b5 mariadb:11.4.5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
d09012232958 redis:5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
error: Your local changes to the following files would be overwritten by checkout:
tests/Unit/Services/Mail/TextRelayServiceTest.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M config/logging.php
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 124, done.
remote: Counting objects: 100% (123/123), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)
Receiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.
Resolving deltas: 100% (93/93), completed with 33 local objects.
From github.com:jiminny/app
23fdef5aa9..942ddbe31c master -> origin/master
a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app
96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration
a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
* [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only
+ 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)
* [new branch] master-reset-ES -> origin/master-reset-ES
Updating 23fdef5aa9..942ddbe31c
Fast-forward
contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------
front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----
front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--
front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-
front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------
routes/api_v2.php | 6 +++---
tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------
7 files changed, 61 insertions(+), 46 deletions(-)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env
#IMAGE_TAG="latest"
IMAGE_TAG="arm64v8-latest"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 "lamp:" | grep image
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
docker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest "docker-php-entrypoi…" lamp 3 minutes ago Exited (2) 3 minutes ago
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
87804ee14786 wernight/ngrok "/entrypoint.sh" 18 minutes ago Up 53 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
bc04ffad01b2 mariadb:11.4.5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
e985cd5cfbf7 redis:5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
Filter, search, and stream logs from all your Compose services
in one place with Docker Desktop's Logs view. [URL_WITH_CREDENTIALS]
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2
Learn more at [URL_WITH_CREDENTIALS] php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 9.84ms DONE
cache [PASSWORD_DOTS] 69.91ms DONE
compiled [PASSWORD_DOTS] 2.96ms DONE
events [PASSWORD_DOTS] 1.19ms DONE
routes [PASSWORD_DOTS] 0.65ms DONE
views [PASSWORD_DOTS] 4.44ms DONE
worker-crm-update:worker-crm-update_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-download:worker-download_00: stopped
worker-nudges:worker-nudges_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-emails:worker-emails_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan tinker
Psy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman
New PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`
> app(\Jiminny\Services\Mail\TextRelayService::class)->sync();
= []
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 3.45ms DONE
cache [PASSWORD_DOTS] 10.26ms DONE
compiled [PASSWORD_DOTS] 1.84ms DONE
events [PASSWORD_DOTS] 0.72ms DONE
routes [PASSWORD_DOTS] 6.62ms DONE
views [PASSWORD_DOTS] 4.33ms DONE
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-download:worker-download_00: stopped
worker-emails:worker-emails_00: stopped
worker-nudges:worker-nudges_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-conferences:worker-conferences_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan mailbox:text-relay:sync
Relayed 0 message(s).
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
DOCKER
Close Tab
DEV (docker)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ec2-user@ip-10-30-129-190:~ (nc)
Close Tab
ec2-user@ip-10-30-140-255:~ (-zsh)
Close Tab
⌥⌘1
DEV (docker)...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"/Users/lukas/jiminny/app/.env.nikilocal:22:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/.env.local:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/dev.json:18: \"DB_ADMIN_PASSWORD\" : \"dgyt$rTe21-d\",\n/Users/lukas/jiminny/app/.env:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.vscode/settings.json:16: \"password\": \"dgyt$rTe21-d\"\n/Users/lukas/jiminny/app/.env.root:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.root:394:DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.other:14:DB_PASSWORD=dgyt\\$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop\n320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep\na1718cfb Merge pull request #529 from jiminny/katranci-patch-1\n74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3\n0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2\n4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue\n220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url\n543c60b8 Merge branch 'develop' into JY-19432-recall-api-url\nf163a29e JY-19432 Fix formatting\n6de60dd0 JY-19432 Fix formatting\n78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances\n2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3\nd6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code\n4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers\n6426729b JY-20432 Set stopasgroup to false for dialers queue worker\n92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities\ne0796d89 Delete obsolete files\n4a8b1ea2 Delete old docker build scripts before php-8 upgrade\nd790e56d JY-20603 Fix formatting\nfc758135 JY-20603 Move video ec2 instances to external subnet\necb558d5 JY-20761 Spread php-app tasks over ec2 instances\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80\n\ncommit a8ba85203fb10fb793ff07a6e85efac833979335\nMerge: c15e0c8201 a00d53bdd6\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Fri May 15 10:44:44 2026 +0300\n\n JY-18091 | Resolve conflicts\n\ncommit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1\nAuthor: Nikolay Nikolov <nikolay.nikolov@jiminny.com>\nDate: Thu Apr 30 14:54:08 2026 +0300\n\n JY-20625 | JY-20742 | Add laravel/mcp\n \n # Conflicts:\n # composer.lock\n\ndiff --git a/composer.json b/composer.json\nindex 02ffcc050e..89551995a1 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -113,6 +113,7 @@\n \"kalnoy/nestedset\": \"*\",\n \"laravel/framework\": \"^12.28\",\n \"laravel/helpers\": \"^1.7\",\n+ \"laravel/mcp\": \"^0.7.0\",\n \"laravel/passport\": \"^13.0\",\n \"laravel/slack-notification-channel\": \"^3.4\",\n \"laravel/tinker\": \"^2.10.1\",\n\ncommit 431b4c096f4ad0272bac595d078871a78b510bb5\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 17:17:47 2026 +0300\n\n JY-18091 | Downgrade composer.json\n\ndiff --git a/composer.json b/composer.json\nindex 5db26da2c9..baacefbd5f 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -187,20 +187,18 @@\n \"require-dev\": {\n \"barryvdh/laravel-debugbar\": \"^3.15\",\n \"barryvdh/laravel-ide-helper\": \"^3.5\",\n- \"brianium/paratest\": \"^7.12\",\n+ \"brianium/paratest\": \"^7.5\",\n \"browserstack/browserstack-local\": \"^1.1.0\",\n \"filp/whoops\": \"^2.9\",\n \"friendsofphp/php-cs-fixer\": \"^3.66\",\n \"infection/infection\": \"^0.29.14\",\n \"jasonmccreary/laravel-test-assertions\": \"^2.5\",\n \"larastan/larastan\": \"^3.1\",\n- \"maglnet/composer-require-checker\": \"^4.8\",\n \"mockery/mockery\": \"^1.6\",\n \"nunomaduro/collision\": \"^8.6\",\n \"phpstan/phpstan\": \"^2.1\",\n- \"phpunit/phpunit\": \"^12.0\",\n- \"symfony/phpunit-bridge\": \"^7.0\",\n- \"vimeo/psalm\": \"^6.5.0\"\n+ \"phpunit/phpunit\": \"^11.5.50\",\n+ \"symfony/phpunit-bridge\": \"^7.0\"\n },\n \"autoload\": {\n \"classmap\": [\n\ncommit 90e9b4034f665e2a8cacaf937e55abc070b5af4a\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 16:25:45 2026 +0300\n\n JY-18091 | Changes, composer\n\ndiff --git a/composer.json b/composer.json\nindex 751005e37a..5db26da2c9 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -95,7 +95,7 @@\n \"google/apps-meet\": \"^0.5.1\",\n \"guzzlehttp/guzzle\": \"^7.8\",\n \"guzzlehttp/psr7\": \"^2.6\",\n- \"halaxa/json-machine\": \"^1.3\",\n+ \"halaxa/json-machine\": \"^1.2\",\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20\n\na8ba85203f JY-18091 | Resolve conflicts\n4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts\n1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp\n431b4c096f JY-18091 | Downgrade composer.json\n90e9b4034f JY-18091 | Changes, composer\nb63d6f5d1f JY-18091 | Composer changes\nd017fbd8aa JY-18091 | Merge\n7daa10a444 JY-18091 | Cs lint fixes\na472f51b71 JY-18091 | Update composer to support php 8.5\n1162b04371 fix(security): bump dependencies (alerts #477)\n0c1f2f35df JY-19957 | Update composer.lock with correct dep\n574315fc12 JY-19957 | Update composer.locl\nc97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade\ne4e0e6d46d Merge branch 'master' into secfix/composer-20260415\n7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)\n4f5795d1d5 JY-20479: Remove unused dependencies\ncaa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download\n07832f2eeb JY-20479: Transcript download PDF optimization\n9f17a0f70e JY-20526: Remove Sentence breaker\n4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 \"^docker-update:\" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \\\n || grep -rA 20 \"^docker-update:\" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40\n/Users/lukas/jiminny/app/Makefile:docker-update:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\taws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-up:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-stop:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux kill-session -t jiminny_dev_ngrok\n/Users/lukas/jiminny/app/Makefile-\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n \"arm64v8\\|/jiminny/app/qa\" ~/jiminny/infrastructure/dev/docker/docker-compose.yml\n8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 37 seconds ago Up 37 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n187d58491294 wernight/ngrok \"/entrypoint.sh\" 37 seconds ago Up 37 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nb433f55153b5 mariadb:11.4.5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\n207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 37 seconds ago Up 37 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nd09012232958 redis:5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Services/Mail/TextRelayServiceTest.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nSwitched to branch 'master'\nYour branch is up to date with 'origin/master'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 124, done.\nremote: Counting objects: 100% (123/123), done.\nremote: Compressing objects: 100% (32/32), done.\nremote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)\nReceiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.\nResolving deltas: 100% (93/93), completed with 33 local objects.\nFrom github.com:jiminny/app\n 23fdef5aa9..942ddbe31c master -> origin/master\n a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app\n 96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration\n a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details\n * [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only\n + 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)\n * [new branch] master-reset-ES -> origin/master-reset-ES\nUpdating 23fdef5aa9..942ddbe31c\nFast-forward\n contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------\n front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----\n front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--\n front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-\n front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------\n routes/api_v2.php | 6 +++---\n tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------\n 7 files changed, 61 insertions(+), 46 deletions(-)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\nphp-8.5: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\narm64v8-php-8.5: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env\n#IMAGE_TAG=\"latest\"\nIMAGE_TAG=\"arm64v8-latest\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 \"lamp:\" | grep image\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \ndocker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest \"docker-php-entrypoi…\" lamp 3 minutes ago Exited (2) 3 minutes ago \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\nlatest: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\narm64v8-latest: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\nff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 18 minutes ago Up 53 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n87804ee14786 wernight/ngrok \"/entrypoint.sh\" 18 minutes ago Up 53 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nbc04ffad01b2 mariadb:11.4.5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\ne985cd5cfbf7 redis:5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\n121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 18 minutes ago Up 53 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\n Filter, search, and stream logs from all your Compose services\n in one place with Docker Desktop's Logs view. docker-desktop://dashboard/logs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\nroot@docker_lamp_1:/home/jiminny# ^C\nroot@docker_lamp_1:/home/jiminny# \nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entity) $ dev\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> exit\n\n INFO Goodbye.\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 9.84ms DONE\n cache ............................................................................................................................... 69.91ms DONE\n compiled ............................................................................................................................. 2.96ms DONE\n events ............................................................................................................................... 1.19ms DONE\n routes ............................................................................................................................... 0.65ms DONE\n views ................................................................................................................................ 4.44ms DONE\n\nworker-crm-update:worker-crm-update_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-download:worker-download_00: stopped\nworker-nudges:worker-nudges_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> app(\\Jiminny\\Services\\Mail\\TextRelayService::class)->sync();\n\n= []\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 3.45ms DONE\n cache ............................................................................................................................... 10.26ms DONE\n compiled ............................................................................................................................. 1.84ms DONE\n events ............................................................................................................................... 0.72ms DONE\n routes ............................................................................................................................... 6.62ms DONE\n views ................................................................................................................................ 4.33ms DONE\n\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan mailbox:text-relay:sync\nRelayed 0 message(s).\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all","depth":4,"on_screen":true,"value":"/Users/lukas/jiminny/app/.env.nikilocal:22:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/.env.local:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/dev.json:18: \"DB_ADMIN_PASSWORD\" : \"dgyt$rTe21-d\",\n/Users/lukas/jiminny/app/.env:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.vscode/settings.json:16: \"password\": \"dgyt$rTe21-d\"\n/Users/lukas/jiminny/app/.env.root:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.root:394:DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.other:14:DB_PASSWORD=dgyt\\$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop\n320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep\na1718cfb Merge pull request #529 from jiminny/katranci-patch-1\n74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3\n0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2\n4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue\n220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url\n543c60b8 Merge branch 'develop' into JY-19432-recall-api-url\nf163a29e JY-19432 Fix formatting\n6de60dd0 JY-19432 Fix formatting\n78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances\n2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3\nd6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code\n4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers\n6426729b JY-20432 Set stopasgroup to false for dialers queue worker\n92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities\ne0796d89 Delete obsolete files\n4a8b1ea2 Delete old docker build scripts before php-8 upgrade\nd790e56d JY-20603 Fix formatting\nfc758135 JY-20603 Move video ec2 instances to external subnet\necb558d5 JY-20761 Spread php-app tasks over ec2 instances\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80\n\ncommit a8ba85203fb10fb793ff07a6e85efac833979335\nMerge: c15e0c8201 a00d53bdd6\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Fri May 15 10:44:44 2026 +0300\n\n JY-18091 | Resolve conflicts\n\ncommit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1\nAuthor: Nikolay Nikolov <nikolay.nikolov@jiminny.com>\nDate: Thu Apr 30 14:54:08 2026 +0300\n\n JY-20625 | JY-20742 | Add laravel/mcp\n \n # Conflicts:\n # composer.lock\n\ndiff --git a/composer.json b/composer.json\nindex 02ffcc050e..89551995a1 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -113,6 +113,7 @@\n \"kalnoy/nestedset\": \"*\",\n \"laravel/framework\": \"^12.28\",\n \"laravel/helpers\": \"^1.7\",\n+ \"laravel/mcp\": \"^0.7.0\",\n \"laravel/passport\": \"^13.0\",\n \"laravel/slack-notification-channel\": \"^3.4\",\n \"laravel/tinker\": \"^2.10.1\",\n\ncommit 431b4c096f4ad0272bac595d078871a78b510bb5\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 17:17:47 2026 +0300\n\n JY-18091 | Downgrade composer.json\n\ndiff --git a/composer.json b/composer.json\nindex 5db26da2c9..baacefbd5f 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -187,20 +187,18 @@\n \"require-dev\": {\n \"barryvdh/laravel-debugbar\": \"^3.15\",\n \"barryvdh/laravel-ide-helper\": \"^3.5\",\n- \"brianium/paratest\": \"^7.12\",\n+ \"brianium/paratest\": \"^7.5\",\n \"browserstack/browserstack-local\": \"^1.1.0\",\n \"filp/whoops\": \"^2.9\",\n \"friendsofphp/php-cs-fixer\": \"^3.66\",\n \"infection/infection\": \"^0.29.14\",\n \"jasonmccreary/laravel-test-assertions\": \"^2.5\",\n \"larastan/larastan\": \"^3.1\",\n- \"maglnet/composer-require-checker\": \"^4.8\",\n \"mockery/mockery\": \"^1.6\",\n \"nunomaduro/collision\": \"^8.6\",\n \"phpstan/phpstan\": \"^2.1\",\n- \"phpunit/phpunit\": \"^12.0\",\n- \"symfony/phpunit-bridge\": \"^7.0\",\n- \"vimeo/psalm\": \"^6.5.0\"\n+ \"phpunit/phpunit\": \"^11.5.50\",\n+ \"symfony/phpunit-bridge\": \"^7.0\"\n },\n \"autoload\": {\n \"classmap\": [\n\ncommit 90e9b4034f665e2a8cacaf937e55abc070b5af4a\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 16:25:45 2026 +0300\n\n JY-18091 | Changes, composer\n\ndiff --git a/composer.json b/composer.json\nindex 751005e37a..5db26da2c9 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -95,7 +95,7 @@\n \"google/apps-meet\": \"^0.5.1\",\n \"guzzlehttp/guzzle\": \"^7.8\",\n \"guzzlehttp/psr7\": \"^2.6\",\n- \"halaxa/json-machine\": \"^1.3\",\n+ \"halaxa/json-machine\": \"^1.2\",\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20\n\na8ba85203f JY-18091 | Resolve conflicts\n4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts\n1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp\n431b4c096f JY-18091 | Downgrade composer.json\n90e9b4034f JY-18091 | Changes, composer\nb63d6f5d1f JY-18091 | Composer changes\nd017fbd8aa JY-18091 | Merge\n7daa10a444 JY-18091 | Cs lint fixes\na472f51b71 JY-18091 | Update composer to support php 8.5\n1162b04371 fix(security): bump dependencies (alerts #477)\n0c1f2f35df JY-19957 | Update composer.lock with correct dep\n574315fc12 JY-19957 | Update composer.locl\nc97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade\ne4e0e6d46d Merge branch 'master' into secfix/composer-20260415\n7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)\n4f5795d1d5 JY-20479: Remove unused dependencies\ncaa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download\n07832f2eeb JY-20479: Transcript download PDF optimization\n9f17a0f70e JY-20526: Remove Sentence breaker\n4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 \"^docker-update:\" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \\\n || grep -rA 20 \"^docker-update:\" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40\n/Users/lukas/jiminny/app/Makefile:docker-update:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\taws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-up:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-stop:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux kill-session -t jiminny_dev_ngrok\n/Users/lukas/jiminny/app/Makefile-\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n \"arm64v8\\|/jiminny/app/qa\" ~/jiminny/infrastructure/dev/docker/docker-compose.yml\n8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 37 seconds ago Up 37 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n187d58491294 wernight/ngrok \"/entrypoint.sh\" 37 seconds ago Up 37 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nb433f55153b5 mariadb:11.4.5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\n207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 37 seconds ago Up 37 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nd09012232958 redis:5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Services/Mail/TextRelayServiceTest.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nSwitched to branch 'master'\nYour branch is up to date with 'origin/master'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 124, done.\nremote: Counting objects: 100% (123/123), done.\nremote: Compressing objects: 100% (32/32), done.\nremote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)\nReceiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.\nResolving deltas: 100% (93/93), completed with 33 local objects.\nFrom github.com:jiminny/app\n 23fdef5aa9..942ddbe31c master -> origin/master\n a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app\n 96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration\n a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details\n * [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only\n + 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)\n * [new branch] master-reset-ES -> origin/master-reset-ES\nUpdating 23fdef5aa9..942ddbe31c\nFast-forward\n contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------\n front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----\n front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--\n front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-\n front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------\n routes/api_v2.php | 6 +++---\n tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------\n 7 files changed, 61 insertions(+), 46 deletions(-)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\nphp-8.5: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\narm64v8-php-8.5: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env\n#IMAGE_TAG=\"latest\"\nIMAGE_TAG=\"arm64v8-latest\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 \"lamp:\" | grep image\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \ndocker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest \"docker-php-entrypoi…\" lamp 3 minutes ago Exited (2) 3 minutes ago \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\nlatest: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\narm64v8-latest: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\nff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 18 minutes ago Up 53 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n87804ee14786 wernight/ngrok \"/entrypoint.sh\" 18 minutes ago Up 53 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nbc04ffad01b2 mariadb:11.4.5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\ne985cd5cfbf7 redis:5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\n121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 18 minutes ago Up 53 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\n Filter, search, and stream logs from all your Compose services\n in one place with Docker Desktop's Logs view. docker-desktop://dashboard/logs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\nroot@docker_lamp_1:/home/jiminny# ^C\nroot@docker_lamp_1:/home/jiminny# \nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entity) $ dev\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> exit\n\n INFO Goodbye.\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 9.84ms DONE\n cache ............................................................................................................................... 69.91ms DONE\n compiled ............................................................................................................................. 2.96ms DONE\n events ............................................................................................................................... 1.19ms DONE\n routes ............................................................................................................................... 0.65ms DONE\n views ................................................................................................................................ 4.44ms DONE\n\nworker-crm-update:worker-crm-update_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-download:worker-download_00: stopped\nworker-nudges:worker-nudges_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> app(\\Jiminny\\Services\\Mail\\TextRelayService::class)->sync();\n\n= []\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 3.45ms DONE\n cache ............................................................................................................................... 10.26ms DONE\n compiled ............................................................................................................................. 1.84ms DONE\n events ............................................................................................................................... 0.72ms DONE\n routes ............................................................................................................................... 6.62ms DONE\n views ................................................................................................................................ 4.33ms DONE\n\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan mailbox:text-relay:sync\nRelayed 0 message(s).\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.06732048,"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 (docker)","depth":2,"bounds":{"left":0.33759972,"top":1.0,"width":0.06732048,"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.33959442,"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":"-zsh","depth":2,"bounds":{"left":0.40492022,"top":1.0,"width":0.06732048,"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.4069149,"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.4722407,"top":1.0,"width":0.06732048,"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.4742354,"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":"-zsh","depth":2,"bounds":{"left":0.53956115,"top":1.0,"width":0.06715426,"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.5415558,"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":"ec2-user@ip-10-30-129-190:~ (nc)","depth":2,"bounds":{"left":0.60671544,"top":1.0,"width":0.06715426,"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.6087101,"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":"ec2-user@ip-10-30-140-255:~ (-zsh)","depth":2,"bounds":{"left":0.67386967,"top":1.0,"width":0.06715426,"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.67586434,"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.7273936,"top":1.0,"width":0.01861702,"height":-0.023144484},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"DEV (docker)","depth":1,"bounds":{"left":0.49468085,"top":1.0,"width":0.029920213,"height":-0.02394259},"on_screen":true,"role_description":"text"}]...
|
-3791348829934100790
|
-5697477843282486566
|
typing_pause
|
accessibility
|
NULL
|
/Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SE /Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SECRET]
/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/.env.local:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/dev.json:18: "DB_ADMIN_PASSWORD" : "dgyt$rTe21-d",
/Users/lukas/jiminny/app/.env:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.vscode/settings.json:16: "password": "dgyt$rTe21-d"
/Users/lukas/jiminny/app/.env.root:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.env.root:394:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.other:14:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#[ENV_SECRET]
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop
320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep
a1718cfb Merge pull request #529 from jiminny/katranci-patch-1
74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3
0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2
4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue
220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url
543c60b8 Merge branch 'develop' into JY-19432-recall-api-url
f163a29e JY-19432 Fix formatting
6de60dd0 JY-19432 Fix formatting
78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances
2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3
d6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code
4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers
6426729b JY-20432 Set stopasgroup to false for dialers queue worker
92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities
e0796d89 Delete obsolete files
4a8b1ea2 Delete old docker build scripts before php-8 upgrade
d790e56d JY-20603 Fix formatting
fc758135 JY-20603 Move video ec2 instances to external subnet
ecb558d5 JY-20761 Spread php-app tasks over ec2 instances
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80
commit a8ba85203fb10fb793ff07a6e85efac833979335
Merge: c15e0c8201 a00d53bdd6
Author: Nikolay Ivanov <[EMAIL]>
Date: Fri May 15 10:44:44 2026 +0300
JY-18091 | Resolve conflicts
commit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1
Author: Nikolay Nikolov <[EMAIL]>
Date: Thu Apr 30 14:54:08 2026 +0300
JY-20625 | JY-20742 | Add laravel/mcp
# Conflicts:
# composer.lock
diff --git a/composer.json b/composer.json
index 02ffcc050e..89551995a1 100644
--- a/composer.json
+++ b/composer.json
@@ -113,6 +113,7 @@
"kalnoy/nestedset": "*",
"laravel/framework": "^12.28",
"laravel/helpers": "^1.7",
+ "laravel/mcp": "^0.7.0",
"laravel/passport": "^13.0",
"laravel/slack-notification-channel": "^3.4",
"laravel/tinker": "^2.10.1",
commit 431b4c096f4ad0272bac595d078871a78b510bb5
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 17:17:47 2026 +0300
JY-18091 | Downgrade composer.json
diff --git a/composer.json b/composer.json
index 5db26da2c9..baacefbd5f 100644
--- a/composer.json
+++ b/composer.json
@@ -187,20 +187,18 @@
"require-dev": {
"barryvdh/laravel-debugbar": "^3.15",
"barryvdh/laravel-ide-helper": "^3.5",
- "brianium/paratest": "^7.12",
+ "brianium/paratest": "^7.5",
"browserstack/browserstack-local": "^1.1.0",
"filp/whoops": "^2.9",
"friendsofphp/php-cs-fixer": "^3.66",
"infection/infection": "^0.29.14",
"jasonmccreary/laravel-test-assertions": "^2.5",
"larastan/larastan": "^3.1",
- "maglnet/composer-require-checker": "^4.8",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
"phpstan/phpstan": "^2.1",
- "phpunit/phpunit": "^12.0",
- "symfony/phpunit-bridge": "^7.0",
- "vimeo/psalm": "^6.5.0"
+ "phpunit/phpunit": "^11.5.50",
+ "symfony/phpunit-bridge": "^7.0"
},
"autoload": {
"classmap": [
commit 90e9b4034f665e2a8cacaf937e55abc070b5af4a
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 16:25:45 2026 +0300
JY-18091 | Changes, composer
diff --git a/composer.json b/composer.json
index 751005e37a..5db26da2c9 100644
--- a/composer.json
+++ b/composer.json
@@ -95,7 +95,7 @@
"google/apps-meet": "^0.5.1",
"guzzlehttp/guzzle": "^7.8",
"guzzlehttp/psr7": "^2.6",
- "halaxa/json-machine": "^1.3",
+ "halaxa/json-machine": "^1.2",
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20
a8ba85203f JY-18091 | Resolve conflicts
4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts
1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp
431b4c096f JY-18091 | Downgrade composer.json
90e9b4034f JY-18091 | Changes, composer
b63d6f5d1f JY-18091 | Composer changes
d017fbd8aa JY-18091 | Merge
7daa10a444 JY-18091 | Cs lint fixes
a472f51b71 JY-18091 | Update composer to support php 8.5
1162b04371 fix(security): bump dependencies (alerts #477)
0c1f2f35df JY-19957 | Update composer.lock with correct dep
574315fc12 JY-19957 | Update composer.locl
c97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade
e4e0e6d46d Merge branch 'master' into secfix/composer-20260415
7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)
4f5795d1d5 JY-20479: Remove unused dependencies
caa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download
07832f2eeb JY-20479: Transcript download PDF optimization
9f17a0f70e JY-20526: Remove Sentence breaker
4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 "^docker-update:" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \
|| grep -rA 20 "^docker-update:" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40
/Users/lukas/jiminny/app/Makefile:docker-update:
/Users/lukas/jiminny/app/Makefile- aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-up:
/Users/lukas/jiminny/app/Makefile- tmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-stop:
/Users/lukas/jiminny/app/Makefile- tmux kill-session -t jiminny_dev_ngrok
/Users/lukas/jiminny/app/Makefile-
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n "arm64v8\|/jiminny/app/qa" ~/jiminny/infrastructure/dev/docker/docker-compose.yml
8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
187d58491294 wernight/ngrok "/entrypoint.sh" 37 seconds ago Up 37 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
b433f55153b5 mariadb:11.4.5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
d09012232958 redis:5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
error: Your local changes to the following files would be overwritten by checkout:
tests/Unit/Services/Mail/TextRelayServiceTest.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M config/logging.php
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 124, done.
remote: Counting objects: 100% (123/123), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)
Receiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.
Resolving deltas: 100% (93/93), completed with 33 local objects.
From github.com:jiminny/app
23fdef5aa9..942ddbe31c master -> origin/master
a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app
96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration
a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
* [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only
+ 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)
* [new branch] master-reset-ES -> origin/master-reset-ES
Updating 23fdef5aa9..942ddbe31c
Fast-forward
contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------
front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----
front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--
front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-
front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------
routes/api_v2.php | 6 +++---
tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------
7 files changed, 61 insertions(+), 46 deletions(-)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env
#IMAGE_TAG="latest"
IMAGE_TAG="arm64v8-latest"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 "lamp:" | grep image
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
docker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest "docker-php-entrypoi…" lamp 3 minutes ago Exited (2) 3 minutes ago
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
87804ee14786 wernight/ngrok "/entrypoint.sh" 18 minutes ago Up 53 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
bc04ffad01b2 mariadb:11.4.5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
e985cd5cfbf7 redis:5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
Filter, search, and stream logs from all your Compose services
in one place with Docker Desktop's Logs view. [URL_WITH_CREDENTIALS]
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2
Learn more at [URL_WITH_CREDENTIALS] php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 9.84ms DONE
cache [PASSWORD_DOTS] 69.91ms DONE
compiled [PASSWORD_DOTS] 2.96ms DONE
events [PASSWORD_DOTS] 1.19ms DONE
routes [PASSWORD_DOTS] 0.65ms DONE
views [PASSWORD_DOTS] 4.44ms DONE
worker-crm-update:worker-crm-update_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-download:worker-download_00: stopped
worker-nudges:worker-nudges_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-emails:worker-emails_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan tinker
Psy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman
New PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`
> app(\Jiminny\Services\Mail\TextRelayService::class)->sync();
= []
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 3.45ms DONE
cache [PASSWORD_DOTS] 10.26ms DONE
compiled [PASSWORD_DOTS] 1.84ms DONE
events [PASSWORD_DOTS] 0.72ms DONE
routes [PASSWORD_DOTS] 6.62ms DONE
views [PASSWORD_DOTS] 4.33ms DONE
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-download:worker-download_00: stopped
worker-emails:worker-emails_00: stopped
worker-nudges:worker-nudges_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-conferences:worker-conferences_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan mailbox:text-relay:sync
Relayed 0 message(s).
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
DOCKER
Close Tab
DEV (docker)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ec2-user@ip-10-30-129-190:~ (nc)
Close Tab
ec2-user@ip-10-30-140-255:~ (-zsh)
Close Tab
⌥⌘1
DEV (docker)...
|
78754
|
NULL
|
NULL
|
NULL
|
|
78756
|
2763
|
40
|
2026-05-27T12:58:34.531236+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886714531_m1.jpg...
|
iTerm2
|
DEV (docker)
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
/Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SE /Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SECRET]
/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/.env.local:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/dev.json:18: "DB_ADMIN_PASSWORD" : "dgyt$rTe21-d",
/Users/lukas/jiminny/app/.env:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.vscode/settings.json:16: "password": "dgyt$rTe21-d"
/Users/lukas/jiminny/app/.env.root:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.env.root:394:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.other:14:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#[ENV_SECRET]
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop
320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep
a1718cfb Merge pull request #529 from jiminny/katranci-patch-1
74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3
0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2
4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue
220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url
543c60b8 Merge branch 'develop' into JY-19432-recall-api-url
f163a29e JY-19432 Fix formatting
6de60dd0 JY-19432 Fix formatting
78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances
2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3
d6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code
4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers
6426729b JY-20432 Set stopasgroup to false for dialers queue worker
92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities
e0796d89 Delete obsolete files
4a8b1ea2 Delete old docker build scripts before php-8 upgrade
d790e56d JY-20603 Fix formatting
fc758135 JY-20603 Move video ec2 instances to external subnet
ecb558d5 JY-20761 Spread php-app tasks over ec2 instances
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80
commit a8ba85203fb10fb793ff07a6e85efac833979335
Merge: c15e0c8201 a00d53bdd6
Author: Nikolay Ivanov <[EMAIL]>
Date: Fri May 15 10:44:44 2026 +0300
JY-18091 | Resolve conflicts
commit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1
Author: Nikolay Nikolov <[EMAIL]>
Date: Thu Apr 30 14:54:08 2026 +0300
JY-20625 | JY-20742 | Add laravel/mcp
# Conflicts:
# composer.lock
diff --git a/composer.json b/composer.json
index 02ffcc050e..89551995a1 100644
--- a/composer.json
+++ b/composer.json
@@ -113,6 +113,7 @@
"kalnoy/nestedset": "*",
"laravel/framework": "^12.28",
"laravel/helpers": "^1.7",
+ "laravel/mcp": "^0.7.0",
"laravel/passport": "^13.0",
"laravel/slack-notification-channel": "^3.4",
"laravel/tinker": "^2.10.1",
commit 431b4c096f4ad0272bac595d078871a78b510bb5
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 17:17:47 2026 +0300
JY-18091 | Downgrade composer.json
diff --git a/composer.json b/composer.json
index 5db26da2c9..baacefbd5f 100644
--- a/composer.json
+++ b/composer.json
@@ -187,20 +187,18 @@
"require-dev": {
"barryvdh/laravel-debugbar": "^3.15",
"barryvdh/laravel-ide-helper": "^3.5",
- "brianium/paratest": "^7.12",
+ "brianium/paratest": "^7.5",
"browserstack/browserstack-local": "^1.1.0",
"filp/whoops": "^2.9",
"friendsofphp/php-cs-fixer": "^3.66",
"infection/infection": "^0.29.14",
"jasonmccreary/laravel-test-assertions": "^2.5",
"larastan/larastan": "^3.1",
- "maglnet/composer-require-checker": "^4.8",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
"phpstan/phpstan": "^2.1",
- "phpunit/phpunit": "^12.0",
- "symfony/phpunit-bridge": "^7.0",
- "vimeo/psalm": "^6.5.0"
+ "phpunit/phpunit": "^11.5.50",
+ "symfony/phpunit-bridge": "^7.0"
},
"autoload": {
"classmap": [
commit 90e9b4034f665e2a8cacaf937e55abc070b5af4a
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 16:25:45 2026 +0300
JY-18091 | Changes, composer
diff --git a/composer.json b/composer.json
index 751005e37a..5db26da2c9 100644
--- a/composer.json
+++ b/composer.json
@@ -95,7 +95,7 @@
"google/apps-meet": "^0.5.1",
"guzzlehttp/guzzle": "^7.8",
"guzzlehttp/psr7": "^2.6",
- "halaxa/json-machine": "^1.3",
+ "halaxa/json-machine": "^1.2",
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20
a8ba85203f JY-18091 | Resolve conflicts
4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts
1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp
431b4c096f JY-18091 | Downgrade composer.json
90e9b4034f JY-18091 | Changes, composer
b63d6f5d1f JY-18091 | Composer changes
d017fbd8aa JY-18091 | Merge
7daa10a444 JY-18091 | Cs lint fixes
a472f51b71 JY-18091 | Update composer to support php 8.5
1162b04371 fix(security): bump dependencies (alerts #477)
0c1f2f35df JY-19957 | Update composer.lock with correct dep
574315fc12 JY-19957 | Update composer.locl
c97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade
e4e0e6d46d Merge branch 'master' into secfix/composer-20260415
7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)
4f5795d1d5 JY-20479: Remove unused dependencies
caa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download
07832f2eeb JY-20479: Transcript download PDF optimization
9f17a0f70e JY-20526: Remove Sentence breaker
4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 "^docker-update:" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \
|| grep -rA 20 "^docker-update:" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40
/Users/lukas/jiminny/app/Makefile:docker-update:
/Users/lukas/jiminny/app/Makefile- aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-up:
/Users/lukas/jiminny/app/Makefile- tmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-stop:
/Users/lukas/jiminny/app/Makefile- tmux kill-session -t jiminny_dev_ngrok
/Users/lukas/jiminny/app/Makefile-
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n "arm64v8\|/jiminny/app/qa" ~/jiminny/infrastructure/dev/docker/docker-compose.yml
8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
187d58491294 wernight/ngrok "/entrypoint.sh" 37 seconds ago Up 37 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
b433f55153b5 mariadb:11.4.5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
d09012232958 redis:5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
error: Your local changes to the following files would be overwritten by checkout:
tests/Unit/Services/Mail/TextRelayServiceTest.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M config/logging.php
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 124, done.
remote: Counting objects: 100% (123/123), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)
Receiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.
Resolving deltas: 100% (93/93), completed with 33 local objects.
From github.com:jiminny/app
23fdef5aa9..942ddbe31c master -> origin/master
a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app
96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration
a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
* [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only
+ 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)
* [new branch] master-reset-ES -> origin/master-reset-ES
Updating 23fdef5aa9..942ddbe31c
Fast-forward
contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------
front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----
front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--
front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-
front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------
routes/api_v2.php | 6 +++---
tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------
7 files changed, 61 insertions(+), 46 deletions(-)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env
#IMAGE_TAG="latest"
IMAGE_TAG="arm64v8-latest"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 "lamp:" | grep image
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
docker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest "docker-php-entrypoi…" lamp 3 minutes ago Exited (2) 3 minutes ago
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
87804ee14786 wernight/ngrok "/entrypoint.sh" 18 minutes ago Up 53 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
bc04ffad01b2 mariadb:11.4.5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
e985cd5cfbf7 redis:5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
Filter, search, and stream logs from all your Compose services
in one place with Docker Desktop's Logs view. [URL_WITH_CREDENTIALS]
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2
Learn more at [URL_WITH_CREDENTIALS] php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 9.84ms DONE
cache [PASSWORD_DOTS] 69.91ms DONE
compiled [PASSWORD_DOTS] 2.96ms DONE
events [PASSWORD_DOTS] 1.19ms DONE
routes [PASSWORD_DOTS] 0.65ms DONE
views [PASSWORD_DOTS] 4.44ms DONE
worker-crm-update:worker-crm-update_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-download:worker-download_00: stopped
worker-nudges:worker-nudges_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-emails:worker-emails_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan tinker
Psy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman
New PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`
> app(\Jiminny\Services\Mail\TextRelayService::class)->sync();
= []
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 3.45ms DONE
cache [PASSWORD_DOTS] 10.26ms DONE
compiled [PASSWORD_DOTS] 1.84ms DONE
events [PASSWORD_DOTS] 0.72ms DONE
routes [PASSWORD_DOTS] 6.62ms DONE
views [PASSWORD_DOTS] 4.33ms DONE
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-download:worker-download_00: stopped
worker-emails:worker-emails_00: stopped
worker-nudges:worker-nudges_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-conferences:worker-conferences_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan mailbox:text-relay:sync
Relayed 0 message(s).
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
DOCKER
Close Tab
DEV (docker)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ec2-user@ip-10-30-129-190:~ (nc)
Close Tab
ec2-user@ip-10-30-140-255:~ (-zsh)
Close Tab
⌥⌘1
DEV (docker)...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"/Users/lukas/jiminny/app/.env.nikilocal:22:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/.env.local:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/dev.json:18: \"DB_ADMIN_PASSWORD\" : \"dgyt$rTe21-d\",\n/Users/lukas/jiminny/app/.env:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.vscode/settings.json:16: \"password\": \"dgyt$rTe21-d\"\n/Users/lukas/jiminny/app/.env.root:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.root:394:DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.other:14:DB_PASSWORD=dgyt\\$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop\n320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep\na1718cfb Merge pull request #529 from jiminny/katranci-patch-1\n74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3\n0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2\n4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue\n220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url\n543c60b8 Merge branch 'develop' into JY-19432-recall-api-url\nf163a29e JY-19432 Fix formatting\n6de60dd0 JY-19432 Fix formatting\n78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances\n2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3\nd6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code\n4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers\n6426729b JY-20432 Set stopasgroup to false for dialers queue worker\n92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities\ne0796d89 Delete obsolete files\n4a8b1ea2 Delete old docker build scripts before php-8 upgrade\nd790e56d JY-20603 Fix formatting\nfc758135 JY-20603 Move video ec2 instances to external subnet\necb558d5 JY-20761 Spread php-app tasks over ec2 instances\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80\n\ncommit a8ba85203fb10fb793ff07a6e85efac833979335\nMerge: c15e0c8201 a00d53bdd6\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Fri May 15 10:44:44 2026 +0300\n\n JY-18091 | Resolve conflicts\n\ncommit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1\nAuthor: Nikolay Nikolov <nikolay.nikolov@jiminny.com>\nDate: Thu Apr 30 14:54:08 2026 +0300\n\n JY-20625 | JY-20742 | Add laravel/mcp\n \n # Conflicts:\n # composer.lock\n\ndiff --git a/composer.json b/composer.json\nindex 02ffcc050e..89551995a1 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -113,6 +113,7 @@\n \"kalnoy/nestedset\": \"*\",\n \"laravel/framework\": \"^12.28\",\n \"laravel/helpers\": \"^1.7\",\n+ \"laravel/mcp\": \"^0.7.0\",\n \"laravel/passport\": \"^13.0\",\n \"laravel/slack-notification-channel\": \"^3.4\",\n \"laravel/tinker\": \"^2.10.1\",\n\ncommit 431b4c096f4ad0272bac595d078871a78b510bb5\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 17:17:47 2026 +0300\n\n JY-18091 | Downgrade composer.json\n\ndiff --git a/composer.json b/composer.json\nindex 5db26da2c9..baacefbd5f 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -187,20 +187,18 @@\n \"require-dev\": {\n \"barryvdh/laravel-debugbar\": \"^3.15\",\n \"barryvdh/laravel-ide-helper\": \"^3.5\",\n- \"brianium/paratest\": \"^7.12\",\n+ \"brianium/paratest\": \"^7.5\",\n \"browserstack/browserstack-local\": \"^1.1.0\",\n \"filp/whoops\": \"^2.9\",\n \"friendsofphp/php-cs-fixer\": \"^3.66\",\n \"infection/infection\": \"^0.29.14\",\n \"jasonmccreary/laravel-test-assertions\": \"^2.5\",\n \"larastan/larastan\": \"^3.1\",\n- \"maglnet/composer-require-checker\": \"^4.8\",\n \"mockery/mockery\": \"^1.6\",\n \"nunomaduro/collision\": \"^8.6\",\n \"phpstan/phpstan\": \"^2.1\",\n- \"phpunit/phpunit\": \"^12.0\",\n- \"symfony/phpunit-bridge\": \"^7.0\",\n- \"vimeo/psalm\": \"^6.5.0\"\n+ \"phpunit/phpunit\": \"^11.5.50\",\n+ \"symfony/phpunit-bridge\": \"^7.0\"\n },\n \"autoload\": {\n \"classmap\": [\n\ncommit 90e9b4034f665e2a8cacaf937e55abc070b5af4a\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 16:25:45 2026 +0300\n\n JY-18091 | Changes, composer\n\ndiff --git a/composer.json b/composer.json\nindex 751005e37a..5db26da2c9 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -95,7 +95,7 @@\n \"google/apps-meet\": \"^0.5.1\",\n \"guzzlehttp/guzzle\": \"^7.8\",\n \"guzzlehttp/psr7\": \"^2.6\",\n- \"halaxa/json-machine\": \"^1.3\",\n+ \"halaxa/json-machine\": \"^1.2\",\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20\n\na8ba85203f JY-18091 | Resolve conflicts\n4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts\n1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp\n431b4c096f JY-18091 | Downgrade composer.json\n90e9b4034f JY-18091 | Changes, composer\nb63d6f5d1f JY-18091 | Composer changes\nd017fbd8aa JY-18091 | Merge\n7daa10a444 JY-18091 | Cs lint fixes\na472f51b71 JY-18091 | Update composer to support php 8.5\n1162b04371 fix(security): bump dependencies (alerts #477)\n0c1f2f35df JY-19957 | Update composer.lock with correct dep\n574315fc12 JY-19957 | Update composer.locl\nc97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade\ne4e0e6d46d Merge branch 'master' into secfix/composer-20260415\n7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)\n4f5795d1d5 JY-20479: Remove unused dependencies\ncaa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download\n07832f2eeb JY-20479: Transcript download PDF optimization\n9f17a0f70e JY-20526: Remove Sentence breaker\n4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 \"^docker-update:\" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \\\n || grep -rA 20 \"^docker-update:\" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40\n/Users/lukas/jiminny/app/Makefile:docker-update:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\taws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-up:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-stop:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux kill-session -t jiminny_dev_ngrok\n/Users/lukas/jiminny/app/Makefile-\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n \"arm64v8\\|/jiminny/app/qa\" ~/jiminny/infrastructure/dev/docker/docker-compose.yml\n8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 37 seconds ago Up 37 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n187d58491294 wernight/ngrok \"/entrypoint.sh\" 37 seconds ago Up 37 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nb433f55153b5 mariadb:11.4.5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\n207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 37 seconds ago Up 37 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nd09012232958 redis:5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Services/Mail/TextRelayServiceTest.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nSwitched to branch 'master'\nYour branch is up to date with 'origin/master'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 124, done.\nremote: Counting objects: 100% (123/123), done.\nremote: Compressing objects: 100% (32/32), done.\nremote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)\nReceiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.\nResolving deltas: 100% (93/93), completed with 33 local objects.\nFrom github.com:jiminny/app\n 23fdef5aa9..942ddbe31c master -> origin/master\n a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app\n 96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration\n a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details\n * [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only\n + 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)\n * [new branch] master-reset-ES -> origin/master-reset-ES\nUpdating 23fdef5aa9..942ddbe31c\nFast-forward\n contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------\n front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----\n front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--\n front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-\n front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------\n routes/api_v2.php | 6 +++---\n tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------\n 7 files changed, 61 insertions(+), 46 deletions(-)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\nphp-8.5: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\narm64v8-php-8.5: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env\n#IMAGE_TAG=\"latest\"\nIMAGE_TAG=\"arm64v8-latest\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 \"lamp:\" | grep image\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \ndocker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest \"docker-php-entrypoi…\" lamp 3 minutes ago Exited (2) 3 minutes ago \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\nlatest: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\narm64v8-latest: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\nff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 18 minutes ago Up 53 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n87804ee14786 wernight/ngrok \"/entrypoint.sh\" 18 minutes ago Up 53 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nbc04ffad01b2 mariadb:11.4.5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\ne985cd5cfbf7 redis:5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\n121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 18 minutes ago Up 53 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\n Filter, search, and stream logs from all your Compose services\n in one place with Docker Desktop's Logs view. docker-desktop://dashboard/logs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\nroot@docker_lamp_1:/home/jiminny# ^C\nroot@docker_lamp_1:/home/jiminny# \nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entity) $ dev\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> exit\n\n INFO Goodbye.\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 9.84ms DONE\n cache ............................................................................................................................... 69.91ms DONE\n compiled ............................................................................................................................. 2.96ms DONE\n events ............................................................................................................................... 1.19ms DONE\n routes ............................................................................................................................... 0.65ms DONE\n views ................................................................................................................................ 4.44ms DONE\n\nworker-crm-update:worker-crm-update_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-download:worker-download_00: stopped\nworker-nudges:worker-nudges_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> app(\\Jiminny\\Services\\Mail\\TextRelayService::class)->sync();\n\n= []\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 3.45ms DONE\n cache ............................................................................................................................... 10.26ms DONE\n compiled ............................................................................................................................. 1.84ms DONE\n events ............................................................................................................................... 0.72ms DONE\n routes ............................................................................................................................... 6.62ms DONE\n views ................................................................................................................................ 4.33ms DONE\n\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan mailbox:text-relay:sync\nRelayed 0 message(s).\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all","depth":4,"on_screen":true,"value":"/Users/lukas/jiminny/app/.env.nikilocal:22:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/.env.local:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/dev.json:18: \"DB_ADMIN_PASSWORD\" : \"dgyt$rTe21-d\",\n/Users/lukas/jiminny/app/.env:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.vscode/settings.json:16: \"password\": \"dgyt$rTe21-d\"\n/Users/lukas/jiminny/app/.env.root:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.root:394:DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.other:14:DB_PASSWORD=dgyt\\$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop\n320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep\na1718cfb Merge pull request #529 from jiminny/katranci-patch-1\n74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3\n0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2\n4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue\n220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url\n543c60b8 Merge branch 'develop' into JY-19432-recall-api-url\nf163a29e JY-19432 Fix formatting\n6de60dd0 JY-19432 Fix formatting\n78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances\n2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3\nd6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code\n4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers\n6426729b JY-20432 Set stopasgroup to false for dialers queue worker\n92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities\ne0796d89 Delete obsolete files\n4a8b1ea2 Delete old docker build scripts before php-8 upgrade\nd790e56d JY-20603 Fix formatting\nfc758135 JY-20603 Move video ec2 instances to external subnet\necb558d5 JY-20761 Spread php-app tasks over ec2 instances\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80\n\ncommit a8ba85203fb10fb793ff07a6e85efac833979335\nMerge: c15e0c8201 a00d53bdd6\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Fri May 15 10:44:44 2026 +0300\n\n JY-18091 | Resolve conflicts\n\ncommit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1\nAuthor: Nikolay Nikolov <nikolay.nikolov@jiminny.com>\nDate: Thu Apr 30 14:54:08 2026 +0300\n\n JY-20625 | JY-20742 | Add laravel/mcp\n \n # Conflicts:\n # composer.lock\n\ndiff --git a/composer.json b/composer.json\nindex 02ffcc050e..89551995a1 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -113,6 +113,7 @@\n \"kalnoy/nestedset\": \"*\",\n \"laravel/framework\": \"^12.28\",\n \"laravel/helpers\": \"^1.7\",\n+ \"laravel/mcp\": \"^0.7.0\",\n \"laravel/passport\": \"^13.0\",\n \"laravel/slack-notification-channel\": \"^3.4\",\n \"laravel/tinker\": \"^2.10.1\",\n\ncommit 431b4c096f4ad0272bac595d078871a78b510bb5\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 17:17:47 2026 +0300\n\n JY-18091 | Downgrade composer.json\n\ndiff --git a/composer.json b/composer.json\nindex 5db26da2c9..baacefbd5f 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -187,20 +187,18 @@\n \"require-dev\": {\n \"barryvdh/laravel-debugbar\": \"^3.15\",\n \"barryvdh/laravel-ide-helper\": \"^3.5\",\n- \"brianium/paratest\": \"^7.12\",\n+ \"brianium/paratest\": \"^7.5\",\n \"browserstack/browserstack-local\": \"^1.1.0\",\n \"filp/whoops\": \"^2.9\",\n \"friendsofphp/php-cs-fixer\": \"^3.66\",\n \"infection/infection\": \"^0.29.14\",\n \"jasonmccreary/laravel-test-assertions\": \"^2.5\",\n \"larastan/larastan\": \"^3.1\",\n- \"maglnet/composer-require-checker\": \"^4.8\",\n \"mockery/mockery\": \"^1.6\",\n \"nunomaduro/collision\": \"^8.6\",\n \"phpstan/phpstan\": \"^2.1\",\n- \"phpunit/phpunit\": \"^12.0\",\n- \"symfony/phpunit-bridge\": \"^7.0\",\n- \"vimeo/psalm\": \"^6.5.0\"\n+ \"phpunit/phpunit\": \"^11.5.50\",\n+ \"symfony/phpunit-bridge\": \"^7.0\"\n },\n \"autoload\": {\n \"classmap\": [\n\ncommit 90e9b4034f665e2a8cacaf937e55abc070b5af4a\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 16:25:45 2026 +0300\n\n JY-18091 | Changes, composer\n\ndiff --git a/composer.json b/composer.json\nindex 751005e37a..5db26da2c9 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -95,7 +95,7 @@\n \"google/apps-meet\": \"^0.5.1\",\n \"guzzlehttp/guzzle\": \"^7.8\",\n \"guzzlehttp/psr7\": \"^2.6\",\n- \"halaxa/json-machine\": \"^1.3\",\n+ \"halaxa/json-machine\": \"^1.2\",\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20\n\na8ba85203f JY-18091 | Resolve conflicts\n4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts\n1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp\n431b4c096f JY-18091 | Downgrade composer.json\n90e9b4034f JY-18091 | Changes, composer\nb63d6f5d1f JY-18091 | Composer changes\nd017fbd8aa JY-18091 | Merge\n7daa10a444 JY-18091 | Cs lint fixes\na472f51b71 JY-18091 | Update composer to support php 8.5\n1162b04371 fix(security): bump dependencies (alerts #477)\n0c1f2f35df JY-19957 | Update composer.lock with correct dep\n574315fc12 JY-19957 | Update composer.locl\nc97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade\ne4e0e6d46d Merge branch 'master' into secfix/composer-20260415\n7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)\n4f5795d1d5 JY-20479: Remove unused dependencies\ncaa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download\n07832f2eeb JY-20479: Transcript download PDF optimization\n9f17a0f70e JY-20526: Remove Sentence breaker\n4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 \"^docker-update:\" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \\\n || grep -rA 20 \"^docker-update:\" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40\n/Users/lukas/jiminny/app/Makefile:docker-update:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\taws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-up:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-stop:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux kill-session -t jiminny_dev_ngrok\n/Users/lukas/jiminny/app/Makefile-\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n \"arm64v8\\|/jiminny/app/qa\" ~/jiminny/infrastructure/dev/docker/docker-compose.yml\n8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 37 seconds ago Up 37 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n187d58491294 wernight/ngrok \"/entrypoint.sh\" 37 seconds ago Up 37 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nb433f55153b5 mariadb:11.4.5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\n207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 37 seconds ago Up 37 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nd09012232958 redis:5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Services/Mail/TextRelayServiceTest.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nSwitched to branch 'master'\nYour branch is up to date with 'origin/master'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 124, done.\nremote: Counting objects: 100% (123/123), done.\nremote: Compressing objects: 100% (32/32), done.\nremote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)\nReceiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.\nResolving deltas: 100% (93/93), completed with 33 local objects.\nFrom github.com:jiminny/app\n 23fdef5aa9..942ddbe31c master -> origin/master\n a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app\n 96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration\n a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details\n * [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only\n + 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)\n * [new branch] master-reset-ES -> origin/master-reset-ES\nUpdating 23fdef5aa9..942ddbe31c\nFast-forward\n contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------\n front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----\n front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--\n front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-\n front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------\n routes/api_v2.php | 6 +++---\n tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------\n 7 files changed, 61 insertions(+), 46 deletions(-)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\nphp-8.5: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\narm64v8-php-8.5: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env\n#IMAGE_TAG=\"latest\"\nIMAGE_TAG=\"arm64v8-latest\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 \"lamp:\" | grep image\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \ndocker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest \"docker-php-entrypoi…\" lamp 3 minutes ago Exited (2) 3 minutes ago \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\nlatest: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\narm64v8-latest: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\nff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 18 minutes ago Up 53 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n87804ee14786 wernight/ngrok \"/entrypoint.sh\" 18 minutes ago Up 53 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nbc04ffad01b2 mariadb:11.4.5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\ne985cd5cfbf7 redis:5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\n121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 18 minutes ago Up 53 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\n Filter, search, and stream logs from all your Compose services\n in one place with Docker Desktop's Logs view. docker-desktop://dashboard/logs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\nroot@docker_lamp_1:/home/jiminny# ^C\nroot@docker_lamp_1:/home/jiminny# \nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entity) $ dev\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> exit\n\n INFO Goodbye.\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 9.84ms DONE\n cache ............................................................................................................................... 69.91ms DONE\n compiled ............................................................................................................................. 2.96ms DONE\n events ............................................................................................................................... 1.19ms DONE\n routes ............................................................................................................................... 0.65ms DONE\n views ................................................................................................................................ 4.44ms DONE\n\nworker-crm-update:worker-crm-update_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-download:worker-download_00: stopped\nworker-nudges:worker-nudges_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> app(\\Jiminny\\Services\\Mail\\TextRelayService::class)->sync();\n\n= []\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 3.45ms DONE\n cache ............................................................................................................................... 10.26ms DONE\n compiled ............................................................................................................................. 1.84ms DONE\n events ............................................................................................................................... 0.72ms DONE\n routes ............................................................................................................................... 6.62ms DONE\n views ................................................................................................................................ 4.33ms DONE\n\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan mailbox:text-relay:sync\nRelayed 0 message(s).\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (docker)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"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.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"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.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-129-190:~ (nc)","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"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.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-140-255:~ (-zsh)","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"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.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"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.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"DEV (docker)","depth":1,"bounds":{"left":0.46875,"top":0.033333335,"width":0.0625,"height":0.017777778},"on_screen":true,"role_description":"text"}]...
|
-3791348829934100790
|
-5697477843282486566
|
click
|
accessibility
|
NULL
|
/Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SE /Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SECRET]
/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/.env.local:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/dev.json:18: "DB_ADMIN_PASSWORD" : "dgyt$rTe21-d",
/Users/lukas/jiminny/app/.env:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.vscode/settings.json:16: "password": "dgyt$rTe21-d"
/Users/lukas/jiminny/app/.env.root:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.env.root:394:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.other:14:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#[ENV_SECRET]
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop
320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep
a1718cfb Merge pull request #529 from jiminny/katranci-patch-1
74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3
0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2
4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue
220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url
543c60b8 Merge branch 'develop' into JY-19432-recall-api-url
f163a29e JY-19432 Fix formatting
6de60dd0 JY-19432 Fix formatting
78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances
2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3
d6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code
4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers
6426729b JY-20432 Set stopasgroup to false for dialers queue worker
92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities
e0796d89 Delete obsolete files
4a8b1ea2 Delete old docker build scripts before php-8 upgrade
d790e56d JY-20603 Fix formatting
fc758135 JY-20603 Move video ec2 instances to external subnet
ecb558d5 JY-20761 Spread php-app tasks over ec2 instances
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80
commit a8ba85203fb10fb793ff07a6e85efac833979335
Merge: c15e0c8201 a00d53bdd6
Author: Nikolay Ivanov <[EMAIL]>
Date: Fri May 15 10:44:44 2026 +0300
JY-18091 | Resolve conflicts
commit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1
Author: Nikolay Nikolov <[EMAIL]>
Date: Thu Apr 30 14:54:08 2026 +0300
JY-20625 | JY-20742 | Add laravel/mcp
# Conflicts:
# composer.lock
diff --git a/composer.json b/composer.json
index 02ffcc050e..89551995a1 100644
--- a/composer.json
+++ b/composer.json
@@ -113,6 +113,7 @@
"kalnoy/nestedset": "*",
"laravel/framework": "^12.28",
"laravel/helpers": "^1.7",
+ "laravel/mcp": "^0.7.0",
"laravel/passport": "^13.0",
"laravel/slack-notification-channel": "^3.4",
"laravel/tinker": "^2.10.1",
commit 431b4c096f4ad0272bac595d078871a78b510bb5
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 17:17:47 2026 +0300
JY-18091 | Downgrade composer.json
diff --git a/composer.json b/composer.json
index 5db26da2c9..baacefbd5f 100644
--- a/composer.json
+++ b/composer.json
@@ -187,20 +187,18 @@
"require-dev": {
"barryvdh/laravel-debugbar": "^3.15",
"barryvdh/laravel-ide-helper": "^3.5",
- "brianium/paratest": "^7.12",
+ "brianium/paratest": "^7.5",
"browserstack/browserstack-local": "^1.1.0",
"filp/whoops": "^2.9",
"friendsofphp/php-cs-fixer": "^3.66",
"infection/infection": "^0.29.14",
"jasonmccreary/laravel-test-assertions": "^2.5",
"larastan/larastan": "^3.1",
- "maglnet/composer-require-checker": "^4.8",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
"phpstan/phpstan": "^2.1",
- "phpunit/phpunit": "^12.0",
- "symfony/phpunit-bridge": "^7.0",
- "vimeo/psalm": "^6.5.0"
+ "phpunit/phpunit": "^11.5.50",
+ "symfony/phpunit-bridge": "^7.0"
},
"autoload": {
"classmap": [
commit 90e9b4034f665e2a8cacaf937e55abc070b5af4a
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 16:25:45 2026 +0300
JY-18091 | Changes, composer
diff --git a/composer.json b/composer.json
index 751005e37a..5db26da2c9 100644
--- a/composer.json
+++ b/composer.json
@@ -95,7 +95,7 @@
"google/apps-meet": "^0.5.1",
"guzzlehttp/guzzle": "^7.8",
"guzzlehttp/psr7": "^2.6",
- "halaxa/json-machine": "^1.3",
+ "halaxa/json-machine": "^1.2",
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20
a8ba85203f JY-18091 | Resolve conflicts
4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts
1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp
431b4c096f JY-18091 | Downgrade composer.json
90e9b4034f JY-18091 | Changes, composer
b63d6f5d1f JY-18091 | Composer changes
d017fbd8aa JY-18091 | Merge
7daa10a444 JY-18091 | Cs lint fixes
a472f51b71 JY-18091 | Update composer to support php 8.5
1162b04371 fix(security): bump dependencies (alerts #477)
0c1f2f35df JY-19957 | Update composer.lock with correct dep
574315fc12 JY-19957 | Update composer.locl
c97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade
e4e0e6d46d Merge branch 'master' into secfix/composer-20260415
7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)
4f5795d1d5 JY-20479: Remove unused dependencies
caa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download
07832f2eeb JY-20479: Transcript download PDF optimization
9f17a0f70e JY-20526: Remove Sentence breaker
4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 "^docker-update:" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \
|| grep -rA 20 "^docker-update:" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40
/Users/lukas/jiminny/app/Makefile:docker-update:
/Users/lukas/jiminny/app/Makefile- aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-up:
/Users/lukas/jiminny/app/Makefile- tmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-stop:
/Users/lukas/jiminny/app/Makefile- tmux kill-session -t jiminny_dev_ngrok
/Users/lukas/jiminny/app/Makefile-
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n "arm64v8\|/jiminny/app/qa" ~/jiminny/infrastructure/dev/docker/docker-compose.yml
8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
187d58491294 wernight/ngrok "/entrypoint.sh" 37 seconds ago Up 37 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
b433f55153b5 mariadb:11.4.5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
d09012232958 redis:5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
error: Your local changes to the following files would be overwritten by checkout:
tests/Unit/Services/Mail/TextRelayServiceTest.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M config/logging.php
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 124, done.
remote: Counting objects: 100% (123/123), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)
Receiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.
Resolving deltas: 100% (93/93), completed with 33 local objects.
From github.com:jiminny/app
23fdef5aa9..942ddbe31c master -> origin/master
a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app
96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration
a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
* [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only
+ 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)
* [new branch] master-reset-ES -> origin/master-reset-ES
Updating 23fdef5aa9..942ddbe31c
Fast-forward
contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------
front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----
front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--
front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-
front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------
routes/api_v2.php | 6 +++---
tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------
7 files changed, 61 insertions(+), 46 deletions(-)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env
#IMAGE_TAG="latest"
IMAGE_TAG="arm64v8-latest"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 "lamp:" | grep image
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
docker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest "docker-php-entrypoi…" lamp 3 minutes ago Exited (2) 3 minutes ago
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
87804ee14786 wernight/ngrok "/entrypoint.sh" 18 minutes ago Up 53 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
bc04ffad01b2 mariadb:11.4.5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
e985cd5cfbf7 redis:5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
Filter, search, and stream logs from all your Compose services
in one place with Docker Desktop's Logs view. [URL_WITH_CREDENTIALS]
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2
Learn more at [URL_WITH_CREDENTIALS] php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 9.84ms DONE
cache [PASSWORD_DOTS] 69.91ms DONE
compiled [PASSWORD_DOTS] 2.96ms DONE
events [PASSWORD_DOTS] 1.19ms DONE
routes [PASSWORD_DOTS] 0.65ms DONE
views [PASSWORD_DOTS] 4.44ms DONE
worker-crm-update:worker-crm-update_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-download:worker-download_00: stopped
worker-nudges:worker-nudges_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-emails:worker-emails_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan tinker
Psy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman
New PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`
> app(\Jiminny\Services\Mail\TextRelayService::class)->sync();
= []
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 3.45ms DONE
cache [PASSWORD_DOTS] 10.26ms DONE
compiled [PASSWORD_DOTS] 1.84ms DONE
events [PASSWORD_DOTS] 0.72ms DONE
routes [PASSWORD_DOTS] 6.62ms DONE
views [PASSWORD_DOTS] 4.33ms DONE
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-download:worker-download_00: stopped
worker-emails:worker-emails_00: stopped
worker-nudges:worker-nudges_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-conferences:worker-conferences_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan mailbox:text-relay:sync
Relayed 0 message(s).
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
DOCKER
Close Tab
DEV (docker)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ec2-user@ip-10-30-129-190:~ (nc)
Close Tab
ec2-user@ip-10-30-140-255:~ (-zsh)
Close Tab
⌥⌘1
DEV (docker)...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
78755
|
2763
|
39
|
2026-05-27T12:58:32.215419+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886712215_m1.jpg...
|
iTerm2
|
ec2-user@ip-10-30-140-255:~
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Wed May 27 09:47:15 on ttys011
Poetry Last login: Wed May 27 09:47:15 on ttys011
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ vstg
Warning: Permanently added 'jiminny-stage-ecs1' (ED25519) to the list of known hosts.
, #_
~\_ ####_
~~ \_#####\
~~ \###|
~~ \#/ ___ Amazon Linux 2023 (ECS Optimized)
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
For documentation, visit [URL_WITH_CREDENTIALS] ~]$ docker exec -ti 74532df77969 /bin/bash -c "cd /home/jiminny && bash"
root@ip-10-30-135-89:/home/jiminny# php artisan about
Environment [PASSWORD_DOTS]
Application Name [PASSWORD_DOTS] Jiminny Web App
Laravel Version [PASSWORD_DOTS] 12.58.0
PHP Version [PASSWORD_DOTS] 8.5.5
Composer Version [PASSWORD_DOTS] -
Environment [PASSWORD_DOTS] staging
Debug Mode [PASSWORD_DOTS] OFF
URL [PASSWORD_DOTS] app.staging.jiminny.com
Maintenance Mode [PASSWORD_DOTS] OFF
Timezone [PASSWORD_DOTS] UTC
Locale [PASSWORD_DOTS] en_US
Cache [PASSWORD_DOTS]
Config [PASSWORD_DOTS] CACHED
Events [PASSWORD_DOTS] NOT CACHED
Routes [PASSWORD_DOTS] CACHED
Views [PASSWORD_DOTS] CACHED
Drivers [PASSWORD_DOTS]
Broadcasting [PASSWORD_DOTS] pusher
Cache [PASSWORD_DOTS] redis
Database [PASSWORD_DOTS] mysql
Logs [PASSWORD_DOTS] errorlog
Mail [PASSWORD_DOTS] ses
Queue [PASSWORD_DOTS] sqs
Session [PASSWORD_DOTS] redis
Storage [PASSWORD_DOTS]
public/storage [PASSWORD_DOTS] NOT LINKED
Sentry [PASSWORD_DOTS]
Enabled [PASSWORD_DOTS] YES
Environment [PASSWORD_DOTS] staging
Laravel SDK Version [PASSWORD_DOTS] 4.13.0
PHP SDK Version [PASSWORD_DOTS] 4.13.0
Release [PASSWORD_DOTS] 893709
Sample Rate Errors [PASSWORD_DOTS] 100%
Sample Rate Performance Monitoring [PASSWORD_DOTS] NOT SET
Sample Rate Profiling [PASSWORD_DOTS] NOT SET
Send Default PII [PASSWORD_DOTS] DISABLED
root@ip-10-30-135-89:/home/jiminny# php artisan tinker
Psy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman
New PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`
> $c = \Cache::get(config('jiminny.google_text_relay_topic'));
= "358684"
> exit
INFO Goodbye.
root@ip-10-30-135-89:/home/jiminny# exit
exit
[ec2-user@ip-10-30-140-255 ~]$ exit
logout
Connection to jiminny-stage-ecs1 closed.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
DOCKER
Close Tab
DEV (docker)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ec2-user@ip-10-30-129-190:~ (nc)
Close Tab
ec2-user@ip-10-30-140-255:~ (-zsh)
Close Tab
⌥⌘1
ec2-user@ip-10-30-140-255:~...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Wed May 27 09:47:15 on ttys011\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 ~ $ vstg\nWarning: Permanently added 'jiminny-stage-ecs1' (ED25519) to the list of known hosts.\n , #_\n ~\\_ ####_\n ~~ \\_#####\\\n ~~ \\###|\n ~~ \\#/ ___ Amazon Linux 2023 (ECS Optimized)\n ~~ V~' '->\n ~~~ /\n ~~._. _/\n _/ _/\n _/m/'\n\nFor documentation, visit http://aws.amazon.com/documentation/ecs\n[ec2-user@ip-10-30-140-255 ~]$ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n4afe9d75f1c3 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/backend-code:3b1d77c6cfcf576541d2fb5155034246317c73b4 \"docker-php-entrypoi…\" About an hour ago Up About an hour (healthy) ecs-php-jupiter-1634-php-jupiter-8e95b49eb0f6c0f77100\n7380b86838a6 amazon/amazon-ecs-pause:0.1.0 \"/pause\" About an hour ago Up About an hour ecs-php-jupiter-1634-internalecspause-f4b6c0f5f3bcf3d5ae01\n6ac678f8be8c 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/worker-code:53b2b7a89ce089166185783ad6308b7a9a66fe55 \"docker-php-entrypoi…\" About an hour ago Up About an hour 80/tcp, 9000/tcp, 0.0.0.0:9001->9001/tcp, :::9001->9001/tcp ecs-worker-neptune-1285-worker-neptune-c89c85afcaa5afca1f00\n5ef03733e627 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/backend-code:53b2b7a89ce089166185783ad6308b7a9a66fe55 \"docker-php-entrypoi…\" About an hour ago Up About an hour (healthy) ecs-php-neptune-1291-php-neptune-a6f89d8cedcfc6fe5100\n6d1c700ab4e2 amazon/amazon-ecs-pause:0.1.0 \"/pause\" About an hour ago Up About an hour ecs-php-neptune-1291-internalecspause-c6c9d1ffc9cefafc3800\n74532df77969 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/backend-code:4829cdf78f93faad2afb97bc766ad6ad912d87a1 \"docker-php-entrypoi…\" 2 hours ago Up 2 hours (healthy) ecs-php-app-1206-php-app-d0e7a69b8ba3d383ed01\nf8d7f9d81ece amazon/amazon-ecs-pause:0.1.0 \"/pause\" 2 hours ago Up 2 hours ecs-php-app-1206-internalecspause-a0e798becfb4e7a32800\n5f431efe00bd amazon/amazon-ecs-agent:latest \"/agent\" 5 hours ago Up 5 hours (healthy) ecs-agent\n[ec2-user@ip-10-30-140-255 ~]$ docker exec -ti 74532df77969 /bin/bash -c \"cd /home/jiminny && bash\"\nroot@ip-10-30-135-89:/home/jiminny# php artisan about\n\n Environment ...................................................................................................................................... \n Application Name ................................................................................................................. Jiminny Web App \n Laravel Version .......................................................................................................................... 12.58.0 \n PHP Version ................................................................................................................................ 8.5.5 \n Composer Version ............................................................................................................................... - \n Environment .............................................................................................................................. staging \n Debug Mode ................................................................................................................................... OFF \n URL ...................................................................................................................... app.staging.jiminny.com \n Maintenance Mode ............................................................................................................................. OFF \n Timezone ..................................................................................................................................... UTC \n Locale ..................................................................................................................................... en_US \n\n Cache ............................................................................................................................................ \n Config .................................................................................................................................... CACHED \n Events ................................................................................................................................ NOT CACHED \n Routes .................................................................................................................................... CACHED \n Views ..................................................................................................................................... CACHED \n\n Drivers .......................................................................................................................................... \n Broadcasting .............................................................................................................................. pusher \n Cache ...................................................................................................................................... redis \n Database ................................................................................................................................... mysql \n Logs .................................................................................................................................... errorlog \n Mail ......................................................................................................................................... ses \n Queue ........................................................................................................................................ sqs \n Session .................................................................................................................................... redis \n\n Storage .......................................................................................................................................... \n public/storage ........................................................................................................................ NOT LINKED \n\n Sentry ........................................................................................................................................... \n Enabled ...................................................................................................................................... YES \n Environment .............................................................................................................................. staging \n Laravel SDK Version ....................................................................................................................... 4.13.0 \n PHP SDK Version ........................................................................................................................... 4.13.0 \n Release ................................................................................................................................... 893709 \n Sample Rate Errors .......................................................................................................................... 100% \n Sample Rate Performance Monitoring ....................................................................................................... NOT SET \n Sample Rate Profiling .................................................................................................................... NOT SET \n Send Default PII ........................................................................................................................ DISABLED \n\nroot@ip-10-30-135-89:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> $c = \\Cache::get(config('jiminny.google_text_relay_topic'));\n\n= \"358684\"\n\n> exit\n\n INFO Goodbye.\n\nroot@ip-10-30-135-89:/home/jiminny# exit\nexit\n[ec2-user@ip-10-30-140-255 ~]$ exit\nlogout\nConnection to jiminny-stage-ecs1 closed.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":4,"on_screen":true,"value":"Last login: Wed May 27 09:47:15 on ttys011\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 ~ $ vstg\nWarning: Permanently added 'jiminny-stage-ecs1' (ED25519) to the list of known hosts.\n , #_\n ~\\_ ####_\n ~~ \\_#####\\\n ~~ \\###|\n ~~ \\#/ ___ Amazon Linux 2023 (ECS Optimized)\n ~~ V~' '->\n ~~~ /\n ~~._. _/\n _/ _/\n _/m/'\n\nFor documentation, visit http://aws.amazon.com/documentation/ecs\n[ec2-user@ip-10-30-140-255 ~]$ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n4afe9d75f1c3 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/backend-code:3b1d77c6cfcf576541d2fb5155034246317c73b4 \"docker-php-entrypoi…\" About an hour ago Up About an hour (healthy) ecs-php-jupiter-1634-php-jupiter-8e95b49eb0f6c0f77100\n7380b86838a6 amazon/amazon-ecs-pause:0.1.0 \"/pause\" About an hour ago Up About an hour ecs-php-jupiter-1634-internalecspause-f4b6c0f5f3bcf3d5ae01\n6ac678f8be8c 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/worker-code:53b2b7a89ce089166185783ad6308b7a9a66fe55 \"docker-php-entrypoi…\" About an hour ago Up About an hour 80/tcp, 9000/tcp, 0.0.0.0:9001->9001/tcp, :::9001->9001/tcp ecs-worker-neptune-1285-worker-neptune-c89c85afcaa5afca1f00\n5ef03733e627 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/backend-code:53b2b7a89ce089166185783ad6308b7a9a66fe55 \"docker-php-entrypoi…\" About an hour ago Up About an hour (healthy) ecs-php-neptune-1291-php-neptune-a6f89d8cedcfc6fe5100\n6d1c700ab4e2 amazon/amazon-ecs-pause:0.1.0 \"/pause\" About an hour ago Up About an hour ecs-php-neptune-1291-internalecspause-c6c9d1ffc9cefafc3800\n74532df77969 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/backend-code:4829cdf78f93faad2afb97bc766ad6ad912d87a1 \"docker-php-entrypoi…\" 2 hours ago Up 2 hours (healthy) ecs-php-app-1206-php-app-d0e7a69b8ba3d383ed01\nf8d7f9d81ece amazon/amazon-ecs-pause:0.1.0 \"/pause\" 2 hours ago Up 2 hours ecs-php-app-1206-internalecspause-a0e798becfb4e7a32800\n5f431efe00bd amazon/amazon-ecs-agent:latest \"/agent\" 5 hours ago Up 5 hours (healthy) ecs-agent\n[ec2-user@ip-10-30-140-255 ~]$ docker exec -ti 74532df77969 /bin/bash -c \"cd /home/jiminny && bash\"\nroot@ip-10-30-135-89:/home/jiminny# php artisan about\n\n Environment ...................................................................................................................................... \n Application Name ................................................................................................................. Jiminny Web App \n Laravel Version .......................................................................................................................... 12.58.0 \n PHP Version ................................................................................................................................ 8.5.5 \n Composer Version ............................................................................................................................... - \n Environment .............................................................................................................................. staging \n Debug Mode ................................................................................................................................... OFF \n URL ...................................................................................................................... app.staging.jiminny.com \n Maintenance Mode ............................................................................................................................. OFF \n Timezone ..................................................................................................................................... UTC \n Locale ..................................................................................................................................... en_US \n\n Cache ............................................................................................................................................ \n Config .................................................................................................................................... CACHED \n Events ................................................................................................................................ NOT CACHED \n Routes .................................................................................................................................... CACHED \n Views ..................................................................................................................................... CACHED \n\n Drivers .......................................................................................................................................... \n Broadcasting .............................................................................................................................. pusher \n Cache ...................................................................................................................................... redis \n Database ................................................................................................................................... mysql \n Logs .................................................................................................................................... errorlog \n Mail ......................................................................................................................................... ses \n Queue ........................................................................................................................................ sqs \n Session .................................................................................................................................... redis \n\n Storage .......................................................................................................................................... \n public/storage ........................................................................................................................ NOT LINKED \n\n Sentry ........................................................................................................................................... \n Enabled ...................................................................................................................................... YES \n Environment .............................................................................................................................. staging \n Laravel SDK Version ....................................................................................................................... 4.13.0 \n PHP SDK Version ........................................................................................................................... 4.13.0 \n Release ................................................................................................................................... 893709 \n Sample Rate Errors .......................................................................................................................... 100% \n Sample Rate Performance Monitoring ....................................................................................................... NOT SET \n Sample Rate Profiling .................................................................................................................... NOT SET \n Send Default PII ........................................................................................................................ DISABLED \n\nroot@ip-10-30-135-89:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> $c = \\Cache::get(config('jiminny.google_text_relay_topic'));\n\n= \"358684\"\n\n> exit\n\n INFO Goodbye.\n\nroot@ip-10-30-135-89:/home/jiminny# exit\nexit\n[ec2-user@ip-10-30-140-255 ~]$ exit\nlogout\nConnection to jiminny-stage-ecs1 closed.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (docker)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"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.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"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.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-129-190:~ (nc)","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"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.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-140-255:~ (-zsh)","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"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.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"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.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"ec2-user@ip-10-30-140-255:~","depth":1,"bounds":{"left":0.42777777,"top":0.033333335,"width":0.14375,"height":0.017777778},"on_screen":true,"role_description":"text"}]...
|
-2274123215619165715
|
9059785660649825439
|
visual_change
|
accessibility
|
NULL
|
Last login: Wed May 27 09:47:15 on ttys011
Poetry Last login: Wed May 27 09:47:15 on ttys011
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ vstg
Warning: Permanently added 'jiminny-stage-ecs1' (ED25519) to the list of known hosts.
, #_
~\_ ####_
~~ \_#####\
~~ \###|
~~ \#/ ___ Amazon Linux 2023 (ECS Optimized)
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
For documentation, visit [URL_WITH_CREDENTIALS] ~]$ docker exec -ti 74532df77969 /bin/bash -c "cd /home/jiminny && bash"
root@ip-10-30-135-89:/home/jiminny# php artisan about
Environment [PASSWORD_DOTS]
Application Name [PASSWORD_DOTS] Jiminny Web App
Laravel Version [PASSWORD_DOTS] 12.58.0
PHP Version [PASSWORD_DOTS] 8.5.5
Composer Version [PASSWORD_DOTS] -
Environment [PASSWORD_DOTS] staging
Debug Mode [PASSWORD_DOTS] OFF
URL [PASSWORD_DOTS] app.staging.jiminny.com
Maintenance Mode [PASSWORD_DOTS] OFF
Timezone [PASSWORD_DOTS] UTC
Locale [PASSWORD_DOTS] en_US
Cache [PASSWORD_DOTS]
Config [PASSWORD_DOTS] CACHED
Events [PASSWORD_DOTS] NOT CACHED
Routes [PASSWORD_DOTS] CACHED
Views [PASSWORD_DOTS] CACHED
Drivers [PASSWORD_DOTS]
Broadcasting [PASSWORD_DOTS] pusher
Cache [PASSWORD_DOTS] redis
Database [PASSWORD_DOTS] mysql
Logs [PASSWORD_DOTS] errorlog
Mail [PASSWORD_DOTS] ses
Queue [PASSWORD_DOTS] sqs
Session [PASSWORD_DOTS] redis
Storage [PASSWORD_DOTS]
public/storage [PASSWORD_DOTS] NOT LINKED
Sentry [PASSWORD_DOTS]
Enabled [PASSWORD_DOTS] YES
Environment [PASSWORD_DOTS] staging
Laravel SDK Version [PASSWORD_DOTS] 4.13.0
PHP SDK Version [PASSWORD_DOTS] 4.13.0
Release [PASSWORD_DOTS] 893709
Sample Rate Errors [PASSWORD_DOTS] 100%
Sample Rate Performance Monitoring [PASSWORD_DOTS] NOT SET
Sample Rate Profiling [PASSWORD_DOTS] NOT SET
Send Default PII [PASSWORD_DOTS] DISABLED
root@ip-10-30-135-89:/home/jiminny# php artisan tinker
Psy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman
New PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`
> $c = \Cache::get(config('jiminny.google_text_relay_topic'));
= "358684"
> exit
INFO Goodbye.
root@ip-10-30-135-89:/home/jiminny# exit
exit
[ec2-user@ip-10-30-140-255 ~]$ exit
logout
Connection to jiminny-stage-ecs1 closed.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
DOCKER
Close Tab
DEV (docker)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ec2-user@ip-10-30-129-190:~ (nc)
Close Tab
ec2-user@ip-10-30-140-255:~ (-zsh)
Close Tab
⌥⌘1
ec2-user@ip-10-30-140-255:~...
|
78749
|
NULL
|
NULL
|
NULL
|
|
78754
|
2764
|
46
|
2026-05-27T12:58:31.060575+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886711060_m2.jpg...
|
iTerm2
|
ec2-user@ip-10-30-140-255:~
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Wed May 27 09:47:15 on ttys011
Poetry Last login: Wed May 27 09:47:15 on ttys011
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ vstg
Warning: Permanently added 'jiminny-stage-ecs1' (ED25519) to the list of known hosts.
, #_
~\_ ####_
~~ \_#####\
~~ \###|
~~ \#/ ___ Amazon Linux 2023 (ECS Optimized)
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
For documentation, visit [URL_WITH_CREDENTIALS] ~]$ docker exec -ti 74532df77969 /bin/bash -c "cd /home/jiminny && bash"
root@ip-10-30-135-89:/home/jiminny# php artisan about
Environment [PASSWORD_DOTS]
Application Name [PASSWORD_DOTS] Jiminny Web App
Laravel Version [PASSWORD_DOTS] 12.58.0
PHP Version [PASSWORD_DOTS] 8.5.5
Composer Version [PASSWORD_DOTS] -
Environment [PASSWORD_DOTS] staging
Debug Mode [PASSWORD_DOTS] OFF
URL [PASSWORD_DOTS] app.staging.jiminny.com
Maintenance Mode [PASSWORD_DOTS] OFF
Timezone [PASSWORD_DOTS] UTC
Locale [PASSWORD_DOTS] en_US
Cache [PASSWORD_DOTS]
Config [PASSWORD_DOTS] CACHED
Events [PASSWORD_DOTS] NOT CACHED
Routes [PASSWORD_DOTS] CACHED
Views [PASSWORD_DOTS] CACHED
Drivers [PASSWORD_DOTS]
Broadcasting [PASSWORD_DOTS] pusher
Cache [PASSWORD_DOTS] redis
Database [PASSWORD_DOTS] mysql
Logs [PASSWORD_DOTS] errorlog
Mail [PASSWORD_DOTS] ses
Queue [PASSWORD_DOTS] sqs
Session [PASSWORD_DOTS] redis
Storage [PASSWORD_DOTS]
public/storage [PASSWORD_DOTS] NOT LINKED
Sentry [PASSWORD_DOTS]
Enabled [PASSWORD_DOTS] YES
Environment [PASSWORD_DOTS] staging
Laravel SDK Version [PASSWORD_DOTS] 4.13.0
PHP SDK Version [PASSWORD_DOTS] 4.13.0
Release [PASSWORD_DOTS] 893709
Sample Rate Errors [PASSWORD_DOTS] 100%
Sample Rate Performance Monitoring [PASSWORD_DOTS] NOT SET
Sample Rate Profiling [PASSWORD_DOTS] NOT SET
Send Default PII [PASSWORD_DOTS] DISABLED
root@ip-10-30-135-89:/home/jiminny# php artisan tinker
Psy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman
New PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`
> $c = \Cache::get(config('jiminny.google_text_relay_topic'));
= "358684"
> exit
INFO Goodbye.
root@ip-10-30-135-89:/home/jiminny# exit
exit
[ec2-user@ip-10-30-140-255 ~]$ exit
logout
Connection to jiminny-stage-ecs1 closed.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
DOCKER
Close Tab
DEV (docker)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ec2-user@ip-10-30-129-190:~ (nc)
Close Tab
ec2-user@ip-10-30-140-255:~ (-zsh)
Close Tab
⌥⌘1
ec2-user@ip-10-30-140-255:~...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Wed May 27 09:47:15 on ttys011\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 ~ $ vstg\nWarning: Permanently added 'jiminny-stage-ecs1' (ED25519) to the list of known hosts.\n , #_\n ~\\_ ####_\n ~~ \\_#####\\\n ~~ \\###|\n ~~ \\#/ ___ Amazon Linux 2023 (ECS Optimized)\n ~~ V~' '->\n ~~~ /\n ~~._. _/\n _/ _/\n _/m/'\n\nFor documentation, visit http://aws.amazon.com/documentation/ecs\n[ec2-user@ip-10-30-140-255 ~]$ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n4afe9d75f1c3 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/backend-code:3b1d77c6cfcf576541d2fb5155034246317c73b4 \"docker-php-entrypoi…\" About an hour ago Up About an hour (healthy) ecs-php-jupiter-1634-php-jupiter-8e95b49eb0f6c0f77100\n7380b86838a6 amazon/amazon-ecs-pause:0.1.0 \"/pause\" About an hour ago Up About an hour ecs-php-jupiter-1634-internalecspause-f4b6c0f5f3bcf3d5ae01\n6ac678f8be8c 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/worker-code:53b2b7a89ce089166185783ad6308b7a9a66fe55 \"docker-php-entrypoi…\" About an hour ago Up About an hour 80/tcp, 9000/tcp, 0.0.0.0:9001->9001/tcp, :::9001->9001/tcp ecs-worker-neptune-1285-worker-neptune-c89c85afcaa5afca1f00\n5ef03733e627 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/backend-code:53b2b7a89ce089166185783ad6308b7a9a66fe55 \"docker-php-entrypoi…\" About an hour ago Up About an hour (healthy) ecs-php-neptune-1291-php-neptune-a6f89d8cedcfc6fe5100\n6d1c700ab4e2 amazon/amazon-ecs-pause:0.1.0 \"/pause\" About an hour ago Up About an hour ecs-php-neptune-1291-internalecspause-c6c9d1ffc9cefafc3800\n74532df77969 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/backend-code:4829cdf78f93faad2afb97bc766ad6ad912d87a1 \"docker-php-entrypoi…\" 2 hours ago Up 2 hours (healthy) ecs-php-app-1206-php-app-d0e7a69b8ba3d383ed01\nf8d7f9d81ece amazon/amazon-ecs-pause:0.1.0 \"/pause\" 2 hours ago Up 2 hours ecs-php-app-1206-internalecspause-a0e798becfb4e7a32800\n5f431efe00bd amazon/amazon-ecs-agent:latest \"/agent\" 5 hours ago Up 5 hours (healthy) ecs-agent\n[ec2-user@ip-10-30-140-255 ~]$ docker exec -ti 74532df77969 /bin/bash -c \"cd /home/jiminny && bash\"\nroot@ip-10-30-135-89:/home/jiminny# php artisan about\n\n Environment ...................................................................................................................................... \n Application Name ................................................................................................................. Jiminny Web App \n Laravel Version .......................................................................................................................... 12.58.0 \n PHP Version ................................................................................................................................ 8.5.5 \n Composer Version ............................................................................................................................... - \n Environment .............................................................................................................................. staging \n Debug Mode ................................................................................................................................... OFF \n URL ...................................................................................................................... app.staging.jiminny.com \n Maintenance Mode ............................................................................................................................. OFF \n Timezone ..................................................................................................................................... UTC \n Locale ..................................................................................................................................... en_US \n\n Cache ............................................................................................................................................ \n Config .................................................................................................................................... CACHED \n Events ................................................................................................................................ NOT CACHED \n Routes .................................................................................................................................... CACHED \n Views ..................................................................................................................................... CACHED \n\n Drivers .......................................................................................................................................... \n Broadcasting .............................................................................................................................. pusher \n Cache ...................................................................................................................................... redis \n Database ................................................................................................................................... mysql \n Logs .................................................................................................................................... errorlog \n Mail ......................................................................................................................................... ses \n Queue ........................................................................................................................................ sqs \n Session .................................................................................................................................... redis \n\n Storage .......................................................................................................................................... \n public/storage ........................................................................................................................ NOT LINKED \n\n Sentry ........................................................................................................................................... \n Enabled ...................................................................................................................................... YES \n Environment .............................................................................................................................. staging \n Laravel SDK Version ....................................................................................................................... 4.13.0 \n PHP SDK Version ........................................................................................................................... 4.13.0 \n Release ................................................................................................................................... 893709 \n Sample Rate Errors .......................................................................................................................... 100% \n Sample Rate Performance Monitoring ....................................................................................................... NOT SET \n Sample Rate Profiling .................................................................................................................... NOT SET \n Send Default PII ........................................................................................................................ DISABLED \n\nroot@ip-10-30-135-89:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> $c = \\Cache::get(config('jiminny.google_text_relay_topic'));\n\n= \"358684\"\n\n> exit\n\n INFO Goodbye.\n\nroot@ip-10-30-135-89:/home/jiminny# exit\nexit\n[ec2-user@ip-10-30-140-255 ~]$ exit\nlogout\nConnection to jiminny-stage-ecs1 closed.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":4,"bounds":{"left":0.27027926,"top":0.27294493,"width":0.4787234,"height":0.7270551},"on_screen":true,"value":"Last login: Wed May 27 09:47:15 on ttys011\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 ~ $ vstg\nWarning: Permanently added 'jiminny-stage-ecs1' (ED25519) to the list of known hosts.\n , #_\n ~\\_ ####_\n ~~ \\_#####\\\n ~~ \\###|\n ~~ \\#/ ___ Amazon Linux 2023 (ECS Optimized)\n ~~ V~' '->\n ~~~ /\n ~~._. _/\n _/ _/\n _/m/'\n\nFor documentation, visit http://aws.amazon.com/documentation/ecs\n[ec2-user@ip-10-30-140-255 ~]$ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n4afe9d75f1c3 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/backend-code:3b1d77c6cfcf576541d2fb5155034246317c73b4 \"docker-php-entrypoi…\" About an hour ago Up About an hour (healthy) ecs-php-jupiter-1634-php-jupiter-8e95b49eb0f6c0f77100\n7380b86838a6 amazon/amazon-ecs-pause:0.1.0 \"/pause\" About an hour ago Up About an hour ecs-php-jupiter-1634-internalecspause-f4b6c0f5f3bcf3d5ae01\n6ac678f8be8c 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/worker-code:53b2b7a89ce089166185783ad6308b7a9a66fe55 \"docker-php-entrypoi…\" About an hour ago Up About an hour 80/tcp, 9000/tcp, 0.0.0.0:9001->9001/tcp, :::9001->9001/tcp ecs-worker-neptune-1285-worker-neptune-c89c85afcaa5afca1f00\n5ef03733e627 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/backend-code:53b2b7a89ce089166185783ad6308b7a9a66fe55 \"docker-php-entrypoi…\" About an hour ago Up About an hour (healthy) ecs-php-neptune-1291-php-neptune-a6f89d8cedcfc6fe5100\n6d1c700ab4e2 amazon/amazon-ecs-pause:0.1.0 \"/pause\" About an hour ago Up About an hour ecs-php-neptune-1291-internalecspause-c6c9d1ffc9cefafc3800\n74532df77969 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/backend-code:4829cdf78f93faad2afb97bc766ad6ad912d87a1 \"docker-php-entrypoi…\" 2 hours ago Up 2 hours (healthy) ecs-php-app-1206-php-app-d0e7a69b8ba3d383ed01\nf8d7f9d81ece amazon/amazon-ecs-pause:0.1.0 \"/pause\" 2 hours ago Up 2 hours ecs-php-app-1206-internalecspause-a0e798becfb4e7a32800\n5f431efe00bd amazon/amazon-ecs-agent:latest \"/agent\" 5 hours ago Up 5 hours (healthy) ecs-agent\n[ec2-user@ip-10-30-140-255 ~]$ docker exec -ti 74532df77969 /bin/bash -c \"cd /home/jiminny && bash\"\nroot@ip-10-30-135-89:/home/jiminny# php artisan about\n\n Environment ...................................................................................................................................... \n Application Name ................................................................................................................. Jiminny Web App \n Laravel Version .......................................................................................................................... 12.58.0 \n PHP Version ................................................................................................................................ 8.5.5 \n Composer Version ............................................................................................................................... - \n Environment .............................................................................................................................. staging \n Debug Mode ................................................................................................................................... OFF \n URL ...................................................................................................................... app.staging.jiminny.com \n Maintenance Mode ............................................................................................................................. OFF \n Timezone ..................................................................................................................................... UTC \n Locale ..................................................................................................................................... en_US \n\n Cache ............................................................................................................................................ \n Config .................................................................................................................................... CACHED \n Events ................................................................................................................................ NOT CACHED \n Routes .................................................................................................................................... CACHED \n Views ..................................................................................................................................... CACHED \n\n Drivers .......................................................................................................................................... \n Broadcasting .............................................................................................................................. pusher \n Cache ...................................................................................................................................... redis \n Database ................................................................................................................................... mysql \n Logs .................................................................................................................................... errorlog \n Mail ......................................................................................................................................... ses \n Queue ........................................................................................................................................ sqs \n Session .................................................................................................................................... redis \n\n Storage .......................................................................................................................................... \n public/storage ........................................................................................................................ NOT LINKED \n\n Sentry ........................................................................................................................................... \n Enabled ...................................................................................................................................... YES \n Environment .............................................................................................................................. staging \n Laravel SDK Version ....................................................................................................................... 4.13.0 \n PHP SDK Version ........................................................................................................................... 4.13.0 \n Release ................................................................................................................................... 893709 \n Sample Rate Errors .......................................................................................................................... 100% \n Sample Rate Performance Monitoring ....................................................................................................... NOT SET \n Sample Rate Profiling .................................................................................................................... NOT SET \n Send Default PII ........................................................................................................................ DISABLED \n\nroot@ip-10-30-135-89:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> $c = \\Cache::get(config('jiminny.google_text_relay_topic'));\n\n= \"358684\"\n\n> exit\n\n INFO Goodbye.\n\nroot@ip-10-30-135-89:/home/jiminny# exit\nexit\n[ec2-user@ip-10-30-140-255 ~]$ exit\nlogout\nConnection to jiminny-stage-ecs1 closed.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.06732048,"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 (docker)","depth":2,"bounds":{"left":0.33759972,"top":1.0,"width":0.06732048,"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.33959442,"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":"-zsh","depth":2,"bounds":{"left":0.40492022,"top":1.0,"width":0.06732048,"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.4069149,"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.4722407,"top":1.0,"width":0.06732048,"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.4742354,"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":"-zsh","depth":2,"bounds":{"left":0.53956115,"top":1.0,"width":0.06715426,"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.5415558,"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":"ec2-user@ip-10-30-129-190:~ (nc)","depth":2,"bounds":{"left":0.60671544,"top":1.0,"width":0.06715426,"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.6087101,"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":"ec2-user@ip-10-30-140-255:~ (-zsh)","depth":2,"bounds":{"left":0.67386967,"top":1.0,"width":0.06715426,"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.67586434,"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.7273936,"top":1.0,"width":0.01861702,"height":-0.023144484},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"ec2-user@ip-10-30-140-255:~","depth":1,"bounds":{"left":0.47506648,"top":1.0,"width":0.06881649,"height":-0.02394259},"on_screen":true,"role_description":"text"}]...
|
-2274123215619165715
|
9059785660649825439
|
click
|
accessibility
|
NULL
|
Last login: Wed May 27 09:47:15 on ttys011
Poetry Last login: Wed May 27 09:47:15 on ttys011
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ vstg
Warning: Permanently added 'jiminny-stage-ecs1' (ED25519) to the list of known hosts.
, #_
~\_ ####_
~~ \_#####\
~~ \###|
~~ \#/ ___ Amazon Linux 2023 (ECS Optimized)
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
For documentation, visit [URL_WITH_CREDENTIALS] ~]$ docker exec -ti 74532df77969 /bin/bash -c "cd /home/jiminny && bash"
root@ip-10-30-135-89:/home/jiminny# php artisan about
Environment [PASSWORD_DOTS]
Application Name [PASSWORD_DOTS] Jiminny Web App
Laravel Version [PASSWORD_DOTS] 12.58.0
PHP Version [PASSWORD_DOTS] 8.5.5
Composer Version [PASSWORD_DOTS] -
Environment [PASSWORD_DOTS] staging
Debug Mode [PASSWORD_DOTS] OFF
URL [PASSWORD_DOTS] app.staging.jiminny.com
Maintenance Mode [PASSWORD_DOTS] OFF
Timezone [PASSWORD_DOTS] UTC
Locale [PASSWORD_DOTS] en_US
Cache [PASSWORD_DOTS]
Config [PASSWORD_DOTS] CACHED
Events [PASSWORD_DOTS] NOT CACHED
Routes [PASSWORD_DOTS] CACHED
Views [PASSWORD_DOTS] CACHED
Drivers [PASSWORD_DOTS]
Broadcasting [PASSWORD_DOTS] pusher
Cache [PASSWORD_DOTS] redis
Database [PASSWORD_DOTS] mysql
Logs [PASSWORD_DOTS] errorlog
Mail [PASSWORD_DOTS] ses
Queue [PASSWORD_DOTS] sqs
Session [PASSWORD_DOTS] redis
Storage [PASSWORD_DOTS]
public/storage [PASSWORD_DOTS] NOT LINKED
Sentry [PASSWORD_DOTS]
Enabled [PASSWORD_DOTS] YES
Environment [PASSWORD_DOTS] staging
Laravel SDK Version [PASSWORD_DOTS] 4.13.0
PHP SDK Version [PASSWORD_DOTS] 4.13.0
Release [PASSWORD_DOTS] 893709
Sample Rate Errors [PASSWORD_DOTS] 100%
Sample Rate Performance Monitoring [PASSWORD_DOTS] NOT SET
Sample Rate Profiling [PASSWORD_DOTS] NOT SET
Send Default PII [PASSWORD_DOTS] DISABLED
root@ip-10-30-135-89:/home/jiminny# php artisan tinker
Psy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman
New PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`
> $c = \Cache::get(config('jiminny.google_text_relay_topic'));
= "358684"
> exit
INFO Goodbye.
root@ip-10-30-135-89:/home/jiminny# exit
exit
[ec2-user@ip-10-30-140-255 ~]$ exit
logout
Connection to jiminny-stage-ecs1 closed.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
DOCKER
Close Tab
DEV (docker)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ec2-user@ip-10-30-129-190:~ (nc)
Close Tab
ec2-user@ip-10-30-140-255:~ (-zsh)
Close Tab
⌥⌘1
ec2-user@ip-10-30-140-255:~...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
78753
|
2764
|
45
|
2026-05-27T12:58:25.988143+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886705988_m2.jpg...
|
PhpStorm
|
faVsco.js – TextRelayService.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
[2026-05-27 12:57:25] local.INFO: $messageHistory
Array
(
)
{"correlation_id":"e4286517-4279-4047-8135-b79adc851022","trace_id":"0470f04d-52ab-4a34-9f7e-7bb500016954"}
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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.09740692,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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.8374335,"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":"TextRelayServiceTest","depth":6,"bounds":{"left":0.85272604,"top":0.019952115,"width":0.062832445,"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 'TextRelayServiceTest'","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 'TextRelayServiceTest'","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":"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.37632978,"top":0.10055866,"width":0.00731383,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","depth":4,"bounds":{"left":0.3856383,"top":0.10055866,"width":0.009640957,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.39694148,"top":0.09896249,"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.40425533,"top":0.09896249,"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\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n \n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n \n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"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":"AXTextArea","text":"[2026-05-27 12:57:25] local.INFO: $messageHistory \nArray\n(\n)\n {\"correlation_id\":\"e4286517-4279-4047-8135-b79adc851022\",\"trace_id\":\"0470f04d-52ab-4a34-9f7e-7bb500016954\"}","depth":4,"bounds":{"left":0.43051863,"top":0.09736632,"width":0.32280585,"height":0.8818835},"on_screen":true,"value":"[2026-05-27 12:57:25] local.INFO: $messageHistory \nArray\n(\n)\n {\"correlation_id\":\"e4286517-4279-4047-8135-b79adc851022\",\"trace_id\":\"0470f04d-52ab-4a34-9f7e-7bb500016954\"}","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}]...
|
816333390822493230
|
-5281383083183535733
|
typing_pause
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
[2026-05-27 12:57:25] local.INFO: $messageHistory
Array
(
)
{"correlation_id":"e4286517-4279-4047-8135-b79adc851022","trace_id":"0470f04d-52ab-4a34-9f7e-7bb500016954"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
78752
|
NULL
|
NULL
|
NULL
|
|
78752
|
2764
|
44
|
2026-05-27T12:58:24.913502+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886704913_m2.jpg...
|
PhpStorm
|
faVsco.js – TextRelayService.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
[2026-05-27 12:57:25] local.INFO: $messageHistory
Array
(
)
{"correlation_id":"e4286517-4279-4047-8135-b79adc851022","trace_id":"0470f04d-52ab-4a34-9f7e-7bb500016954"}
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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.09740692,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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.8374335,"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":"TextRelayServiceTest","depth":6,"bounds":{"left":0.85272604,"top":0.019952115,"width":0.062832445,"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 'TextRelayServiceTest'","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 'TextRelayServiceTest'","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":"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.37632978,"top":0.10055866,"width":0.00731383,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","depth":4,"bounds":{"left":0.3856383,"top":0.10055866,"width":0.009640957,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.39694148,"top":0.09896249,"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.40425533,"top":0.09896249,"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\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"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":"AXTextArea","text":"[2026-05-27 12:57:25] local.INFO: $messageHistory \nArray\n(\n)\n {\"correlation_id\":\"e4286517-4279-4047-8135-b79adc851022\",\"trace_id\":\"0470f04d-52ab-4a34-9f7e-7bb500016954\"}","depth":4,"bounds":{"left":0.43051863,"top":0.09736632,"width":0.32280585,"height":0.8818835},"on_screen":true,"value":"[2026-05-27 12:57:25] local.INFO: $messageHistory \nArray\n(\n)\n {\"correlation_id\":\"e4286517-4279-4047-8135-b79adc851022\",\"trace_id\":\"0470f04d-52ab-4a34-9f7e-7bb500016954\"}","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}]...
|
8911248186958597539
|
-5281383083183535733
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
[2026-05-27 12:57:25] local.INFO: $messageHistory
Array
(
)
{"correlation_id":"e4286517-4279-4047-8135-b79adc851022","trace_id":"0470f04d-52ab-4a34-9f7e-7bb500016954"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
78751
|
2764
|
43
|
2026-05-27T12:58:21.351421+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886701351_m2.jpg...
|
PhpStorm
|
faVsco.js – TextRelayService.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Sync Changes
Hide This Notification
Code changed:
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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.09740692,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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.8374335,"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":"TextRelayServiceTest","depth":6,"bounds":{"left":0.85272604,"top":0.019952115,"width":0.062832445,"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 'TextRelayServiceTest'","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 'TextRelayServiceTest'","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":"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.37632978,"top":0.10055866,"width":0.00731383,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","depth":4,"bounds":{"left":0.3856383,"top":0.10055866,"width":0.009640957,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.39694148,"top":0.09896249,"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.40425533,"top":0.09896249,"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\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"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}]...
|
-1837709289335154242
|
-6438807707446769269
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Sync Changes
Hide This Notification
Code changed:
Hide...
|
78750
|
NULL
|
NULL
|
NULL
|
|
78750
|
2764
|
42
|
2026-05-27T12:58:04.930157+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886684930_m2.jpg...
|
PhpStorm
|
faVsco.js – TextRelayService.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
[2026-05-27 12:57:25] local.INFO: $messageHistory
Array
(
)
{"correlation_id":"e4286517-4279-4047-8135-b79adc851022","trace_id":"0470f04d-52ab-4a34-9f7e-7bb500016954"}
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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.09740692,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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.8374335,"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":"TextRelayServiceTest","depth":6,"bounds":{"left":0.85272604,"top":0.019952115,"width":0.062832445,"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 'TextRelayServiceTest'","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 'TextRelayServiceTest'","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":"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.37632978,"top":0.10055866,"width":0.00731383,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","depth":4,"bounds":{"left":0.3856383,"top":0.10055866,"width":0.009640957,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.39694148,"top":0.09896249,"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.40425533,"top":0.09896249,"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\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"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":"AXTextArea","text":"[2026-05-27 12:57:25] local.INFO: $messageHistory \nArray\n(\n)\n {\"correlation_id\":\"e4286517-4279-4047-8135-b79adc851022\",\"trace_id\":\"0470f04d-52ab-4a34-9f7e-7bb500016954\"}","depth":4,"bounds":{"left":0.43051863,"top":0.09736632,"width":0.32280585,"height":0.8818835},"on_screen":true,"value":"[2026-05-27 12:57:25] local.INFO: $messageHistory \nArray\n(\n)\n {\"correlation_id\":\"e4286517-4279-4047-8135-b79adc851022\",\"trace_id\":\"0470f04d-52ab-4a34-9f7e-7bb500016954\"}","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}]...
|
8911248186958597539
|
-5281383083183535733
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
[2026-05-27 12:57:25] local.INFO: $messageHistory
Array
(
)
{"correlation_id":"e4286517-4279-4047-8135-b79adc851022","trace_id":"0470f04d-52ab-4a34-9f7e-7bb500016954"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
78749
|
2763
|
38
|
2026-05-27T12:58:04.568362+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886684568_m1.jpg...
|
PhpStorm
|
faVsco.js – TextRelayService.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
[2026-05-27 12:57:25] local.INFO: $messageHistory
Array
(
)
{"correlation_id":"e4286517-4279-4047-8135-b79adc851022","trace_id":"0470f04d-52ab-4a34-9f7e-7bb500016954"}
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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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":"TextRelayServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'TextRelayServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'TextRelayServiceTest'","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":"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,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","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\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"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":"AXTextArea","text":"[2026-05-27 12:57:25] local.INFO: $messageHistory \nArray\n(\n)\n {\"correlation_id\":\"e4286517-4279-4047-8135-b79adc851022\",\"trace_id\":\"0470f04d-52ab-4a34-9f7e-7bb500016954\"}","depth":4,"on_screen":true,"value":"[2026-05-27 12:57:25] local.INFO: $messageHistory \nArray\n(\n)\n {\"correlation_id\":\"e4286517-4279-4047-8135-b79adc851022\",\"trace_id\":\"0470f04d-52ab-4a34-9f7e-7bb500016954\"}","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}]...
|
8911248186958597539
|
-5281383083183535733
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
[2026-05-27 12:57:25] local.INFO: $messageHistory
Array
(
)
{"correlation_id":"e4286517-4279-4047-8135-b79adc851022","trace_id":"0470f04d-52ab-4a34-9f7e-7bb500016954"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
78748
|
2763
|
37
|
2026-05-27T12:58:03.729972+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886683729_m1.jpg...
|
PhpStorm
|
faVsco.js – SyncMailbox.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands\Mailboxes\TextRelay;
use Jiminny\Console\Commands\Command;
use Jiminny\Services\Mail\TextRelayService;
class SyncMailbox extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'mailbox:text-relay:sync';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Sync text relay\'s mailbox with latest messages.';
private $relayService;
public function __construct(TextRelayService $relayService)
{
parent::__construct();
$this->relayService = $relayService;
}
/**
* Execute the console command.
*
*/
public function handle(): void
{
try {
// If we don't have relay configuration, just bail now.
if (config('jiminny.google_text_host') === null) {
return;
}
$messageIds = $this->relayService->sync();
$this->line('Relayed ' . count($messageIds) . ' message(s).');
} catch (\Exception $e) {
$this->error($e->getMessage());
\Sentry::captureException($e);
}
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
[2026-05-27 12:57:25] local.INFO: $messageHistory
Array
(
)
{"correlation_id":"e4286517-4279-4047-8135-b79adc851022","trace_id":"0470f04d-52ab-4a34-9f7e-7bb500016954"}
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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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":"TextRelayServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'TextRelayServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'TextRelayServiceTest'","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":"3","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\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands\\Mailboxes\\TextRelay;\n\nuse Jiminny\\Console\\Commands\\Command;\nuse Jiminny\\Services\\Mail\\TextRelayService;\n\nclass SyncMailbox extends Command\n{\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected $signature = 'mailbox:text-relay:sync';\n\n /**\n * The console command description.\n *\n * @var string\n */\n protected $description = 'Sync text relay\\'s mailbox with latest messages.';\n private $relayService;\n\n public function __construct(TextRelayService $relayService)\n {\n parent::__construct();\n\n $this->relayService = $relayService;\n }\n\n /**\n * Execute the console command.\n *\n */\n public function handle(): void\n {\n try {\n // If we don't have relay configuration, just bail now.\n if (config('jiminny.google_text_host') === null) {\n return;\n }\n\n $messageIds = $this->relayService->sync();\n\n $this->line('Relayed ' . count($messageIds) . ' message(s).');\n } catch (\\Exception $e) {\n $this->error($e->getMessage());\n\n \\Sentry::captureException($e);\n }\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands\\Mailboxes\\TextRelay;\n\nuse Jiminny\\Console\\Commands\\Command;\nuse Jiminny\\Services\\Mail\\TextRelayService;\n\nclass SyncMailbox extends Command\n{\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected $signature = 'mailbox:text-relay:sync';\n\n /**\n * The console command description.\n *\n * @var string\n */\n protected $description = 'Sync text relay\\'s mailbox with latest messages.';\n private $relayService;\n\n public function __construct(TextRelayService $relayService)\n {\n parent::__construct();\n\n $this->relayService = $relayService;\n }\n\n /**\n * Execute the console command.\n *\n */\n public function handle(): void\n {\n try {\n // If we don't have relay configuration, just bail now.\n if (config('jiminny.google_text_host') === null) {\n return;\n }\n\n $messageIds = $this->relayService->sync();\n\n $this->line('Relayed ' . count($messageIds) . ' message(s).');\n } catch (\\Exception $e) {\n $this->error($e->getMessage());\n\n \\Sentry::captureException($e);\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"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":"AXTextArea","text":"[2026-05-27 12:57:25] local.INFO: $messageHistory \nArray\n(\n)\n {\"correlation_id\":\"e4286517-4279-4047-8135-b79adc851022\",\"trace_id\":\"0470f04d-52ab-4a34-9f7e-7bb500016954\"}","depth":4,"on_screen":true,"value":"[2026-05-27 12:57:25] local.INFO: $messageHistory \nArray\n(\n)\n {\"correlation_id\":\"e4286517-4279-4047-8135-b79adc851022\",\"trace_id\":\"0470f04d-52ab-4a34-9f7e-7bb500016954\"}","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}]...
|
-5036258594377021821
|
-1317633669619957426
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands\Mailboxes\TextRelay;
use Jiminny\Console\Commands\Command;
use Jiminny\Services\Mail\TextRelayService;
class SyncMailbox extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'mailbox:text-relay:sync';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Sync text relay\'s mailbox with latest messages.';
private $relayService;
public function __construct(TextRelayService $relayService)
{
parent::__construct();
$this->relayService = $relayService;
}
/**
* Execute the console command.
*
*/
public function handle(): void
{
try {
// If we don't have relay configuration, just bail now.
if (config('jiminny.google_text_host') === null) {
return;
}
$messageIds = $this->relayService->sync();
$this->line('Relayed ' . count($messageIds) . ' message(s).');
} catch (\Exception $e) {
$this->error($e->getMessage());
\Sentry::captureException($e);
}
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
[2026-05-27 12:57:25] local.INFO: $messageHistory
Array
(
)
{"correlation_id":"e4286517-4279-4047-8135-b79adc851022","trace_id":"0470f04d-52ab-4a34-9f7e-7bb500016954"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
78747
|
NULL
|
NULL
|
NULL
|
|
78747
|
2763
|
36
|
2026-05-27T12:58:02.630610+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886682630_m1.jpg...
|
PhpStorm
|
faVsco.js – SyncMailbox.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp•DOCKEREventsRoutesViews•₴1DEV (docker)₴2-zsh883DriversBroadcastingCacheDatabaseLogsMailQueueSessionStoragepublic/storageSentryEnabledEnvironmentLaravel SDK VersionPHP SDK VersionReleaseSample Rate ErrorsSample Rate Performance MonitoringSample Rate ProfilingSend Default PIIroot@ip-10-30-135-89:/home/jiminny# php artisantinkerPsy Shell v0.12.22 (PHP 8.5.5 - cli) by Justin HilemanNew PHP|manual is available (latest: 3.0.7). Update with'doc--update-manual> Sc = \Cache::get(config('jiminny.google_text_relay_topic'));"358684exitINFOGoodbye.root@ip-10-30-135-89:/home/jiminny# exitexit[ec2-user@ip-10-30-140-255 ~]$ exitlogoutConnection to jiminny-stage-ecs1 closed.lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $|100% С8• Wed 27 May 15:58:02181ec2-user@ip-10-30-140-255:~screenpipe"84-zsh85...ip-10-30-129-190:~ (nc)NOT CACHEDCACHEDCACHED₴86...-10-30-140-255:~ (-zsh)pusherredismysqlerrorlogsessqsredisNOT LINKEDYESstaging4.13.04.13.0893709100%NOT SETNOT SETDISABLED...
|
NULL
|
7935047559346439857
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp•DOCKEREventsRoutesViews•₴1DEV (docker)₴2-zsh883DriversBroadcastingCacheDatabaseLogsMailQueueSessionStoragepublic/storageSentryEnabledEnvironmentLaravel SDK VersionPHP SDK VersionReleaseSample Rate ErrorsSample Rate Performance MonitoringSample Rate ProfilingSend Default PIIroot@ip-10-30-135-89:/home/jiminny# php artisantinkerPsy Shell v0.12.22 (PHP 8.5.5 - cli) by Justin HilemanNew PHP|manual is available (latest: 3.0.7). Update with'doc--update-manual> Sc = \Cache::get(config('jiminny.google_text_relay_topic'));"358684exitINFOGoodbye.root@ip-10-30-135-89:/home/jiminny# exitexit[ec2-user@ip-10-30-140-255 ~]$ exitlogoutConnection to jiminny-stage-ecs1 closed.lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $|100% С8• Wed 27 May 15:58:02181ec2-user@ip-10-30-140-255:~screenpipe"84-zsh85...ip-10-30-129-190:~ (nc)NOT CACHEDCACHEDCACHED₴86...-10-30-140-255:~ (-zsh)pusherredismysqlerrorlogsessqsredisNOT LINKEDYESstaging4.13.04.13.0893709100%NOT SETNOT SETDISABLED...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
78746
|
2763
|
35
|
2026-05-27T12:57:47.254467+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886667254_m1.jpg...
|
iTerm2
|
ec2-user@ip-10-30-140-255:~
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Wed May 27 09:47:15 on ttys011
Poetry Last login: Wed May 27 09:47:15 on ttys011
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ vstg
Warning: Permanently added 'jiminny-stage-ecs1' (ED25519) to the list of known hosts.
, #_
~\_ ####_
~~ \_#####\
~~ \###|
~~ \#/ ___ Amazon Linux 2023 (ECS Optimized)
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
For documentation, visit [URL_WITH_CREDENTIALS] ~]$ docker exec -ti 74532df77969 /bin/bash -c "cd /home/jiminny && bash"
root@ip-10-30-135-89:/home/jiminny# php artisan about
Environment [PASSWORD_DOTS]
Application Name [PASSWORD_DOTS] Jiminny Web App
Laravel Version [PASSWORD_DOTS] 12.58.0
PHP Version [PASSWORD_DOTS] 8.5.5
Composer Version [PASSWORD_DOTS] -
Environment [PASSWORD_DOTS] staging
Debug Mode [PASSWORD_DOTS] OFF
URL [PASSWORD_DOTS] app.staging.jiminny.com
Maintenance Mode [PASSWORD_DOTS] OFF
Timezone [PASSWORD_DOTS] UTC
Locale [PASSWORD_DOTS] en_US
Cache [PASSWORD_DOTS]
Config [PASSWORD_DOTS] CACHED
Events [PASSWORD_DOTS] NOT CACHED
Routes [PASSWORD_DOTS] CACHED
Views [PASSWORD_DOTS] CACHED
Drivers [PASSWORD_DOTS]
Broadcasting [PASSWORD_DOTS] pusher
Cache [PASSWORD_DOTS] redis
Database [PASSWORD_DOTS] mysql
Logs [PASSWORD_DOTS] errorlog
Mail [PASSWORD_DOTS] ses
Queue [PASSWORD_DOTS] sqs
Session [PASSWORD_DOTS] redis
Storage [PASSWORD_DOTS]
public/storage [PASSWORD_DOTS] NOT LINKED
Sentry [PASSWORD_DOTS]
Enabled [PASSWORD_DOTS] YES
Environment [PASSWORD_DOTS] staging
Laravel SDK Version [PASSWORD_DOTS] 4.13.0
PHP SDK Version [PASSWORD_DOTS] 4.13.0
Release [PASSWORD_DOTS] 893709
Sample Rate Errors [PASSWORD_DOTS] 100%
Sample Rate Performance Monitoring [PASSWORD_DOTS] NOT SET
Sample Rate Profiling [PASSWORD_DOTS] NOT SET
Send Default PII [PASSWORD_DOTS] DISABLED
root@ip-10-30-135-89:/home/jiminny# php artisan tinker
Psy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman
New PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`
> $c = \Cache::get(config('jiminny.google_text_relay_topic'));
= "358684"
> exit
INFO Goodbye.
root@ip-10-30-135-89:/home/jiminny# exit
exit
[ec2-user@ip-10-30-140-255 ~]$ exit
logout
Connection to jiminny-stage-ecs1 closed.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
DOCKER
Close Tab
DEV (docker)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ec2-user@ip-10-30-129-190:~ (nc)
Close Tab
ec2-user@ip-10-30-140-255:~ (-zsh)
Close Tab
⌥⌘1
ec2-user@ip-10-30-140-255:~...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Wed May 27 09:47:15 on ttys011\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 ~ $ vstg\nWarning: Permanently added 'jiminny-stage-ecs1' (ED25519) to the list of known hosts.\n , #_\n ~\\_ ####_\n ~~ \\_#####\\\n ~~ \\###|\n ~~ \\#/ ___ Amazon Linux 2023 (ECS Optimized)\n ~~ V~' '->\n ~~~ /\n ~~._. _/\n _/ _/\n _/m/'\n\nFor documentation, visit http://aws.amazon.com/documentation/ecs\n[ec2-user@ip-10-30-140-255 ~]$ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n4afe9d75f1c3 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/backend-code:3b1d77c6cfcf576541d2fb5155034246317c73b4 \"docker-php-entrypoi…\" About an hour ago Up About an hour (healthy) ecs-php-jupiter-1634-php-jupiter-8e95b49eb0f6c0f77100\n7380b86838a6 amazon/amazon-ecs-pause:0.1.0 \"/pause\" About an hour ago Up About an hour ecs-php-jupiter-1634-internalecspause-f4b6c0f5f3bcf3d5ae01\n6ac678f8be8c 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/worker-code:53b2b7a89ce089166185783ad6308b7a9a66fe55 \"docker-php-entrypoi…\" About an hour ago Up About an hour 80/tcp, 9000/tcp, 0.0.0.0:9001->9001/tcp, :::9001->9001/tcp ecs-worker-neptune-1285-worker-neptune-c89c85afcaa5afca1f00\n5ef03733e627 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/backend-code:53b2b7a89ce089166185783ad6308b7a9a66fe55 \"docker-php-entrypoi…\" About an hour ago Up About an hour (healthy) ecs-php-neptune-1291-php-neptune-a6f89d8cedcfc6fe5100\n6d1c700ab4e2 amazon/amazon-ecs-pause:0.1.0 \"/pause\" About an hour ago Up About an hour ecs-php-neptune-1291-internalecspause-c6c9d1ffc9cefafc3800\n74532df77969 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/backend-code:4829cdf78f93faad2afb97bc766ad6ad912d87a1 \"docker-php-entrypoi…\" 2 hours ago Up 2 hours (healthy) ecs-php-app-1206-php-app-d0e7a69b8ba3d383ed01\nf8d7f9d81ece amazon/amazon-ecs-pause:0.1.0 \"/pause\" 2 hours ago Up 2 hours ecs-php-app-1206-internalecspause-a0e798becfb4e7a32800\n5f431efe00bd amazon/amazon-ecs-agent:latest \"/agent\" 5 hours ago Up 5 hours (healthy) ecs-agent\n[ec2-user@ip-10-30-140-255 ~]$ docker exec -ti 74532df77969 /bin/bash -c \"cd /home/jiminny && bash\"\nroot@ip-10-30-135-89:/home/jiminny# php artisan about\n\n Environment ...................................................................................................................................... \n Application Name ................................................................................................................. Jiminny Web App \n Laravel Version .......................................................................................................................... 12.58.0 \n PHP Version ................................................................................................................................ 8.5.5 \n Composer Version ............................................................................................................................... - \n Environment .............................................................................................................................. staging \n Debug Mode ................................................................................................................................... OFF \n URL ...................................................................................................................... app.staging.jiminny.com \n Maintenance Mode ............................................................................................................................. OFF \n Timezone ..................................................................................................................................... UTC \n Locale ..................................................................................................................................... en_US \n\n Cache ............................................................................................................................................ \n Config .................................................................................................................................... CACHED \n Events ................................................................................................................................ NOT CACHED \n Routes .................................................................................................................................... CACHED \n Views ..................................................................................................................................... CACHED \n\n Drivers .......................................................................................................................................... \n Broadcasting .............................................................................................................................. pusher \n Cache ...................................................................................................................................... redis \n Database ................................................................................................................................... mysql \n Logs .................................................................................................................................... errorlog \n Mail ......................................................................................................................................... ses \n Queue ........................................................................................................................................ sqs \n Session .................................................................................................................................... redis \n\n Storage .......................................................................................................................................... \n public/storage ........................................................................................................................ NOT LINKED \n\n Sentry ........................................................................................................................................... \n Enabled ...................................................................................................................................... YES \n Environment .............................................................................................................................. staging \n Laravel SDK Version ....................................................................................................................... 4.13.0 \n PHP SDK Version ........................................................................................................................... 4.13.0 \n Release ................................................................................................................................... 893709 \n Sample Rate Errors .......................................................................................................................... 100% \n Sample Rate Performance Monitoring ....................................................................................................... NOT SET \n Sample Rate Profiling .................................................................................................................... NOT SET \n Send Default PII ........................................................................................................................ DISABLED \n\nroot@ip-10-30-135-89:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> $c = \\Cache::get(config('jiminny.google_text_relay_topic'));\n\n= \"358684\"\n\n> exit\n\n INFO Goodbye.\n\nroot@ip-10-30-135-89:/home/jiminny# exit\nexit\n[ec2-user@ip-10-30-140-255 ~]$ exit\nlogout\nConnection to jiminny-stage-ecs1 closed.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":4,"on_screen":true,"value":"Last login: Wed May 27 09:47:15 on ttys011\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 ~ $ vstg\nWarning: Permanently added 'jiminny-stage-ecs1' (ED25519) to the list of known hosts.\n , #_\n ~\\_ ####_\n ~~ \\_#####\\\n ~~ \\###|\n ~~ \\#/ ___ Amazon Linux 2023 (ECS Optimized)\n ~~ V~' '->\n ~~~ /\n ~~._. _/\n _/ _/\n _/m/'\n\nFor documentation, visit http://aws.amazon.com/documentation/ecs\n[ec2-user@ip-10-30-140-255 ~]$ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n4afe9d75f1c3 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/backend-code:3b1d77c6cfcf576541d2fb5155034246317c73b4 \"docker-php-entrypoi…\" About an hour ago Up About an hour (healthy) ecs-php-jupiter-1634-php-jupiter-8e95b49eb0f6c0f77100\n7380b86838a6 amazon/amazon-ecs-pause:0.1.0 \"/pause\" About an hour ago Up About an hour ecs-php-jupiter-1634-internalecspause-f4b6c0f5f3bcf3d5ae01\n6ac678f8be8c 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/worker-code:53b2b7a89ce089166185783ad6308b7a9a66fe55 \"docker-php-entrypoi…\" About an hour ago Up About an hour 80/tcp, 9000/tcp, 0.0.0.0:9001->9001/tcp, :::9001->9001/tcp ecs-worker-neptune-1285-worker-neptune-c89c85afcaa5afca1f00\n5ef03733e627 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/backend-code:53b2b7a89ce089166185783ad6308b7a9a66fe55 \"docker-php-entrypoi…\" About an hour ago Up About an hour (healthy) ecs-php-neptune-1291-php-neptune-a6f89d8cedcfc6fe5100\n6d1c700ab4e2 amazon/amazon-ecs-pause:0.1.0 \"/pause\" About an hour ago Up About an hour ecs-php-neptune-1291-internalecspause-c6c9d1ffc9cefafc3800\n74532df77969 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/backend-code:4829cdf78f93faad2afb97bc766ad6ad912d87a1 \"docker-php-entrypoi…\" 2 hours ago Up 2 hours (healthy) ecs-php-app-1206-php-app-d0e7a69b8ba3d383ed01\nf8d7f9d81ece amazon/amazon-ecs-pause:0.1.0 \"/pause\" 2 hours ago Up 2 hours ecs-php-app-1206-internalecspause-a0e798becfb4e7a32800\n5f431efe00bd amazon/amazon-ecs-agent:latest \"/agent\" 5 hours ago Up 5 hours (healthy) ecs-agent\n[ec2-user@ip-10-30-140-255 ~]$ docker exec -ti 74532df77969 /bin/bash -c \"cd /home/jiminny && bash\"\nroot@ip-10-30-135-89:/home/jiminny# php artisan about\n\n Environment ...................................................................................................................................... \n Application Name ................................................................................................................. Jiminny Web App \n Laravel Version .......................................................................................................................... 12.58.0 \n PHP Version ................................................................................................................................ 8.5.5 \n Composer Version ............................................................................................................................... - \n Environment .............................................................................................................................. staging \n Debug Mode ................................................................................................................................... OFF \n URL ...................................................................................................................... app.staging.jiminny.com \n Maintenance Mode ............................................................................................................................. OFF \n Timezone ..................................................................................................................................... UTC \n Locale ..................................................................................................................................... en_US \n\n Cache ............................................................................................................................................ \n Config .................................................................................................................................... CACHED \n Events ................................................................................................................................ NOT CACHED \n Routes .................................................................................................................................... CACHED \n Views ..................................................................................................................................... CACHED \n\n Drivers .......................................................................................................................................... \n Broadcasting .............................................................................................................................. pusher \n Cache ...................................................................................................................................... redis \n Database ................................................................................................................................... mysql \n Logs .................................................................................................................................... errorlog \n Mail ......................................................................................................................................... ses \n Queue ........................................................................................................................................ sqs \n Session .................................................................................................................................... redis \n\n Storage .......................................................................................................................................... \n public/storage ........................................................................................................................ NOT LINKED \n\n Sentry ........................................................................................................................................... \n Enabled ...................................................................................................................................... YES \n Environment .............................................................................................................................. staging \n Laravel SDK Version ....................................................................................................................... 4.13.0 \n PHP SDK Version ........................................................................................................................... 4.13.0 \n Release ................................................................................................................................... 893709 \n Sample Rate Errors .......................................................................................................................... 100% \n Sample Rate Performance Monitoring ....................................................................................................... NOT SET \n Sample Rate Profiling .................................................................................................................... NOT SET \n Send Default PII ........................................................................................................................ DISABLED \n\nroot@ip-10-30-135-89:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> $c = \\Cache::get(config('jiminny.google_text_relay_topic'));\n\n= \"358684\"\n\n> exit\n\n INFO Goodbye.\n\nroot@ip-10-30-135-89:/home/jiminny# exit\nexit\n[ec2-user@ip-10-30-140-255 ~]$ exit\nlogout\nConnection to jiminny-stage-ecs1 closed.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (docker)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"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.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"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.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-129-190:~ (nc)","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"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.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-140-255:~ (-zsh)","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"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.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"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.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"ec2-user@ip-10-30-140-255:~","depth":1,"bounds":{"left":0.42777777,"top":0.033333335,"width":0.14375,"height":0.017777778},"on_screen":true,"role_description":"text"}]...
|
-2274123215619165715
|
9059785660649825439
|
click
|
accessibility
|
NULL
|
Last login: Wed May 27 09:47:15 on ttys011
Poetry Last login: Wed May 27 09:47:15 on ttys011
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ vstg
Warning: Permanently added 'jiminny-stage-ecs1' (ED25519) to the list of known hosts.
, #_
~\_ ####_
~~ \_#####\
~~ \###|
~~ \#/ ___ Amazon Linux 2023 (ECS Optimized)
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
For documentation, visit [URL_WITH_CREDENTIALS] ~]$ docker exec -ti 74532df77969 /bin/bash -c "cd /home/jiminny && bash"
root@ip-10-30-135-89:/home/jiminny# php artisan about
Environment [PASSWORD_DOTS]
Application Name [PASSWORD_DOTS] Jiminny Web App
Laravel Version [PASSWORD_DOTS] 12.58.0
PHP Version [PASSWORD_DOTS] 8.5.5
Composer Version [PASSWORD_DOTS] -
Environment [PASSWORD_DOTS] staging
Debug Mode [PASSWORD_DOTS] OFF
URL [PASSWORD_DOTS] app.staging.jiminny.com
Maintenance Mode [PASSWORD_DOTS] OFF
Timezone [PASSWORD_DOTS] UTC
Locale [PASSWORD_DOTS] en_US
Cache [PASSWORD_DOTS]
Config [PASSWORD_DOTS] CACHED
Events [PASSWORD_DOTS] NOT CACHED
Routes [PASSWORD_DOTS] CACHED
Views [PASSWORD_DOTS] CACHED
Drivers [PASSWORD_DOTS]
Broadcasting [PASSWORD_DOTS] pusher
Cache [PASSWORD_DOTS] redis
Database [PASSWORD_DOTS] mysql
Logs [PASSWORD_DOTS] errorlog
Mail [PASSWORD_DOTS] ses
Queue [PASSWORD_DOTS] sqs
Session [PASSWORD_DOTS] redis
Storage [PASSWORD_DOTS]
public/storage [PASSWORD_DOTS] NOT LINKED
Sentry [PASSWORD_DOTS]
Enabled [PASSWORD_DOTS] YES
Environment [PASSWORD_DOTS] staging
Laravel SDK Version [PASSWORD_DOTS] 4.13.0
PHP SDK Version [PASSWORD_DOTS] 4.13.0
Release [PASSWORD_DOTS] 893709
Sample Rate Errors [PASSWORD_DOTS] 100%
Sample Rate Performance Monitoring [PASSWORD_DOTS] NOT SET
Sample Rate Profiling [PASSWORD_DOTS] NOT SET
Send Default PII [PASSWORD_DOTS] DISABLED
root@ip-10-30-135-89:/home/jiminny# php artisan tinker
Psy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman
New PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`
> $c = \Cache::get(config('jiminny.google_text_relay_topic'));
= "358684"
> exit
INFO Goodbye.
root@ip-10-30-135-89:/home/jiminny# exit
exit
[ec2-user@ip-10-30-140-255 ~]$ exit
logout
Connection to jiminny-stage-ecs1 closed.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
DOCKER
Close Tab
DEV (docker)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ec2-user@ip-10-30-129-190:~ (nc)
Close Tab
ec2-user@ip-10-30-140-255:~ (-zsh)
Close Tab
⌥⌘1
ec2-user@ip-10-30-140-255:~...
|
78742
|
NULL
|
NULL
|
NULL
|
|
78745
|
2764
|
41
|
2026-05-27T12:57:46.630756+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886666630_m2.jpg...
|
iTerm2
|
ec2-user@ip-10-30-140-255:~
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Wed May 27 09:47:15 on ttys011
Poetry Last login: Wed May 27 09:47:15 on ttys011
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ vstg
Warning: Permanently added 'jiminny-stage-ecs1' (ED25519) to the list of known hosts.
, #_
~\_ ####_
~~ \_#####\
~~ \###|
~~ \#/ ___ Amazon Linux 2023 (ECS Optimized)
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
For documentation, visit [URL_WITH_CREDENTIALS] ~]$ docker exec -ti 74532df77969 /bin/bash -c "cd /home/jiminny && bash"
root@ip-10-30-135-89:/home/jiminny# php artisan about
Environment [PASSWORD_DOTS]
Application Name [PASSWORD_DOTS] Jiminny Web App
Laravel Version [PASSWORD_DOTS] 12.58.0
PHP Version [PASSWORD_DOTS] 8.5.5
Composer Version [PASSWORD_DOTS] -
Environment [PASSWORD_DOTS] staging
Debug Mode [PASSWORD_DOTS] OFF
URL [PASSWORD_DOTS] app.staging.jiminny.com
Maintenance Mode [PASSWORD_DOTS] OFF
Timezone [PASSWORD_DOTS] UTC
Locale [PASSWORD_DOTS] en_US
Cache [PASSWORD_DOTS]
Config [PASSWORD_DOTS] CACHED
Events [PASSWORD_DOTS] NOT CACHED
Routes [PASSWORD_DOTS] CACHED
Views [PASSWORD_DOTS] CACHED
Drivers [PASSWORD_DOTS]
Broadcasting [PASSWORD_DOTS] pusher
Cache [PASSWORD_DOTS] redis
Database [PASSWORD_DOTS] mysql
Logs [PASSWORD_DOTS] errorlog
Mail [PASSWORD_DOTS] ses
Queue [PASSWORD_DOTS] sqs
Session [PASSWORD_DOTS] redis
Storage [PASSWORD_DOTS]
public/storage [PASSWORD_DOTS] NOT LINKED
Sentry [PASSWORD_DOTS]
Enabled [PASSWORD_DOTS] YES
Environment [PASSWORD_DOTS] staging
Laravel SDK Version [PASSWORD_DOTS] 4.13.0
PHP SDK Version [PASSWORD_DOTS] 4.13.0
Release [PASSWORD_DOTS] 893709
Sample Rate Errors [PASSWORD_DOTS] 100%
Sample Rate Performance Monitoring [PASSWORD_DOTS] NOT SET
Sample Rate Profiling [PASSWORD_DOTS] NOT SET
Send Default PII [PASSWORD_DOTS] DISABLED
root@ip-10-30-135-89:/home/jiminny# php artisan tinker
Psy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman
New PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`
> $c = \Cache::get(config('jiminny.google_text_relay_topic'));
= "358684"
> exit
INFO Goodbye.
root@ip-10-30-135-89:/home/jiminny# exit
exit
[ec2-user@ip-10-30-140-255 ~]$ exit
logout
Connection to jiminny-stage-ecs1 closed.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Wed May 27 09:47:15 on ttys011\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 ~ $ vstg\nWarning: Permanently added 'jiminny-stage-ecs1' (ED25519) to the list of known hosts.\n , #_\n ~\\_ ####_\n ~~ \\_#####\\\n ~~ \\###|\n ~~ \\#/ ___ Amazon Linux 2023 (ECS Optimized)\n ~~ V~' '->\n ~~~ /\n ~~._. _/\n _/ _/\n _/m/'\n\nFor documentation, visit http://aws.amazon.com/documentation/ecs\n[ec2-user@ip-10-30-140-255 ~]$ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n4afe9d75f1c3 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/backend-code:3b1d77c6cfcf576541d2fb5155034246317c73b4 \"docker-php-entrypoi…\" About an hour ago Up About an hour (healthy) ecs-php-jupiter-1634-php-jupiter-8e95b49eb0f6c0f77100\n7380b86838a6 amazon/amazon-ecs-pause:0.1.0 \"/pause\" About an hour ago Up About an hour ecs-php-jupiter-1634-internalecspause-f4b6c0f5f3bcf3d5ae01\n6ac678f8be8c 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/worker-code:53b2b7a89ce089166185783ad6308b7a9a66fe55 \"docker-php-entrypoi…\" About an hour ago Up About an hour 80/tcp, 9000/tcp, 0.0.0.0:9001->9001/tcp, :::9001->9001/tcp ecs-worker-neptune-1285-worker-neptune-c89c85afcaa5afca1f00\n5ef03733e627 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/backend-code:53b2b7a89ce089166185783ad6308b7a9a66fe55 \"docker-php-entrypoi…\" About an hour ago Up About an hour (healthy) ecs-php-neptune-1291-php-neptune-a6f89d8cedcfc6fe5100\n6d1c700ab4e2 amazon/amazon-ecs-pause:0.1.0 \"/pause\" About an hour ago Up About an hour ecs-php-neptune-1291-internalecspause-c6c9d1ffc9cefafc3800\n74532df77969 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/backend-code:4829cdf78f93faad2afb97bc766ad6ad912d87a1 \"docker-php-entrypoi…\" 2 hours ago Up 2 hours (healthy) ecs-php-app-1206-php-app-d0e7a69b8ba3d383ed01\nf8d7f9d81ece amazon/amazon-ecs-pause:0.1.0 \"/pause\" 2 hours ago Up 2 hours ecs-php-app-1206-internalecspause-a0e798becfb4e7a32800\n5f431efe00bd amazon/amazon-ecs-agent:latest \"/agent\" 5 hours ago Up 5 hours (healthy) ecs-agent\n[ec2-user@ip-10-30-140-255 ~]$ docker exec -ti 74532df77969 /bin/bash -c \"cd /home/jiminny && bash\"\nroot@ip-10-30-135-89:/home/jiminny# php artisan about\n\n Environment ...................................................................................................................................... \n Application Name ................................................................................................................. Jiminny Web App \n Laravel Version .......................................................................................................................... 12.58.0 \n PHP Version ................................................................................................................................ 8.5.5 \n Composer Version ............................................................................................................................... - \n Environment .............................................................................................................................. staging \n Debug Mode ................................................................................................................................... OFF \n URL ...................................................................................................................... app.staging.jiminny.com \n Maintenance Mode ............................................................................................................................. OFF \n Timezone ..................................................................................................................................... UTC \n Locale ..................................................................................................................................... en_US \n\n Cache ............................................................................................................................................ \n Config .................................................................................................................................... CACHED \n Events ................................................................................................................................ NOT CACHED \n Routes .................................................................................................................................... CACHED \n Views ..................................................................................................................................... CACHED \n\n Drivers .......................................................................................................................................... \n Broadcasting .............................................................................................................................. pusher \n Cache ...................................................................................................................................... redis \n Database ................................................................................................................................... mysql \n Logs .................................................................................................................................... errorlog \n Mail ......................................................................................................................................... ses \n Queue ........................................................................................................................................ sqs \n Session .................................................................................................................................... redis \n\n Storage .......................................................................................................................................... \n public/storage ........................................................................................................................ NOT LINKED \n\n Sentry ........................................................................................................................................... \n Enabled ...................................................................................................................................... YES \n Environment .............................................................................................................................. staging \n Laravel SDK Version ....................................................................................................................... 4.13.0 \n PHP SDK Version ........................................................................................................................... 4.13.0 \n Release ................................................................................................................................... 893709 \n Sample Rate Errors .......................................................................................................................... 100% \n Sample Rate Performance Monitoring ....................................................................................................... NOT SET \n Sample Rate Profiling .................................................................................................................... NOT SET \n Send Default PII ........................................................................................................................ DISABLED \n\nroot@ip-10-30-135-89:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> $c = \\Cache::get(config('jiminny.google_text_relay_topic'));\n\n= \"358684\"\n\n> exit\n\n INFO Goodbye.\n\nroot@ip-10-30-135-89:/home/jiminny# exit\nexit\n[ec2-user@ip-10-30-140-255 ~]$ exit\nlogout\nConnection to jiminny-stage-ecs1 closed.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":4,"bounds":{"left":0.27027926,"top":0.27294493,"width":0.4787234,"height":0.7270551},"on_screen":true,"value":"Last login: Wed May 27 09:47:15 on ttys011\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 ~ $ vstg\nWarning: Permanently added 'jiminny-stage-ecs1' (ED25519) to the list of known hosts.\n , #_\n ~\\_ ####_\n ~~ \\_#####\\\n ~~ \\###|\n ~~ \\#/ ___ Amazon Linux 2023 (ECS Optimized)\n ~~ V~' '->\n ~~~ /\n ~~._. _/\n _/ _/\n _/m/'\n\nFor documentation, visit http://aws.amazon.com/documentation/ecs\n[ec2-user@ip-10-30-140-255 ~]$ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n4afe9d75f1c3 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/backend-code:3b1d77c6cfcf576541d2fb5155034246317c73b4 \"docker-php-entrypoi…\" About an hour ago Up About an hour (healthy) ecs-php-jupiter-1634-php-jupiter-8e95b49eb0f6c0f77100\n7380b86838a6 amazon/amazon-ecs-pause:0.1.0 \"/pause\" About an hour ago Up About an hour ecs-php-jupiter-1634-internalecspause-f4b6c0f5f3bcf3d5ae01\n6ac678f8be8c 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/worker-code:53b2b7a89ce089166185783ad6308b7a9a66fe55 \"docker-php-entrypoi…\" About an hour ago Up About an hour 80/tcp, 9000/tcp, 0.0.0.0:9001->9001/tcp, :::9001->9001/tcp ecs-worker-neptune-1285-worker-neptune-c89c85afcaa5afca1f00\n5ef03733e627 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/backend-code:53b2b7a89ce089166185783ad6308b7a9a66fe55 \"docker-php-entrypoi…\" About an hour ago Up About an hour (healthy) ecs-php-neptune-1291-php-neptune-a6f89d8cedcfc6fe5100\n6d1c700ab4e2 amazon/amazon-ecs-pause:0.1.0 \"/pause\" About an hour ago Up About an hour ecs-php-neptune-1291-internalecspause-c6c9d1ffc9cefafc3800\n74532df77969 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/backend-code:4829cdf78f93faad2afb97bc766ad6ad912d87a1 \"docker-php-entrypoi…\" 2 hours ago Up 2 hours (healthy) ecs-php-app-1206-php-app-d0e7a69b8ba3d383ed01\nf8d7f9d81ece amazon/amazon-ecs-pause:0.1.0 \"/pause\" 2 hours ago Up 2 hours ecs-php-app-1206-internalecspause-a0e798becfb4e7a32800\n5f431efe00bd amazon/amazon-ecs-agent:latest \"/agent\" 5 hours ago Up 5 hours (healthy) ecs-agent\n[ec2-user@ip-10-30-140-255 ~]$ docker exec -ti 74532df77969 /bin/bash -c \"cd /home/jiminny && bash\"\nroot@ip-10-30-135-89:/home/jiminny# php artisan about\n\n Environment ...................................................................................................................................... \n Application Name ................................................................................................................. Jiminny Web App \n Laravel Version .......................................................................................................................... 12.58.0 \n PHP Version ................................................................................................................................ 8.5.5 \n Composer Version ............................................................................................................................... - \n Environment .............................................................................................................................. staging \n Debug Mode ................................................................................................................................... OFF \n URL ...................................................................................................................... app.staging.jiminny.com \n Maintenance Mode ............................................................................................................................. OFF \n Timezone ..................................................................................................................................... UTC \n Locale ..................................................................................................................................... en_US \n\n Cache ............................................................................................................................................ \n Config .................................................................................................................................... CACHED \n Events ................................................................................................................................ NOT CACHED \n Routes .................................................................................................................................... CACHED \n Views ..................................................................................................................................... CACHED \n\n Drivers .......................................................................................................................................... \n Broadcasting .............................................................................................................................. pusher \n Cache ...................................................................................................................................... redis \n Database ................................................................................................................................... mysql \n Logs .................................................................................................................................... errorlog \n Mail ......................................................................................................................................... ses \n Queue ........................................................................................................................................ sqs \n Session .................................................................................................................................... redis \n\n Storage .......................................................................................................................................... \n public/storage ........................................................................................................................ NOT LINKED \n\n Sentry ........................................................................................................................................... \n Enabled ...................................................................................................................................... YES \n Environment .............................................................................................................................. staging \n Laravel SDK Version ....................................................................................................................... 4.13.0 \n PHP SDK Version ........................................................................................................................... 4.13.0 \n Release ................................................................................................................................... 893709 \n Sample Rate Errors .......................................................................................................................... 100% \n Sample Rate Performance Monitoring ....................................................................................................... NOT SET \n Sample Rate Profiling .................................................................................................................... NOT SET \n Send Default PII ........................................................................................................................ DISABLED \n\nroot@ip-10-30-135-89:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> $c = \\Cache::get(config('jiminny.google_text_relay_topic'));\n\n= \"358684\"\n\n> exit\n\n INFO Goodbye.\n\nroot@ip-10-30-135-89:/home/jiminny# exit\nexit\n[ec2-user@ip-10-30-140-255 ~]$ exit\nlogout\nConnection to jiminny-stage-ecs1 closed.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true}]...
|
6173360987580460452
|
8771573701326267599
|
click
|
accessibility
|
NULL
|
Last login: Wed May 27 09:47:15 on ttys011
Poetry Last login: Wed May 27 09:47:15 on ttys011
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ vstg
Warning: Permanently added 'jiminny-stage-ecs1' (ED25519) to the list of known hosts.
, #_
~\_ ####_
~~ \_#####\
~~ \###|
~~ \#/ ___ Amazon Linux 2023 (ECS Optimized)
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
For documentation, visit [URL_WITH_CREDENTIALS] ~]$ docker exec -ti 74532df77969 /bin/bash -c "cd /home/jiminny && bash"
root@ip-10-30-135-89:/home/jiminny# php artisan about
Environment [PASSWORD_DOTS]
Application Name [PASSWORD_DOTS] Jiminny Web App
Laravel Version [PASSWORD_DOTS] 12.58.0
PHP Version [PASSWORD_DOTS] 8.5.5
Composer Version [PASSWORD_DOTS] -
Environment [PASSWORD_DOTS] staging
Debug Mode [PASSWORD_DOTS] OFF
URL [PASSWORD_DOTS] app.staging.jiminny.com
Maintenance Mode [PASSWORD_DOTS] OFF
Timezone [PASSWORD_DOTS] UTC
Locale [PASSWORD_DOTS] en_US
Cache [PASSWORD_DOTS]
Config [PASSWORD_DOTS] CACHED
Events [PASSWORD_DOTS] NOT CACHED
Routes [PASSWORD_DOTS] CACHED
Views [PASSWORD_DOTS] CACHED
Drivers [PASSWORD_DOTS]
Broadcasting [PASSWORD_DOTS] pusher
Cache [PASSWORD_DOTS] redis
Database [PASSWORD_DOTS] mysql
Logs [PASSWORD_DOTS] errorlog
Mail [PASSWORD_DOTS] ses
Queue [PASSWORD_DOTS] sqs
Session [PASSWORD_DOTS] redis
Storage [PASSWORD_DOTS]
public/storage [PASSWORD_DOTS] NOT LINKED
Sentry [PASSWORD_DOTS]
Enabled [PASSWORD_DOTS] YES
Environment [PASSWORD_DOTS] staging
Laravel SDK Version [PASSWORD_DOTS] 4.13.0
PHP SDK Version [PASSWORD_DOTS] 4.13.0
Release [PASSWORD_DOTS] 893709
Sample Rate Errors [PASSWORD_DOTS] 100%
Sample Rate Performance Monitoring [PASSWORD_DOTS] NOT SET
Sample Rate Profiling [PASSWORD_DOTS] NOT SET
Send Default PII [PASSWORD_DOTS] DISABLED
root@ip-10-30-135-89:/home/jiminny# php artisan tinker
Psy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman
New PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`
> $c = \Cache::get(config('jiminny.google_text_relay_topic'));
= "358684"
> exit
INFO Goodbye.
root@ip-10-30-135-89:/home/jiminny# exit
exit
[ec2-user@ip-10-30-140-255 ~]$ exit
logout
Connection to jiminny-stage-ecs1 closed.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $...
|
78744
|
NULL
|
NULL
|
NULL
|
|
78744
|
2764
|
40
|
2026-05-27T12:57:33.713234+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886653713_m2.jpg...
|
PhpStorm
|
faVsco.js – TextRelayService.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
[2026-05-27 12:57:25] local.INFO: $messageHistory
Array
(
)
{"correlation_id":"e4286517-4279-4047-8135-b79adc851022","trace_id":"0470f04d-52ab-4a34-9f7e-7bb500016954"}
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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.09740692,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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.8374335,"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":"TextRelayServiceTest","depth":6,"bounds":{"left":0.85272604,"top":0.019952115,"width":0.062832445,"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 'TextRelayServiceTest'","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 'TextRelayServiceTest'","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":"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.37632978,"top":0.10055866,"width":0.00731383,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","depth":4,"bounds":{"left":0.3856383,"top":0.10055866,"width":0.009640957,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.39694148,"top":0.09896249,"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.40425533,"top":0.09896249,"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\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"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":"AXTextArea","text":"[2026-05-27 12:57:25] local.INFO: $messageHistory \nArray\n(\n)\n {\"correlation_id\":\"e4286517-4279-4047-8135-b79adc851022\",\"trace_id\":\"0470f04d-52ab-4a34-9f7e-7bb500016954\"}","depth":4,"bounds":{"left":0.43051863,"top":0.09736632,"width":0.32280585,"height":0.8818835},"on_screen":true,"value":"[2026-05-27 12:57:25] local.INFO: $messageHistory \nArray\n(\n)\n {\"correlation_id\":\"e4286517-4279-4047-8135-b79adc851022\",\"trace_id\":\"0470f04d-52ab-4a34-9f7e-7bb500016954\"}","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}]...
|
8911248186958597539
|
-5281383083183535733
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
[2026-05-27 12:57:25] local.INFO: $messageHistory
Array
(
)
{"correlation_id":"e4286517-4279-4047-8135-b79adc851022","trace_id":"0470f04d-52ab-4a34-9f7e-7bb500016954"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
78743
|
2764
|
39
|
2026-05-27T12:57:29.682202+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886649682_m2.jpg...
|
PhpStorm
|
faVsco.js – custom.log
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands\Mailboxes\TextRelay;
use Jiminny\Console\Commands\Command;
use Jiminny\Services\Mail\TextRelayService;
class SyncMailbox extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'mailbox:text-relay:sync';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Sync text relay\'s mailbox with latest messages.';
private $relayService;
public function __construct(TextRelayService $relayService)
{
parent::__construct();
$this->relayService = $relayService;
}
/**
* Execute the console command.
*
*/
public function handle(): void
{
try {
// If we don't have relay configuration, just bail now.
if (config('jiminny.google_text_host') === null) {
return;
}
$messageIds = $this->relayService->sync();
$this->line('Relayed ' . count($messageIds) . ' message(s).');
} catch (\Exception $e) {
$this->error($e->getMessage());
\Sentry::captureException($e);
}
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
[2026-05-27 12:57:25] local.INFO: $messageHistory
Array
(
)
{"correlation_id":"e4286517-4279-4047-8135-b79adc851022","trace_id":"0470f04d-52ab-4a34-9f7e-7bb500016954"}
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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.09740692,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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.8374335,"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":"TextRelayServiceTest","depth":6,"bounds":{"left":0.85272604,"top":0.019952115,"width":0.062832445,"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 'TextRelayServiceTest'","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 'TextRelayServiceTest'","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":"3","depth":4,"bounds":{"left":0.38730052,"top":0.10055866,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.39694148,"top":0.09896249,"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.40425533,"top":0.09896249,"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\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands\\Mailboxes\\TextRelay;\n\nuse Jiminny\\Console\\Commands\\Command;\nuse Jiminny\\Services\\Mail\\TextRelayService;\n\nclass SyncMailbox extends Command\n{\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected $signature = 'mailbox:text-relay:sync';\n\n /**\n * The console command description.\n *\n * @var string\n */\n protected $description = 'Sync text relay\\'s mailbox with latest messages.';\n private $relayService;\n\n public function __construct(TextRelayService $relayService)\n {\n parent::__construct();\n\n $this->relayService = $relayService;\n }\n\n /**\n * Execute the console command.\n *\n */\n public function handle(): void\n {\n try {\n // If we don't have relay configuration, just bail now.\n if (config('jiminny.google_text_host') === null) {\n return;\n }\n\n $messageIds = $this->relayService->sync();\n\n $this->line('Relayed ' . count($messageIds) . ' message(s).');\n } catch (\\Exception $e) {\n $this->error($e->getMessage());\n\n \\Sentry::captureException($e);\n }\n }\n}","depth":4,"bounds":{"left":0.13896276,"top":0.0,"width":0.27227393,"height":1.0},"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands\\Mailboxes\\TextRelay;\n\nuse Jiminny\\Console\\Commands\\Command;\nuse Jiminny\\Services\\Mail\\TextRelayService;\n\nclass SyncMailbox extends Command\n{\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected $signature = 'mailbox:text-relay:sync';\n\n /**\n * The console command description.\n *\n * @var string\n */\n protected $description = 'Sync text relay\\'s mailbox with latest messages.';\n private $relayService;\n\n public function __construct(TextRelayService $relayService)\n {\n parent::__construct();\n\n $this->relayService = $relayService;\n }\n\n /**\n * Execute the console command.\n *\n */\n public function handle(): void\n {\n try {\n // If we don't have relay configuration, just bail now.\n if (config('jiminny.google_text_host') === null) {\n return;\n }\n\n $messageIds = $this->relayService->sync();\n\n $this->line('Relayed ' . count($messageIds) . ' message(s).');\n } catch (\\Exception $e) {\n $this->error($e->getMessage());\n\n \\Sentry::captureException($e);\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":"AXTextArea","text":"[2026-05-27 12:57:25] local.INFO: $messageHistory \nArray\n(\n)\n {\"correlation_id\":\"e4286517-4279-4047-8135-b79adc851022\",\"trace_id\":\"0470f04d-52ab-4a34-9f7e-7bb500016954\"}","depth":4,"bounds":{"left":0.43051863,"top":0.09736632,"width":0.32280585,"height":0.8818835},"on_screen":true,"value":"[2026-05-27 12:57:25] local.INFO: $messageHistory \nArray\n(\n)\n {\"correlation_id\":\"e4286517-4279-4047-8135-b79adc851022\",\"trace_id\":\"0470f04d-52ab-4a34-9f7e-7bb500016954\"}","role_description":"text entry area","is_enabled":true,"is_focused":true,"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}]...
|
-5036258594377021821
|
-1317633669619957426
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands\Mailboxes\TextRelay;
use Jiminny\Console\Commands\Command;
use Jiminny\Services\Mail\TextRelayService;
class SyncMailbox extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'mailbox:text-relay:sync';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Sync text relay\'s mailbox with latest messages.';
private $relayService;
public function __construct(TextRelayService $relayService)
{
parent::__construct();
$this->relayService = $relayService;
}
/**
* Execute the console command.
*
*/
public function handle(): void
{
try {
// If we don't have relay configuration, just bail now.
if (config('jiminny.google_text_host') === null) {
return;
}
$messageIds = $this->relayService->sync();
$this->line('Relayed ' . count($messageIds) . ' message(s).');
} catch (\Exception $e) {
$this->error($e->getMessage());
\Sentry::captureException($e);
}
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
[2026-05-27 12:57:25] local.INFO: $messageHistory
Array
(
)
{"correlation_id":"e4286517-4279-4047-8135-b79adc851022","trace_id":"0470f04d-52ab-4a34-9f7e-7bb500016954"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
78739
|
NULL
|
NULL
|
NULL
|
|
78742
|
2763
|
34
|
2026-05-27T12:57:29.253940+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886649253_m1.jpg...
|
PhpStorm
|
faVsco.js – custom.log
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands\Mailboxes\TextRelay;
use Jiminny\Console\Commands\Command;
use Jiminny\Services\Mail\TextRelayService;
class SyncMailbox extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'mailbox:text-relay:sync';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Sync text relay\'s mailbox with latest messages.';
private $relayService;
public function __construct(TextRelayService $relayService)
{
parent::__construct();
$this->relayService = $relayService;
}
/**
* Execute the console command.
*
*/
public function handle(): void
{
try {
// If we don't have relay configuration, just bail now.
if (config('jiminny.google_text_host') === null) {
return;
}
$messageIds = $this->relayService->sync();
$this->line('Relayed ' . count($messageIds) . ' message(s).');
} catch (\Exception $e) {
$this->error($e->getMessage());
\Sentry::captureException($e);
}
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
[2026-05-27 12:57:25] local.INFO: $messageHistory
Array
(
)
{"correlation_id":"e4286517-4279-4047-8135-b79adc851022","trace_id":"0470f04d-52ab-4a34-9f7e-7bb500016954"}
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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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":"TextRelayServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'TextRelayServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'TextRelayServiceTest'","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":"3","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\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands\\Mailboxes\\TextRelay;\n\nuse Jiminny\\Console\\Commands\\Command;\nuse Jiminny\\Services\\Mail\\TextRelayService;\n\nclass SyncMailbox extends Command\n{\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected $signature = 'mailbox:text-relay:sync';\n\n /**\n * The console command description.\n *\n * @var string\n */\n protected $description = 'Sync text relay\\'s mailbox with latest messages.';\n private $relayService;\n\n public function __construct(TextRelayService $relayService)\n {\n parent::__construct();\n\n $this->relayService = $relayService;\n }\n\n /**\n * Execute the console command.\n *\n */\n public function handle(): void\n {\n try {\n // If we don't have relay configuration, just bail now.\n if (config('jiminny.google_text_host') === null) {\n return;\n }\n\n $messageIds = $this->relayService->sync();\n\n $this->line('Relayed ' . count($messageIds) . ' message(s).');\n } catch (\\Exception $e) {\n $this->error($e->getMessage());\n\n \\Sentry::captureException($e);\n }\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands\\Mailboxes\\TextRelay;\n\nuse Jiminny\\Console\\Commands\\Command;\nuse Jiminny\\Services\\Mail\\TextRelayService;\n\nclass SyncMailbox extends Command\n{\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected $signature = 'mailbox:text-relay:sync';\n\n /**\n * The console command description.\n *\n * @var string\n */\n protected $description = 'Sync text relay\\'s mailbox with latest messages.';\n private $relayService;\n\n public function __construct(TextRelayService $relayService)\n {\n parent::__construct();\n\n $this->relayService = $relayService;\n }\n\n /**\n * Execute the console command.\n *\n */\n public function handle(): void\n {\n try {\n // If we don't have relay configuration, just bail now.\n if (config('jiminny.google_text_host') === null) {\n return;\n }\n\n $messageIds = $this->relayService->sync();\n\n $this->line('Relayed ' . count($messageIds) . ' message(s).');\n } catch (\\Exception $e) {\n $this->error($e->getMessage());\n\n \\Sentry::captureException($e);\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":"AXTextArea","text":"[2026-05-27 12:57:25] local.INFO: $messageHistory \nArray\n(\n)\n {\"correlation_id\":\"e4286517-4279-4047-8135-b79adc851022\",\"trace_id\":\"0470f04d-52ab-4a34-9f7e-7bb500016954\"}","depth":4,"on_screen":true,"value":"[2026-05-27 12:57:25] local.INFO: $messageHistory \nArray\n(\n)\n {\"correlation_id\":\"e4286517-4279-4047-8135-b79adc851022\",\"trace_id\":\"0470f04d-52ab-4a34-9f7e-7bb500016954\"}","role_description":"text entry area","is_enabled":true,"is_focused":true,"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}]...
|
-5036258594377021821
|
-1317633669619957426
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands\Mailboxes\TextRelay;
use Jiminny\Console\Commands\Command;
use Jiminny\Services\Mail\TextRelayService;
class SyncMailbox extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'mailbox:text-relay:sync';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Sync text relay\'s mailbox with latest messages.';
private $relayService;
public function __construct(TextRelayService $relayService)
{
parent::__construct();
$this->relayService = $relayService;
}
/**
* Execute the console command.
*
*/
public function handle(): void
{
try {
// If we don't have relay configuration, just bail now.
if (config('jiminny.google_text_host') === null) {
return;
}
$messageIds = $this->relayService->sync();
$this->line('Relayed ' . count($messageIds) . ' message(s).');
} catch (\Exception $e) {
$this->error($e->getMessage());
\Sentry::captureException($e);
}
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
[2026-05-27 12:57:25] local.INFO: $messageHistory
Array
(
)
{"correlation_id":"e4286517-4279-4047-8135-b79adc851022","trace_id":"0470f04d-52ab-4a34-9f7e-7bb500016954"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
78741
|
2763
|
33
|
2026-05-27T12:57:27.150281+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886647150_m1.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp••cachecompiledeventsroutesviewsDOCKER•₴1DEV (docker)$2-zshjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: stoppedjiminny-worker-processing-2:jiminny-worker-processing-2_00: stoppedjiminny-worker-processing-3:jiminny-worker-processing-3_00: stoppedjiminny-worker-processing-4:jiminny-worker-processing-4_00:stoppedjiminny-worker-processing-5:jiminny-worker-processing-5_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-crm-update:worker-crm-update_00: stoppedworker-download:worker-download_00: stoppedworker-emails:worker-emails_00: stoppedworker-nudges:worker-nudges_00: stoppedworker:worker_00: stoppedworker-audio:worker-audio_00: stoppedworker-calendar:worker-calendar_00: stoppedworker-crm-sync:worker-crm-sync_00: stoppedjiminny-worker-processing-1:j1minny-worker-processing-1_00: stoppedworker-conferences:worker-conferences_00: stoppedartisan-schedule:artisan-schedule_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00:startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00:startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan mailbox:text-relay:syncRelayed ® message(s).root@docker_lamp_1:/home/jiminny#100% (<DEV (docker)screenpipe"-zsh*5...ip-10-30-129-190:~ (nc)10.26ms DONE1.84ms DONE0.72ms DONE6.62ms DONE4.33ms DONE₴868• Wed 27 May 15:57:26181...-10-30-140-255:~ (-zsh)$7DEV...
|
NULL
|
5486494063554853356
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp••cachecompiledeventsroutesviewsDOCKER•₴1DEV (docker)$2-zshjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: stoppedjiminny-worker-processing-2:jiminny-worker-processing-2_00: stoppedjiminny-worker-processing-3:jiminny-worker-processing-3_00: stoppedjiminny-worker-processing-4:jiminny-worker-processing-4_00:stoppedjiminny-worker-processing-5:jiminny-worker-processing-5_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-crm-update:worker-crm-update_00: stoppedworker-download:worker-download_00: stoppedworker-emails:worker-emails_00: stoppedworker-nudges:worker-nudges_00: stoppedworker:worker_00: stoppedworker-audio:worker-audio_00: stoppedworker-calendar:worker-calendar_00: stoppedworker-crm-sync:worker-crm-sync_00: stoppedjiminny-worker-processing-1:j1minny-worker-processing-1_00: stoppedworker-conferences:worker-conferences_00: stoppedartisan-schedule:artisan-schedule_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00:startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00:startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny# php artisan mailbox:text-relay:syncRelayed ® message(s).root@docker_lamp_1:/home/jiminny#100% (<DEV (docker)screenpipe"-zsh*5...ip-10-30-129-190:~ (nc)10.26ms DONE1.84ms DONE0.72ms DONE6.62ms DONE4.33ms DONE₴868• Wed 27 May 15:57:26181...-10-30-140-255:~ (-zsh)$7DEV...
|
78740
|
NULL
|
NULL
|
NULL
|
|
78740
|
2763
|
32
|
2026-05-27T12:57:23.015910+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886643015_m1.jpg...
|
iTerm2
|
DEV (docker)
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
/Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SE /Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SECRET]
/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/.env.local:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/dev.json:18: "DB_ADMIN_PASSWORD" : "dgyt$rTe21-d",
/Users/lukas/jiminny/app/.env:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.vscode/settings.json:16: "password": "dgyt$rTe21-d"
/Users/lukas/jiminny/app/.env.root:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.env.root:394:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.other:14:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#[ENV_SECRET]
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop
320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep
a1718cfb Merge pull request #529 from jiminny/katranci-patch-1
74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3
0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2
4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue
220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url
543c60b8 Merge branch 'develop' into JY-19432-recall-api-url
f163a29e JY-19432 Fix formatting
6de60dd0 JY-19432 Fix formatting
78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances
2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3
d6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code
4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers
6426729b JY-20432 Set stopasgroup to false for dialers queue worker
92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities
e0796d89 Delete obsolete files
4a8b1ea2 Delete old docker build scripts before php-8 upgrade
d790e56d JY-20603 Fix formatting
fc758135 JY-20603 Move video ec2 instances to external subnet
ecb558d5 JY-20761 Spread php-app tasks over ec2 instances
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80
commit a8ba85203fb10fb793ff07a6e85efac833979335
Merge: c15e0c8201 a00d53bdd6
Author: Nikolay Ivanov <[EMAIL]>
Date: Fri May 15 10:44:44 2026 +0300
JY-18091 | Resolve conflicts
commit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1
Author: Nikolay Nikolov <[EMAIL]>
Date: Thu Apr 30 14:54:08 2026 +0300
JY-20625 | JY-20742 | Add laravel/mcp
# Conflicts:
# composer.lock
diff --git a/composer.json b/composer.json
index 02ffcc050e..89551995a1 100644
--- a/composer.json
+++ b/composer.json
@@ -113,6 +113,7 @@
"kalnoy/nestedset": "*",
"laravel/framework": "^12.28",
"laravel/helpers": "^1.7",
+ "laravel/mcp": "^0.7.0",
"laravel/passport": "^13.0",
"laravel/slack-notification-channel": "^3.4",
"laravel/tinker": "^2.10.1",
commit 431b4c096f4ad0272bac595d078871a78b510bb5
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 17:17:47 2026 +0300
JY-18091 | Downgrade composer.json
diff --git a/composer.json b/composer.json
index 5db26da2c9..baacefbd5f 100644
--- a/composer.json
+++ b/composer.json
@@ -187,20 +187,18 @@
"require-dev": {
"barryvdh/laravel-debugbar": "^3.15",
"barryvdh/laravel-ide-helper": "^3.5",
- "brianium/paratest": "^7.12",
+ "brianium/paratest": "^7.5",
"browserstack/browserstack-local": "^1.1.0",
"filp/whoops": "^2.9",
"friendsofphp/php-cs-fixer": "^3.66",
"infection/infection": "^0.29.14",
"jasonmccreary/laravel-test-assertions": "^2.5",
"larastan/larastan": "^3.1",
- "maglnet/composer-require-checker": "^4.8",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
"phpstan/phpstan": "^2.1",
- "phpunit/phpunit": "^12.0",
- "symfony/phpunit-bridge": "^7.0",
- "vimeo/psalm": "^6.5.0"
+ "phpunit/phpunit": "^11.5.50",
+ "symfony/phpunit-bridge": "^7.0"
},
"autoload": {
"classmap": [
commit 90e9b4034f665e2a8cacaf937e55abc070b5af4a
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 16:25:45 2026 +0300
JY-18091 | Changes, composer
diff --git a/composer.json b/composer.json
index 751005e37a..5db26da2c9 100644
--- a/composer.json
+++ b/composer.json
@@ -95,7 +95,7 @@
"google/apps-meet": "^0.5.1",
"guzzlehttp/guzzle": "^7.8",
"guzzlehttp/psr7": "^2.6",
- "halaxa/json-machine": "^1.3",
+ "halaxa/json-machine": "^1.2",
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20
a8ba85203f JY-18091 | Resolve conflicts
4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts
1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp
431b4c096f JY-18091 | Downgrade composer.json
90e9b4034f JY-18091 | Changes, composer
b63d6f5d1f JY-18091 | Composer changes
d017fbd8aa JY-18091 | Merge
7daa10a444 JY-18091 | Cs lint fixes
a472f51b71 JY-18091 | Update composer to support php 8.5
1162b04371 fix(security): bump dependencies (alerts #477)
0c1f2f35df JY-19957 | Update composer.lock with correct dep
574315fc12 JY-19957 | Update composer.locl
c97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade
e4e0e6d46d Merge branch 'master' into secfix/composer-20260415
7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)
4f5795d1d5 JY-20479: Remove unused dependencies
caa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download
07832f2eeb JY-20479: Transcript download PDF optimization
9f17a0f70e JY-20526: Remove Sentence breaker
4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 "^docker-update:" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \
|| grep -rA 20 "^docker-update:" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40
/Users/lukas/jiminny/app/Makefile:docker-update:
/Users/lukas/jiminny/app/Makefile- aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-up:
/Users/lukas/jiminny/app/Makefile- tmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-stop:
/Users/lukas/jiminny/app/Makefile- tmux kill-session -t jiminny_dev_ngrok
/Users/lukas/jiminny/app/Makefile-
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n "arm64v8\|/jiminny/app/qa" ~/jiminny/infrastructure/dev/docker/docker-compose.yml
8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
187d58491294 wernight/ngrok "/entrypoint.sh" 37 seconds ago Up 37 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
b433f55153b5 mariadb:11.4.5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
d09012232958 redis:5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
error: Your local changes to the following files would be overwritten by checkout:
tests/Unit/Services/Mail/TextRelayServiceTest.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M config/logging.php
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 124, done.
remote: Counting objects: 100% (123/123), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)
Receiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.
Resolving deltas: 100% (93/93), completed with 33 local objects.
From github.com:jiminny/app
23fdef5aa9..942ddbe31c master -> origin/master
a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app
96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration
a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
* [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only
+ 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)
* [new branch] master-reset-ES -> origin/master-reset-ES
Updating 23fdef5aa9..942ddbe31c
Fast-forward
contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------
front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----
front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--
front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-
front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------
routes/api_v2.php | 6 +++---
tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------
7 files changed, 61 insertions(+), 46 deletions(-)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env
#IMAGE_TAG="latest"
IMAGE_TAG="arm64v8-latest"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 "lamp:" | grep image
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
docker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest "docker-php-entrypoi…" lamp 3 minutes ago Exited (2) 3 minutes ago
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
87804ee14786 wernight/ngrok "/entrypoint.sh" 18 minutes ago Up 53 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
bc04ffad01b2 mariadb:11.4.5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
e985cd5cfbf7 redis:5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
Filter, search, and stream logs from all your Compose services
in one place with Docker Desktop's Logs view. [URL_WITH_CREDENTIALS]
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2
Learn more at [URL_WITH_CREDENTIALS] php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 9.84ms DONE
cache [PASSWORD_DOTS] 69.91ms DONE
compiled [PASSWORD_DOTS] 2.96ms DONE
events [PASSWORD_DOTS] 1.19ms DONE
routes [PASSWORD_DOTS] 0.65ms DONE
views [PASSWORD_DOTS] 4.44ms DONE
worker-crm-update:worker-crm-update_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-download:worker-download_00: stopped
worker-nudges:worker-nudges_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-emails:worker-emails_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan tinker
Psy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman
New PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`
> app(\Jiminny\Services\Mail\TextRelayService::class)->sync();
= []
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 3.45ms DONE
cache [PASSWORD_DOTS] 10.26ms DONE
compiled [PASSWORD_DOTS] 1.84ms DONE
events [PASSWORD_DOTS] 0.72ms DONE
routes [PASSWORD_DOTS] 6.62ms DONE
views [PASSWORD_DOTS] 4.33ms DONE
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-download:worker-download_00: stopped
worker-emails:worker-emails_00: stopped
worker-nudges:worker-nudges_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-conferences:worker-conferences_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan mailbox:text-relay:sync
DOCKER
Close Tab
DEV (docker)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ec2-user@ip-10-30-129-190:~ (nc)
Close Tab
ec2-user@ip-10-30-140-255:~ (-zsh)
Close Tab
⌥⌘1
DEV (docker)...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"/Users/lukas/jiminny/app/.env.nikilocal:22:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/.env.local:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/dev.json:18: \"DB_ADMIN_PASSWORD\" : \"dgyt$rTe21-d\",\n/Users/lukas/jiminny/app/.env:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.vscode/settings.json:16: \"password\": \"dgyt$rTe21-d\"\n/Users/lukas/jiminny/app/.env.root:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.root:394:DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.other:14:DB_PASSWORD=dgyt\\$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop\n320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep\na1718cfb Merge pull request #529 from jiminny/katranci-patch-1\n74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3\n0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2\n4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue\n220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url\n543c60b8 Merge branch 'develop' into JY-19432-recall-api-url\nf163a29e JY-19432 Fix formatting\n6de60dd0 JY-19432 Fix formatting\n78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances\n2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3\nd6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code\n4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers\n6426729b JY-20432 Set stopasgroup to false for dialers queue worker\n92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities\ne0796d89 Delete obsolete files\n4a8b1ea2 Delete old docker build scripts before php-8 upgrade\nd790e56d JY-20603 Fix formatting\nfc758135 JY-20603 Move video ec2 instances to external subnet\necb558d5 JY-20761 Spread php-app tasks over ec2 instances\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80\n\ncommit a8ba85203fb10fb793ff07a6e85efac833979335\nMerge: c15e0c8201 a00d53bdd6\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Fri May 15 10:44:44 2026 +0300\n\n JY-18091 | Resolve conflicts\n\ncommit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1\nAuthor: Nikolay Nikolov <nikolay.nikolov@jiminny.com>\nDate: Thu Apr 30 14:54:08 2026 +0300\n\n JY-20625 | JY-20742 | Add laravel/mcp\n \n # Conflicts:\n # composer.lock\n\ndiff --git a/composer.json b/composer.json\nindex 02ffcc050e..89551995a1 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -113,6 +113,7 @@\n \"kalnoy/nestedset\": \"*\",\n \"laravel/framework\": \"^12.28\",\n \"laravel/helpers\": \"^1.7\",\n+ \"laravel/mcp\": \"^0.7.0\",\n \"laravel/passport\": \"^13.0\",\n \"laravel/slack-notification-channel\": \"^3.4\",\n \"laravel/tinker\": \"^2.10.1\",\n\ncommit 431b4c096f4ad0272bac595d078871a78b510bb5\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 17:17:47 2026 +0300\n\n JY-18091 | Downgrade composer.json\n\ndiff --git a/composer.json b/composer.json\nindex 5db26da2c9..baacefbd5f 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -187,20 +187,18 @@\n \"require-dev\": {\n \"barryvdh/laravel-debugbar\": \"^3.15\",\n \"barryvdh/laravel-ide-helper\": \"^3.5\",\n- \"brianium/paratest\": \"^7.12\",\n+ \"brianium/paratest\": \"^7.5\",\n \"browserstack/browserstack-local\": \"^1.1.0\",\n \"filp/whoops\": \"^2.9\",\n \"friendsofphp/php-cs-fixer\": \"^3.66\",\n \"infection/infection\": \"^0.29.14\",\n \"jasonmccreary/laravel-test-assertions\": \"^2.5\",\n \"larastan/larastan\": \"^3.1\",\n- \"maglnet/composer-require-checker\": \"^4.8\",\n \"mockery/mockery\": \"^1.6\",\n \"nunomaduro/collision\": \"^8.6\",\n \"phpstan/phpstan\": \"^2.1\",\n- \"phpunit/phpunit\": \"^12.0\",\n- \"symfony/phpunit-bridge\": \"^7.0\",\n- \"vimeo/psalm\": \"^6.5.0\"\n+ \"phpunit/phpunit\": \"^11.5.50\",\n+ \"symfony/phpunit-bridge\": \"^7.0\"\n },\n \"autoload\": {\n \"classmap\": [\n\ncommit 90e9b4034f665e2a8cacaf937e55abc070b5af4a\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 16:25:45 2026 +0300\n\n JY-18091 | Changes, composer\n\ndiff --git a/composer.json b/composer.json\nindex 751005e37a..5db26da2c9 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -95,7 +95,7 @@\n \"google/apps-meet\": \"^0.5.1\",\n \"guzzlehttp/guzzle\": \"^7.8\",\n \"guzzlehttp/psr7\": \"^2.6\",\n- \"halaxa/json-machine\": \"^1.3\",\n+ \"halaxa/json-machine\": \"^1.2\",\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20\n\na8ba85203f JY-18091 | Resolve conflicts\n4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts\n1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp\n431b4c096f JY-18091 | Downgrade composer.json\n90e9b4034f JY-18091 | Changes, composer\nb63d6f5d1f JY-18091 | Composer changes\nd017fbd8aa JY-18091 | Merge\n7daa10a444 JY-18091 | Cs lint fixes\na472f51b71 JY-18091 | Update composer to support php 8.5\n1162b04371 fix(security): bump dependencies (alerts #477)\n0c1f2f35df JY-19957 | Update composer.lock with correct dep\n574315fc12 JY-19957 | Update composer.locl\nc97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade\ne4e0e6d46d Merge branch 'master' into secfix/composer-20260415\n7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)\n4f5795d1d5 JY-20479: Remove unused dependencies\ncaa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download\n07832f2eeb JY-20479: Transcript download PDF optimization\n9f17a0f70e JY-20526: Remove Sentence breaker\n4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 \"^docker-update:\" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \\\n || grep -rA 20 \"^docker-update:\" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40\n/Users/lukas/jiminny/app/Makefile:docker-update:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\taws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-up:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-stop:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux kill-session -t jiminny_dev_ngrok\n/Users/lukas/jiminny/app/Makefile-\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n \"arm64v8\\|/jiminny/app/qa\" ~/jiminny/infrastructure/dev/docker/docker-compose.yml\n8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 37 seconds ago Up 37 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n187d58491294 wernight/ngrok \"/entrypoint.sh\" 37 seconds ago Up 37 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nb433f55153b5 mariadb:11.4.5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\n207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 37 seconds ago Up 37 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nd09012232958 redis:5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Services/Mail/TextRelayServiceTest.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nSwitched to branch 'master'\nYour branch is up to date with 'origin/master'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 124, done.\nremote: Counting objects: 100% (123/123), done.\nremote: Compressing objects: 100% (32/32), done.\nremote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)\nReceiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.\nResolving deltas: 100% (93/93), completed with 33 local objects.\nFrom github.com:jiminny/app\n 23fdef5aa9..942ddbe31c master -> origin/master\n a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app\n 96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration\n a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details\n * [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only\n + 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)\n * [new branch] master-reset-ES -> origin/master-reset-ES\nUpdating 23fdef5aa9..942ddbe31c\nFast-forward\n contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------\n front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----\n front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--\n front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-\n front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------\n routes/api_v2.php | 6 +++---\n tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------\n 7 files changed, 61 insertions(+), 46 deletions(-)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\nphp-8.5: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\narm64v8-php-8.5: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env\n#IMAGE_TAG=\"latest\"\nIMAGE_TAG=\"arm64v8-latest\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 \"lamp:\" | grep image\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \ndocker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest \"docker-php-entrypoi…\" lamp 3 minutes ago Exited (2) 3 minutes ago \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\nlatest: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\narm64v8-latest: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\nff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 18 minutes ago Up 53 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n87804ee14786 wernight/ngrok \"/entrypoint.sh\" 18 minutes ago Up 53 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nbc04ffad01b2 mariadb:11.4.5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\ne985cd5cfbf7 redis:5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\n121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 18 minutes ago Up 53 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\n Filter, search, and stream logs from all your Compose services\n in one place with Docker Desktop's Logs view. docker-desktop://dashboard/logs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\nroot@docker_lamp_1:/home/jiminny# ^C\nroot@docker_lamp_1:/home/jiminny# \nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entity) $ dev\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> exit\n\n INFO Goodbye.\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 9.84ms DONE\n cache ............................................................................................................................... 69.91ms DONE\n compiled ............................................................................................................................. 2.96ms DONE\n events ............................................................................................................................... 1.19ms DONE\n routes ............................................................................................................................... 0.65ms DONE\n views ................................................................................................................................ 4.44ms DONE\n\nworker-crm-update:worker-crm-update_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-download:worker-download_00: stopped\nworker-nudges:worker-nudges_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> app(\\Jiminny\\Services\\Mail\\TextRelayService::class)->sync();\n\n= []\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 3.45ms DONE\n cache ............................................................................................................................... 10.26ms DONE\n compiled ............................................................................................................................. 1.84ms DONE\n events ............................................................................................................................... 0.72ms DONE\n routes ............................................................................................................................... 6.62ms DONE\n views ................................................................................................................................ 4.33ms DONE\n\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan mailbox:text-relay:sync","depth":4,"on_screen":true,"value":"/Users/lukas/jiminny/app/.env.nikilocal:22:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/.env.local:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/dev.json:18: \"DB_ADMIN_PASSWORD\" : \"dgyt$rTe21-d\",\n/Users/lukas/jiminny/app/.env:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.vscode/settings.json:16: \"password\": \"dgyt$rTe21-d\"\n/Users/lukas/jiminny/app/.env.root:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.root:394:DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.other:14:DB_PASSWORD=dgyt\\$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop\n320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep\na1718cfb Merge pull request #529 from jiminny/katranci-patch-1\n74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3\n0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2\n4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue\n220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url\n543c60b8 Merge branch 'develop' into JY-19432-recall-api-url\nf163a29e JY-19432 Fix formatting\n6de60dd0 JY-19432 Fix formatting\n78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances\n2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3\nd6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code\n4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers\n6426729b JY-20432 Set stopasgroup to false for dialers queue worker\n92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities\ne0796d89 Delete obsolete files\n4a8b1ea2 Delete old docker build scripts before php-8 upgrade\nd790e56d JY-20603 Fix formatting\nfc758135 JY-20603 Move video ec2 instances to external subnet\necb558d5 JY-20761 Spread php-app tasks over ec2 instances\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80\n\ncommit a8ba85203fb10fb793ff07a6e85efac833979335\nMerge: c15e0c8201 a00d53bdd6\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Fri May 15 10:44:44 2026 +0300\n\n JY-18091 | Resolve conflicts\n\ncommit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1\nAuthor: Nikolay Nikolov <nikolay.nikolov@jiminny.com>\nDate: Thu Apr 30 14:54:08 2026 +0300\n\n JY-20625 | JY-20742 | Add laravel/mcp\n \n # Conflicts:\n # composer.lock\n\ndiff --git a/composer.json b/composer.json\nindex 02ffcc050e..89551995a1 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -113,6 +113,7 @@\n \"kalnoy/nestedset\": \"*\",\n \"laravel/framework\": \"^12.28\",\n \"laravel/helpers\": \"^1.7\",\n+ \"laravel/mcp\": \"^0.7.0\",\n \"laravel/passport\": \"^13.0\",\n \"laravel/slack-notification-channel\": \"^3.4\",\n \"laravel/tinker\": \"^2.10.1\",\n\ncommit 431b4c096f4ad0272bac595d078871a78b510bb5\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 17:17:47 2026 +0300\n\n JY-18091 | Downgrade composer.json\n\ndiff --git a/composer.json b/composer.json\nindex 5db26da2c9..baacefbd5f 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -187,20 +187,18 @@\n \"require-dev\": {\n \"barryvdh/laravel-debugbar\": \"^3.15\",\n \"barryvdh/laravel-ide-helper\": \"^3.5\",\n- \"brianium/paratest\": \"^7.12\",\n+ \"brianium/paratest\": \"^7.5\",\n \"browserstack/browserstack-local\": \"^1.1.0\",\n \"filp/whoops\": \"^2.9\",\n \"friendsofphp/php-cs-fixer\": \"^3.66\",\n \"infection/infection\": \"^0.29.14\",\n \"jasonmccreary/laravel-test-assertions\": \"^2.5\",\n \"larastan/larastan\": \"^3.1\",\n- \"maglnet/composer-require-checker\": \"^4.8\",\n \"mockery/mockery\": \"^1.6\",\n \"nunomaduro/collision\": \"^8.6\",\n \"phpstan/phpstan\": \"^2.1\",\n- \"phpunit/phpunit\": \"^12.0\",\n- \"symfony/phpunit-bridge\": \"^7.0\",\n- \"vimeo/psalm\": \"^6.5.0\"\n+ \"phpunit/phpunit\": \"^11.5.50\",\n+ \"symfony/phpunit-bridge\": \"^7.0\"\n },\n \"autoload\": {\n \"classmap\": [\n\ncommit 90e9b4034f665e2a8cacaf937e55abc070b5af4a\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 16:25:45 2026 +0300\n\n JY-18091 | Changes, composer\n\ndiff --git a/composer.json b/composer.json\nindex 751005e37a..5db26da2c9 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -95,7 +95,7 @@\n \"google/apps-meet\": \"^0.5.1\",\n \"guzzlehttp/guzzle\": \"^7.8\",\n \"guzzlehttp/psr7\": \"^2.6\",\n- \"halaxa/json-machine\": \"^1.3\",\n+ \"halaxa/json-machine\": \"^1.2\",\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20\n\na8ba85203f JY-18091 | Resolve conflicts\n4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts\n1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp\n431b4c096f JY-18091 | Downgrade composer.json\n90e9b4034f JY-18091 | Changes, composer\nb63d6f5d1f JY-18091 | Composer changes\nd017fbd8aa JY-18091 | Merge\n7daa10a444 JY-18091 | Cs lint fixes\na472f51b71 JY-18091 | Update composer to support php 8.5\n1162b04371 fix(security): bump dependencies (alerts #477)\n0c1f2f35df JY-19957 | Update composer.lock with correct dep\n574315fc12 JY-19957 | Update composer.locl\nc97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade\ne4e0e6d46d Merge branch 'master' into secfix/composer-20260415\n7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)\n4f5795d1d5 JY-20479: Remove unused dependencies\ncaa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download\n07832f2eeb JY-20479: Transcript download PDF optimization\n9f17a0f70e JY-20526: Remove Sentence breaker\n4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 \"^docker-update:\" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \\\n || grep -rA 20 \"^docker-update:\" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40\n/Users/lukas/jiminny/app/Makefile:docker-update:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\taws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-up:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-stop:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux kill-session -t jiminny_dev_ngrok\n/Users/lukas/jiminny/app/Makefile-\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n \"arm64v8\\|/jiminny/app/qa\" ~/jiminny/infrastructure/dev/docker/docker-compose.yml\n8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 37 seconds ago Up 37 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n187d58491294 wernight/ngrok \"/entrypoint.sh\" 37 seconds ago Up 37 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nb433f55153b5 mariadb:11.4.5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\n207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 37 seconds ago Up 37 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nd09012232958 redis:5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Services/Mail/TextRelayServiceTest.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nSwitched to branch 'master'\nYour branch is up to date with 'origin/master'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 124, done.\nremote: Counting objects: 100% (123/123), done.\nremote: Compressing objects: 100% (32/32), done.\nremote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)\nReceiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.\nResolving deltas: 100% (93/93), completed with 33 local objects.\nFrom github.com:jiminny/app\n 23fdef5aa9..942ddbe31c master -> origin/master\n a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app\n 96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration\n a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details\n * [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only\n + 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)\n * [new branch] master-reset-ES -> origin/master-reset-ES\nUpdating 23fdef5aa9..942ddbe31c\nFast-forward\n contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------\n front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----\n front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--\n front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-\n front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------\n routes/api_v2.php | 6 +++---\n tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------\n 7 files changed, 61 insertions(+), 46 deletions(-)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\nphp-8.5: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\narm64v8-php-8.5: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env\n#IMAGE_TAG=\"latest\"\nIMAGE_TAG=\"arm64v8-latest\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 \"lamp:\" | grep image\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \ndocker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest \"docker-php-entrypoi…\" lamp 3 minutes ago Exited (2) 3 minutes ago \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\nlatest: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\narm64v8-latest: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\nff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 18 minutes ago Up 53 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n87804ee14786 wernight/ngrok \"/entrypoint.sh\" 18 minutes ago Up 53 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nbc04ffad01b2 mariadb:11.4.5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\ne985cd5cfbf7 redis:5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\n121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 18 minutes ago Up 53 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\n Filter, search, and stream logs from all your Compose services\n in one place with Docker Desktop's Logs view. docker-desktop://dashboard/logs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\nroot@docker_lamp_1:/home/jiminny# ^C\nroot@docker_lamp_1:/home/jiminny# \nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entity) $ dev\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> exit\n\n INFO Goodbye.\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 9.84ms DONE\n cache ............................................................................................................................... 69.91ms DONE\n compiled ............................................................................................................................. 2.96ms DONE\n events ............................................................................................................................... 1.19ms DONE\n routes ............................................................................................................................... 0.65ms DONE\n views ................................................................................................................................ 4.44ms DONE\n\nworker-crm-update:worker-crm-update_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-download:worker-download_00: stopped\nworker-nudges:worker-nudges_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> app(\\Jiminny\\Services\\Mail\\TextRelayService::class)->sync();\n\n= []\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 3.45ms DONE\n cache ............................................................................................................................... 10.26ms DONE\n compiled ............................................................................................................................. 1.84ms DONE\n events ............................................................................................................................... 0.72ms DONE\n routes ............................................................................................................................... 6.62ms DONE\n views ................................................................................................................................ 4.33ms DONE\n\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan mailbox:text-relay:sync","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (docker)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"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.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"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.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-129-190:~ (nc)","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"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.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-140-255:~ (-zsh)","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"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.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"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.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"DEV (docker)","depth":1,"bounds":{"left":0.46875,"top":0.033333335,"width":0.0625,"height":0.017777778},"on_screen":true,"role_description":"text"}]...
|
8053239547896548476
|
-5697477843282486566
|
typing_pause
|
accessibility
|
NULL
|
/Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SE /Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SECRET]
/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/.env.local:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/dev.json:18: "DB_ADMIN_PASSWORD" : "dgyt$rTe21-d",
/Users/lukas/jiminny/app/.env:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.vscode/settings.json:16: "password": "dgyt$rTe21-d"
/Users/lukas/jiminny/app/.env.root:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.env.root:394:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.other:14:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#[ENV_SECRET]
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop
320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep
a1718cfb Merge pull request #529 from jiminny/katranci-patch-1
74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3
0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2
4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue
220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url
543c60b8 Merge branch 'develop' into JY-19432-recall-api-url
f163a29e JY-19432 Fix formatting
6de60dd0 JY-19432 Fix formatting
78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances
2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3
d6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code
4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers
6426729b JY-20432 Set stopasgroup to false for dialers queue worker
92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities
e0796d89 Delete obsolete files
4a8b1ea2 Delete old docker build scripts before php-8 upgrade
d790e56d JY-20603 Fix formatting
fc758135 JY-20603 Move video ec2 instances to external subnet
ecb558d5 JY-20761 Spread php-app tasks over ec2 instances
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80
commit a8ba85203fb10fb793ff07a6e85efac833979335
Merge: c15e0c8201 a00d53bdd6
Author: Nikolay Ivanov <[EMAIL]>
Date: Fri May 15 10:44:44 2026 +0300
JY-18091 | Resolve conflicts
commit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1
Author: Nikolay Nikolov <[EMAIL]>
Date: Thu Apr 30 14:54:08 2026 +0300
JY-20625 | JY-20742 | Add laravel/mcp
# Conflicts:
# composer.lock
diff --git a/composer.json b/composer.json
index 02ffcc050e..89551995a1 100644
--- a/composer.json
+++ b/composer.json
@@ -113,6 +113,7 @@
"kalnoy/nestedset": "*",
"laravel/framework": "^12.28",
"laravel/helpers": "^1.7",
+ "laravel/mcp": "^0.7.0",
"laravel/passport": "^13.0",
"laravel/slack-notification-channel": "^3.4",
"laravel/tinker": "^2.10.1",
commit 431b4c096f4ad0272bac595d078871a78b510bb5
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 17:17:47 2026 +0300
JY-18091 | Downgrade composer.json
diff --git a/composer.json b/composer.json
index 5db26da2c9..baacefbd5f 100644
--- a/composer.json
+++ b/composer.json
@@ -187,20 +187,18 @@
"require-dev": {
"barryvdh/laravel-debugbar": "^3.15",
"barryvdh/laravel-ide-helper": "^3.5",
- "brianium/paratest": "^7.12",
+ "brianium/paratest": "^7.5",
"browserstack/browserstack-local": "^1.1.0",
"filp/whoops": "^2.9",
"friendsofphp/php-cs-fixer": "^3.66",
"infection/infection": "^0.29.14",
"jasonmccreary/laravel-test-assertions": "^2.5",
"larastan/larastan": "^3.1",
- "maglnet/composer-require-checker": "^4.8",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
"phpstan/phpstan": "^2.1",
- "phpunit/phpunit": "^12.0",
- "symfony/phpunit-bridge": "^7.0",
- "vimeo/psalm": "^6.5.0"
+ "phpunit/phpunit": "^11.5.50",
+ "symfony/phpunit-bridge": "^7.0"
},
"autoload": {
"classmap": [
commit 90e9b4034f665e2a8cacaf937e55abc070b5af4a
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 16:25:45 2026 +0300
JY-18091 | Changes, composer
diff --git a/composer.json b/composer.json
index 751005e37a..5db26da2c9 100644
--- a/composer.json
+++ b/composer.json
@@ -95,7 +95,7 @@
"google/apps-meet": "^0.5.1",
"guzzlehttp/guzzle": "^7.8",
"guzzlehttp/psr7": "^2.6",
- "halaxa/json-machine": "^1.3",
+ "halaxa/json-machine": "^1.2",
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20
a8ba85203f JY-18091 | Resolve conflicts
4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts
1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp
431b4c096f JY-18091 | Downgrade composer.json
90e9b4034f JY-18091 | Changes, composer
b63d6f5d1f JY-18091 | Composer changes
d017fbd8aa JY-18091 | Merge
7daa10a444 JY-18091 | Cs lint fixes
a472f51b71 JY-18091 | Update composer to support php 8.5
1162b04371 fix(security): bump dependencies (alerts #477)
0c1f2f35df JY-19957 | Update composer.lock with correct dep
574315fc12 JY-19957 | Update composer.locl
c97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade
e4e0e6d46d Merge branch 'master' into secfix/composer-20260415
7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)
4f5795d1d5 JY-20479: Remove unused dependencies
caa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download
07832f2eeb JY-20479: Transcript download PDF optimization
9f17a0f70e JY-20526: Remove Sentence breaker
4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 "^docker-update:" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \
|| grep -rA 20 "^docker-update:" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40
/Users/lukas/jiminny/app/Makefile:docker-update:
/Users/lukas/jiminny/app/Makefile- aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-up:
/Users/lukas/jiminny/app/Makefile- tmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-stop:
/Users/lukas/jiminny/app/Makefile- tmux kill-session -t jiminny_dev_ngrok
/Users/lukas/jiminny/app/Makefile-
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n "arm64v8\|/jiminny/app/qa" ~/jiminny/infrastructure/dev/docker/docker-compose.yml
8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
187d58491294 wernight/ngrok "/entrypoint.sh" 37 seconds ago Up 37 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
b433f55153b5 mariadb:11.4.5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
d09012232958 redis:5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
error: Your local changes to the following files would be overwritten by checkout:
tests/Unit/Services/Mail/TextRelayServiceTest.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M config/logging.php
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 124, done.
remote: Counting objects: 100% (123/123), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)
Receiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.
Resolving deltas: 100% (93/93), completed with 33 local objects.
From github.com:jiminny/app
23fdef5aa9..942ddbe31c master -> origin/master
a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app
96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration
a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
* [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only
+ 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)
* [new branch] master-reset-ES -> origin/master-reset-ES
Updating 23fdef5aa9..942ddbe31c
Fast-forward
contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------
front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----
front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--
front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-
front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------
routes/api_v2.php | 6 +++---
tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------
7 files changed, 61 insertions(+), 46 deletions(-)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env
#IMAGE_TAG="latest"
IMAGE_TAG="arm64v8-latest"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 "lamp:" | grep image
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
docker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest "docker-php-entrypoi…" lamp 3 minutes ago Exited (2) 3 minutes ago
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
87804ee14786 wernight/ngrok "/entrypoint.sh" 18 minutes ago Up 53 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
bc04ffad01b2 mariadb:11.4.5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
e985cd5cfbf7 redis:5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
Filter, search, and stream logs from all your Compose services
in one place with Docker Desktop's Logs view. [URL_WITH_CREDENTIALS]
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2
Learn more at [URL_WITH_CREDENTIALS] php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 9.84ms DONE
cache [PASSWORD_DOTS] 69.91ms DONE
compiled [PASSWORD_DOTS] 2.96ms DONE
events [PASSWORD_DOTS] 1.19ms DONE
routes [PASSWORD_DOTS] 0.65ms DONE
views [PASSWORD_DOTS] 4.44ms DONE
worker-crm-update:worker-crm-update_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-download:worker-download_00: stopped
worker-nudges:worker-nudges_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-emails:worker-emails_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan tinker
Psy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman
New PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`
> app(\Jiminny\Services\Mail\TextRelayService::class)->sync();
= []
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 3.45ms DONE
cache [PASSWORD_DOTS] 10.26ms DONE
compiled [PASSWORD_DOTS] 1.84ms DONE
events [PASSWORD_DOTS] 0.72ms DONE
routes [PASSWORD_DOTS] 6.62ms DONE
views [PASSWORD_DOTS] 4.33ms DONE
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-download:worker-download_00: stopped
worker-emails:worker-emails_00: stopped
worker-nudges:worker-nudges_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-conferences:worker-conferences_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan mailbox:text-relay:sync
DOCKER
Close Tab
DEV (docker)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ec2-user@ip-10-30-129-190:~ (nc)
Close Tab
ec2-user@ip-10-30-140-255:~ (-zsh)
Close Tab
⌥⌘1
DEV (docker)...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
78739
|
2764
|
38
|
2026-05-27T12:57:21.360283+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886641360_m2.jpg...
|
iTerm2
|
DEV (docker)
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
/Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SE /Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SECRET]
/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/.env.local:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/dev.json:18: "DB_ADMIN_PASSWORD" : "dgyt$rTe21-d",
/Users/lukas/jiminny/app/.env:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.vscode/settings.json:16: "password": "dgyt$rTe21-d"
/Users/lukas/jiminny/app/.env.root:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.env.root:394:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.other:14:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#[ENV_SECRET]
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop
320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep
a1718cfb Merge pull request #529 from jiminny/katranci-patch-1
74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3
0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2
4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue
220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url
543c60b8 Merge branch 'develop' into JY-19432-recall-api-url
f163a29e JY-19432 Fix formatting
6de60dd0 JY-19432 Fix formatting
78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances
2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3
d6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code
4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers
6426729b JY-20432 Set stopasgroup to false for dialers queue worker
92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities
e0796d89 Delete obsolete files
4a8b1ea2 Delete old docker build scripts before php-8 upgrade
d790e56d JY-20603 Fix formatting
fc758135 JY-20603 Move video ec2 instances to external subnet
ecb558d5 JY-20761 Spread php-app tasks over ec2 instances
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80
commit a8ba85203fb10fb793ff07a6e85efac833979335
Merge: c15e0c8201 a00d53bdd6
Author: Nikolay Ivanov <[EMAIL]>
Date: Fri May 15 10:44:44 2026 +0300
JY-18091 | Resolve conflicts
commit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1
Author: Nikolay Nikolov <[EMAIL]>
Date: Thu Apr 30 14:54:08 2026 +0300
JY-20625 | JY-20742 | Add laravel/mcp
# Conflicts:
# composer.lock
diff --git a/composer.json b/composer.json
index 02ffcc050e..89551995a1 100644
--- a/composer.json
+++ b/composer.json
@@ -113,6 +113,7 @@
"kalnoy/nestedset": "*",
"laravel/framework": "^12.28",
"laravel/helpers": "^1.7",
+ "laravel/mcp": "^0.7.0",
"laravel/passport": "^13.0",
"laravel/slack-notification-channel": "^3.4",
"laravel/tinker": "^2.10.1",
commit 431b4c096f4ad0272bac595d078871a78b510bb5
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 17:17:47 2026 +0300
JY-18091 | Downgrade composer.json
diff --git a/composer.json b/composer.json
index 5db26da2c9..baacefbd5f 100644
--- a/composer.json
+++ b/composer.json
@@ -187,20 +187,18 @@
"require-dev": {
"barryvdh/laravel-debugbar": "^3.15",
"barryvdh/laravel-ide-helper": "^3.5",
- "brianium/paratest": "^7.12",
+ "brianium/paratest": "^7.5",
"browserstack/browserstack-local": "^1.1.0",
"filp/whoops": "^2.9",
"friendsofphp/php-cs-fixer": "^3.66",
"infection/infection": "^0.29.14",
"jasonmccreary/laravel-test-assertions": "^2.5",
"larastan/larastan": "^3.1",
- "maglnet/composer-require-checker": "^4.8",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
"phpstan/phpstan": "^2.1",
- "phpunit/phpunit": "^12.0",
- "symfony/phpunit-bridge": "^7.0",
- "vimeo/psalm": "^6.5.0"
+ "phpunit/phpunit": "^11.5.50",
+ "symfony/phpunit-bridge": "^7.0"
},
"autoload": {
"classmap": [
commit 90e9b4034f665e2a8cacaf937e55abc070b5af4a
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 16:25:45 2026 +0300
JY-18091 | Changes, composer
diff --git a/composer.json b/composer.json
index 751005e37a..5db26da2c9 100644
--- a/composer.json
+++ b/composer.json
@@ -95,7 +95,7 @@
"google/apps-meet": "^0.5.1",
"guzzlehttp/guzzle": "^7.8",
"guzzlehttp/psr7": "^2.6",
- "halaxa/json-machine": "^1.3",
+ "halaxa/json-machine": "^1.2",
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20
a8ba85203f JY-18091 | Resolve conflicts
4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts
1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp
431b4c096f JY-18091 | Downgrade composer.json
90e9b4034f JY-18091 | Changes, composer
b63d6f5d1f JY-18091 | Composer changes
d017fbd8aa JY-18091 | Merge
7daa10a444 JY-18091 | Cs lint fixes
a472f51b71 JY-18091 | Update composer to support php 8.5
1162b04371 fix(security): bump dependencies (alerts #477)
0c1f2f35df JY-19957 | Update composer.lock with correct dep
574315fc12 JY-19957 | Update composer.locl
c97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade
e4e0e6d46d Merge branch 'master' into secfix/composer-20260415
7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)
4f5795d1d5 JY-20479: Remove unused dependencies
caa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download
07832f2eeb JY-20479: Transcript download PDF optimization
9f17a0f70e JY-20526: Remove Sentence breaker
4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 "^docker-update:" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \
|| grep -rA 20 "^docker-update:" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40
/Users/lukas/jiminny/app/Makefile:docker-update:
/Users/lukas/jiminny/app/Makefile- aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-up:
/Users/lukas/jiminny/app/Makefile- tmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-stop:
/Users/lukas/jiminny/app/Makefile- tmux kill-session -t jiminny_dev_ngrok
/Users/lukas/jiminny/app/Makefile-
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n "arm64v8\|/jiminny/app/qa" ~/jiminny/infrastructure/dev/docker/docker-compose.yml
8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
187d58491294 wernight/ngrok "/entrypoint.sh" 37 seconds ago Up 37 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
b433f55153b5 mariadb:11.4.5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
d09012232958 redis:5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
error: Your local changes to the following files would be overwritten by checkout:
tests/Unit/Services/Mail/TextRelayServiceTest.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M config/logging.php
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 124, done.
remote: Counting objects: 100% (123/123), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)
Receiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.
Resolving deltas: 100% (93/93), completed with 33 local objects.
From github.com:jiminny/app
23fdef5aa9..942ddbe31c master -> origin/master
a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app
96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration
a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
* [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only
+ 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)
* [new branch] master-reset-ES -> origin/master-reset-ES
Updating 23fdef5aa9..942ddbe31c
Fast-forward
contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------
front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----
front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--
front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-
front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------
routes/api_v2.php | 6 +++---
tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------
7 files changed, 61 insertions(+), 46 deletions(-)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env
#IMAGE_TAG="latest"
IMAGE_TAG="arm64v8-latest"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 "lamp:" | grep image
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
docker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest "docker-php-entrypoi…" lamp 3 minutes ago Exited (2) 3 minutes ago
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
87804ee14786 wernight/ngrok "/entrypoint.sh" 18 minutes ago Up 53 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
bc04ffad01b2 mariadb:11.4.5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
e985cd5cfbf7 redis:5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
Filter, search, and stream logs from all your Compose services
in one place with Docker Desktop's Logs view. [URL_WITH_CREDENTIALS]
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2
Learn more at [URL_WITH_CREDENTIALS] php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 9.84ms DONE
cache [PASSWORD_DOTS] 69.91ms DONE
compiled [PASSWORD_DOTS] 2.96ms DONE
events [PASSWORD_DOTS] 1.19ms DONE
routes [PASSWORD_DOTS] 0.65ms DONE
views [PASSWORD_DOTS] 4.44ms DONE
worker-crm-update:worker-crm-update_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-download:worker-download_00: stopped
worker-nudges:worker-nudges_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-emails:worker-emails_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan tinker
Psy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman
New PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`
> app(\Jiminny\Services\Mail\TextRelayService::class)->sync();
= []
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 3.45ms DONE
cache [PASSWORD_DOTS] 10.26ms DONE
compiled [PASSWORD_DOTS] 1.84ms DONE
events [PASSWORD_DOTS] 0.72ms DONE
routes [PASSWORD_DOTS] 6.62ms DONE
views [PASSWORD_DOTS] 4.33ms DONE
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-download:worker-download_00: stopped
worker-emails:worker-emails_00: stopped
worker-nudges:worker-nudges_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-conferences:worker-conferences_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan
DOCKER
Close Tab
DEV (docker)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ec2-user@ip-10-30-129-190:~ (nc)
Close Tab
ec2-user@ip-10-30-140-255:~ (-zsh)
Close Tab
⌥⌘1
DEV (docker)...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"/Users/lukas/jiminny/app/.env.nikilocal:22:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/.env.local:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/dev.json:18: \"DB_ADMIN_PASSWORD\" : \"dgyt$rTe21-d\",\n/Users/lukas/jiminny/app/.env:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.vscode/settings.json:16: \"password\": \"dgyt$rTe21-d\"\n/Users/lukas/jiminny/app/.env.root:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.root:394:DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.other:14:DB_PASSWORD=dgyt\\$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop\n320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep\na1718cfb Merge pull request #529 from jiminny/katranci-patch-1\n74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3\n0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2\n4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue\n220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url\n543c60b8 Merge branch 'develop' into JY-19432-recall-api-url\nf163a29e JY-19432 Fix formatting\n6de60dd0 JY-19432 Fix formatting\n78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances\n2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3\nd6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code\n4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers\n6426729b JY-20432 Set stopasgroup to false for dialers queue worker\n92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities\ne0796d89 Delete obsolete files\n4a8b1ea2 Delete old docker build scripts before php-8 upgrade\nd790e56d JY-20603 Fix formatting\nfc758135 JY-20603 Move video ec2 instances to external subnet\necb558d5 JY-20761 Spread php-app tasks over ec2 instances\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80\n\ncommit a8ba85203fb10fb793ff07a6e85efac833979335\nMerge: c15e0c8201 a00d53bdd6\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Fri May 15 10:44:44 2026 +0300\n\n JY-18091 | Resolve conflicts\n\ncommit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1\nAuthor: Nikolay Nikolov <nikolay.nikolov@jiminny.com>\nDate: Thu Apr 30 14:54:08 2026 +0300\n\n JY-20625 | JY-20742 | Add laravel/mcp\n \n # Conflicts:\n # composer.lock\n\ndiff --git a/composer.json b/composer.json\nindex 02ffcc050e..89551995a1 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -113,6 +113,7 @@\n \"kalnoy/nestedset\": \"*\",\n \"laravel/framework\": \"^12.28\",\n \"laravel/helpers\": \"^1.7\",\n+ \"laravel/mcp\": \"^0.7.0\",\n \"laravel/passport\": \"^13.0\",\n \"laravel/slack-notification-channel\": \"^3.4\",\n \"laravel/tinker\": \"^2.10.1\",\n\ncommit 431b4c096f4ad0272bac595d078871a78b510bb5\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 17:17:47 2026 +0300\n\n JY-18091 | Downgrade composer.json\n\ndiff --git a/composer.json b/composer.json\nindex 5db26da2c9..baacefbd5f 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -187,20 +187,18 @@\n \"require-dev\": {\n \"barryvdh/laravel-debugbar\": \"^3.15\",\n \"barryvdh/laravel-ide-helper\": \"^3.5\",\n- \"brianium/paratest\": \"^7.12\",\n+ \"brianium/paratest\": \"^7.5\",\n \"browserstack/browserstack-local\": \"^1.1.0\",\n \"filp/whoops\": \"^2.9\",\n \"friendsofphp/php-cs-fixer\": \"^3.66\",\n \"infection/infection\": \"^0.29.14\",\n \"jasonmccreary/laravel-test-assertions\": \"^2.5\",\n \"larastan/larastan\": \"^3.1\",\n- \"maglnet/composer-require-checker\": \"^4.8\",\n \"mockery/mockery\": \"^1.6\",\n \"nunomaduro/collision\": \"^8.6\",\n \"phpstan/phpstan\": \"^2.1\",\n- \"phpunit/phpunit\": \"^12.0\",\n- \"symfony/phpunit-bridge\": \"^7.0\",\n- \"vimeo/psalm\": \"^6.5.0\"\n+ \"phpunit/phpunit\": \"^11.5.50\",\n+ \"symfony/phpunit-bridge\": \"^7.0\"\n },\n \"autoload\": {\n \"classmap\": [\n\ncommit 90e9b4034f665e2a8cacaf937e55abc070b5af4a\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 16:25:45 2026 +0300\n\n JY-18091 | Changes, composer\n\ndiff --git a/composer.json b/composer.json\nindex 751005e37a..5db26da2c9 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -95,7 +95,7 @@\n \"google/apps-meet\": \"^0.5.1\",\n \"guzzlehttp/guzzle\": \"^7.8\",\n \"guzzlehttp/psr7\": \"^2.6\",\n- \"halaxa/json-machine\": \"^1.3\",\n+ \"halaxa/json-machine\": \"^1.2\",\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20\n\na8ba85203f JY-18091 | Resolve conflicts\n4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts\n1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp\n431b4c096f JY-18091 | Downgrade composer.json\n90e9b4034f JY-18091 | Changes, composer\nb63d6f5d1f JY-18091 | Composer changes\nd017fbd8aa JY-18091 | Merge\n7daa10a444 JY-18091 | Cs lint fixes\na472f51b71 JY-18091 | Update composer to support php 8.5\n1162b04371 fix(security): bump dependencies (alerts #477)\n0c1f2f35df JY-19957 | Update composer.lock with correct dep\n574315fc12 JY-19957 | Update composer.locl\nc97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade\ne4e0e6d46d Merge branch 'master' into secfix/composer-20260415\n7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)\n4f5795d1d5 JY-20479: Remove unused dependencies\ncaa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download\n07832f2eeb JY-20479: Transcript download PDF optimization\n9f17a0f70e JY-20526: Remove Sentence breaker\n4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 \"^docker-update:\" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \\\n || grep -rA 20 \"^docker-update:\" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40\n/Users/lukas/jiminny/app/Makefile:docker-update:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\taws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-up:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-stop:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux kill-session -t jiminny_dev_ngrok\n/Users/lukas/jiminny/app/Makefile-\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n \"arm64v8\\|/jiminny/app/qa\" ~/jiminny/infrastructure/dev/docker/docker-compose.yml\n8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 37 seconds ago Up 37 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n187d58491294 wernight/ngrok \"/entrypoint.sh\" 37 seconds ago Up 37 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nb433f55153b5 mariadb:11.4.5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\n207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 37 seconds ago Up 37 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nd09012232958 redis:5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Services/Mail/TextRelayServiceTest.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nSwitched to branch 'master'\nYour branch is up to date with 'origin/master'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 124, done.\nremote: Counting objects: 100% (123/123), done.\nremote: Compressing objects: 100% (32/32), done.\nremote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)\nReceiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.\nResolving deltas: 100% (93/93), completed with 33 local objects.\nFrom github.com:jiminny/app\n 23fdef5aa9..942ddbe31c master -> origin/master\n a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app\n 96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration\n a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details\n * [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only\n + 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)\n * [new branch] master-reset-ES -> origin/master-reset-ES\nUpdating 23fdef5aa9..942ddbe31c\nFast-forward\n contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------\n front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----\n front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--\n front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-\n front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------\n routes/api_v2.php | 6 +++---\n tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------\n 7 files changed, 61 insertions(+), 46 deletions(-)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\nphp-8.5: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\narm64v8-php-8.5: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env\n#IMAGE_TAG=\"latest\"\nIMAGE_TAG=\"arm64v8-latest\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 \"lamp:\" | grep image\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \ndocker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest \"docker-php-entrypoi…\" lamp 3 minutes ago Exited (2) 3 minutes ago \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\nlatest: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\narm64v8-latest: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\nff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 18 minutes ago Up 53 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n87804ee14786 wernight/ngrok \"/entrypoint.sh\" 18 minutes ago Up 53 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nbc04ffad01b2 mariadb:11.4.5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\ne985cd5cfbf7 redis:5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\n121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 18 minutes ago Up 53 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\n Filter, search, and stream logs from all your Compose services\n in one place with Docker Desktop's Logs view. docker-desktop://dashboard/logs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\nroot@docker_lamp_1:/home/jiminny# ^C\nroot@docker_lamp_1:/home/jiminny# \nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entity) $ dev\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> exit\n\n INFO Goodbye.\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 9.84ms DONE\n cache ............................................................................................................................... 69.91ms DONE\n compiled ............................................................................................................................. 2.96ms DONE\n events ............................................................................................................................... 1.19ms DONE\n routes ............................................................................................................................... 0.65ms DONE\n views ................................................................................................................................ 4.44ms DONE\n\nworker-crm-update:worker-crm-update_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-download:worker-download_00: stopped\nworker-nudges:worker-nudges_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> app(\\Jiminny\\Services\\Mail\\TextRelayService::class)->sync();\n\n= []\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 3.45ms DONE\n cache ............................................................................................................................... 10.26ms DONE\n compiled ............................................................................................................................. 1.84ms DONE\n events ............................................................................................................................... 0.72ms DONE\n routes ............................................................................................................................... 6.62ms DONE\n views ................................................................................................................................ 4.33ms DONE\n\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan","depth":4,"on_screen":true,"value":"/Users/lukas/jiminny/app/.env.nikilocal:22:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/.env.local:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/dev.json:18: \"DB_ADMIN_PASSWORD\" : \"dgyt$rTe21-d\",\n/Users/lukas/jiminny/app/.env:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.vscode/settings.json:16: \"password\": \"dgyt$rTe21-d\"\n/Users/lukas/jiminny/app/.env.root:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.root:394:DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.other:14:DB_PASSWORD=dgyt\\$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop\n320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep\na1718cfb Merge pull request #529 from jiminny/katranci-patch-1\n74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3\n0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2\n4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue\n220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url\n543c60b8 Merge branch 'develop' into JY-19432-recall-api-url\nf163a29e JY-19432 Fix formatting\n6de60dd0 JY-19432 Fix formatting\n78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances\n2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3\nd6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code\n4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers\n6426729b JY-20432 Set stopasgroup to false for dialers queue worker\n92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities\ne0796d89 Delete obsolete files\n4a8b1ea2 Delete old docker build scripts before php-8 upgrade\nd790e56d JY-20603 Fix formatting\nfc758135 JY-20603 Move video ec2 instances to external subnet\necb558d5 JY-20761 Spread php-app tasks over ec2 instances\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80\n\ncommit a8ba85203fb10fb793ff07a6e85efac833979335\nMerge: c15e0c8201 a00d53bdd6\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Fri May 15 10:44:44 2026 +0300\n\n JY-18091 | Resolve conflicts\n\ncommit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1\nAuthor: Nikolay Nikolov <nikolay.nikolov@jiminny.com>\nDate: Thu Apr 30 14:54:08 2026 +0300\n\n JY-20625 | JY-20742 | Add laravel/mcp\n \n # Conflicts:\n # composer.lock\n\ndiff --git a/composer.json b/composer.json\nindex 02ffcc050e..89551995a1 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -113,6 +113,7 @@\n \"kalnoy/nestedset\": \"*\",\n \"laravel/framework\": \"^12.28\",\n \"laravel/helpers\": \"^1.7\",\n+ \"laravel/mcp\": \"^0.7.0\",\n \"laravel/passport\": \"^13.0\",\n \"laravel/slack-notification-channel\": \"^3.4\",\n \"laravel/tinker\": \"^2.10.1\",\n\ncommit 431b4c096f4ad0272bac595d078871a78b510bb5\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 17:17:47 2026 +0300\n\n JY-18091 | Downgrade composer.json\n\ndiff --git a/composer.json b/composer.json\nindex 5db26da2c9..baacefbd5f 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -187,20 +187,18 @@\n \"require-dev\": {\n \"barryvdh/laravel-debugbar\": \"^3.15\",\n \"barryvdh/laravel-ide-helper\": \"^3.5\",\n- \"brianium/paratest\": \"^7.12\",\n+ \"brianium/paratest\": \"^7.5\",\n \"browserstack/browserstack-local\": \"^1.1.0\",\n \"filp/whoops\": \"^2.9\",\n \"friendsofphp/php-cs-fixer\": \"^3.66\",\n \"infection/infection\": \"^0.29.14\",\n \"jasonmccreary/laravel-test-assertions\": \"^2.5\",\n \"larastan/larastan\": \"^3.1\",\n- \"maglnet/composer-require-checker\": \"^4.8\",\n \"mockery/mockery\": \"^1.6\",\n \"nunomaduro/collision\": \"^8.6\",\n \"phpstan/phpstan\": \"^2.1\",\n- \"phpunit/phpunit\": \"^12.0\",\n- \"symfony/phpunit-bridge\": \"^7.0\",\n- \"vimeo/psalm\": \"^6.5.0\"\n+ \"phpunit/phpunit\": \"^11.5.50\",\n+ \"symfony/phpunit-bridge\": \"^7.0\"\n },\n \"autoload\": {\n \"classmap\": [\n\ncommit 90e9b4034f665e2a8cacaf937e55abc070b5af4a\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 16:25:45 2026 +0300\n\n JY-18091 | Changes, composer\n\ndiff --git a/composer.json b/composer.json\nindex 751005e37a..5db26da2c9 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -95,7 +95,7 @@\n \"google/apps-meet\": \"^0.5.1\",\n \"guzzlehttp/guzzle\": \"^7.8\",\n \"guzzlehttp/psr7\": \"^2.6\",\n- \"halaxa/json-machine\": \"^1.3\",\n+ \"halaxa/json-machine\": \"^1.2\",\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20\n\na8ba85203f JY-18091 | Resolve conflicts\n4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts\n1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp\n431b4c096f JY-18091 | Downgrade composer.json\n90e9b4034f JY-18091 | Changes, composer\nb63d6f5d1f JY-18091 | Composer changes\nd017fbd8aa JY-18091 | Merge\n7daa10a444 JY-18091 | Cs lint fixes\na472f51b71 JY-18091 | Update composer to support php 8.5\n1162b04371 fix(security): bump dependencies (alerts #477)\n0c1f2f35df JY-19957 | Update composer.lock with correct dep\n574315fc12 JY-19957 | Update composer.locl\nc97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade\ne4e0e6d46d Merge branch 'master' into secfix/composer-20260415\n7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)\n4f5795d1d5 JY-20479: Remove unused dependencies\ncaa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download\n07832f2eeb JY-20479: Transcript download PDF optimization\n9f17a0f70e JY-20526: Remove Sentence breaker\n4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 \"^docker-update:\" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \\\n || grep -rA 20 \"^docker-update:\" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40\n/Users/lukas/jiminny/app/Makefile:docker-update:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\taws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-up:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-stop:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux kill-session -t jiminny_dev_ngrok\n/Users/lukas/jiminny/app/Makefile-\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n \"arm64v8\\|/jiminny/app/qa\" ~/jiminny/infrastructure/dev/docker/docker-compose.yml\n8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 37 seconds ago Up 37 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n187d58491294 wernight/ngrok \"/entrypoint.sh\" 37 seconds ago Up 37 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nb433f55153b5 mariadb:11.4.5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\n207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 37 seconds ago Up 37 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nd09012232958 redis:5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Services/Mail/TextRelayServiceTest.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nSwitched to branch 'master'\nYour branch is up to date with 'origin/master'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 124, done.\nremote: Counting objects: 100% (123/123), done.\nremote: Compressing objects: 100% (32/32), done.\nremote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)\nReceiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.\nResolving deltas: 100% (93/93), completed with 33 local objects.\nFrom github.com:jiminny/app\n 23fdef5aa9..942ddbe31c master -> origin/master\n a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app\n 96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration\n a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details\n * [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only\n + 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)\n * [new branch] master-reset-ES -> origin/master-reset-ES\nUpdating 23fdef5aa9..942ddbe31c\nFast-forward\n contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------\n front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----\n front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--\n front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-\n front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------\n routes/api_v2.php | 6 +++---\n tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------\n 7 files changed, 61 insertions(+), 46 deletions(-)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\nphp-8.5: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\narm64v8-php-8.5: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env\n#IMAGE_TAG=\"latest\"\nIMAGE_TAG=\"arm64v8-latest\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 \"lamp:\" | grep image\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \ndocker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest \"docker-php-entrypoi…\" lamp 3 minutes ago Exited (2) 3 minutes ago \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\nlatest: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\narm64v8-latest: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\nff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 18 minutes ago Up 53 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n87804ee14786 wernight/ngrok \"/entrypoint.sh\" 18 minutes ago Up 53 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nbc04ffad01b2 mariadb:11.4.5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\ne985cd5cfbf7 redis:5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\n121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 18 minutes ago Up 53 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\n Filter, search, and stream logs from all your Compose services\n in one place with Docker Desktop's Logs view. docker-desktop://dashboard/logs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\nroot@docker_lamp_1:/home/jiminny# ^C\nroot@docker_lamp_1:/home/jiminny# \nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entity) $ dev\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> exit\n\n INFO Goodbye.\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 9.84ms DONE\n cache ............................................................................................................................... 69.91ms DONE\n compiled ............................................................................................................................. 2.96ms DONE\n events ............................................................................................................................... 1.19ms DONE\n routes ............................................................................................................................... 0.65ms DONE\n views ................................................................................................................................ 4.44ms DONE\n\nworker-crm-update:worker-crm-update_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-download:worker-download_00: stopped\nworker-nudges:worker-nudges_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> app(\\Jiminny\\Services\\Mail\\TextRelayService::class)->sync();\n\n= []\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 3.45ms DONE\n cache ............................................................................................................................... 10.26ms DONE\n compiled ............................................................................................................................. 1.84ms DONE\n events ............................................................................................................................... 0.72ms DONE\n routes ............................................................................................................................... 6.62ms DONE\n views ................................................................................................................................ 4.33ms DONE\n\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.06732048,"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 (docker)","depth":2,"bounds":{"left":0.33759972,"top":1.0,"width":0.06732048,"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.33959442,"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":"-zsh","depth":2,"bounds":{"left":0.40492022,"top":1.0,"width":0.06732048,"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.4069149,"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.4722407,"top":1.0,"width":0.06732048,"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.4742354,"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":"-zsh","depth":2,"bounds":{"left":0.53956115,"top":1.0,"width":0.06715426,"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.5415558,"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":"ec2-user@ip-10-30-129-190:~ (nc)","depth":2,"bounds":{"left":0.60671544,"top":1.0,"width":0.06715426,"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.6087101,"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":"ec2-user@ip-10-30-140-255:~ (-zsh)","depth":2,"bounds":{"left":0.67386967,"top":1.0,"width":0.06715426,"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.67586434,"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.7273936,"top":1.0,"width":0.01861702,"height":-0.023144484},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"DEV (docker)","depth":1,"bounds":{"left":0.49468085,"top":1.0,"width":0.029920213,"height":-0.02394259},"on_screen":true,"role_description":"text"}]...
|
-8902941949581308157
|
-5697495435468530982
|
click
|
accessibility
|
NULL
|
/Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SE /Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SECRET]
/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/.env.local:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/dev.json:18: "DB_ADMIN_PASSWORD" : "dgyt$rTe21-d",
/Users/lukas/jiminny/app/.env:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.vscode/settings.json:16: "password": "dgyt$rTe21-d"
/Users/lukas/jiminny/app/.env.root:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.env.root:394:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.other:14:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#[ENV_SECRET]
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop
320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep
a1718cfb Merge pull request #529 from jiminny/katranci-patch-1
74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3
0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2
4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue
220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url
543c60b8 Merge branch 'develop' into JY-19432-recall-api-url
f163a29e JY-19432 Fix formatting
6de60dd0 JY-19432 Fix formatting
78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances
2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3
d6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code
4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers
6426729b JY-20432 Set stopasgroup to false for dialers queue worker
92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities
e0796d89 Delete obsolete files
4a8b1ea2 Delete old docker build scripts before php-8 upgrade
d790e56d JY-20603 Fix formatting
fc758135 JY-20603 Move video ec2 instances to external subnet
ecb558d5 JY-20761 Spread php-app tasks over ec2 instances
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80
commit a8ba85203fb10fb793ff07a6e85efac833979335
Merge: c15e0c8201 a00d53bdd6
Author: Nikolay Ivanov <[EMAIL]>
Date: Fri May 15 10:44:44 2026 +0300
JY-18091 | Resolve conflicts
commit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1
Author: Nikolay Nikolov <[EMAIL]>
Date: Thu Apr 30 14:54:08 2026 +0300
JY-20625 | JY-20742 | Add laravel/mcp
# Conflicts:
# composer.lock
diff --git a/composer.json b/composer.json
index 02ffcc050e..89551995a1 100644
--- a/composer.json
+++ b/composer.json
@@ -113,6 +113,7 @@
"kalnoy/nestedset": "*",
"laravel/framework": "^12.28",
"laravel/helpers": "^1.7",
+ "laravel/mcp": "^0.7.0",
"laravel/passport": "^13.0",
"laravel/slack-notification-channel": "^3.4",
"laravel/tinker": "^2.10.1",
commit 431b4c096f4ad0272bac595d078871a78b510bb5
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 17:17:47 2026 +0300
JY-18091 | Downgrade composer.json
diff --git a/composer.json b/composer.json
index 5db26da2c9..baacefbd5f 100644
--- a/composer.json
+++ b/composer.json
@@ -187,20 +187,18 @@
"require-dev": {
"barryvdh/laravel-debugbar": "^3.15",
"barryvdh/laravel-ide-helper": "^3.5",
- "brianium/paratest": "^7.12",
+ "brianium/paratest": "^7.5",
"browserstack/browserstack-local": "^1.1.0",
"filp/whoops": "^2.9",
"friendsofphp/php-cs-fixer": "^3.66",
"infection/infection": "^0.29.14",
"jasonmccreary/laravel-test-assertions": "^2.5",
"larastan/larastan": "^3.1",
- "maglnet/composer-require-checker": "^4.8",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
"phpstan/phpstan": "^2.1",
- "phpunit/phpunit": "^12.0",
- "symfony/phpunit-bridge": "^7.0",
- "vimeo/psalm": "^6.5.0"
+ "phpunit/phpunit": "^11.5.50",
+ "symfony/phpunit-bridge": "^7.0"
},
"autoload": {
"classmap": [
commit 90e9b4034f665e2a8cacaf937e55abc070b5af4a
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 16:25:45 2026 +0300
JY-18091 | Changes, composer
diff --git a/composer.json b/composer.json
index 751005e37a..5db26da2c9 100644
--- a/composer.json
+++ b/composer.json
@@ -95,7 +95,7 @@
"google/apps-meet": "^0.5.1",
"guzzlehttp/guzzle": "^7.8",
"guzzlehttp/psr7": "^2.6",
- "halaxa/json-machine": "^1.3",
+ "halaxa/json-machine": "^1.2",
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20
a8ba85203f JY-18091 | Resolve conflicts
4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts
1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp
431b4c096f JY-18091 | Downgrade composer.json
90e9b4034f JY-18091 | Changes, composer
b63d6f5d1f JY-18091 | Composer changes
d017fbd8aa JY-18091 | Merge
7daa10a444 JY-18091 | Cs lint fixes
a472f51b71 JY-18091 | Update composer to support php 8.5
1162b04371 fix(security): bump dependencies (alerts #477)
0c1f2f35df JY-19957 | Update composer.lock with correct dep
574315fc12 JY-19957 | Update composer.locl
c97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade
e4e0e6d46d Merge branch 'master' into secfix/composer-20260415
7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)
4f5795d1d5 JY-20479: Remove unused dependencies
caa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download
07832f2eeb JY-20479: Transcript download PDF optimization
9f17a0f70e JY-20526: Remove Sentence breaker
4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 "^docker-update:" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \
|| grep -rA 20 "^docker-update:" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40
/Users/lukas/jiminny/app/Makefile:docker-update:
/Users/lukas/jiminny/app/Makefile- aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-up:
/Users/lukas/jiminny/app/Makefile- tmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-stop:
/Users/lukas/jiminny/app/Makefile- tmux kill-session -t jiminny_dev_ngrok
/Users/lukas/jiminny/app/Makefile-
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n "arm64v8\|/jiminny/app/qa" ~/jiminny/infrastructure/dev/docker/docker-compose.yml
8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
187d58491294 wernight/ngrok "/entrypoint.sh" 37 seconds ago Up 37 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
b433f55153b5 mariadb:11.4.5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
d09012232958 redis:5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
error: Your local changes to the following files would be overwritten by checkout:
tests/Unit/Services/Mail/TextRelayServiceTest.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M config/logging.php
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 124, done.
remote: Counting objects: 100% (123/123), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)
Receiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.
Resolving deltas: 100% (93/93), completed with 33 local objects.
From github.com:jiminny/app
23fdef5aa9..942ddbe31c master -> origin/master
a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app
96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration
a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
* [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only
+ 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)
* [new branch] master-reset-ES -> origin/master-reset-ES
Updating 23fdef5aa9..942ddbe31c
Fast-forward
contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------
front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----
front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--
front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-
front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------
routes/api_v2.php | 6 +++---
tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------
7 files changed, 61 insertions(+), 46 deletions(-)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env
#IMAGE_TAG="latest"
IMAGE_TAG="arm64v8-latest"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 "lamp:" | grep image
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
docker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest "docker-php-entrypoi…" lamp 3 minutes ago Exited (2) 3 minutes ago
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
87804ee14786 wernight/ngrok "/entrypoint.sh" 18 minutes ago Up 53 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
bc04ffad01b2 mariadb:11.4.5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
e985cd5cfbf7 redis:5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
Filter, search, and stream logs from all your Compose services
in one place with Docker Desktop's Logs view. [URL_WITH_CREDENTIALS]
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2
Learn more at [URL_WITH_CREDENTIALS] php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 9.84ms DONE
cache [PASSWORD_DOTS] 69.91ms DONE
compiled [PASSWORD_DOTS] 2.96ms DONE
events [PASSWORD_DOTS] 1.19ms DONE
routes [PASSWORD_DOTS] 0.65ms DONE
views [PASSWORD_DOTS] 4.44ms DONE
worker-crm-update:worker-crm-update_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-download:worker-download_00: stopped
worker-nudges:worker-nudges_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-emails:worker-emails_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan tinker
Psy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman
New PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`
> app(\Jiminny\Services\Mail\TextRelayService::class)->sync();
= []
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 3.45ms DONE
cache [PASSWORD_DOTS] 10.26ms DONE
compiled [PASSWORD_DOTS] 1.84ms DONE
events [PASSWORD_DOTS] 0.72ms DONE
routes [PASSWORD_DOTS] 6.62ms DONE
views [PASSWORD_DOTS] 4.33ms DONE
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-download:worker-download_00: stopped
worker-emails:worker-emails_00: stopped
worker-nudges:worker-nudges_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-conferences:worker-conferences_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan
DOCKER
Close Tab
DEV (docker)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ec2-user@ip-10-30-129-190:~ (nc)
Close Tab
ec2-user@ip-10-30-140-255:~ (-zsh)
Close Tab
⌥⌘1
DEV (docker)...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
78738
|
2764
|
37
|
2026-05-27T12:57:18.546753+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886638546_m2.jpg...
|
PhpStorm
|
faVsco.js – SyncMailbox.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands\Mailboxes\TextRelay;
use Jiminny\Console\Commands\Command;
use Jiminny\Services\Mail\TextRelayService;
class SyncMailbox extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'mailbox:text-relay:sync';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Sync text relay\'s mailbox with latest messages.';
private $relayService;
public function __construct(TextRelayService $relayService)
{
parent::__construct();
$this->relayService = $relayService;
}
/**
* Execute the console command.
*
*/
public function handle(): void
{
try {
// If we don't have relay configuration, just bail now.
if (config('jiminny.google_text_host') === null) {
return;
}
$messageIds = $this->relayService->sync();
$this->line('Relayed ' . count($messageIds) . ' message(s).');
} catch (\Exception $e) {
$this->error($e->getMessage());
\Sentry::captureException($e);
}
}
}...
|
[{"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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.09740692,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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.8374335,"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":"TextRelayServiceTest","depth":6,"bounds":{"left":0.85272604,"top":0.019952115,"width":0.062832445,"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 'TextRelayServiceTest'","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 'TextRelayServiceTest'","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":"3","depth":4,"bounds":{"left":0.38730052,"top":0.10055866,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.39694148,"top":0.09896249,"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.40425533,"top":0.09896249,"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\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands\\Mailboxes\\TextRelay;\n\nuse Jiminny\\Console\\Commands\\Command;\nuse Jiminny\\Services\\Mail\\TextRelayService;\n\nclass SyncMailbox extends Command\n{\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected $signature = 'mailbox:text-relay:sync';\n\n /**\n * The console command description.\n *\n * @var string\n */\n protected $description = 'Sync text relay\\'s mailbox with latest messages.';\n private $relayService;\n\n public function __construct(TextRelayService $relayService)\n {\n parent::__construct();\n\n $this->relayService = $relayService;\n }\n\n /**\n * Execute the console command.\n *\n */\n public function handle(): void\n {\n try {\n // If we don't have relay configuration, just bail now.\n if (config('jiminny.google_text_host') === null) {\n return;\n }\n\n $messageIds = $this->relayService->sync();\n\n $this->line('Relayed ' . count($messageIds) . ' message(s).');\n } catch (\\Exception $e) {\n $this->error($e->getMessage());\n\n \\Sentry::captureException($e);\n }\n }\n}","depth":4,"bounds":{"left":0.13896276,"top":0.0,"width":0.27227393,"height":1.0},"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands\\Mailboxes\\TextRelay;\n\nuse Jiminny\\Console\\Commands\\Command;\nuse Jiminny\\Services\\Mail\\TextRelayService;\n\nclass SyncMailbox extends Command\n{\n /**\n * The name and signature of the console command.\n *\n * @var string\n */\n protected $signature = 'mailbox:text-relay:sync';\n\n /**\n * The console command description.\n *\n * @var string\n */\n protected $description = 'Sync text relay\\'s mailbox with latest messages.';\n private $relayService;\n\n public function __construct(TextRelayService $relayService)\n {\n parent::__construct();\n\n $this->relayService = $relayService;\n }\n\n /**\n * Execute the console command.\n *\n */\n public function handle(): void\n {\n try {\n // If we don't have relay configuration, just bail now.\n if (config('jiminny.google_text_host') === null) {\n return;\n }\n\n $messageIds = $this->relayService->sync();\n\n $this->line('Relayed ' . count($messageIds) . ' message(s).');\n } catch (\\Exception $e) {\n $this->error($e->getMessage());\n\n \\Sentry::captureException($e);\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false}]...
|
-8362863801575691127
|
-1317650987187994298
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands\Mailboxes\TextRelay;
use Jiminny\Console\Commands\Command;
use Jiminny\Services\Mail\TextRelayService;
class SyncMailbox extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'mailbox:text-relay:sync';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Sync text relay\'s mailbox with latest messages.';
private $relayService;
public function __construct(TextRelayService $relayService)
{
parent::__construct();
$this->relayService = $relayService;
}
/**
* Execute the console command.
*
*/
public function handle(): void
{
try {
// If we don't have relay configuration, just bail now.
if (config('jiminny.google_text_host') === null) {
return;
}
$messageIds = $this->relayService->sync();
$this->line('Relayed ' . count($messageIds) . ' message(s).');
} catch (\Exception $e) {
$this->error($e->getMessage());
\Sentry::captureException($e);
}
}
}...
|
78736
|
NULL
|
NULL
|
NULL
|
|
78737
|
2763
|
31
|
2026-05-27T12:57:15.763156+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886635763_m1.jpg...
|
iTerm2
|
DEV (docker)
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
/Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SE /Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SECRET]
/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/.env.local:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/dev.json:18: "DB_ADMIN_PASSWORD" : "dgyt$rTe21-d",
/Users/lukas/jiminny/app/.env:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.vscode/settings.json:16: "password": "dgyt$rTe21-d"
/Users/lukas/jiminny/app/.env.root:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.env.root:394:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.other:14:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#[ENV_SECRET]
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop
320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep
a1718cfb Merge pull request #529 from jiminny/katranci-patch-1
74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3
0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2
4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue
220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url
543c60b8 Merge branch 'develop' into JY-19432-recall-api-url
f163a29e JY-19432 Fix formatting
6de60dd0 JY-19432 Fix formatting
78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances
2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3
d6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code
4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers
6426729b JY-20432 Set stopasgroup to false for dialers queue worker
92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities
e0796d89 Delete obsolete files
4a8b1ea2 Delete old docker build scripts before php-8 upgrade
d790e56d JY-20603 Fix formatting
fc758135 JY-20603 Move video ec2 instances to external subnet
ecb558d5 JY-20761 Spread php-app tasks over ec2 instances
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80
commit a8ba85203fb10fb793ff07a6e85efac833979335
Merge: c15e0c8201 a00d53bdd6
Author: Nikolay Ivanov <[EMAIL]>
Date: Fri May 15 10:44:44 2026 +0300
JY-18091 | Resolve conflicts
commit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1
Author: Nikolay Nikolov <[EMAIL]>
Date: Thu Apr 30 14:54:08 2026 +0300
JY-20625 | JY-20742 | Add laravel/mcp
# Conflicts:
# composer.lock
diff --git a/composer.json b/composer.json
index 02ffcc050e..89551995a1 100644
--- a/composer.json
+++ b/composer.json
@@ -113,6 +113,7 @@
"kalnoy/nestedset": "*",
"laravel/framework": "^12.28",
"laravel/helpers": "^1.7",
+ "laravel/mcp": "^0.7.0",
"laravel/passport": "^13.0",
"laravel/slack-notification-channel": "^3.4",
"laravel/tinker": "^2.10.1",
commit 431b4c096f4ad0272bac595d078871a78b510bb5
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 17:17:47 2026 +0300
JY-18091 | Downgrade composer.json
diff --git a/composer.json b/composer.json
index 5db26da2c9..baacefbd5f 100644
--- a/composer.json
+++ b/composer.json
@@ -187,20 +187,18 @@
"require-dev": {
"barryvdh/laravel-debugbar": "^3.15",
"barryvdh/laravel-ide-helper": "^3.5",
- "brianium/paratest": "^7.12",
+ "brianium/paratest": "^7.5",
"browserstack/browserstack-local": "^1.1.0",
"filp/whoops": "^2.9",
"friendsofphp/php-cs-fixer": "^3.66",
"infection/infection": "^0.29.14",
"jasonmccreary/laravel-test-assertions": "^2.5",
"larastan/larastan": "^3.1",
- "maglnet/composer-require-checker": "^4.8",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
"phpstan/phpstan": "^2.1",
- "phpunit/phpunit": "^12.0",
- "symfony/phpunit-bridge": "^7.0",
- "vimeo/psalm": "^6.5.0"
+ "phpunit/phpunit": "^11.5.50",
+ "symfony/phpunit-bridge": "^7.0"
},
"autoload": {
"classmap": [
commit 90e9b4034f665e2a8cacaf937e55abc070b5af4a
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 16:25:45 2026 +0300
JY-18091 | Changes, composer
diff --git a/composer.json b/composer.json
index 751005e37a..5db26da2c9 100644
--- a/composer.json
+++ b/composer.json
@@ -95,7 +95,7 @@
"google/apps-meet": "^0.5.1",
"guzzlehttp/guzzle": "^7.8",
"guzzlehttp/psr7": "^2.6",
- "halaxa/json-machine": "^1.3",
+ "halaxa/json-machine": "^1.2",
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20
a8ba85203f JY-18091 | Resolve conflicts
4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts
1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp
431b4c096f JY-18091 | Downgrade composer.json
90e9b4034f JY-18091 | Changes, composer
b63d6f5d1f JY-18091 | Composer changes
d017fbd8aa JY-18091 | Merge
7daa10a444 JY-18091 | Cs lint fixes
a472f51b71 JY-18091 | Update composer to support php 8.5
1162b04371 fix(security): bump dependencies (alerts #477)
0c1f2f35df JY-19957 | Update composer.lock with correct dep
574315fc12 JY-19957 | Update composer.locl
c97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade
e4e0e6d46d Merge branch 'master' into secfix/composer-20260415
7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)
4f5795d1d5 JY-20479: Remove unused dependencies
caa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download
07832f2eeb JY-20479: Transcript download PDF optimization
9f17a0f70e JY-20526: Remove Sentence breaker
4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 "^docker-update:" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \
|| grep -rA 20 "^docker-update:" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40
/Users/lukas/jiminny/app/Makefile:docker-update:
/Users/lukas/jiminny/app/Makefile- aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-up:
/Users/lukas/jiminny/app/Makefile- tmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-stop:
/Users/lukas/jiminny/app/Makefile- tmux kill-session -t jiminny_dev_ngrok
/Users/lukas/jiminny/app/Makefile-
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n "arm64v8\|/jiminny/app/qa" ~/jiminny/infrastructure/dev/docker/docker-compose.yml
8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
187d58491294 wernight/ngrok "/entrypoint.sh" 37 seconds ago Up 37 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
b433f55153b5 mariadb:11.4.5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
d09012232958 redis:5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
error: Your local changes to the following files would be overwritten by checkout:
tests/Unit/Services/Mail/TextRelayServiceTest.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M config/logging.php
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 124, done.
remote: Counting objects: 100% (123/123), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)
Receiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.
Resolving deltas: 100% (93/93), completed with 33 local objects.
From github.com:jiminny/app
23fdef5aa9..942ddbe31c master -> origin/master
a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app
96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration
a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
* [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only
+ 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)
* [new branch] master-reset-ES -> origin/master-reset-ES
Updating 23fdef5aa9..942ddbe31c
Fast-forward
contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------
front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----
front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--
front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-
front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------
routes/api_v2.php | 6 +++---
tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------
7 files changed, 61 insertions(+), 46 deletions(-)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env
#IMAGE_TAG="latest"
IMAGE_TAG="arm64v8-latest"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 "lamp:" | grep image
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
docker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest "docker-php-entrypoi…" lamp 3 minutes ago Exited (2) 3 minutes ago
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
87804ee14786 wernight/ngrok "/entrypoint.sh" 18 minutes ago Up 53 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
bc04ffad01b2 mariadb:11.4.5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
e985cd5cfbf7 redis:5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
Filter, search, and stream logs from all your Compose services
in one place with Docker Desktop's Logs view. [URL_WITH_CREDENTIALS]
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2
Learn more at [URL_WITH_CREDENTIALS] php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 9.84ms DONE
cache [PASSWORD_DOTS] 69.91ms DONE
compiled [PASSWORD_DOTS] 2.96ms DONE
events [PASSWORD_DOTS] 1.19ms DONE
routes [PASSWORD_DOTS] 0.65ms DONE
views [PASSWORD_DOTS] 4.44ms DONE
worker-crm-update:worker-crm-update_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-download:worker-download_00: stopped
worker-nudges:worker-nudges_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-emails:worker-emails_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan tinker
Psy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman
New PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`
> app(\Jiminny\Services\Mail\TextRelayService::class)->sync();
= []
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 3.45ms DONE
cache [PASSWORD_DOTS] 10.26ms DONE
compiled [PASSWORD_DOTS] 1.84ms DONE
events [PASSWORD_DOTS] 0.72ms DONE
routes [PASSWORD_DOTS] 6.62ms DONE
views [PASSWORD_DOTS] 4.33ms DONE
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-download:worker-download_00: stopped
worker-emails:worker-emails_00: stopped
worker-nudges:worker-nudges_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-conferences:worker-conferences_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan
DOCKER
Close Tab
DEV (docker)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ec2-user@ip-10-30-129-190:~ (nc)
Close Tab
ec2-user@ip-10-30-140-255:~ (-zsh)
Close Tab
⌥⌘1
DEV (docker)...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"/Users/lukas/jiminny/app/.env.nikilocal:22:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/.env.local:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/dev.json:18: \"DB_ADMIN_PASSWORD\" : \"dgyt$rTe21-d\",\n/Users/lukas/jiminny/app/.env:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.vscode/settings.json:16: \"password\": \"dgyt$rTe21-d\"\n/Users/lukas/jiminny/app/.env.root:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.root:394:DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.other:14:DB_PASSWORD=dgyt\\$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop\n320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep\na1718cfb Merge pull request #529 from jiminny/katranci-patch-1\n74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3\n0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2\n4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue\n220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url\n543c60b8 Merge branch 'develop' into JY-19432-recall-api-url\nf163a29e JY-19432 Fix formatting\n6de60dd0 JY-19432 Fix formatting\n78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances\n2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3\nd6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code\n4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers\n6426729b JY-20432 Set stopasgroup to false for dialers queue worker\n92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities\ne0796d89 Delete obsolete files\n4a8b1ea2 Delete old docker build scripts before php-8 upgrade\nd790e56d JY-20603 Fix formatting\nfc758135 JY-20603 Move video ec2 instances to external subnet\necb558d5 JY-20761 Spread php-app tasks over ec2 instances\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80\n\ncommit a8ba85203fb10fb793ff07a6e85efac833979335\nMerge: c15e0c8201 a00d53bdd6\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Fri May 15 10:44:44 2026 +0300\n\n JY-18091 | Resolve conflicts\n\ncommit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1\nAuthor: Nikolay Nikolov <nikolay.nikolov@jiminny.com>\nDate: Thu Apr 30 14:54:08 2026 +0300\n\n JY-20625 | JY-20742 | Add laravel/mcp\n \n # Conflicts:\n # composer.lock\n\ndiff --git a/composer.json b/composer.json\nindex 02ffcc050e..89551995a1 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -113,6 +113,7 @@\n \"kalnoy/nestedset\": \"*\",\n \"laravel/framework\": \"^12.28\",\n \"laravel/helpers\": \"^1.7\",\n+ \"laravel/mcp\": \"^0.7.0\",\n \"laravel/passport\": \"^13.0\",\n \"laravel/slack-notification-channel\": \"^3.4\",\n \"laravel/tinker\": \"^2.10.1\",\n\ncommit 431b4c096f4ad0272bac595d078871a78b510bb5\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 17:17:47 2026 +0300\n\n JY-18091 | Downgrade composer.json\n\ndiff --git a/composer.json b/composer.json\nindex 5db26da2c9..baacefbd5f 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -187,20 +187,18 @@\n \"require-dev\": {\n \"barryvdh/laravel-debugbar\": \"^3.15\",\n \"barryvdh/laravel-ide-helper\": \"^3.5\",\n- \"brianium/paratest\": \"^7.12\",\n+ \"brianium/paratest\": \"^7.5\",\n \"browserstack/browserstack-local\": \"^1.1.0\",\n \"filp/whoops\": \"^2.9\",\n \"friendsofphp/php-cs-fixer\": \"^3.66\",\n \"infection/infection\": \"^0.29.14\",\n \"jasonmccreary/laravel-test-assertions\": \"^2.5\",\n \"larastan/larastan\": \"^3.1\",\n- \"maglnet/composer-require-checker\": \"^4.8\",\n \"mockery/mockery\": \"^1.6\",\n \"nunomaduro/collision\": \"^8.6\",\n \"phpstan/phpstan\": \"^2.1\",\n- \"phpunit/phpunit\": \"^12.0\",\n- \"symfony/phpunit-bridge\": \"^7.0\",\n- \"vimeo/psalm\": \"^6.5.0\"\n+ \"phpunit/phpunit\": \"^11.5.50\",\n+ \"symfony/phpunit-bridge\": \"^7.0\"\n },\n \"autoload\": {\n \"classmap\": [\n\ncommit 90e9b4034f665e2a8cacaf937e55abc070b5af4a\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 16:25:45 2026 +0300\n\n JY-18091 | Changes, composer\n\ndiff --git a/composer.json b/composer.json\nindex 751005e37a..5db26da2c9 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -95,7 +95,7 @@\n \"google/apps-meet\": \"^0.5.1\",\n \"guzzlehttp/guzzle\": \"^7.8\",\n \"guzzlehttp/psr7\": \"^2.6\",\n- \"halaxa/json-machine\": \"^1.3\",\n+ \"halaxa/json-machine\": \"^1.2\",\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20\n\na8ba85203f JY-18091 | Resolve conflicts\n4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts\n1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp\n431b4c096f JY-18091 | Downgrade composer.json\n90e9b4034f JY-18091 | Changes, composer\nb63d6f5d1f JY-18091 | Composer changes\nd017fbd8aa JY-18091 | Merge\n7daa10a444 JY-18091 | Cs lint fixes\na472f51b71 JY-18091 | Update composer to support php 8.5\n1162b04371 fix(security): bump dependencies (alerts #477)\n0c1f2f35df JY-19957 | Update composer.lock with correct dep\n574315fc12 JY-19957 | Update composer.locl\nc97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade\ne4e0e6d46d Merge branch 'master' into secfix/composer-20260415\n7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)\n4f5795d1d5 JY-20479: Remove unused dependencies\ncaa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download\n07832f2eeb JY-20479: Transcript download PDF optimization\n9f17a0f70e JY-20526: Remove Sentence breaker\n4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 \"^docker-update:\" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \\\n || grep -rA 20 \"^docker-update:\" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40\n/Users/lukas/jiminny/app/Makefile:docker-update:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\taws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-up:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-stop:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux kill-session -t jiminny_dev_ngrok\n/Users/lukas/jiminny/app/Makefile-\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n \"arm64v8\\|/jiminny/app/qa\" ~/jiminny/infrastructure/dev/docker/docker-compose.yml\n8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 37 seconds ago Up 37 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n187d58491294 wernight/ngrok \"/entrypoint.sh\" 37 seconds ago Up 37 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nb433f55153b5 mariadb:11.4.5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\n207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 37 seconds ago Up 37 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nd09012232958 redis:5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Services/Mail/TextRelayServiceTest.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nSwitched to branch 'master'\nYour branch is up to date with 'origin/master'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 124, done.\nremote: Counting objects: 100% (123/123), done.\nremote: Compressing objects: 100% (32/32), done.\nremote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)\nReceiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.\nResolving deltas: 100% (93/93), completed with 33 local objects.\nFrom github.com:jiminny/app\n 23fdef5aa9..942ddbe31c master -> origin/master\n a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app\n 96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration\n a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details\n * [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only\n + 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)\n * [new branch] master-reset-ES -> origin/master-reset-ES\nUpdating 23fdef5aa9..942ddbe31c\nFast-forward\n contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------\n front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----\n front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--\n front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-\n front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------\n routes/api_v2.php | 6 +++---\n tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------\n 7 files changed, 61 insertions(+), 46 deletions(-)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\nphp-8.5: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\narm64v8-php-8.5: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env\n#IMAGE_TAG=\"latest\"\nIMAGE_TAG=\"arm64v8-latest\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 \"lamp:\" | grep image\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \ndocker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest \"docker-php-entrypoi…\" lamp 3 minutes ago Exited (2) 3 minutes ago \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\nlatest: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\narm64v8-latest: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\nff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 18 minutes ago Up 53 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n87804ee14786 wernight/ngrok \"/entrypoint.sh\" 18 minutes ago Up 53 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nbc04ffad01b2 mariadb:11.4.5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\ne985cd5cfbf7 redis:5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\n121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 18 minutes ago Up 53 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\n Filter, search, and stream logs from all your Compose services\n in one place with Docker Desktop's Logs view. docker-desktop://dashboard/logs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\nroot@docker_lamp_1:/home/jiminny# ^C\nroot@docker_lamp_1:/home/jiminny# \nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entity) $ dev\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> exit\n\n INFO Goodbye.\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 9.84ms DONE\n cache ............................................................................................................................... 69.91ms DONE\n compiled ............................................................................................................................. 2.96ms DONE\n events ............................................................................................................................... 1.19ms DONE\n routes ............................................................................................................................... 0.65ms DONE\n views ................................................................................................................................ 4.44ms DONE\n\nworker-crm-update:worker-crm-update_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-download:worker-download_00: stopped\nworker-nudges:worker-nudges_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> app(\\Jiminny\\Services\\Mail\\TextRelayService::class)->sync();\n\n= []\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 3.45ms DONE\n cache ............................................................................................................................... 10.26ms DONE\n compiled ............................................................................................................................. 1.84ms DONE\n events ............................................................................................................................... 0.72ms DONE\n routes ............................................................................................................................... 6.62ms DONE\n views ................................................................................................................................ 4.33ms DONE\n\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan","depth":4,"on_screen":true,"value":"/Users/lukas/jiminny/app/.env.nikilocal:22:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/.env.local:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/dev.json:18: \"DB_ADMIN_PASSWORD\" : \"dgyt$rTe21-d\",\n/Users/lukas/jiminny/app/.env:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.vscode/settings.json:16: \"password\": \"dgyt$rTe21-d\"\n/Users/lukas/jiminny/app/.env.root:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.root:394:DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.other:14:DB_PASSWORD=dgyt\\$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop\n320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep\na1718cfb Merge pull request #529 from jiminny/katranci-patch-1\n74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3\n0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2\n4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue\n220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url\n543c60b8 Merge branch 'develop' into JY-19432-recall-api-url\nf163a29e JY-19432 Fix formatting\n6de60dd0 JY-19432 Fix formatting\n78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances\n2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3\nd6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code\n4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers\n6426729b JY-20432 Set stopasgroup to false for dialers queue worker\n92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities\ne0796d89 Delete obsolete files\n4a8b1ea2 Delete old docker build scripts before php-8 upgrade\nd790e56d JY-20603 Fix formatting\nfc758135 JY-20603 Move video ec2 instances to external subnet\necb558d5 JY-20761 Spread php-app tasks over ec2 instances\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80\n\ncommit a8ba85203fb10fb793ff07a6e85efac833979335\nMerge: c15e0c8201 a00d53bdd6\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Fri May 15 10:44:44 2026 +0300\n\n JY-18091 | Resolve conflicts\n\ncommit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1\nAuthor: Nikolay Nikolov <nikolay.nikolov@jiminny.com>\nDate: Thu Apr 30 14:54:08 2026 +0300\n\n JY-20625 | JY-20742 | Add laravel/mcp\n \n # Conflicts:\n # composer.lock\n\ndiff --git a/composer.json b/composer.json\nindex 02ffcc050e..89551995a1 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -113,6 +113,7 @@\n \"kalnoy/nestedset\": \"*\",\n \"laravel/framework\": \"^12.28\",\n \"laravel/helpers\": \"^1.7\",\n+ \"laravel/mcp\": \"^0.7.0\",\n \"laravel/passport\": \"^13.0\",\n \"laravel/slack-notification-channel\": \"^3.4\",\n \"laravel/tinker\": \"^2.10.1\",\n\ncommit 431b4c096f4ad0272bac595d078871a78b510bb5\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 17:17:47 2026 +0300\n\n JY-18091 | Downgrade composer.json\n\ndiff --git a/composer.json b/composer.json\nindex 5db26da2c9..baacefbd5f 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -187,20 +187,18 @@\n \"require-dev\": {\n \"barryvdh/laravel-debugbar\": \"^3.15\",\n \"barryvdh/laravel-ide-helper\": \"^3.5\",\n- \"brianium/paratest\": \"^7.12\",\n+ \"brianium/paratest\": \"^7.5\",\n \"browserstack/browserstack-local\": \"^1.1.0\",\n \"filp/whoops\": \"^2.9\",\n \"friendsofphp/php-cs-fixer\": \"^3.66\",\n \"infection/infection\": \"^0.29.14\",\n \"jasonmccreary/laravel-test-assertions\": \"^2.5\",\n \"larastan/larastan\": \"^3.1\",\n- \"maglnet/composer-require-checker\": \"^4.8\",\n \"mockery/mockery\": \"^1.6\",\n \"nunomaduro/collision\": \"^8.6\",\n \"phpstan/phpstan\": \"^2.1\",\n- \"phpunit/phpunit\": \"^12.0\",\n- \"symfony/phpunit-bridge\": \"^7.0\",\n- \"vimeo/psalm\": \"^6.5.0\"\n+ \"phpunit/phpunit\": \"^11.5.50\",\n+ \"symfony/phpunit-bridge\": \"^7.0\"\n },\n \"autoload\": {\n \"classmap\": [\n\ncommit 90e9b4034f665e2a8cacaf937e55abc070b5af4a\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 16:25:45 2026 +0300\n\n JY-18091 | Changes, composer\n\ndiff --git a/composer.json b/composer.json\nindex 751005e37a..5db26da2c9 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -95,7 +95,7 @@\n \"google/apps-meet\": \"^0.5.1\",\n \"guzzlehttp/guzzle\": \"^7.8\",\n \"guzzlehttp/psr7\": \"^2.6\",\n- \"halaxa/json-machine\": \"^1.3\",\n+ \"halaxa/json-machine\": \"^1.2\",\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20\n\na8ba85203f JY-18091 | Resolve conflicts\n4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts\n1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp\n431b4c096f JY-18091 | Downgrade composer.json\n90e9b4034f JY-18091 | Changes, composer\nb63d6f5d1f JY-18091 | Composer changes\nd017fbd8aa JY-18091 | Merge\n7daa10a444 JY-18091 | Cs lint fixes\na472f51b71 JY-18091 | Update composer to support php 8.5\n1162b04371 fix(security): bump dependencies (alerts #477)\n0c1f2f35df JY-19957 | Update composer.lock with correct dep\n574315fc12 JY-19957 | Update composer.locl\nc97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade\ne4e0e6d46d Merge branch 'master' into secfix/composer-20260415\n7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)\n4f5795d1d5 JY-20479: Remove unused dependencies\ncaa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download\n07832f2eeb JY-20479: Transcript download PDF optimization\n9f17a0f70e JY-20526: Remove Sentence breaker\n4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 \"^docker-update:\" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \\\n || grep -rA 20 \"^docker-update:\" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40\n/Users/lukas/jiminny/app/Makefile:docker-update:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\taws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-up:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-stop:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux kill-session -t jiminny_dev_ngrok\n/Users/lukas/jiminny/app/Makefile-\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n \"arm64v8\\|/jiminny/app/qa\" ~/jiminny/infrastructure/dev/docker/docker-compose.yml\n8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 37 seconds ago Up 37 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n187d58491294 wernight/ngrok \"/entrypoint.sh\" 37 seconds ago Up 37 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nb433f55153b5 mariadb:11.4.5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\n207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 37 seconds ago Up 37 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nd09012232958 redis:5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Services/Mail/TextRelayServiceTest.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nSwitched to branch 'master'\nYour branch is up to date with 'origin/master'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 124, done.\nremote: Counting objects: 100% (123/123), done.\nremote: Compressing objects: 100% (32/32), done.\nremote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)\nReceiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.\nResolving deltas: 100% (93/93), completed with 33 local objects.\nFrom github.com:jiminny/app\n 23fdef5aa9..942ddbe31c master -> origin/master\n a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app\n 96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration\n a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details\n * [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only\n + 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)\n * [new branch] master-reset-ES -> origin/master-reset-ES\nUpdating 23fdef5aa9..942ddbe31c\nFast-forward\n contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------\n front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----\n front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--\n front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-\n front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------\n routes/api_v2.php | 6 +++---\n tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------\n 7 files changed, 61 insertions(+), 46 deletions(-)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\nphp-8.5: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\narm64v8-php-8.5: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env\n#IMAGE_TAG=\"latest\"\nIMAGE_TAG=\"arm64v8-latest\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 \"lamp:\" | grep image\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \ndocker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest \"docker-php-entrypoi…\" lamp 3 minutes ago Exited (2) 3 minutes ago \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\nlatest: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\narm64v8-latest: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\nff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 18 minutes ago Up 53 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n87804ee14786 wernight/ngrok \"/entrypoint.sh\" 18 minutes ago Up 53 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nbc04ffad01b2 mariadb:11.4.5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\ne985cd5cfbf7 redis:5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\n121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 18 minutes ago Up 53 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\n Filter, search, and stream logs from all your Compose services\n in one place with Docker Desktop's Logs view. docker-desktop://dashboard/logs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\nroot@docker_lamp_1:/home/jiminny# ^C\nroot@docker_lamp_1:/home/jiminny# \nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entity) $ dev\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> exit\n\n INFO Goodbye.\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 9.84ms DONE\n cache ............................................................................................................................... 69.91ms DONE\n compiled ............................................................................................................................. 2.96ms DONE\n events ............................................................................................................................... 1.19ms DONE\n routes ............................................................................................................................... 0.65ms DONE\n views ................................................................................................................................ 4.44ms DONE\n\nworker-crm-update:worker-crm-update_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-download:worker-download_00: stopped\nworker-nudges:worker-nudges_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> app(\\Jiminny\\Services\\Mail\\TextRelayService::class)->sync();\n\n= []\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 3.45ms DONE\n cache ............................................................................................................................... 10.26ms DONE\n compiled ............................................................................................................................. 1.84ms DONE\n events ............................................................................................................................... 0.72ms DONE\n routes ............................................................................................................................... 6.62ms DONE\n views ................................................................................................................................ 4.33ms DONE\n\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (docker)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"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.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"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.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-129-190:~ (nc)","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"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.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-140-255:~ (-zsh)","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"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.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"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.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"DEV (docker)","depth":1,"bounds":{"left":0.46875,"top":0.033333335,"width":0.0625,"height":0.017777778},"on_screen":true,"role_description":"text"}]...
|
-8902941949581308157
|
-5697495435468530982
|
visual_change
|
accessibility
|
NULL
|
/Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SE /Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SECRET]
/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/.env.local:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/dev.json:18: "DB_ADMIN_PASSWORD" : "dgyt$rTe21-d",
/Users/lukas/jiminny/app/.env:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.vscode/settings.json:16: "password": "dgyt$rTe21-d"
/Users/lukas/jiminny/app/.env.root:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.env.root:394:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.other:14:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#[ENV_SECRET]
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop
320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep
a1718cfb Merge pull request #529 from jiminny/katranci-patch-1
74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3
0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2
4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue
220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url
543c60b8 Merge branch 'develop' into JY-19432-recall-api-url
f163a29e JY-19432 Fix formatting
6de60dd0 JY-19432 Fix formatting
78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances
2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3
d6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code
4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers
6426729b JY-20432 Set stopasgroup to false for dialers queue worker
92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities
e0796d89 Delete obsolete files
4a8b1ea2 Delete old docker build scripts before php-8 upgrade
d790e56d JY-20603 Fix formatting
fc758135 JY-20603 Move video ec2 instances to external subnet
ecb558d5 JY-20761 Spread php-app tasks over ec2 instances
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80
commit a8ba85203fb10fb793ff07a6e85efac833979335
Merge: c15e0c8201 a00d53bdd6
Author: Nikolay Ivanov <[EMAIL]>
Date: Fri May 15 10:44:44 2026 +0300
JY-18091 | Resolve conflicts
commit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1
Author: Nikolay Nikolov <[EMAIL]>
Date: Thu Apr 30 14:54:08 2026 +0300
JY-20625 | JY-20742 | Add laravel/mcp
# Conflicts:
# composer.lock
diff --git a/composer.json b/composer.json
index 02ffcc050e..89551995a1 100644
--- a/composer.json
+++ b/composer.json
@@ -113,6 +113,7 @@
"kalnoy/nestedset": "*",
"laravel/framework": "^12.28",
"laravel/helpers": "^1.7",
+ "laravel/mcp": "^0.7.0",
"laravel/passport": "^13.0",
"laravel/slack-notification-channel": "^3.4",
"laravel/tinker": "^2.10.1",
commit 431b4c096f4ad0272bac595d078871a78b510bb5
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 17:17:47 2026 +0300
JY-18091 | Downgrade composer.json
diff --git a/composer.json b/composer.json
index 5db26da2c9..baacefbd5f 100644
--- a/composer.json
+++ b/composer.json
@@ -187,20 +187,18 @@
"require-dev": {
"barryvdh/laravel-debugbar": "^3.15",
"barryvdh/laravel-ide-helper": "^3.5",
- "brianium/paratest": "^7.12",
+ "brianium/paratest": "^7.5",
"browserstack/browserstack-local": "^1.1.0",
"filp/whoops": "^2.9",
"friendsofphp/php-cs-fixer": "^3.66",
"infection/infection": "^0.29.14",
"jasonmccreary/laravel-test-assertions": "^2.5",
"larastan/larastan": "^3.1",
- "maglnet/composer-require-checker": "^4.8",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
"phpstan/phpstan": "^2.1",
- "phpunit/phpunit": "^12.0",
- "symfony/phpunit-bridge": "^7.0",
- "vimeo/psalm": "^6.5.0"
+ "phpunit/phpunit": "^11.5.50",
+ "symfony/phpunit-bridge": "^7.0"
},
"autoload": {
"classmap": [
commit 90e9b4034f665e2a8cacaf937e55abc070b5af4a
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 16:25:45 2026 +0300
JY-18091 | Changes, composer
diff --git a/composer.json b/composer.json
index 751005e37a..5db26da2c9 100644
--- a/composer.json
+++ b/composer.json
@@ -95,7 +95,7 @@
"google/apps-meet": "^0.5.1",
"guzzlehttp/guzzle": "^7.8",
"guzzlehttp/psr7": "^2.6",
- "halaxa/json-machine": "^1.3",
+ "halaxa/json-machine": "^1.2",
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20
a8ba85203f JY-18091 | Resolve conflicts
4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts
1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp
431b4c096f JY-18091 | Downgrade composer.json
90e9b4034f JY-18091 | Changes, composer
b63d6f5d1f JY-18091 | Composer changes
d017fbd8aa JY-18091 | Merge
7daa10a444 JY-18091 | Cs lint fixes
a472f51b71 JY-18091 | Update composer to support php 8.5
1162b04371 fix(security): bump dependencies (alerts #477)
0c1f2f35df JY-19957 | Update composer.lock with correct dep
574315fc12 JY-19957 | Update composer.locl
c97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade
e4e0e6d46d Merge branch 'master' into secfix/composer-20260415
7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)
4f5795d1d5 JY-20479: Remove unused dependencies
caa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download
07832f2eeb JY-20479: Transcript download PDF optimization
9f17a0f70e JY-20526: Remove Sentence breaker
4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 "^docker-update:" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \
|| grep -rA 20 "^docker-update:" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40
/Users/lukas/jiminny/app/Makefile:docker-update:
/Users/lukas/jiminny/app/Makefile- aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-up:
/Users/lukas/jiminny/app/Makefile- tmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-stop:
/Users/lukas/jiminny/app/Makefile- tmux kill-session -t jiminny_dev_ngrok
/Users/lukas/jiminny/app/Makefile-
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n "arm64v8\|/jiminny/app/qa" ~/jiminny/infrastructure/dev/docker/docker-compose.yml
8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
187d58491294 wernight/ngrok "/entrypoint.sh" 37 seconds ago Up 37 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
b433f55153b5 mariadb:11.4.5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
d09012232958 redis:5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
error: Your local changes to the following files would be overwritten by checkout:
tests/Unit/Services/Mail/TextRelayServiceTest.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M config/logging.php
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 124, done.
remote: Counting objects: 100% (123/123), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)
Receiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.
Resolving deltas: 100% (93/93), completed with 33 local objects.
From github.com:jiminny/app
23fdef5aa9..942ddbe31c master -> origin/master
a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app
96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration
a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
* [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only
+ 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)
* [new branch] master-reset-ES -> origin/master-reset-ES
Updating 23fdef5aa9..942ddbe31c
Fast-forward
contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------
front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----
front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--
front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-
front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------
routes/api_v2.php | 6 +++---
tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------
7 files changed, 61 insertions(+), 46 deletions(-)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env
#IMAGE_TAG="latest"
IMAGE_TAG="arm64v8-latest"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 "lamp:" | grep image
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
docker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest "docker-php-entrypoi…" lamp 3 minutes ago Exited (2) 3 minutes ago
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
87804ee14786 wernight/ngrok "/entrypoint.sh" 18 minutes ago Up 53 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
bc04ffad01b2 mariadb:11.4.5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
e985cd5cfbf7 redis:5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
Filter, search, and stream logs from all your Compose services
in one place with Docker Desktop's Logs view. [URL_WITH_CREDENTIALS]
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2
Learn more at [URL_WITH_CREDENTIALS] php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 9.84ms DONE
cache [PASSWORD_DOTS] 69.91ms DONE
compiled [PASSWORD_DOTS] 2.96ms DONE
events [PASSWORD_DOTS] 1.19ms DONE
routes [PASSWORD_DOTS] 0.65ms DONE
views [PASSWORD_DOTS] 4.44ms DONE
worker-crm-update:worker-crm-update_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-download:worker-download_00: stopped
worker-nudges:worker-nudges_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-emails:worker-emails_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan tinker
Psy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman
New PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`
> app(\Jiminny\Services\Mail\TextRelayService::class)->sync();
= []
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 3.45ms DONE
cache [PASSWORD_DOTS] 10.26ms DONE
compiled [PASSWORD_DOTS] 1.84ms DONE
events [PASSWORD_DOTS] 0.72ms DONE
routes [PASSWORD_DOTS] 6.62ms DONE
views [PASSWORD_DOTS] 4.33ms DONE
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-download:worker-download_00: stopped
worker-emails:worker-emails_00: stopped
worker-nudges:worker-nudges_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-conferences:worker-conferences_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan
DOCKER
Close Tab
DEV (docker)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ec2-user@ip-10-30-129-190:~ (nc)
Close Tab
ec2-user@ip-10-30-140-255:~ (-zsh)
Close Tab
⌥⌘1
DEV (docker)...
|
78731
|
NULL
|
NULL
|
NULL
|
|
78736
|
2764
|
36
|
2026-05-27T12:57:15.147778+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886635147_m2.jpg...
|
iTerm2
|
DEV (docker)
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
/Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SE /Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SECRET]
/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/.env.local:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/dev.json:18: "DB_ADMIN_PASSWORD" : "dgyt$rTe21-d",
/Users/lukas/jiminny/app/.env:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.vscode/settings.json:16: "password": "dgyt$rTe21-d"
/Users/lukas/jiminny/app/.env.root:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.env.root:394:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.other:14:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#[ENV_SECRET]
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop
320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep
a1718cfb Merge pull request #529 from jiminny/katranci-patch-1
74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3
0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2
4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue
220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url
543c60b8 Merge branch 'develop' into JY-19432-recall-api-url
f163a29e JY-19432 Fix formatting
6de60dd0 JY-19432 Fix formatting
78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances
2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3
d6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code
4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers
6426729b JY-20432 Set stopasgroup to false for dialers queue worker
92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities
e0796d89 Delete obsolete files
4a8b1ea2 Delete old docker build scripts before php-8 upgrade
d790e56d JY-20603 Fix formatting
fc758135 JY-20603 Move video ec2 instances to external subnet
ecb558d5 JY-20761 Spread php-app tasks over ec2 instances
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80
commit a8ba85203fb10fb793ff07a6e85efac833979335
Merge: c15e0c8201 a00d53bdd6
Author: Nikolay Ivanov <[EMAIL]>
Date: Fri May 15 10:44:44 2026 +0300
JY-18091 | Resolve conflicts
commit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1
Author: Nikolay Nikolov <[EMAIL]>
Date: Thu Apr 30 14:54:08 2026 +0300
JY-20625 | JY-20742 | Add laravel/mcp
# Conflicts:
# composer.lock
diff --git a/composer.json b/composer.json
index 02ffcc050e..89551995a1 100644
--- a/composer.json
+++ b/composer.json
@@ -113,6 +113,7 @@
"kalnoy/nestedset": "*",
"laravel/framework": "^12.28",
"laravel/helpers": "^1.7",
+ "laravel/mcp": "^0.7.0",
"laravel/passport": "^13.0",
"laravel/slack-notification-channel": "^3.4",
"laravel/tinker": "^2.10.1",
commit 431b4c096f4ad0272bac595d078871a78b510bb5
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 17:17:47 2026 +0300
JY-18091 | Downgrade composer.json
diff --git a/composer.json b/composer.json
index 5db26da2c9..baacefbd5f 100644
--- a/composer.json
+++ b/composer.json
@@ -187,20 +187,18 @@
"require-dev": {
"barryvdh/laravel-debugbar": "^3.15",
"barryvdh/laravel-ide-helper": "^3.5",
- "brianium/paratest": "^7.12",
+ "brianium/paratest": "^7.5",
"browserstack/browserstack-local": "^1.1.0",
"filp/whoops": "^2.9",
"friendsofphp/php-cs-fixer": "^3.66",
"infection/infection": "^0.29.14",
"jasonmccreary/laravel-test-assertions": "^2.5",
"larastan/larastan": "^3.1",
- "maglnet/composer-require-checker": "^4.8",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
"phpstan/phpstan": "^2.1",
- "phpunit/phpunit": "^12.0",
- "symfony/phpunit-bridge": "^7.0",
- "vimeo/psalm": "^6.5.0"
+ "phpunit/phpunit": "^11.5.50",
+ "symfony/phpunit-bridge": "^7.0"
},
"autoload": {
"classmap": [
commit 90e9b4034f665e2a8cacaf937e55abc070b5af4a
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 16:25:45 2026 +0300
JY-18091 | Changes, composer
diff --git a/composer.json b/composer.json
index 751005e37a..5db26da2c9 100644
--- a/composer.json
+++ b/composer.json
@@ -95,7 +95,7 @@
"google/apps-meet": "^0.5.1",
"guzzlehttp/guzzle": "^7.8",
"guzzlehttp/psr7": "^2.6",
- "halaxa/json-machine": "^1.3",
+ "halaxa/json-machine": "^1.2",
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20
a8ba85203f JY-18091 | Resolve conflicts
4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts
1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp
431b4c096f JY-18091 | Downgrade composer.json
90e9b4034f JY-18091 | Changes, composer
b63d6f5d1f JY-18091 | Composer changes
d017fbd8aa JY-18091 | Merge
7daa10a444 JY-18091 | Cs lint fixes
a472f51b71 JY-18091 | Update composer to support php 8.5
1162b04371 fix(security): bump dependencies (alerts #477)
0c1f2f35df JY-19957 | Update composer.lock with correct dep
574315fc12 JY-19957 | Update composer.locl
c97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade
e4e0e6d46d Merge branch 'master' into secfix/composer-20260415
7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)
4f5795d1d5 JY-20479: Remove unused dependencies
caa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download
07832f2eeb JY-20479: Transcript download PDF optimization
9f17a0f70e JY-20526: Remove Sentence breaker
4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 "^docker-update:" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \
|| grep -rA 20 "^docker-update:" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40
/Users/lukas/jiminny/app/Makefile:docker-update:
/Users/lukas/jiminny/app/Makefile- aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-up:
/Users/lukas/jiminny/app/Makefile- tmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-stop:
/Users/lukas/jiminny/app/Makefile- tmux kill-session -t jiminny_dev_ngrok
/Users/lukas/jiminny/app/Makefile-
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n "arm64v8\|/jiminny/app/qa" ~/jiminny/infrastructure/dev/docker/docker-compose.yml
8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
187d58491294 wernight/ngrok "/entrypoint.sh" 37 seconds ago Up 37 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
b433f55153b5 mariadb:11.4.5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
d09012232958 redis:5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
error: Your local changes to the following files would be overwritten by checkout:
tests/Unit/Services/Mail/TextRelayServiceTest.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M config/logging.php
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 124, done.
remote: Counting objects: 100% (123/123), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)
Receiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.
Resolving deltas: 100% (93/93), completed with 33 local objects.
From github.com:jiminny/app
23fdef5aa9..942ddbe31c master -> origin/master
a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app
96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration
a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
* [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only
+ 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)
* [new branch] master-reset-ES -> origin/master-reset-ES
Updating 23fdef5aa9..942ddbe31c
Fast-forward
contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------
front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----
front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--
front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-
front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------
routes/api_v2.php | 6 +++---
tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------
7 files changed, 61 insertions(+), 46 deletions(-)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env
#IMAGE_TAG="latest"
IMAGE_TAG="arm64v8-latest"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 "lamp:" | grep image
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
docker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest "docker-php-entrypoi…" lamp 3 minutes ago Exited (2) 3 minutes ago
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
87804ee14786 wernight/ngrok "/entrypoint.sh" 18 minutes ago Up 53 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
bc04ffad01b2 mariadb:11.4.5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
e985cd5cfbf7 redis:5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
Filter, search, and stream logs from all your Compose services
in one place with Docker Desktop's Logs view. [URL_WITH_CREDENTIALS]
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2
Learn more at [URL_WITH_CREDENTIALS] php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 9.84ms DONE
cache [PASSWORD_DOTS] 69.91ms DONE
compiled [PASSWORD_DOTS] 2.96ms DONE
events [PASSWORD_DOTS] 1.19ms DONE
routes [PASSWORD_DOTS] 0.65ms DONE
views [PASSWORD_DOTS] 4.44ms DONE
worker-crm-update:worker-crm-update_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-download:worker-download_00: stopped
worker-nudges:worker-nudges_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-emails:worker-emails_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan tinker
Psy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman
New PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`
> app(\Jiminny\Services\Mail\TextRelayService::class)->sync();
= []
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 3.45ms DONE
cache [PASSWORD_DOTS] 10.26ms DONE
compiled [PASSWORD_DOTS] 1.84ms DONE
events [PASSWORD_DOTS] 0.72ms DONE
routes [PASSWORD_DOTS] 6.62ms DONE
views [PASSWORD_DOTS] 4.33ms DONE
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-download:worker-download_00: stopped
worker-emails:worker-emails_00: stopped
worker-nudges:worker-nudges_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-conferences:worker-conferences_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan
DOCKER
Close Tab
DEV (docker)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ec2-user@ip-10-30-129-190:~ (nc)
Close Tab
ec2-user@ip-10-30-140-255:~ (-zsh)
Close Tab
⌥⌘1
DEV (docker)...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"/Users/lukas/jiminny/app/.env.nikilocal:22:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/.env.local:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/dev.json:18: \"DB_ADMIN_PASSWORD\" : \"dgyt$rTe21-d\",\n/Users/lukas/jiminny/app/.env:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.vscode/settings.json:16: \"password\": \"dgyt$rTe21-d\"\n/Users/lukas/jiminny/app/.env.root:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.root:394:DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.other:14:DB_PASSWORD=dgyt\\$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop\n320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep\na1718cfb Merge pull request #529 from jiminny/katranci-patch-1\n74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3\n0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2\n4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue\n220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url\n543c60b8 Merge branch 'develop' into JY-19432-recall-api-url\nf163a29e JY-19432 Fix formatting\n6de60dd0 JY-19432 Fix formatting\n78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances\n2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3\nd6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code\n4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers\n6426729b JY-20432 Set stopasgroup to false for dialers queue worker\n92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities\ne0796d89 Delete obsolete files\n4a8b1ea2 Delete old docker build scripts before php-8 upgrade\nd790e56d JY-20603 Fix formatting\nfc758135 JY-20603 Move video ec2 instances to external subnet\necb558d5 JY-20761 Spread php-app tasks over ec2 instances\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80\n\ncommit a8ba85203fb10fb793ff07a6e85efac833979335\nMerge: c15e0c8201 a00d53bdd6\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Fri May 15 10:44:44 2026 +0300\n\n JY-18091 | Resolve conflicts\n\ncommit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1\nAuthor: Nikolay Nikolov <nikolay.nikolov@jiminny.com>\nDate: Thu Apr 30 14:54:08 2026 +0300\n\n JY-20625 | JY-20742 | Add laravel/mcp\n \n # Conflicts:\n # composer.lock\n\ndiff --git a/composer.json b/composer.json\nindex 02ffcc050e..89551995a1 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -113,6 +113,7 @@\n \"kalnoy/nestedset\": \"*\",\n \"laravel/framework\": \"^12.28\",\n \"laravel/helpers\": \"^1.7\",\n+ \"laravel/mcp\": \"^0.7.0\",\n \"laravel/passport\": \"^13.0\",\n \"laravel/slack-notification-channel\": \"^3.4\",\n \"laravel/tinker\": \"^2.10.1\",\n\ncommit 431b4c096f4ad0272bac595d078871a78b510bb5\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 17:17:47 2026 +0300\n\n JY-18091 | Downgrade composer.json\n\ndiff --git a/composer.json b/composer.json\nindex 5db26da2c9..baacefbd5f 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -187,20 +187,18 @@\n \"require-dev\": {\n \"barryvdh/laravel-debugbar\": \"^3.15\",\n \"barryvdh/laravel-ide-helper\": \"^3.5\",\n- \"brianium/paratest\": \"^7.12\",\n+ \"brianium/paratest\": \"^7.5\",\n \"browserstack/browserstack-local\": \"^1.1.0\",\n \"filp/whoops\": \"^2.9\",\n \"friendsofphp/php-cs-fixer\": \"^3.66\",\n \"infection/infection\": \"^0.29.14\",\n \"jasonmccreary/laravel-test-assertions\": \"^2.5\",\n \"larastan/larastan\": \"^3.1\",\n- \"maglnet/composer-require-checker\": \"^4.8\",\n \"mockery/mockery\": \"^1.6\",\n \"nunomaduro/collision\": \"^8.6\",\n \"phpstan/phpstan\": \"^2.1\",\n- \"phpunit/phpunit\": \"^12.0\",\n- \"symfony/phpunit-bridge\": \"^7.0\",\n- \"vimeo/psalm\": \"^6.5.0\"\n+ \"phpunit/phpunit\": \"^11.5.50\",\n+ \"symfony/phpunit-bridge\": \"^7.0\"\n },\n \"autoload\": {\n \"classmap\": [\n\ncommit 90e9b4034f665e2a8cacaf937e55abc070b5af4a\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 16:25:45 2026 +0300\n\n JY-18091 | Changes, composer\n\ndiff --git a/composer.json b/composer.json\nindex 751005e37a..5db26da2c9 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -95,7 +95,7 @@\n \"google/apps-meet\": \"^0.5.1\",\n \"guzzlehttp/guzzle\": \"^7.8\",\n \"guzzlehttp/psr7\": \"^2.6\",\n- \"halaxa/json-machine\": \"^1.3\",\n+ \"halaxa/json-machine\": \"^1.2\",\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20\n\na8ba85203f JY-18091 | Resolve conflicts\n4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts\n1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp\n431b4c096f JY-18091 | Downgrade composer.json\n90e9b4034f JY-18091 | Changes, composer\nb63d6f5d1f JY-18091 | Composer changes\nd017fbd8aa JY-18091 | Merge\n7daa10a444 JY-18091 | Cs lint fixes\na472f51b71 JY-18091 | Update composer to support php 8.5\n1162b04371 fix(security): bump dependencies (alerts #477)\n0c1f2f35df JY-19957 | Update composer.lock with correct dep\n574315fc12 JY-19957 | Update composer.locl\nc97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade\ne4e0e6d46d Merge branch 'master' into secfix/composer-20260415\n7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)\n4f5795d1d5 JY-20479: Remove unused dependencies\ncaa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download\n07832f2eeb JY-20479: Transcript download PDF optimization\n9f17a0f70e JY-20526: Remove Sentence breaker\n4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 \"^docker-update:\" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \\\n || grep -rA 20 \"^docker-update:\" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40\n/Users/lukas/jiminny/app/Makefile:docker-update:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\taws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-up:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-stop:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux kill-session -t jiminny_dev_ngrok\n/Users/lukas/jiminny/app/Makefile-\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n \"arm64v8\\|/jiminny/app/qa\" ~/jiminny/infrastructure/dev/docker/docker-compose.yml\n8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 37 seconds ago Up 37 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n187d58491294 wernight/ngrok \"/entrypoint.sh\" 37 seconds ago Up 37 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nb433f55153b5 mariadb:11.4.5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\n207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 37 seconds ago Up 37 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nd09012232958 redis:5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Services/Mail/TextRelayServiceTest.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nSwitched to branch 'master'\nYour branch is up to date with 'origin/master'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 124, done.\nremote: Counting objects: 100% (123/123), done.\nremote: Compressing objects: 100% (32/32), done.\nremote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)\nReceiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.\nResolving deltas: 100% (93/93), completed with 33 local objects.\nFrom github.com:jiminny/app\n 23fdef5aa9..942ddbe31c master -> origin/master\n a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app\n 96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration\n a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details\n * [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only\n + 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)\n * [new branch] master-reset-ES -> origin/master-reset-ES\nUpdating 23fdef5aa9..942ddbe31c\nFast-forward\n contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------\n front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----\n front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--\n front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-\n front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------\n routes/api_v2.php | 6 +++---\n tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------\n 7 files changed, 61 insertions(+), 46 deletions(-)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\nphp-8.5: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\narm64v8-php-8.5: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env\n#IMAGE_TAG=\"latest\"\nIMAGE_TAG=\"arm64v8-latest\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 \"lamp:\" | grep image\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \ndocker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest \"docker-php-entrypoi…\" lamp 3 minutes ago Exited (2) 3 minutes ago \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\nlatest: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\narm64v8-latest: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\nff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 18 minutes ago Up 53 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n87804ee14786 wernight/ngrok \"/entrypoint.sh\" 18 minutes ago Up 53 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nbc04ffad01b2 mariadb:11.4.5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\ne985cd5cfbf7 redis:5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\n121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 18 minutes ago Up 53 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\n Filter, search, and stream logs from all your Compose services\n in one place with Docker Desktop's Logs view. docker-desktop://dashboard/logs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\nroot@docker_lamp_1:/home/jiminny# ^C\nroot@docker_lamp_1:/home/jiminny# \nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entity) $ dev\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> exit\n\n INFO Goodbye.\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 9.84ms DONE\n cache ............................................................................................................................... 69.91ms DONE\n compiled ............................................................................................................................. 2.96ms DONE\n events ............................................................................................................................... 1.19ms DONE\n routes ............................................................................................................................... 0.65ms DONE\n views ................................................................................................................................ 4.44ms DONE\n\nworker-crm-update:worker-crm-update_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-download:worker-download_00: stopped\nworker-nudges:worker-nudges_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> app(\\Jiminny\\Services\\Mail\\TextRelayService::class)->sync();\n\n= []\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 3.45ms DONE\n cache ............................................................................................................................... 10.26ms DONE\n compiled ............................................................................................................................. 1.84ms DONE\n events ............................................................................................................................... 0.72ms DONE\n routes ............................................................................................................................... 6.62ms DONE\n views ................................................................................................................................ 4.33ms DONE\n\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan","depth":4,"on_screen":true,"value":"/Users/lukas/jiminny/app/.env.nikilocal:22:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/.env.local:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/dev.json:18: \"DB_ADMIN_PASSWORD\" : \"dgyt$rTe21-d\",\n/Users/lukas/jiminny/app/.env:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.vscode/settings.json:16: \"password\": \"dgyt$rTe21-d\"\n/Users/lukas/jiminny/app/.env.root:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.root:394:DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.other:14:DB_PASSWORD=dgyt\\$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop\n320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep\na1718cfb Merge pull request #529 from jiminny/katranci-patch-1\n74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3\n0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2\n4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue\n220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url\n543c60b8 Merge branch 'develop' into JY-19432-recall-api-url\nf163a29e JY-19432 Fix formatting\n6de60dd0 JY-19432 Fix formatting\n78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances\n2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3\nd6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code\n4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers\n6426729b JY-20432 Set stopasgroup to false for dialers queue worker\n92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities\ne0796d89 Delete obsolete files\n4a8b1ea2 Delete old docker build scripts before php-8 upgrade\nd790e56d JY-20603 Fix formatting\nfc758135 JY-20603 Move video ec2 instances to external subnet\necb558d5 JY-20761 Spread php-app tasks over ec2 instances\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80\n\ncommit a8ba85203fb10fb793ff07a6e85efac833979335\nMerge: c15e0c8201 a00d53bdd6\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Fri May 15 10:44:44 2026 +0300\n\n JY-18091 | Resolve conflicts\n\ncommit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1\nAuthor: Nikolay Nikolov <nikolay.nikolov@jiminny.com>\nDate: Thu Apr 30 14:54:08 2026 +0300\n\n JY-20625 | JY-20742 | Add laravel/mcp\n \n # Conflicts:\n # composer.lock\n\ndiff --git a/composer.json b/composer.json\nindex 02ffcc050e..89551995a1 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -113,6 +113,7 @@\n \"kalnoy/nestedset\": \"*\",\n \"laravel/framework\": \"^12.28\",\n \"laravel/helpers\": \"^1.7\",\n+ \"laravel/mcp\": \"^0.7.0\",\n \"laravel/passport\": \"^13.0\",\n \"laravel/slack-notification-channel\": \"^3.4\",\n \"laravel/tinker\": \"^2.10.1\",\n\ncommit 431b4c096f4ad0272bac595d078871a78b510bb5\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 17:17:47 2026 +0300\n\n JY-18091 | Downgrade composer.json\n\ndiff --git a/composer.json b/composer.json\nindex 5db26da2c9..baacefbd5f 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -187,20 +187,18 @@\n \"require-dev\": {\n \"barryvdh/laravel-debugbar\": \"^3.15\",\n \"barryvdh/laravel-ide-helper\": \"^3.5\",\n- \"brianium/paratest\": \"^7.12\",\n+ \"brianium/paratest\": \"^7.5\",\n \"browserstack/browserstack-local\": \"^1.1.0\",\n \"filp/whoops\": \"^2.9\",\n \"friendsofphp/php-cs-fixer\": \"^3.66\",\n \"infection/infection\": \"^0.29.14\",\n \"jasonmccreary/laravel-test-assertions\": \"^2.5\",\n \"larastan/larastan\": \"^3.1\",\n- \"maglnet/composer-require-checker\": \"^4.8\",\n \"mockery/mockery\": \"^1.6\",\n \"nunomaduro/collision\": \"^8.6\",\n \"phpstan/phpstan\": \"^2.1\",\n- \"phpunit/phpunit\": \"^12.0\",\n- \"symfony/phpunit-bridge\": \"^7.0\",\n- \"vimeo/psalm\": \"^6.5.0\"\n+ \"phpunit/phpunit\": \"^11.5.50\",\n+ \"symfony/phpunit-bridge\": \"^7.0\"\n },\n \"autoload\": {\n \"classmap\": [\n\ncommit 90e9b4034f665e2a8cacaf937e55abc070b5af4a\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 16:25:45 2026 +0300\n\n JY-18091 | Changes, composer\n\ndiff --git a/composer.json b/composer.json\nindex 751005e37a..5db26da2c9 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -95,7 +95,7 @@\n \"google/apps-meet\": \"^0.5.1\",\n \"guzzlehttp/guzzle\": \"^7.8\",\n \"guzzlehttp/psr7\": \"^2.6\",\n- \"halaxa/json-machine\": \"^1.3\",\n+ \"halaxa/json-machine\": \"^1.2\",\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20\n\na8ba85203f JY-18091 | Resolve conflicts\n4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts\n1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp\n431b4c096f JY-18091 | Downgrade composer.json\n90e9b4034f JY-18091 | Changes, composer\nb63d6f5d1f JY-18091 | Composer changes\nd017fbd8aa JY-18091 | Merge\n7daa10a444 JY-18091 | Cs lint fixes\na472f51b71 JY-18091 | Update composer to support php 8.5\n1162b04371 fix(security): bump dependencies (alerts #477)\n0c1f2f35df JY-19957 | Update composer.lock with correct dep\n574315fc12 JY-19957 | Update composer.locl\nc97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade\ne4e0e6d46d Merge branch 'master' into secfix/composer-20260415\n7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)\n4f5795d1d5 JY-20479: Remove unused dependencies\ncaa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download\n07832f2eeb JY-20479: Transcript download PDF optimization\n9f17a0f70e JY-20526: Remove Sentence breaker\n4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 \"^docker-update:\" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \\\n || grep -rA 20 \"^docker-update:\" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40\n/Users/lukas/jiminny/app/Makefile:docker-update:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\taws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-up:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-stop:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux kill-session -t jiminny_dev_ngrok\n/Users/lukas/jiminny/app/Makefile-\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n \"arm64v8\\|/jiminny/app/qa\" ~/jiminny/infrastructure/dev/docker/docker-compose.yml\n8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 37 seconds ago Up 37 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n187d58491294 wernight/ngrok \"/entrypoint.sh\" 37 seconds ago Up 37 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nb433f55153b5 mariadb:11.4.5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\n207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 37 seconds ago Up 37 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nd09012232958 redis:5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Services/Mail/TextRelayServiceTest.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nSwitched to branch 'master'\nYour branch is up to date with 'origin/master'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 124, done.\nremote: Counting objects: 100% (123/123), done.\nremote: Compressing objects: 100% (32/32), done.\nremote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)\nReceiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.\nResolving deltas: 100% (93/93), completed with 33 local objects.\nFrom github.com:jiminny/app\n 23fdef5aa9..942ddbe31c master -> origin/master\n a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app\n 96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration\n a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details\n * [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only\n + 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)\n * [new branch] master-reset-ES -> origin/master-reset-ES\nUpdating 23fdef5aa9..942ddbe31c\nFast-forward\n contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------\n front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----\n front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--\n front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-\n front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------\n routes/api_v2.php | 6 +++---\n tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------\n 7 files changed, 61 insertions(+), 46 deletions(-)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\nphp-8.5: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\narm64v8-php-8.5: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env\n#IMAGE_TAG=\"latest\"\nIMAGE_TAG=\"arm64v8-latest\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 \"lamp:\" | grep image\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \ndocker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest \"docker-php-entrypoi…\" lamp 3 minutes ago Exited (2) 3 minutes ago \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\nlatest: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\narm64v8-latest: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\nff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 18 minutes ago Up 53 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n87804ee14786 wernight/ngrok \"/entrypoint.sh\" 18 minutes ago Up 53 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nbc04ffad01b2 mariadb:11.4.5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\ne985cd5cfbf7 redis:5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\n121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 18 minutes ago Up 53 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\n Filter, search, and stream logs from all your Compose services\n in one place with Docker Desktop's Logs view. docker-desktop://dashboard/logs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\nroot@docker_lamp_1:/home/jiminny# ^C\nroot@docker_lamp_1:/home/jiminny# \nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entity) $ dev\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> exit\n\n INFO Goodbye.\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 9.84ms DONE\n cache ............................................................................................................................... 69.91ms DONE\n compiled ............................................................................................................................. 2.96ms DONE\n events ............................................................................................................................... 1.19ms DONE\n routes ............................................................................................................................... 0.65ms DONE\n views ................................................................................................................................ 4.44ms DONE\n\nworker-crm-update:worker-crm-update_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-download:worker-download_00: stopped\nworker-nudges:worker-nudges_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> app(\\Jiminny\\Services\\Mail\\TextRelayService::class)->sync();\n\n= []\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 3.45ms DONE\n cache ............................................................................................................................... 10.26ms DONE\n compiled ............................................................................................................................. 1.84ms DONE\n events ............................................................................................................................... 0.72ms DONE\n routes ............................................................................................................................... 6.62ms DONE\n views ................................................................................................................................ 4.33ms DONE\n\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.06732048,"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 (docker)","depth":2,"bounds":{"left":0.33759972,"top":1.0,"width":0.06732048,"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.33959442,"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":"-zsh","depth":2,"bounds":{"left":0.40492022,"top":1.0,"width":0.06732048,"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.4069149,"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.4722407,"top":1.0,"width":0.06732048,"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.4742354,"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":"-zsh","depth":2,"bounds":{"left":0.53956115,"top":1.0,"width":0.06715426,"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.5415558,"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":"ec2-user@ip-10-30-129-190:~ (nc)","depth":2,"bounds":{"left":0.60671544,"top":1.0,"width":0.06715426,"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.6087101,"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":"ec2-user@ip-10-30-140-255:~ (-zsh)","depth":2,"bounds":{"left":0.67386967,"top":1.0,"width":0.06715426,"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.67586434,"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.7273936,"top":1.0,"width":0.01861702,"height":-0.023144484},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"DEV (docker)","depth":1,"bounds":{"left":0.49468085,"top":1.0,"width":0.029920213,"height":-0.02394259},"on_screen":true,"role_description":"text"}]...
|
-8902941949581308157
|
-5697495435468530982
|
typing_pause
|
accessibility
|
NULL
|
/Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SE /Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SECRET]
/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/.env.local:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/dev.json:18: "DB_ADMIN_PASSWORD" : "dgyt$rTe21-d",
/Users/lukas/jiminny/app/.env:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.vscode/settings.json:16: "password": "dgyt$rTe21-d"
/Users/lukas/jiminny/app/.env.root:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.env.root:394:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.other:14:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#[ENV_SECRET]
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop
320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep
a1718cfb Merge pull request #529 from jiminny/katranci-patch-1
74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3
0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2
4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue
220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url
543c60b8 Merge branch 'develop' into JY-19432-recall-api-url
f163a29e JY-19432 Fix formatting
6de60dd0 JY-19432 Fix formatting
78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances
2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3
d6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code
4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers
6426729b JY-20432 Set stopasgroup to false for dialers queue worker
92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities
e0796d89 Delete obsolete files
4a8b1ea2 Delete old docker build scripts before php-8 upgrade
d790e56d JY-20603 Fix formatting
fc758135 JY-20603 Move video ec2 instances to external subnet
ecb558d5 JY-20761 Spread php-app tasks over ec2 instances
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80
commit a8ba85203fb10fb793ff07a6e85efac833979335
Merge: c15e0c8201 a00d53bdd6
Author: Nikolay Ivanov <[EMAIL]>
Date: Fri May 15 10:44:44 2026 +0300
JY-18091 | Resolve conflicts
commit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1
Author: Nikolay Nikolov <[EMAIL]>
Date: Thu Apr 30 14:54:08 2026 +0300
JY-20625 | JY-20742 | Add laravel/mcp
# Conflicts:
# composer.lock
diff --git a/composer.json b/composer.json
index 02ffcc050e..89551995a1 100644
--- a/composer.json
+++ b/composer.json
@@ -113,6 +113,7 @@
"kalnoy/nestedset": "*",
"laravel/framework": "^12.28",
"laravel/helpers": "^1.7",
+ "laravel/mcp": "^0.7.0",
"laravel/passport": "^13.0",
"laravel/slack-notification-channel": "^3.4",
"laravel/tinker": "^2.10.1",
commit 431b4c096f4ad0272bac595d078871a78b510bb5
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 17:17:47 2026 +0300
JY-18091 | Downgrade composer.json
diff --git a/composer.json b/composer.json
index 5db26da2c9..baacefbd5f 100644
--- a/composer.json
+++ b/composer.json
@@ -187,20 +187,18 @@
"require-dev": {
"barryvdh/laravel-debugbar": "^3.15",
"barryvdh/laravel-ide-helper": "^3.5",
- "brianium/paratest": "^7.12",
+ "brianium/paratest": "^7.5",
"browserstack/browserstack-local": "^1.1.0",
"filp/whoops": "^2.9",
"friendsofphp/php-cs-fixer": "^3.66",
"infection/infection": "^0.29.14",
"jasonmccreary/laravel-test-assertions": "^2.5",
"larastan/larastan": "^3.1",
- "maglnet/composer-require-checker": "^4.8",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
"phpstan/phpstan": "^2.1",
- "phpunit/phpunit": "^12.0",
- "symfony/phpunit-bridge": "^7.0",
- "vimeo/psalm": "^6.5.0"
+ "phpunit/phpunit": "^11.5.50",
+ "symfony/phpunit-bridge": "^7.0"
},
"autoload": {
"classmap": [
commit 90e9b4034f665e2a8cacaf937e55abc070b5af4a
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 16:25:45 2026 +0300
JY-18091 | Changes, composer
diff --git a/composer.json b/composer.json
index 751005e37a..5db26da2c9 100644
--- a/composer.json
+++ b/composer.json
@@ -95,7 +95,7 @@
"google/apps-meet": "^0.5.1",
"guzzlehttp/guzzle": "^7.8",
"guzzlehttp/psr7": "^2.6",
- "halaxa/json-machine": "^1.3",
+ "halaxa/json-machine": "^1.2",
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20
a8ba85203f JY-18091 | Resolve conflicts
4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts
1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp
431b4c096f JY-18091 | Downgrade composer.json
90e9b4034f JY-18091 | Changes, composer
b63d6f5d1f JY-18091 | Composer changes
d017fbd8aa JY-18091 | Merge
7daa10a444 JY-18091 | Cs lint fixes
a472f51b71 JY-18091 | Update composer to support php 8.5
1162b04371 fix(security): bump dependencies (alerts #477)
0c1f2f35df JY-19957 | Update composer.lock with correct dep
574315fc12 JY-19957 | Update composer.locl
c97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade
e4e0e6d46d Merge branch 'master' into secfix/composer-20260415
7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)
4f5795d1d5 JY-20479: Remove unused dependencies
caa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download
07832f2eeb JY-20479: Transcript download PDF optimization
9f17a0f70e JY-20526: Remove Sentence breaker
4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 "^docker-update:" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \
|| grep -rA 20 "^docker-update:" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40
/Users/lukas/jiminny/app/Makefile:docker-update:
/Users/lukas/jiminny/app/Makefile- aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-up:
/Users/lukas/jiminny/app/Makefile- tmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-stop:
/Users/lukas/jiminny/app/Makefile- tmux kill-session -t jiminny_dev_ngrok
/Users/lukas/jiminny/app/Makefile-
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n "arm64v8\|/jiminny/app/qa" ~/jiminny/infrastructure/dev/docker/docker-compose.yml
8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
187d58491294 wernight/ngrok "/entrypoint.sh" 37 seconds ago Up 37 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
b433f55153b5 mariadb:11.4.5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
d09012232958 redis:5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
error: Your local changes to the following files would be overwritten by checkout:
tests/Unit/Services/Mail/TextRelayServiceTest.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M config/logging.php
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 124, done.
remote: Counting objects: 100% (123/123), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)
Receiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.
Resolving deltas: 100% (93/93), completed with 33 local objects.
From github.com:jiminny/app
23fdef5aa9..942ddbe31c master -> origin/master
a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app
96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration
a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
* [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only
+ 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)
* [new branch] master-reset-ES -> origin/master-reset-ES
Updating 23fdef5aa9..942ddbe31c
Fast-forward
contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------
front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----
front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--
front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-
front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------
routes/api_v2.php | 6 +++---
tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------
7 files changed, 61 insertions(+), 46 deletions(-)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env
#IMAGE_TAG="latest"
IMAGE_TAG="arm64v8-latest"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 "lamp:" | grep image
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
docker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest "docker-php-entrypoi…" lamp 3 minutes ago Exited (2) 3 minutes ago
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
87804ee14786 wernight/ngrok "/entrypoint.sh" 18 minutes ago Up 53 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
bc04ffad01b2 mariadb:11.4.5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
e985cd5cfbf7 redis:5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
Filter, search, and stream logs from all your Compose services
in one place with Docker Desktop's Logs view. [URL_WITH_CREDENTIALS]
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2
Learn more at [URL_WITH_CREDENTIALS] php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 9.84ms DONE
cache [PASSWORD_DOTS] 69.91ms DONE
compiled [PASSWORD_DOTS] 2.96ms DONE
events [PASSWORD_DOTS] 1.19ms DONE
routes [PASSWORD_DOTS] 0.65ms DONE
views [PASSWORD_DOTS] 4.44ms DONE
worker-crm-update:worker-crm-update_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-download:worker-download_00: stopped
worker-nudges:worker-nudges_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-emails:worker-emails_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan tinker
Psy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman
New PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`
> app(\Jiminny\Services\Mail\TextRelayService::class)->sync();
= []
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 3.45ms DONE
cache [PASSWORD_DOTS] 10.26ms DONE
compiled [PASSWORD_DOTS] 1.84ms DONE
events [PASSWORD_DOTS] 0.72ms DONE
routes [PASSWORD_DOTS] 6.62ms DONE
views [PASSWORD_DOTS] 4.33ms DONE
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-download:worker-download_00: stopped
worker-emails:worker-emails_00: stopped
worker-nudges:worker-nudges_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-conferences:worker-conferences_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan
DOCKER
Close Tab
DEV (docker)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ec2-user@ip-10-30-129-190:~ (nc)
Close Tab
ec2-user@ip-10-30-140-255:~ (-zsh)
Close Tab
⌥⌘1
DEV (docker)...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
78735
|
2764
|
35
|
2026-05-27T12:57:12.005025+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886632005_m2.jpg...
|
iTerm2
|
DEV (docker)
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
/Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SE /Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SECRET]
/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/.env.local:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/dev.json:18: "DB_ADMIN_PASSWORD" : "dgyt$rTe21-d",
/Users/lukas/jiminny/app/.env:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.vscode/settings.json:16: "password": "dgyt$rTe21-d"
/Users/lukas/jiminny/app/.env.root:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.env.root:394:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.other:14:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#[ENV_SECRET]
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop
320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep
a1718cfb Merge pull request #529 from jiminny/katranci-patch-1
74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3
0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2
4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue
220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url
543c60b8 Merge branch 'develop' into JY-19432-recall-api-url
f163a29e JY-19432 Fix formatting
6de60dd0 JY-19432 Fix formatting
78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances
2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3
d6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code
4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers
6426729b JY-20432 Set stopasgroup to false for dialers queue worker
92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities
e0796d89 Delete obsolete files
4a8b1ea2 Delete old docker build scripts before php-8 upgrade
d790e56d JY-20603 Fix formatting
fc758135 JY-20603 Move video ec2 instances to external subnet
ecb558d5 JY-20761 Spread php-app tasks over ec2 instances
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80
commit a8ba85203fb10fb793ff07a6e85efac833979335
Merge: c15e0c8201 a00d53bdd6
Author: Nikolay Ivanov <[EMAIL]>
Date: Fri May 15 10:44:44 2026 +0300
JY-18091 | Resolve conflicts
commit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1
Author: Nikolay Nikolov <[EMAIL]>
Date: Thu Apr 30 14:54:08 2026 +0300
JY-20625 | JY-20742 | Add laravel/mcp
# Conflicts:
# composer.lock
diff --git a/composer.json b/composer.json
index 02ffcc050e..89551995a1 100644
--- a/composer.json
+++ b/composer.json
@@ -113,6 +113,7 @@
"kalnoy/nestedset": "*",
"laravel/framework": "^12.28",
"laravel/helpers": "^1.7",
+ "laravel/mcp": "^0.7.0",
"laravel/passport": "^13.0",
"laravel/slack-notification-channel": "^3.4",
"laravel/tinker": "^2.10.1",
commit 431b4c096f4ad0272bac595d078871a78b510bb5
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 17:17:47 2026 +0300
JY-18091 | Downgrade composer.json
diff --git a/composer.json b/composer.json
index 5db26da2c9..baacefbd5f 100644
--- a/composer.json
+++ b/composer.json
@@ -187,20 +187,18 @@
"require-dev": {
"barryvdh/laravel-debugbar": "^3.15",
"barryvdh/laravel-ide-helper": "^3.5",
- "brianium/paratest": "^7.12",
+ "brianium/paratest": "^7.5",
"browserstack/browserstack-local": "^1.1.0",
"filp/whoops": "^2.9",
"friendsofphp/php-cs-fixer": "^3.66",
"infection/infection": "^0.29.14",
"jasonmccreary/laravel-test-assertions": "^2.5",
"larastan/larastan": "^3.1",
- "maglnet/composer-require-checker": "^4.8",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
"phpstan/phpstan": "^2.1",
- "phpunit/phpunit": "^12.0",
- "symfony/phpunit-bridge": "^7.0",
- "vimeo/psalm": "^6.5.0"
+ "phpunit/phpunit": "^11.5.50",
+ "symfony/phpunit-bridge": "^7.0"
},
"autoload": {
"classmap": [
commit 90e9b4034f665e2a8cacaf937e55abc070b5af4a
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 16:25:45 2026 +0300
JY-18091 | Changes, composer
diff --git a/composer.json b/composer.json
index 751005e37a..5db26da2c9 100644
--- a/composer.json
+++ b/composer.json
@@ -95,7 +95,7 @@
"google/apps-meet": "^0.5.1",
"guzzlehttp/guzzle": "^7.8",
"guzzlehttp/psr7": "^2.6",
- "halaxa/json-machine": "^1.3",
+ "halaxa/json-machine": "^1.2",
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20
a8ba85203f JY-18091 | Resolve conflicts
4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts
1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp
431b4c096f JY-18091 | Downgrade composer.json
90e9b4034f JY-18091 | Changes, composer
b63d6f5d1f JY-18091 | Composer changes
d017fbd8aa JY-18091 | Merge
7daa10a444 JY-18091 | Cs lint fixes
a472f51b71 JY-18091 | Update composer to support php 8.5
1162b04371 fix(security): bump dependencies (alerts #477)
0c1f2f35df JY-19957 | Update composer.lock with correct dep
574315fc12 JY-19957 | Update composer.locl
c97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade
e4e0e6d46d Merge branch 'master' into secfix/composer-20260415
7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)
4f5795d1d5 JY-20479: Remove unused dependencies
caa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download
07832f2eeb JY-20479: Transcript download PDF optimization
9f17a0f70e JY-20526: Remove Sentence breaker
4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 "^docker-update:" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \
|| grep -rA 20 "^docker-update:" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40
/Users/lukas/jiminny/app/Makefile:docker-update:
/Users/lukas/jiminny/app/Makefile- aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-up:
/Users/lukas/jiminny/app/Makefile- tmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-stop:
/Users/lukas/jiminny/app/Makefile- tmux kill-session -t jiminny_dev_ngrok
/Users/lukas/jiminny/app/Makefile-
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n "arm64v8\|/jiminny/app/qa" ~/jiminny/infrastructure/dev/docker/docker-compose.yml
8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
187d58491294 wernight/ngrok "/entrypoint.sh" 37 seconds ago Up 37 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
b433f55153b5 mariadb:11.4.5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
d09012232958 redis:5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
error: Your local changes to the following files would be overwritten by checkout:
tests/Unit/Services/Mail/TextRelayServiceTest.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M config/logging.php
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 124, done.
remote: Counting objects: 100% (123/123), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)
Receiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.
Resolving deltas: 100% (93/93), completed with 33 local objects.
From github.com:jiminny/app
23fdef5aa9..942ddbe31c master -> origin/master
a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app
96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration
a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
* [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only
+ 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)
* [new branch] master-reset-ES -> origin/master-reset-ES
Updating 23fdef5aa9..942ddbe31c
Fast-forward
contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------
front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----
front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--
front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-
front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------
routes/api_v2.php | 6 +++---
tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------
7 files changed, 61 insertions(+), 46 deletions(-)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env
#IMAGE_TAG="latest"
IMAGE_TAG="arm64v8-latest"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 "lamp:" | grep image
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
docker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest "docker-php-entrypoi…" lamp 3 minutes ago Exited (2) 3 minutes ago
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
87804ee14786 wernight/ngrok "/entrypoint.sh" 18 minutes ago Up 53 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
bc04ffad01b2 mariadb:11.4.5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
e985cd5cfbf7 redis:5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
Filter, search, and stream logs from all your Compose services
in one place with Docker Desktop's Logs view. [URL_WITH_CREDENTIALS]
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2
Learn more at [URL_WITH_CREDENTIALS] php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 9.84ms DONE
cache [PASSWORD_DOTS] 69.91ms DONE
compiled [PASSWORD_DOTS] 2.96ms DONE
events [PASSWORD_DOTS] 1.19ms DONE
routes [PASSWORD_DOTS] 0.65ms DONE
views [PASSWORD_DOTS] 4.44ms DONE
worker-crm-update:worker-crm-update_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-download:worker-download_00: stopped
worker-nudges:worker-nudges_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-emails:worker-emails_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan tinker
Psy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman
New PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`
> app(\Jiminny\Services\Mail\TextRelayService::class)->sync();
= []
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 3.45ms DONE
cache [PASSWORD_DOTS] 10.26ms DONE
compiled [PASSWORD_DOTS] 1.84ms DONE
events [PASSWORD_DOTS] 0.72ms DONE
routes [PASSWORD_DOTS] 6.62ms DONE
views [PASSWORD_DOTS] 4.33ms DONE
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-download:worker-download_00: stopped
worker-emails:worker-emails_00: stopped
worker-nudges:worker-nudges_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-conferences:worker-conferences_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny#...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"/Users/lukas/jiminny/app/.env.nikilocal:22:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/.env.local:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/dev.json:18: \"DB_ADMIN_PASSWORD\" : \"dgyt$rTe21-d\",\n/Users/lukas/jiminny/app/.env:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.vscode/settings.json:16: \"password\": \"dgyt$rTe21-d\"\n/Users/lukas/jiminny/app/.env.root:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.root:394:DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.other:14:DB_PASSWORD=dgyt\\$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop\n320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep\na1718cfb Merge pull request #529 from jiminny/katranci-patch-1\n74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3\n0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2\n4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue\n220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url\n543c60b8 Merge branch 'develop' into JY-19432-recall-api-url\nf163a29e JY-19432 Fix formatting\n6de60dd0 JY-19432 Fix formatting\n78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances\n2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3\nd6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code\n4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers\n6426729b JY-20432 Set stopasgroup to false for dialers queue worker\n92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities\ne0796d89 Delete obsolete files\n4a8b1ea2 Delete old docker build scripts before php-8 upgrade\nd790e56d JY-20603 Fix formatting\nfc758135 JY-20603 Move video ec2 instances to external subnet\necb558d5 JY-20761 Spread php-app tasks over ec2 instances\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80\n\ncommit a8ba85203fb10fb793ff07a6e85efac833979335\nMerge: c15e0c8201 a00d53bdd6\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Fri May 15 10:44:44 2026 +0300\n\n JY-18091 | Resolve conflicts\n\ncommit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1\nAuthor: Nikolay Nikolov <nikolay.nikolov@jiminny.com>\nDate: Thu Apr 30 14:54:08 2026 +0300\n\n JY-20625 | JY-20742 | Add laravel/mcp\n \n # Conflicts:\n # composer.lock\n\ndiff --git a/composer.json b/composer.json\nindex 02ffcc050e..89551995a1 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -113,6 +113,7 @@\n \"kalnoy/nestedset\": \"*\",\n \"laravel/framework\": \"^12.28\",\n \"laravel/helpers\": \"^1.7\",\n+ \"laravel/mcp\": \"^0.7.0\",\n \"laravel/passport\": \"^13.0\",\n \"laravel/slack-notification-channel\": \"^3.4\",\n \"laravel/tinker\": \"^2.10.1\",\n\ncommit 431b4c096f4ad0272bac595d078871a78b510bb5\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 17:17:47 2026 +0300\n\n JY-18091 | Downgrade composer.json\n\ndiff --git a/composer.json b/composer.json\nindex 5db26da2c9..baacefbd5f 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -187,20 +187,18 @@\n \"require-dev\": {\n \"barryvdh/laravel-debugbar\": \"^3.15\",\n \"barryvdh/laravel-ide-helper\": \"^3.5\",\n- \"brianium/paratest\": \"^7.12\",\n+ \"brianium/paratest\": \"^7.5\",\n \"browserstack/browserstack-local\": \"^1.1.0\",\n \"filp/whoops\": \"^2.9\",\n \"friendsofphp/php-cs-fixer\": \"^3.66\",\n \"infection/infection\": \"^0.29.14\",\n \"jasonmccreary/laravel-test-assertions\": \"^2.5\",\n \"larastan/larastan\": \"^3.1\",\n- \"maglnet/composer-require-checker\": \"^4.8\",\n \"mockery/mockery\": \"^1.6\",\n \"nunomaduro/collision\": \"^8.6\",\n \"phpstan/phpstan\": \"^2.1\",\n- \"phpunit/phpunit\": \"^12.0\",\n- \"symfony/phpunit-bridge\": \"^7.0\",\n- \"vimeo/psalm\": \"^6.5.0\"\n+ \"phpunit/phpunit\": \"^11.5.50\",\n+ \"symfony/phpunit-bridge\": \"^7.0\"\n },\n \"autoload\": {\n \"classmap\": [\n\ncommit 90e9b4034f665e2a8cacaf937e55abc070b5af4a\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 16:25:45 2026 +0300\n\n JY-18091 | Changes, composer\n\ndiff --git a/composer.json b/composer.json\nindex 751005e37a..5db26da2c9 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -95,7 +95,7 @@\n \"google/apps-meet\": \"^0.5.1\",\n \"guzzlehttp/guzzle\": \"^7.8\",\n \"guzzlehttp/psr7\": \"^2.6\",\n- \"halaxa/json-machine\": \"^1.3\",\n+ \"halaxa/json-machine\": \"^1.2\",\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20\n\na8ba85203f JY-18091 | Resolve conflicts\n4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts\n1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp\n431b4c096f JY-18091 | Downgrade composer.json\n90e9b4034f JY-18091 | Changes, composer\nb63d6f5d1f JY-18091 | Composer changes\nd017fbd8aa JY-18091 | Merge\n7daa10a444 JY-18091 | Cs lint fixes\na472f51b71 JY-18091 | Update composer to support php 8.5\n1162b04371 fix(security): bump dependencies (alerts #477)\n0c1f2f35df JY-19957 | Update composer.lock with correct dep\n574315fc12 JY-19957 | Update composer.locl\nc97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade\ne4e0e6d46d Merge branch 'master' into secfix/composer-20260415\n7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)\n4f5795d1d5 JY-20479: Remove unused dependencies\ncaa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download\n07832f2eeb JY-20479: Transcript download PDF optimization\n9f17a0f70e JY-20526: Remove Sentence breaker\n4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 \"^docker-update:\" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \\\n || grep -rA 20 \"^docker-update:\" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40\n/Users/lukas/jiminny/app/Makefile:docker-update:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\taws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-up:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-stop:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux kill-session -t jiminny_dev_ngrok\n/Users/lukas/jiminny/app/Makefile-\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n \"arm64v8\\|/jiminny/app/qa\" ~/jiminny/infrastructure/dev/docker/docker-compose.yml\n8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 37 seconds ago Up 37 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n187d58491294 wernight/ngrok \"/entrypoint.sh\" 37 seconds ago Up 37 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nb433f55153b5 mariadb:11.4.5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\n207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 37 seconds ago Up 37 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nd09012232958 redis:5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Services/Mail/TextRelayServiceTest.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nSwitched to branch 'master'\nYour branch is up to date with 'origin/master'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 124, done.\nremote: Counting objects: 100% (123/123), done.\nremote: Compressing objects: 100% (32/32), done.\nremote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)\nReceiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.\nResolving deltas: 100% (93/93), completed with 33 local objects.\nFrom github.com:jiminny/app\n 23fdef5aa9..942ddbe31c master -> origin/master\n a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app\n 96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration\n a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details\n * [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only\n + 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)\n * [new branch] master-reset-ES -> origin/master-reset-ES\nUpdating 23fdef5aa9..942ddbe31c\nFast-forward\n contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------\n front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----\n front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--\n front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-\n front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------\n routes/api_v2.php | 6 +++---\n tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------\n 7 files changed, 61 insertions(+), 46 deletions(-)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\nphp-8.5: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\narm64v8-php-8.5: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env\n#IMAGE_TAG=\"latest\"\nIMAGE_TAG=\"arm64v8-latest\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 \"lamp:\" | grep image\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \ndocker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest \"docker-php-entrypoi…\" lamp 3 minutes ago Exited (2) 3 minutes ago \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\nlatest: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\narm64v8-latest: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\nff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 18 minutes ago Up 53 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n87804ee14786 wernight/ngrok \"/entrypoint.sh\" 18 minutes ago Up 53 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nbc04ffad01b2 mariadb:11.4.5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\ne985cd5cfbf7 redis:5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\n121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 18 minutes ago Up 53 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\n Filter, search, and stream logs from all your Compose services\n in one place with Docker Desktop's Logs view. docker-desktop://dashboard/logs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\nroot@docker_lamp_1:/home/jiminny# ^C\nroot@docker_lamp_1:/home/jiminny# \nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entity) $ dev\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> exit\n\n INFO Goodbye.\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 9.84ms DONE\n cache ............................................................................................................................... 69.91ms DONE\n compiled ............................................................................................................................. 2.96ms DONE\n events ............................................................................................................................... 1.19ms DONE\n routes ............................................................................................................................... 0.65ms DONE\n views ................................................................................................................................ 4.44ms DONE\n\nworker-crm-update:worker-crm-update_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-download:worker-download_00: stopped\nworker-nudges:worker-nudges_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> app(\\Jiminny\\Services\\Mail\\TextRelayService::class)->sync();\n\n= []\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 3.45ms DONE\n cache ............................................................................................................................... 10.26ms DONE\n compiled ............................................................................................................................. 1.84ms DONE\n events ............................................................................................................................... 0.72ms DONE\n routes ............................................................................................................................... 6.62ms DONE\n views ................................................................................................................................ 4.33ms DONE\n\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny#","depth":4,"on_screen":true,"value":"/Users/lukas/jiminny/app/.env.nikilocal:22:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/.env.local:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/dev.json:18: \"DB_ADMIN_PASSWORD\" : \"dgyt$rTe21-d\",\n/Users/lukas/jiminny/app/.env:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.vscode/settings.json:16: \"password\": \"dgyt$rTe21-d\"\n/Users/lukas/jiminny/app/.env.root:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.root:394:DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.other:14:DB_PASSWORD=dgyt\\$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop\n320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep\na1718cfb Merge pull request #529 from jiminny/katranci-patch-1\n74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3\n0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2\n4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue\n220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url\n543c60b8 Merge branch 'develop' into JY-19432-recall-api-url\nf163a29e JY-19432 Fix formatting\n6de60dd0 JY-19432 Fix formatting\n78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances\n2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3\nd6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code\n4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers\n6426729b JY-20432 Set stopasgroup to false for dialers queue worker\n92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities\ne0796d89 Delete obsolete files\n4a8b1ea2 Delete old docker build scripts before php-8 upgrade\nd790e56d JY-20603 Fix formatting\nfc758135 JY-20603 Move video ec2 instances to external subnet\necb558d5 JY-20761 Spread php-app tasks over ec2 instances\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80\n\ncommit a8ba85203fb10fb793ff07a6e85efac833979335\nMerge: c15e0c8201 a00d53bdd6\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Fri May 15 10:44:44 2026 +0300\n\n JY-18091 | Resolve conflicts\n\ncommit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1\nAuthor: Nikolay Nikolov <nikolay.nikolov@jiminny.com>\nDate: Thu Apr 30 14:54:08 2026 +0300\n\n JY-20625 | JY-20742 | Add laravel/mcp\n \n # Conflicts:\n # composer.lock\n\ndiff --git a/composer.json b/composer.json\nindex 02ffcc050e..89551995a1 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -113,6 +113,7 @@\n \"kalnoy/nestedset\": \"*\",\n \"laravel/framework\": \"^12.28\",\n \"laravel/helpers\": \"^1.7\",\n+ \"laravel/mcp\": \"^0.7.0\",\n \"laravel/passport\": \"^13.0\",\n \"laravel/slack-notification-channel\": \"^3.4\",\n \"laravel/tinker\": \"^2.10.1\",\n\ncommit 431b4c096f4ad0272bac595d078871a78b510bb5\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 17:17:47 2026 +0300\n\n JY-18091 | Downgrade composer.json\n\ndiff --git a/composer.json b/composer.json\nindex 5db26da2c9..baacefbd5f 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -187,20 +187,18 @@\n \"require-dev\": {\n \"barryvdh/laravel-debugbar\": \"^3.15\",\n \"barryvdh/laravel-ide-helper\": \"^3.5\",\n- \"brianium/paratest\": \"^7.12\",\n+ \"brianium/paratest\": \"^7.5\",\n \"browserstack/browserstack-local\": \"^1.1.0\",\n \"filp/whoops\": \"^2.9\",\n \"friendsofphp/php-cs-fixer\": \"^3.66\",\n \"infection/infection\": \"^0.29.14\",\n \"jasonmccreary/laravel-test-assertions\": \"^2.5\",\n \"larastan/larastan\": \"^3.1\",\n- \"maglnet/composer-require-checker\": \"^4.8\",\n \"mockery/mockery\": \"^1.6\",\n \"nunomaduro/collision\": \"^8.6\",\n \"phpstan/phpstan\": \"^2.1\",\n- \"phpunit/phpunit\": \"^12.0\",\n- \"symfony/phpunit-bridge\": \"^7.0\",\n- \"vimeo/psalm\": \"^6.5.0\"\n+ \"phpunit/phpunit\": \"^11.5.50\",\n+ \"symfony/phpunit-bridge\": \"^7.0\"\n },\n \"autoload\": {\n \"classmap\": [\n\ncommit 90e9b4034f665e2a8cacaf937e55abc070b5af4a\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 16:25:45 2026 +0300\n\n JY-18091 | Changes, composer\n\ndiff --git a/composer.json b/composer.json\nindex 751005e37a..5db26da2c9 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -95,7 +95,7 @@\n \"google/apps-meet\": \"^0.5.1\",\n \"guzzlehttp/guzzle\": \"^7.8\",\n \"guzzlehttp/psr7\": \"^2.6\",\n- \"halaxa/json-machine\": \"^1.3\",\n+ \"halaxa/json-machine\": \"^1.2\",\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20\n\na8ba85203f JY-18091 | Resolve conflicts\n4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts\n1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp\n431b4c096f JY-18091 | Downgrade composer.json\n90e9b4034f JY-18091 | Changes, composer\nb63d6f5d1f JY-18091 | Composer changes\nd017fbd8aa JY-18091 | Merge\n7daa10a444 JY-18091 | Cs lint fixes\na472f51b71 JY-18091 | Update composer to support php 8.5\n1162b04371 fix(security): bump dependencies (alerts #477)\n0c1f2f35df JY-19957 | Update composer.lock with correct dep\n574315fc12 JY-19957 | Update composer.locl\nc97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade\ne4e0e6d46d Merge branch 'master' into secfix/composer-20260415\n7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)\n4f5795d1d5 JY-20479: Remove unused dependencies\ncaa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download\n07832f2eeb JY-20479: Transcript download PDF optimization\n9f17a0f70e JY-20526: Remove Sentence breaker\n4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 \"^docker-update:\" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \\\n || grep -rA 20 \"^docker-update:\" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40\n/Users/lukas/jiminny/app/Makefile:docker-update:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\taws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-up:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-stop:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux kill-session -t jiminny_dev_ngrok\n/Users/lukas/jiminny/app/Makefile-\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n \"arm64v8\\|/jiminny/app/qa\" ~/jiminny/infrastructure/dev/docker/docker-compose.yml\n8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 37 seconds ago Up 37 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n187d58491294 wernight/ngrok \"/entrypoint.sh\" 37 seconds ago Up 37 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nb433f55153b5 mariadb:11.4.5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\n207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 37 seconds ago Up 37 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nd09012232958 redis:5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Services/Mail/TextRelayServiceTest.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nSwitched to branch 'master'\nYour branch is up to date with 'origin/master'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 124, done.\nremote: Counting objects: 100% (123/123), done.\nremote: Compressing objects: 100% (32/32), done.\nremote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)\nReceiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.\nResolving deltas: 100% (93/93), completed with 33 local objects.\nFrom github.com:jiminny/app\n 23fdef5aa9..942ddbe31c master -> origin/master\n a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app\n 96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration\n a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details\n * [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only\n + 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)\n * [new branch] master-reset-ES -> origin/master-reset-ES\nUpdating 23fdef5aa9..942ddbe31c\nFast-forward\n contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------\n front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----\n front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--\n front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-\n front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------\n routes/api_v2.php | 6 +++---\n tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------\n 7 files changed, 61 insertions(+), 46 deletions(-)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\nphp-8.5: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\narm64v8-php-8.5: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env\n#IMAGE_TAG=\"latest\"\nIMAGE_TAG=\"arm64v8-latest\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 \"lamp:\" | grep image\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \ndocker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest \"docker-php-entrypoi…\" lamp 3 minutes ago Exited (2) 3 minutes ago \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\nlatest: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\narm64v8-latest: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\nff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 18 minutes ago Up 53 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n87804ee14786 wernight/ngrok \"/entrypoint.sh\" 18 minutes ago Up 53 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nbc04ffad01b2 mariadb:11.4.5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\ne985cd5cfbf7 redis:5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\n121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 18 minutes ago Up 53 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\n Filter, search, and stream logs from all your Compose services\n in one place with Docker Desktop's Logs view. docker-desktop://dashboard/logs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\nroot@docker_lamp_1:/home/jiminny# ^C\nroot@docker_lamp_1:/home/jiminny# \nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entity) $ dev\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> exit\n\n INFO Goodbye.\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 9.84ms DONE\n cache ............................................................................................................................... 69.91ms DONE\n compiled ............................................................................................................................. 2.96ms DONE\n events ............................................................................................................................... 1.19ms DONE\n routes ............................................................................................................................... 0.65ms DONE\n views ................................................................................................................................ 4.44ms DONE\n\nworker-crm-update:worker-crm-update_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-download:worker-download_00: stopped\nworker-nudges:worker-nudges_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> app(\\Jiminny\\Services\\Mail\\TextRelayService::class)->sync();\n\n= []\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 3.45ms DONE\n cache ............................................................................................................................... 10.26ms DONE\n compiled ............................................................................................................................. 1.84ms DONE\n events ............................................................................................................................... 0.72ms DONE\n routes ............................................................................................................................... 6.62ms DONE\n views ................................................................................................................................ 4.33ms DONE\n\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny#","is_focused":true}]...
|
-4558105702506540075
|
-5697495435470628134
|
click
|
accessibility
|
NULL
|
/Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SE /Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SECRET]
/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/.env.local:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/dev.json:18: "DB_ADMIN_PASSWORD" : "dgyt$rTe21-d",
/Users/lukas/jiminny/app/.env:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.vscode/settings.json:16: "password": "dgyt$rTe21-d"
/Users/lukas/jiminny/app/.env.root:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.env.root:394:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.other:14:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#[ENV_SECRET]
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop
320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep
a1718cfb Merge pull request #529 from jiminny/katranci-patch-1
74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3
0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2
4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue
220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url
543c60b8 Merge branch 'develop' into JY-19432-recall-api-url
f163a29e JY-19432 Fix formatting
6de60dd0 JY-19432 Fix formatting
78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances
2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3
d6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code
4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers
6426729b JY-20432 Set stopasgroup to false for dialers queue worker
92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities
e0796d89 Delete obsolete files
4a8b1ea2 Delete old docker build scripts before php-8 upgrade
d790e56d JY-20603 Fix formatting
fc758135 JY-20603 Move video ec2 instances to external subnet
ecb558d5 JY-20761 Spread php-app tasks over ec2 instances
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80
commit a8ba85203fb10fb793ff07a6e85efac833979335
Merge: c15e0c8201 a00d53bdd6
Author: Nikolay Ivanov <[EMAIL]>
Date: Fri May 15 10:44:44 2026 +0300
JY-18091 | Resolve conflicts
commit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1
Author: Nikolay Nikolov <[EMAIL]>
Date: Thu Apr 30 14:54:08 2026 +0300
JY-20625 | JY-20742 | Add laravel/mcp
# Conflicts:
# composer.lock
diff --git a/composer.json b/composer.json
index 02ffcc050e..89551995a1 100644
--- a/composer.json
+++ b/composer.json
@@ -113,6 +113,7 @@
"kalnoy/nestedset": "*",
"laravel/framework": "^12.28",
"laravel/helpers": "^1.7",
+ "laravel/mcp": "^0.7.0",
"laravel/passport": "^13.0",
"laravel/slack-notification-channel": "^3.4",
"laravel/tinker": "^2.10.1",
commit 431b4c096f4ad0272bac595d078871a78b510bb5
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 17:17:47 2026 +0300
JY-18091 | Downgrade composer.json
diff --git a/composer.json b/composer.json
index 5db26da2c9..baacefbd5f 100644
--- a/composer.json
+++ b/composer.json
@@ -187,20 +187,18 @@
"require-dev": {
"barryvdh/laravel-debugbar": "^3.15",
"barryvdh/laravel-ide-helper": "^3.5",
- "brianium/paratest": "^7.12",
+ "brianium/paratest": "^7.5",
"browserstack/browserstack-local": "^1.1.0",
"filp/whoops": "^2.9",
"friendsofphp/php-cs-fixer": "^3.66",
"infection/infection": "^0.29.14",
"jasonmccreary/laravel-test-assertions": "^2.5",
"larastan/larastan": "^3.1",
- "maglnet/composer-require-checker": "^4.8",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
"phpstan/phpstan": "^2.1",
- "phpunit/phpunit": "^12.0",
- "symfony/phpunit-bridge": "^7.0",
- "vimeo/psalm": "^6.5.0"
+ "phpunit/phpunit": "^11.5.50",
+ "symfony/phpunit-bridge": "^7.0"
},
"autoload": {
"classmap": [
commit 90e9b4034f665e2a8cacaf937e55abc070b5af4a
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 16:25:45 2026 +0300
JY-18091 | Changes, composer
diff --git a/composer.json b/composer.json
index 751005e37a..5db26da2c9 100644
--- a/composer.json
+++ b/composer.json
@@ -95,7 +95,7 @@
"google/apps-meet": "^0.5.1",
"guzzlehttp/guzzle": "^7.8",
"guzzlehttp/psr7": "^2.6",
- "halaxa/json-machine": "^1.3",
+ "halaxa/json-machine": "^1.2",
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20
a8ba85203f JY-18091 | Resolve conflicts
4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts
1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp
431b4c096f JY-18091 | Downgrade composer.json
90e9b4034f JY-18091 | Changes, composer
b63d6f5d1f JY-18091 | Composer changes
d017fbd8aa JY-18091 | Merge
7daa10a444 JY-18091 | Cs lint fixes
a472f51b71 JY-18091 | Update composer to support php 8.5
1162b04371 fix(security): bump dependencies (alerts #477)
0c1f2f35df JY-19957 | Update composer.lock with correct dep
574315fc12 JY-19957 | Update composer.locl
c97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade
e4e0e6d46d Merge branch 'master' into secfix/composer-20260415
7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)
4f5795d1d5 JY-20479: Remove unused dependencies
caa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download
07832f2eeb JY-20479: Transcript download PDF optimization
9f17a0f70e JY-20526: Remove Sentence breaker
4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 "^docker-update:" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \
|| grep -rA 20 "^docker-update:" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40
/Users/lukas/jiminny/app/Makefile:docker-update:
/Users/lukas/jiminny/app/Makefile- aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-up:
/Users/lukas/jiminny/app/Makefile- tmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-stop:
/Users/lukas/jiminny/app/Makefile- tmux kill-session -t jiminny_dev_ngrok
/Users/lukas/jiminny/app/Makefile-
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n "arm64v8\|/jiminny/app/qa" ~/jiminny/infrastructure/dev/docker/docker-compose.yml
8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
187d58491294 wernight/ngrok "/entrypoint.sh" 37 seconds ago Up 37 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
b433f55153b5 mariadb:11.4.5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
d09012232958 redis:5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
error: Your local changes to the following files would be overwritten by checkout:
tests/Unit/Services/Mail/TextRelayServiceTest.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M config/logging.php
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 124, done.
remote: Counting objects: 100% (123/123), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)
Receiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.
Resolving deltas: 100% (93/93), completed with 33 local objects.
From github.com:jiminny/app
23fdef5aa9..942ddbe31c master -> origin/master
a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app
96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration
a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
* [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only
+ 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)
* [new branch] master-reset-ES -> origin/master-reset-ES
Updating 23fdef5aa9..942ddbe31c
Fast-forward
contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------
front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----
front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--
front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-
front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------
routes/api_v2.php | 6 +++---
tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------
7 files changed, 61 insertions(+), 46 deletions(-)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env
#IMAGE_TAG="latest"
IMAGE_TAG="arm64v8-latest"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 "lamp:" | grep image
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
docker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest "docker-php-entrypoi…" lamp 3 minutes ago Exited (2) 3 minutes ago
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
87804ee14786 wernight/ngrok "/entrypoint.sh" 18 minutes ago Up 53 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
bc04ffad01b2 mariadb:11.4.5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
e985cd5cfbf7 redis:5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
Filter, search, and stream logs from all your Compose services
in one place with Docker Desktop's Logs view. [URL_WITH_CREDENTIALS]
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2
Learn more at [URL_WITH_CREDENTIALS] php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 9.84ms DONE
cache [PASSWORD_DOTS] 69.91ms DONE
compiled [PASSWORD_DOTS] 2.96ms DONE
events [PASSWORD_DOTS] 1.19ms DONE
routes [PASSWORD_DOTS] 0.65ms DONE
views [PASSWORD_DOTS] 4.44ms DONE
worker-crm-update:worker-crm-update_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-download:worker-download_00: stopped
worker-nudges:worker-nudges_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-emails:worker-emails_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan tinker
Psy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman
New PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`
> app(\Jiminny\Services\Mail\TextRelayService::class)->sync();
= []
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 3.45ms DONE
cache [PASSWORD_DOTS] 10.26ms DONE
compiled [PASSWORD_DOTS] 1.84ms DONE
events [PASSWORD_DOTS] 0.72ms DONE
routes [PASSWORD_DOTS] 6.62ms DONE
views [PASSWORD_DOTS] 4.33ms DONE
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-download:worker-download_00: stopped
worker-emails:worker-emails_00: stopped
worker-nudges:worker-nudges_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-conferences:worker-conferences_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny#...
|
78734
|
NULL
|
NULL
|
NULL
|
|
78734
|
2764
|
34
|
2026-05-27T12:57:10.901287+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886630901_m2.jpg...
|
PhpStorm
|
faVsco.js – laravel.log
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
122
Previous Highlighted Error
Next Highlighted Error
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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.09740692,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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.8374335,"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":"TextRelayServiceTest","depth":6,"bounds":{"left":0.85272604,"top":0.019952115,"width":0.062832445,"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 'TextRelayServiceTest'","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 'TextRelayServiceTest'","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":"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.37632978,"top":0.10055866,"width":0.00731383,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","depth":4,"bounds":{"left":0.3856383,"top":0.10055866,"width":0.009640957,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.39694148,"top":0.09896249,"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.40425533,"top":0.09896249,"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\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\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":"122","depth":4,"bounds":{"left":0.7257314,"top":0.10055866,"width":0.011635638,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.7390292,"top":0.09896249,"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.7463431,"top":0.09896249,"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":"","depth":4,"bounds":{"left":0.43051863,"top":0.09736632,"width":0.32280585,"height":0.8818835},"on_screen":true,"value":"","role_description":"text entry area","is_enabled":true,"is_focused":true,"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}]...
|
3162128085625244858
|
-5281383151892526197
|
typing_pause
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
122
Previous Highlighted Error
Next Highlighted Error
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
78733
|
2764
|
33
|
2026-05-27T12:57:07.635492+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886627635_m2.jpg...
|
PhpStorm
|
faVsco.js – laravel.log
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
118
Previous Highlighted Error
Next Highlighted Error
[2026-05-27 12:55:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"41d4bbce-5baf-49aa-a276-c1c74a65020a","trace_id":"1d0d4404-bf0a-4053-84ca-68be39511779"}
[2026-05-27 12:55:12] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {"count":0} {"correlation_id":"41d4bbce-5baf-49aa-a276-c1c74a65020a","trace_id":"1d0d4404-bf0a-4053-84ca-68be39511779"}
[2026-05-27 12:55:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"41d4bbce-5baf-49aa-a276-c1c74a65020a","trace_id":"1d0d4404-bf0a-4053-84ca-68be39511779"}
[2026-05-27 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d","trace_id":"aedb441d-c947-4f26-a1cd-056e48b6f5ed"}
[2026-05-27 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d","trace_id":"aedb441d-c947-4f26-a1cd-056e48b6f5ed"}
[2026-05-27 12:55:15] local.NOTICE: Monitoring start {"correlation_id":"56b0df60-e16c-4c60-a577-f394e33e2ddc","trace_id":"ba2c277f-5516-49b6-854a-b4f446a1cb6c"}
[2026-05-27 12:55:15] local.NOTICE: Monitoring end {"correlation_id":"56b0df60-e16c-4c60-a577-f394e33e2ddc","trace_id":"ba2c277f-5516-49b6-854a-b4f446a1cb6c"}
[2026-05-27 12:55:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"3b3db768-2cbe-4893-a39d-39c1ed923f29","trace_id":"dedb9613-95f2-47d1-a51b-82fff1514a22"}
[2026-05-27 12:55:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"3b3db768-2cbe-4893-a39d-39c1ed923f29","trace_id":"dedb9613-95f2-47d1-a51b-82fff1514a22"}
[2026-05-27 12:55:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:18] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:18] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"5e1f4a28-d081-4c59-8d76-a116dadc701e","trace_id":"b7e8d289-707b-47c1-9d6c-f47ebad1e01b"}
[2026-05-27 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"5e1f4a28-d081-4c59-8d76-a116dadc701e","trace_id":"b7e8d289-707b-47c1-9d6c-f47ebad1e01b"}
[2026-05-27 12:55:21] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:21] local.INFO: [TextRelayService] Starting sync {"mailbox":"[EMAIL]","expected_alias":"catch-all","expected_host":"txt.staging.jiminny.com"} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:22] local.INFO: [TextRelayService] Sync completed {"mailbox":"[EMAIL]","messages_processed":0,"message_ids":[]} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"87e0c627-3642-4d17-bf25-264f6fdc1969","trace_id":"3b555fb3-83d8-4284-bb7c-0f783b4ed083"}
[2026-05-27 12:55:25] local.INFO: Running pre-meeting notification command {"correlation_id":"87e0c627-3642-4d17-bf25-264f6fdc1969","trace_id":"3b555fb3-83d8-4284-bb7c-0f783b4ed083"}
[2026-05-27 12:55:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"87e0c627-3642-4d17-bf25-264f6fdc1969","trace_id":"3b555fb3-83d8-4284-bb7c-0f783b4ed083"}
[2026-05-27 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:28] local.INFO: Running conference:monitor:start command for activities in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:28] local.INFO: [conference:monitor:start] No activities found in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:38] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:38] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:38] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:38] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"85c09ea4-f8d1-4cc2-b767-a5f2d957d016","trace_id":"4fe5a8fa-1ac5-407c-926c-83f504d762d4"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"6e057ca5-65bf-41f6-b8af-08e715bc654d","trace_id":"6aea00b5-6221-4847-8961-7a86ef3210cd"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"6e057ca5-65bf-41f6-b8af-08e715bc654d","trace_id":"6aea00b5-6221-4847-8961-7a86ef3210cd"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-27T12:57:45.940375Z"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"85c09ea4-f8d1-4cc2-b767-a5f2d957d016","trace_id":"4fe5a8fa-1ac5-407c-926c-83f504d762d4"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:03] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"52d58fe6-511d-4783-83d2-2cd095621565","trace_id":"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12"}
[2026-05-27 12:56:03] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {"count":0} {"correlation_id":"52d58fe6-511d-4783-83d2-2cd095621565","trace_id":"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12"}
[2026-05-27 12:56:03] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"52d58fe6-511d-4783-83d2-2cd095621565","trace_id":"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12"}
[2026-05-27 12:56:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1","trace_id":"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4"}
[2026-05-27 12:56:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1","trace_id":"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4"}
[2026-05-27 12:56:06] local.NOTICE: Monitoring start {"correlation_id":"dc41678d-bf39-4a6e-870f-d38c97eff1c3","trace_id":"10976781-275a-4aee-a84d-b6fa96ad2602"}
[2026-05-27 12:56:06] local.NOTICE: Monitoring end {"correlation_id":"dc41678d-bf39-4a6e-870f-d38c97eff1c3","trace_id":"10976781-275a-4aee-a84d-b6fa96ad2602"}
[2026-05-27 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"45813b78-011b-4ba5-8928-5a82bdd9f4ab","trace_id":"f88e2e25-2c4f-4690-a49b-ccc8fb856866"}
[2026-05-27 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"45813b78-011b-4ba5-8928-5a82bdd9f4ab","trace_id":"f88e2e25-2c4f-4690-a49b-ccc8fb856866"}
[2026-05-27 12:56:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:09] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:09] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:11] local.INFO: Running conference:monitor:count command for activities in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:11] local.INFO: [conference:monitor:count] No activities found in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"aab715c2-fbe0-4a65-9292-b2b218775424","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"aab715c2-fbe0-4a65-9292-b2b218775424","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SyncHubspotObjects] Starting sync {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","usage":24777784,"real_usage":65011712,"pid":42210} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1499,"provider":"hubspot","refreshToken":"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86","state":"connected"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [SocialAccountService] Token refreshed {"socialAccountId":1499,"provider":"hubspot","state":"connected"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {"team":2} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/deals/search","total_requests":1,"total_records_fetched":0,"total_elapsed_seconds":0.28,"average_seconds_per_request":0.28} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [HubSpot] Synced opportunities {"team":2,"strategies":"lastModified","sync_count":0,"total":0,"last_synced_id":null,"duration_ms":286.56} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","provider":"hubspot","status":"completed","duration_ms":1417.45,"usage":25188000,"real_usage":65011712,"pid":42210} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","usage":25162720,"real_usage":65011712,"pid":42210} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {"userId":"33e34a7a-1c02-4f04-87ac-22c3a385e6e3","account":{"Jiminny\\Models\\SocialAccount":{"id":306,"sociable_id":109,"provider_user_id":"11348452","expires":1701077403,"refresh_token_expires":null,"provider":"hubspot","state":"full-refresh","auth_scope":null,"retry_after":null,"created_at":"2020-09-01 16:59:04","updated_at":"2023-11-27 09:30:03"}}} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":109,"team_id":29} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","provider":"hubspot","status":"disconnected","duration_ms":28.83,"usage":25162928,"real_usage":65011712,"pid":42210,"reason":"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","usage":25120440,"real_usage":65011712,"pid":42210} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {"userId":"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b","account":null} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":130,"team_id":42} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","provider":"hubspot","status":"disconnected","duration_ms":50.47,"usage":25140104,"real_usage":65011712,"pid":42210,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","usage":25100792,"real_usage":65011712,"pid":42210} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {"userId":"71e3aac5-fb66-47c5-a236-2d051ae3e319","account":null} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":256,"team_id":49} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","provider":"hubspot","status":"disconnected","duration_ms":61.91,"usage":25136552,"real_usage":65011712,"pid":42210,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"8adbd852-a071-43d7-9393-80d2ceb0461e","trace_id":"f2fefab6-f987-4a8d-8ba9-98e358be3479"}
[2026-05-27 12:56:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"8adbd852-a071-43d7-9393-80d2ceb0461e","trace_id":"f2fefab6-f987-4a8d-8ba9-98e358be3479"}
[2026-05-27 12:56:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:19] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:19] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {"inbox_id":59} {"correlation_id":"cf9cc0f9-72df-468a-9dfd-7419e132cd3c","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {"correlation_id":"cf9cc0f9-72df-468a-9dfd-7419e132cd3c","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":59} {"correlation_id":"cf9cc0f9-72df-468a-9dfd-7419e132cd3c","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {"inbox_id":212} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.WARNING: [Salesforce] Account not connected for user {"userId":"641f1acb-16b8-42d1-8726-df52979dad0e","account":{"Jiminny\\Models\\SocialAccount":{"id":1500,"sociable_id":143,"provider_user_id":"0052g000003frelAAA","expires":null,"refresh_token_expires":null,"provider":"salesforce","state":"full-refresh","auth_scope":"refresh_token web api","retry_after":null,"created_at":"2026-02-06 08:39:03","updated_at":"2026-05-14 09:46:30"}}} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"salesforce","crm_owner":143,"team_id":1} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.ERROR: Failed to set service context for google: Your Salesforce account has become disconnected. Please login to Jiminny to reconnect. {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":212} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:42] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:42] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:42] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:42] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:42] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:42] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":250.7,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.88} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:42] local.INFO: [HubSpot Journal Polling] Released polling lock {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:58] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {"pid":50064,"target":"activities"} {"correlation_id":"f12c12af-7383-420f-b547-0ed048bf10da","trace_id":"3ff9040b-43e3-4602-932f-30859690fe64"}
[2026-05-27 12:57:03] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"e638e561-7424-43cb-bc2e-fa565d3f9752","trace_id":"fb541cfd-fb6f-4f99-a3f8-069be37ccd5e"}
[2026-05-27 12:57:03] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {"count":0} {"correlation_id":"e638e561-7424-43cb-bc2e-fa565d3f9752","trace_id":"fb541cfd-fb6f-4f99-a3f8-069be37ccd5e"}
[2026-05-27 12:57:03] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"e638e561-7424-43cb-bc2e-fa565d3f9752","trace_id":"fb541cfd-fb6f-4f99-a3f8-069be37ccd5e"}
[2026-05-27 12:57:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"a4814a94-a77d-4ba9-9c82-567ae915042d","trace_id":"ec875a7f-5c74-427b-a1a1-320b92486ebe"}
[2026-05-27 12:57:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"a4814a94-a77d-4ba9-9c82-567ae915042d","trace_id":"ec875a7f-5c74-427b-a1a1-320b92486ebe"}...
|
[{"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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.09740692,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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.8374335,"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":"TextRelayServiceTest","depth":6,"bounds":{"left":0.85272604,"top":0.019952115,"width":0.062832445,"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 'TextRelayServiceTest'","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 'TextRelayServiceTest'","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":"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.37632978,"top":0.10055866,"width":0.00731383,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","depth":4,"bounds":{"left":0.3856383,"top":0.10055866,"width":0.009640957,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.39694148,"top":0.09896249,"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.40425533,"top":0.09896249,"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\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\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":"118","depth":4,"bounds":{"left":0.72606385,"top":0.10055866,"width":0.011303191,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.7390292,"top":0.09896249,"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.7463431,"top":0.09896249,"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":"[2026-05-27 12:55:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"41d4bbce-5baf-49aa-a276-c1c74a65020a\",\"trace_id\":\"1d0d4404-bf0a-4053-84ca-68be39511779\"}\n[2026-05-27 12:55:12] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {\"count\":0} {\"correlation_id\":\"41d4bbce-5baf-49aa-a276-c1c74a65020a\",\"trace_id\":\"1d0d4404-bf0a-4053-84ca-68be39511779\"}\n[2026-05-27 12:55:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"41d4bbce-5baf-49aa-a276-c1c74a65020a\",\"trace_id\":\"1d0d4404-bf0a-4053-84ca-68be39511779\"}\n[2026-05-27 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d\",\"trace_id\":\"aedb441d-c947-4f26-a1cd-056e48b6f5ed\"}\n[2026-05-27 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d\",\"trace_id\":\"aedb441d-c947-4f26-a1cd-056e48b6f5ed\"}\n[2026-05-27 12:55:15] local.NOTICE: Monitoring start {\"correlation_id\":\"56b0df60-e16c-4c60-a577-f394e33e2ddc\",\"trace_id\":\"ba2c277f-5516-49b6-854a-b4f446a1cb6c\"}\n[2026-05-27 12:55:15] local.NOTICE: Monitoring end {\"correlation_id\":\"56b0df60-e16c-4c60-a577-f394e33e2ddc\",\"trace_id\":\"ba2c277f-5516-49b6-854a-b4f446a1cb6c\"}\n[2026-05-27 12:55:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"3b3db768-2cbe-4893-a39d-39c1ed923f29\",\"trace_id\":\"dedb9613-95f2-47d1-a51b-82fff1514a22\"}\n[2026-05-27 12:55:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"3b3db768-2cbe-4893-a39d-39c1ed923f29\",\"trace_id\":\"dedb9613-95f2-47d1-a51b-82fff1514a22\"}\n[2026-05-27 12:55:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:18] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:18] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"5e1f4a28-d081-4c59-8d76-a116dadc701e\",\"trace_id\":\"b7e8d289-707b-47c1-9d6c-f47ebad1e01b\"}\n[2026-05-27 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"5e1f4a28-d081-4c59-8d76-a116dadc701e\",\"trace_id\":\"b7e8d289-707b-47c1-9d6c-f47ebad1e01b\"}\n[2026-05-27 12:55:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:21] local.INFO: [TextRelayService] Starting sync {\"mailbox\":\"catch-all@txt.staging.jiminny.com\",\"expected_alias\":\"catch-all\",\"expected_host\":\"txt.staging.jiminny.com\"} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:22] local.INFO: [TextRelayService] Sync completed {\"mailbox\":\"catch-all@txt.staging.jiminny.com\",\"messages_processed\":0,\"message_ids\":[]} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"87e0c627-3642-4d17-bf25-264f6fdc1969\",\"trace_id\":\"3b555fb3-83d8-4284-bb7c-0f783b4ed083\"}\n[2026-05-27 12:55:25] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"87e0c627-3642-4d17-bf25-264f6fdc1969\",\"trace_id\":\"3b555fb3-83d8-4284-bb7c-0f783b4ed083\"}\n[2026-05-27 12:55:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"87e0c627-3642-4d17-bf25-264f6fdc1969\",\"trace_id\":\"3b555fb3-83d8-4284-bb7c-0f783b4ed083\"}\n[2026-05-27 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:28] local.INFO: Running conference:monitor:start command for activities in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:28] local.INFO: [conference:monitor:start] No activities found in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:38] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:38] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:38] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:38] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"85c09ea4-f8d1-4cc2-b767-a5f2d957d016\",\"trace_id\":\"4fe5a8fa-1ac5-407c-926c-83f504d762d4\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"6e057ca5-65bf-41f6-b8af-08e715bc654d\",\"trace_id\":\"6aea00b5-6221-4847-8961-7a86ef3210cd\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"6e057ca5-65bf-41f6-b8af-08e715bc654d\",\"trace_id\":\"6aea00b5-6221-4847-8961-7a86ef3210cd\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-27T12:57:45.940375Z\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"85c09ea4-f8d1-4cc2-b767-a5f2d957d016\",\"trace_id\":\"4fe5a8fa-1ac5-407c-926c-83f504d762d4\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:03] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"52d58fe6-511d-4783-83d2-2cd095621565\",\"trace_id\":\"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12\"}\n[2026-05-27 12:56:03] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {\"count\":0} {\"correlation_id\":\"52d58fe6-511d-4783-83d2-2cd095621565\",\"trace_id\":\"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12\"}\n[2026-05-27 12:56:03] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"52d58fe6-511d-4783-83d2-2cd095621565\",\"trace_id\":\"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12\"}\n[2026-05-27 12:56:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1\",\"trace_id\":\"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4\"}\n[2026-05-27 12:56:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1\",\"trace_id\":\"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4\"}\n[2026-05-27 12:56:06] local.NOTICE: Monitoring start {\"correlation_id\":\"dc41678d-bf39-4a6e-870f-d38c97eff1c3\",\"trace_id\":\"10976781-275a-4aee-a84d-b6fa96ad2602\"}\n[2026-05-27 12:56:06] local.NOTICE: Monitoring end {\"correlation_id\":\"dc41678d-bf39-4a6e-870f-d38c97eff1c3\",\"trace_id\":\"10976781-275a-4aee-a84d-b6fa96ad2602\"}\n[2026-05-27 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"45813b78-011b-4ba5-8928-5a82bdd9f4ab\",\"trace_id\":\"f88e2e25-2c4f-4690-a49b-ccc8fb856866\"}\n[2026-05-27 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"45813b78-011b-4ba5-8928-5a82bdd9f4ab\",\"trace_id\":\"f88e2e25-2c4f-4690-a49b-ccc8fb856866\"}\n[2026-05-27 12:56:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:09] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:09] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:11] local.INFO: Running conference:monitor:count command for activities in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:11] local.INFO: [conference:monitor:count] No activities found in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"aab715c2-fbe0-4a65-9292-b2b218775424\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"aab715c2-fbe0-4a65-9292-b2b218775424\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":24777784,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":1,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0.28} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [HubSpot] Synced opportunities {\"team\":2,\"strategies\":\"lastModified\",\"sync_count\":0,\"total\":0,\"last_synced_id\":null,\"duration_ms\":286.56} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1417.45,\"usage\":25188000,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25162720,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":28.83,\"usage\":25162928,\"real_usage\":65011712,\"pid\":42210,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25120440,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":50.47,\"usage\":25140104,\"real_usage\":65011712,\"pid\":42210,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25100792,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":61.91,\"usage\":25136552,\"real_usage\":65011712,\"pid\":42210,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"8adbd852-a071-43d7-9393-80d2ceb0461e\",\"trace_id\":\"f2fefab6-f987-4a8d-8ba9-98e358be3479\"}\n[2026-05-27 12:56:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"8adbd852-a071-43d7-9393-80d2ceb0461e\",\"trace_id\":\"f2fefab6-f987-4a8d-8ba9-98e358be3479\"}\n[2026-05-27 12:56:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:19] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:19] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"cf9cc0f9-72df-468a-9dfd-7419e132cd3c\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"cf9cc0f9-72df-468a-9dfd-7419e132cd3c\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"cf9cc0f9-72df-468a-9dfd-7419e132cd3c\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"641f1acb-16b8-42d1-8726-df52979dad0e\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1500,\"sociable_id\":143,\"provider_user_id\":\"0052g000003frelAAA\",\"expires\":null,\"refresh_token_expires\":null,\"provider\":\"salesforce\",\"state\":\"full-refresh\",\"auth_scope\":\"refresh_token web api\",\"retry_after\":null,\"created_at\":\"2026-02-06 08:39:03\",\"updated_at\":\"2026-05-14 09:46:30\"}}} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":143,\"team_id\":1} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.ERROR: Failed to set service context for google: Your Salesforce account has become disconnected. Please login to Jiminny to reconnect. {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:42] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:42] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:42] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:42] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:42] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:42] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":57,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":250.7,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.88} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:42] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:58] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {\"pid\":50064,\"target\":\"activities\"} {\"correlation_id\":\"f12c12af-7383-420f-b547-0ed048bf10da\",\"trace_id\":\"3ff9040b-43e3-4602-932f-30859690fe64\"}\n[2026-05-27 12:57:03] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"e638e561-7424-43cb-bc2e-fa565d3f9752\",\"trace_id\":\"fb541cfd-fb6f-4f99-a3f8-069be37ccd5e\"}\n[2026-05-27 12:57:03] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {\"count\":0} {\"correlation_id\":\"e638e561-7424-43cb-bc2e-fa565d3f9752\",\"trace_id\":\"fb541cfd-fb6f-4f99-a3f8-069be37ccd5e\"}\n[2026-05-27 12:57:03] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"e638e561-7424-43cb-bc2e-fa565d3f9752\",\"trace_id\":\"fb541cfd-fb6f-4f99-a3f8-069be37ccd5e\"}\n[2026-05-27 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"a4814a94-a77d-4ba9-9c82-567ae915042d\",\"trace_id\":\"ec875a7f-5c74-427b-a1a1-320b92486ebe\"}\n[2026-05-27 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"a4814a94-a77d-4ba9-9c82-567ae915042d\",\"trace_id\":\"ec875a7f-5c74-427b-a1a1-320b92486ebe\"}","depth":4,"bounds":{"left":0.4331782,"top":0.09736632,"width":0.5668218,"height":0.90263367},"on_screen":true,"value":"[2026-05-27 12:55:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"41d4bbce-5baf-49aa-a276-c1c74a65020a\",\"trace_id\":\"1d0d4404-bf0a-4053-84ca-68be39511779\"}\n[2026-05-27 12:55:12] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {\"count\":0} {\"correlation_id\":\"41d4bbce-5baf-49aa-a276-c1c74a65020a\",\"trace_id\":\"1d0d4404-bf0a-4053-84ca-68be39511779\"}\n[2026-05-27 12:55:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"41d4bbce-5baf-49aa-a276-c1c74a65020a\",\"trace_id\":\"1d0d4404-bf0a-4053-84ca-68be39511779\"}\n[2026-05-27 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d\",\"trace_id\":\"aedb441d-c947-4f26-a1cd-056e48b6f5ed\"}\n[2026-05-27 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d\",\"trace_id\":\"aedb441d-c947-4f26-a1cd-056e48b6f5ed\"}\n[2026-05-27 12:55:15] local.NOTICE: Monitoring start {\"correlation_id\":\"56b0df60-e16c-4c60-a577-f394e33e2ddc\",\"trace_id\":\"ba2c277f-5516-49b6-854a-b4f446a1cb6c\"}\n[2026-05-27 12:55:15] local.NOTICE: Monitoring end {\"correlation_id\":\"56b0df60-e16c-4c60-a577-f394e33e2ddc\",\"trace_id\":\"ba2c277f-5516-49b6-854a-b4f446a1cb6c\"}\n[2026-05-27 12:55:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"3b3db768-2cbe-4893-a39d-39c1ed923f29\",\"trace_id\":\"dedb9613-95f2-47d1-a51b-82fff1514a22\"}\n[2026-05-27 12:55:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"3b3db768-2cbe-4893-a39d-39c1ed923f29\",\"trace_id\":\"dedb9613-95f2-47d1-a51b-82fff1514a22\"}\n[2026-05-27 12:55:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:18] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:18] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"5e1f4a28-d081-4c59-8d76-a116dadc701e\",\"trace_id\":\"b7e8d289-707b-47c1-9d6c-f47ebad1e01b\"}\n[2026-05-27 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"5e1f4a28-d081-4c59-8d76-a116dadc701e\",\"trace_id\":\"b7e8d289-707b-47c1-9d6c-f47ebad1e01b\"}\n[2026-05-27 12:55:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:21] local.INFO: [TextRelayService] Starting sync {\"mailbox\":\"catch-all@txt.staging.jiminny.com\",\"expected_alias\":\"catch-all\",\"expected_host\":\"txt.staging.jiminny.com\"} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:22] local.INFO: [TextRelayService] Sync completed {\"mailbox\":\"catch-all@txt.staging.jiminny.com\",\"messages_processed\":0,\"message_ids\":[]} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"87e0c627-3642-4d17-bf25-264f6fdc1969\",\"trace_id\":\"3b555fb3-83d8-4284-bb7c-0f783b4ed083\"}\n[2026-05-27 12:55:25] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"87e0c627-3642-4d17-bf25-264f6fdc1969\",\"trace_id\":\"3b555fb3-83d8-4284-bb7c-0f783b4ed083\"}\n[2026-05-27 12:55:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"87e0c627-3642-4d17-bf25-264f6fdc1969\",\"trace_id\":\"3b555fb3-83d8-4284-bb7c-0f783b4ed083\"}\n[2026-05-27 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:28] local.INFO: Running conference:monitor:start command for activities in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:28] local.INFO: [conference:monitor:start] No activities found in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:38] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:38] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:38] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:38] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"85c09ea4-f8d1-4cc2-b767-a5f2d957d016\",\"trace_id\":\"4fe5a8fa-1ac5-407c-926c-83f504d762d4\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"6e057ca5-65bf-41f6-b8af-08e715bc654d\",\"trace_id\":\"6aea00b5-6221-4847-8961-7a86ef3210cd\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"6e057ca5-65bf-41f6-b8af-08e715bc654d\",\"trace_id\":\"6aea00b5-6221-4847-8961-7a86ef3210cd\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-27T12:57:45.940375Z\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"85c09ea4-f8d1-4cc2-b767-a5f2d957d016\",\"trace_id\":\"4fe5a8fa-1ac5-407c-926c-83f504d762d4\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:03] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"52d58fe6-511d-4783-83d2-2cd095621565\",\"trace_id\":\"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12\"}\n[2026-05-27 12:56:03] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {\"count\":0} {\"correlation_id\":\"52d58fe6-511d-4783-83d2-2cd095621565\",\"trace_id\":\"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12\"}\n[2026-05-27 12:56:03] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"52d58fe6-511d-4783-83d2-2cd095621565\",\"trace_id\":\"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12\"}\n[2026-05-27 12:56:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1\",\"trace_id\":\"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4\"}\n[2026-05-27 12:56:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1\",\"trace_id\":\"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4\"}\n[2026-05-27 12:56:06] local.NOTICE: Monitoring start {\"correlation_id\":\"dc41678d-bf39-4a6e-870f-d38c97eff1c3\",\"trace_id\":\"10976781-275a-4aee-a84d-b6fa96ad2602\"}\n[2026-05-27 12:56:06] local.NOTICE: Monitoring end {\"correlation_id\":\"dc41678d-bf39-4a6e-870f-d38c97eff1c3\",\"trace_id\":\"10976781-275a-4aee-a84d-b6fa96ad2602\"}\n[2026-05-27 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"45813b78-011b-4ba5-8928-5a82bdd9f4ab\",\"trace_id\":\"f88e2e25-2c4f-4690-a49b-ccc8fb856866\"}\n[2026-05-27 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"45813b78-011b-4ba5-8928-5a82bdd9f4ab\",\"trace_id\":\"f88e2e25-2c4f-4690-a49b-ccc8fb856866\"}\n[2026-05-27 12:56:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:09] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:09] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:11] local.INFO: Running conference:monitor:count command for activities in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:11] local.INFO: [conference:monitor:count] No activities found in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"aab715c2-fbe0-4a65-9292-b2b218775424\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"aab715c2-fbe0-4a65-9292-b2b218775424\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":24777784,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":1,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0.28} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [HubSpot] Synced opportunities {\"team\":2,\"strategies\":\"lastModified\",\"sync_count\":0,\"total\":0,\"last_synced_id\":null,\"duration_ms\":286.56} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1417.45,\"usage\":25188000,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25162720,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":28.83,\"usage\":25162928,\"real_usage\":65011712,\"pid\":42210,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25120440,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":50.47,\"usage\":25140104,\"real_usage\":65011712,\"pid\":42210,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25100792,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":61.91,\"usage\":25136552,\"real_usage\":65011712,\"pid\":42210,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"8adbd852-a071-43d7-9393-80d2ceb0461e\",\"trace_id\":\"f2fefab6-f987-4a8d-8ba9-98e358be3479\"}\n[2026-05-27 12:56:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"8adbd852-a071-43d7-9393-80d2ceb0461e\",\"trace_id\":\"f2fefab6-f987-4a8d-8ba9-98e358be3479\"}\n[2026-05-27 12:56:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:19] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:19] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"cf9cc0f9-72df-468a-9dfd-7419e132cd3c\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"cf9cc0f9-72df-468a-9dfd-7419e132cd3c\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"cf9cc0f9-72df-468a-9dfd-7419e132cd3c\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"641f1acb-16b8-42d1-8726-df52979dad0e\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1500,\"sociable_id\":143,\"provider_user_id\":\"0052g000003frelAAA\",\"expires\":null,\"refresh_token_expires\":null,\"provider\":\"salesforce\",\"state\":\"full-refresh\",\"auth_scope\":\"refresh_token web api\",\"retry_after\":null,\"created_at\":\"2026-02-06 08:39:03\",\"updated_at\":\"2026-05-14 09:46:30\"}}} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":143,\"team_id\":1} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.ERROR: Failed to set service context for google: Your Salesforce account has become disconnected. Please login to Jiminny to reconnect. {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:42] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:42] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:42] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:42] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:42] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:42] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":57,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":250.7,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.88} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:42] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:58] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {\"pid\":50064,\"target\":\"activities\"} {\"correlation_id\":\"f12c12af-7383-420f-b547-0ed048bf10da\",\"trace_id\":\"3ff9040b-43e3-4602-932f-30859690fe64\"}\n[2026-05-27 12:57:03] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"e638e561-7424-43cb-bc2e-fa565d3f9752\",\"trace_id\":\"fb541cfd-fb6f-4f99-a3f8-069be37ccd5e\"}\n[2026-05-27 12:57:03] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {\"count\":0} {\"correlation_id\":\"e638e561-7424-43cb-bc2e-fa565d3f9752\",\"trace_id\":\"fb541cfd-fb6f-4f99-a3f8-069be37ccd5e\"}\n[2026-05-27 12:57:03] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"e638e561-7424-43cb-bc2e-fa565d3f9752\",\"trace_id\":\"fb541cfd-fb6f-4f99-a3f8-069be37ccd5e\"}\n[2026-05-27 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"a4814a94-a77d-4ba9-9c82-567ae915042d\",\"trace_id\":\"ec875a7f-5c74-427b-a1a1-320b92486ebe\"}\n[2026-05-27 12:57:06] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"a4814a94-a77d-4ba9-9c82-567ae915042d\",\"trace_id\":\"ec875a7f-5c74-427b-a1a1-320b92486ebe\"}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false}]...
|
119370622639584746
|
-2344704212223857347
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
118
Previous Highlighted Error
Next Highlighted Error
[2026-05-27 12:55:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"41d4bbce-5baf-49aa-a276-c1c74a65020a","trace_id":"1d0d4404-bf0a-4053-84ca-68be39511779"}
[2026-05-27 12:55:12] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {"count":0} {"correlation_id":"41d4bbce-5baf-49aa-a276-c1c74a65020a","trace_id":"1d0d4404-bf0a-4053-84ca-68be39511779"}
[2026-05-27 12:55:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"41d4bbce-5baf-49aa-a276-c1c74a65020a","trace_id":"1d0d4404-bf0a-4053-84ca-68be39511779"}
[2026-05-27 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d","trace_id":"aedb441d-c947-4f26-a1cd-056e48b6f5ed"}
[2026-05-27 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d","trace_id":"aedb441d-c947-4f26-a1cd-056e48b6f5ed"}
[2026-05-27 12:55:15] local.NOTICE: Monitoring start {"correlation_id":"56b0df60-e16c-4c60-a577-f394e33e2ddc","trace_id":"ba2c277f-5516-49b6-854a-b4f446a1cb6c"}
[2026-05-27 12:55:15] local.NOTICE: Monitoring end {"correlation_id":"56b0df60-e16c-4c60-a577-f394e33e2ddc","trace_id":"ba2c277f-5516-49b6-854a-b4f446a1cb6c"}
[2026-05-27 12:55:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"3b3db768-2cbe-4893-a39d-39c1ed923f29","trace_id":"dedb9613-95f2-47d1-a51b-82fff1514a22"}
[2026-05-27 12:55:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"3b3db768-2cbe-4893-a39d-39c1ed923f29","trace_id":"dedb9613-95f2-47d1-a51b-82fff1514a22"}
[2026-05-27 12:55:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:18] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:18] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"5e1f4a28-d081-4c59-8d76-a116dadc701e","trace_id":"b7e8d289-707b-47c1-9d6c-f47ebad1e01b"}
[2026-05-27 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"5e1f4a28-d081-4c59-8d76-a116dadc701e","trace_id":"b7e8d289-707b-47c1-9d6c-f47ebad1e01b"}
[2026-05-27 12:55:21] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:21] local.INFO: [TextRelayService] Starting sync {"mailbox":"[EMAIL]","expected_alias":"catch-all","expected_host":"txt.staging.jiminny.com"} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:22] local.INFO: [TextRelayService] Sync completed {"mailbox":"[EMAIL]","messages_processed":0,"message_ids":[]} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"87e0c627-3642-4d17-bf25-264f6fdc1969","trace_id":"3b555fb3-83d8-4284-bb7c-0f783b4ed083"}
[2026-05-27 12:55:25] local.INFO: Running pre-meeting notification command {"correlation_id":"87e0c627-3642-4d17-bf25-264f6fdc1969","trace_id":"3b555fb3-83d8-4284-bb7c-0f783b4ed083"}
[2026-05-27 12:55:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"87e0c627-3642-4d17-bf25-264f6fdc1969","trace_id":"3b555fb3-83d8-4284-bb7c-0f783b4ed083"}
[2026-05-27 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:28] local.INFO: Running conference:monitor:start command for activities in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:28] local.INFO: [conference:monitor:start] No activities found in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:38] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:38] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:38] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:38] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"85c09ea4-f8d1-4cc2-b767-a5f2d957d016","trace_id":"4fe5a8fa-1ac5-407c-926c-83f504d762d4"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"6e057ca5-65bf-41f6-b8af-08e715bc654d","trace_id":"6aea00b5-6221-4847-8961-7a86ef3210cd"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"6e057ca5-65bf-41f6-b8af-08e715bc654d","trace_id":"6aea00b5-6221-4847-8961-7a86ef3210cd"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-27T12:57:45.940375Z"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"85c09ea4-f8d1-4cc2-b767-a5f2d957d016","trace_id":"4fe5a8fa-1ac5-407c-926c-83f504d762d4"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:03] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"52d58fe6-511d-4783-83d2-2cd095621565","trace_id":"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12"}
[2026-05-27 12:56:03] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {"count":0} {"correlation_id":"52d58fe6-511d-4783-83d2-2cd095621565","trace_id":"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12"}
[2026-05-27 12:56:03] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"52d58fe6-511d-4783-83d2-2cd095621565","trace_id":"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12"}
[2026-05-27 12:56:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1","trace_id":"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4"}
[2026-05-27 12:56:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1","trace_id":"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4"}
[2026-05-27 12:56:06] local.NOTICE: Monitoring start {"correlation_id":"dc41678d-bf39-4a6e-870f-d38c97eff1c3","trace_id":"10976781-275a-4aee-a84d-b6fa96ad2602"}
[2026-05-27 12:56:06] local.NOTICE: Monitoring end {"correlation_id":"dc41678d-bf39-4a6e-870f-d38c97eff1c3","trace_id":"10976781-275a-4aee-a84d-b6fa96ad2602"}
[2026-05-27 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"45813b78-011b-4ba5-8928-5a82bdd9f4ab","trace_id":"f88e2e25-2c4f-4690-a49b-ccc8fb856866"}
[2026-05-27 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"45813b78-011b-4ba5-8928-5a82bdd9f4ab","trace_id":"f88e2e25-2c4f-4690-a49b-ccc8fb856866"}
[2026-05-27 12:56:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:09] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:09] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:11] local.INFO: Running conference:monitor:count command for activities in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:11] local.INFO: [conference:monitor:count] No activities found in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"aab715c2-fbe0-4a65-9292-b2b218775424","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"aab715c2-fbe0-4a65-9292-b2b218775424","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SyncHubspotObjects] Starting sync {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","usage":24777784,"real_usage":65011712,"pid":42210} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1499,"provider":"hubspot","refreshToken":"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86","state":"connected"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [SocialAccountService] Token refreshed {"socialAccountId":1499,"provider":"hubspot","state":"connected"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {"team":2} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/deals/search","total_requests":1,"total_records_fetched":0,"total_elapsed_seconds":0.28,"average_seconds_per_request":0.28} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [HubSpot] Synced opportunities {"team":2,"strategies":"lastModified","sync_count":0,"total":0,"last_synced_id":null,"duration_ms":286.56} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","provider":"hubspot","status":"completed","duration_ms":1417.45,"usage":25188000,"real_usage":65011712,"pid":42210} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","usage":25162720,"real_usage":65011712,"pid":42210} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {"userId":"33e34a7a-1c02-4f04-87ac-22c3a385e6e3","account":{"Jiminny\\Models\\SocialAccount":{"id":306,"sociable_id":109,"provider_user_id":"11348452","expires":1701077403,"refresh_token_expires":null,"provider":"hubspot","state":"full-refresh","auth_scope":null,"retry_after":null,"created_at":"2020-09-01 16:59:04","updated_at":"2023-11-27 09:30:03"}}} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":109,"team_id":29} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","provider":"hubspot","status":"disconnected","duration_ms":28.83,"usage":25162928,"real_usage":65011712,"pid":42210,"reason":"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","usage":25120440,"real_usage":65011712,"pid":42210} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {"userId":"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b","account":null} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":130,"team_id":42} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","provider":"hubspot","status":"disconnected","duration_ms":50.47,"usage":25140104,"real_usage":65011712,"pid":42210,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","usage":25100792,"real_usage":65011712,"pid":42210} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {"userId":"71e3aac5-fb66-47c5-a236-2d051ae3e319","account":null} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":256,"team_id":49} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","provider":"hubspot","status":"disconnected","duration_ms":61.91,"usage":25136552,"real_usage":65011712,"pid":42210,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"8adbd852-a071-43d7-9393-80d2ceb0461e","trace_id":"f2fefab6-f987-4a8d-8ba9-98e358be3479"}
[2026-05-27 12:56:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"8adbd852-a071-43d7-9393-80d2ceb0461e","trace_id":"f2fefab6-f987-4a8d-8ba9-98e358be3479"}
[2026-05-27 12:56:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:19] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:19] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {"inbox_id":59} {"correlation_id":"cf9cc0f9-72df-468a-9dfd-7419e132cd3c","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {"correlation_id":"cf9cc0f9-72df-468a-9dfd-7419e132cd3c","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":59} {"correlation_id":"cf9cc0f9-72df-468a-9dfd-7419e132cd3c","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {"inbox_id":212} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.WARNING: [Salesforce] Account not connected for user {"userId":"641f1acb-16b8-42d1-8726-df52979dad0e","account":{"Jiminny\\Models\\SocialAccount":{"id":1500,"sociable_id":143,"provider_user_id":"0052g000003frelAAA","expires":null,"refresh_token_expires":null,"provider":"salesforce","state":"full-refresh","auth_scope":"refresh_token web api","retry_after":null,"created_at":"2026-02-06 08:39:03","updated_at":"2026-05-14 09:46:30"}}} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"salesforce","crm_owner":143,"team_id":1} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.ERROR: Failed to set service context for google: Your Salesforce account has become disconnected. Please login to Jiminny to reconnect. {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":212} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:42] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:42] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:42] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:42] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:42] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:42] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":250.7,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.88} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:42] local.INFO: [HubSpot Journal Polling] Released polling lock {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:58] local.INFO: [Commands/AsyncUpdateEsEntities] Starting ES update worker {"pid":50064,"target":"activities"} {"correlation_id":"f12c12af-7383-420f-b547-0ed048bf10da","trace_id":"3ff9040b-43e3-4602-932f-30859690fe64"}
[2026-05-27 12:57:03] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"e638e561-7424-43cb-bc2e-fa565d3f9752","trace_id":"fb541cfd-fb6f-4f99-a3f8-069be37ccd5e"}
[2026-05-27 12:57:03] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {"count":0} {"correlation_id":"e638e561-7424-43cb-bc2e-fa565d3f9752","trace_id":"fb541cfd-fb6f-4f99-a3f8-069be37ccd5e"}
[2026-05-27 12:57:03] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"e638e561-7424-43cb-bc2e-fa565d3f9752","trace_id":"fb541cfd-fb6f-4f99-a3f8-069be37ccd5e"}
[2026-05-27 12:57:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"a4814a94-a77d-4ba9-9c82-567ae915042d","trace_id":"ec875a7f-5c74-427b-a1a1-320b92486ebe"}
[2026-05-27 12:57:06] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"a4814a94-a77d-4ba9-9c82-567ae915042d","trace_id":"ec875a7f-5c74-427b-a1a1-320b92486ebe"}...
|
78732
|
NULL
|
NULL
|
NULL
|
|
78732
|
2764
|
32
|
2026-05-27T12:57:06.514321+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886626514_m2.jpg...
|
PhpStorm
|
faVsco.js – custom.log
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Sync Changes
Hide This Notification...
|
[{"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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.09740692,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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.8374335,"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":"TextRelayServiceTest","depth":6,"bounds":{"left":0.85272604,"top":0.019952115,"width":0.062832445,"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 'TextRelayServiceTest'","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 'TextRelayServiceTest'","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":"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.37632978,"top":0.10055866,"width":0.00731383,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","depth":4,"bounds":{"left":0.3856383,"top":0.10055866,"width":0.009640957,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.39694148,"top":0.09896249,"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.40425533,"top":0.09896249,"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\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\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}]...
|
-7639128014968712822
|
-6438807707446769269
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Sync Changes
Hide This Notification...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
78731
|
2763
|
30
|
2026-05-27T12:57:04.651341+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886624651_m1.jpg...
|
PhpStorm
|
faVsco.js – laravel.log
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest...
|
[{"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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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":"TextRelayServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-4060176888399009113
|
-9212323791225028208
|
click
|
hybrid
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
iTerm2ShellEditViewSessionScriptsProfilesWindowHelp100% <DEV (docker)screenpipe"DOCKER* *81DEV (docker)$2-zshconfigcachecompiledeventsroutesviewsjiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00:jiminny-worker-processing-2:jiminny-worker-processing-2_00:-25in -Seloyed 00: stoppestoppedjiminny-worker-processing-3:jiminny-worker-processing-3_00:stoppedjiminny-worker-processing-4:jiminny-worker-processing-4_00:stoppedjiminny-worker-processing-5:jiminny-worker-processing-5_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-crm-update:worker-crm-update_00: stoppedworker-download:worker-download_00: stoppedworker-emails:worker-emails_00: stoppedworker-nudges:worker-nudges_00: stoppedworker:worker_00: stoppedworker-audio:worker-audio_00: stoppedworker-calendar:worker-calendar_00: stoppedworker-crm-sync:worker-crm-sync_00:stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-conferences:worker-conferences_00: stoppedartisan-schedule:artisan-schedule_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00:startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00:startedworker-crm-update:worker-crm-update_00:startedworker-download:worker-download_00:startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00:startedroot@docker_lamp_1:/home/jiminny#O ₴4-zsh*5...ip-10-30-129-190:~ (nc)3.45ms DONE10.26ms DONE1.84ms DONE0.72ms DONE6.62ms DONE4.33ms DONE₴868• Wed 27 May 15:57:04T&1•..-10-30-140-255:~ (-zsh)$7DEV...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
78730
|
2764
|
31
|
2026-05-27T12:57:03.257458+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886623257_m2.jpg...
|
iTerm2
|
DEV (docker)
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
/Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SE /Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SECRET]
/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/.env.local:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/dev.json:18: "DB_ADMIN_PASSWORD" : "dgyt$rTe21-d",
/Users/lukas/jiminny/app/.env:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.vscode/settings.json:16: "password": "dgyt$rTe21-d"
/Users/lukas/jiminny/app/.env.root:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.env.root:394:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.other:14:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#[ENV_SECRET]
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop
320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep
a1718cfb Merge pull request #529 from jiminny/katranci-patch-1
74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3
0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2
4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue
220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url
543c60b8 Merge branch 'develop' into JY-19432-recall-api-url
f163a29e JY-19432 Fix formatting
6de60dd0 JY-19432 Fix formatting
78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances
2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3
d6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code
4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers
6426729b JY-20432 Set stopasgroup to false for dialers queue worker
92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities
e0796d89 Delete obsolete files
4a8b1ea2 Delete old docker build scripts before php-8 upgrade
d790e56d JY-20603 Fix formatting
fc758135 JY-20603 Move video ec2 instances to external subnet
ecb558d5 JY-20761 Spread php-app tasks over ec2 instances
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80
commit a8ba85203fb10fb793ff07a6e85efac833979335
Merge: c15e0c8201 a00d53bdd6
Author: Nikolay Ivanov <[EMAIL]>
Date: Fri May 15 10:44:44 2026 +0300
JY-18091 | Resolve conflicts
commit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1
Author: Nikolay Nikolov <[EMAIL]>
Date: Thu Apr 30 14:54:08 2026 +0300
JY-20625 | JY-20742 | Add laravel/mcp
# Conflicts:
# composer.lock
diff --git a/composer.json b/composer.json
index 02ffcc050e..89551995a1 100644
--- a/composer.json
+++ b/composer.json
@@ -113,6 +113,7 @@
"kalnoy/nestedset": "*",
"laravel/framework": "^12.28",
"laravel/helpers": "^1.7",
+ "laravel/mcp": "^0.7.0",
"laravel/passport": "^13.0",
"laravel/slack-notification-channel": "^3.4",
"laravel/tinker": "^2.10.1",
commit 431b4c096f4ad0272bac595d078871a78b510bb5
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 17:17:47 2026 +0300
JY-18091 | Downgrade composer.json
diff --git a/composer.json b/composer.json
index 5db26da2c9..baacefbd5f 100644
--- a/composer.json
+++ b/composer.json
@@ -187,20 +187,18 @@
"require-dev": {
"barryvdh/laravel-debugbar": "^3.15",
"barryvdh/laravel-ide-helper": "^3.5",
- "brianium/paratest": "^7.12",
+ "brianium/paratest": "^7.5",
"browserstack/browserstack-local": "^1.1.0",
"filp/whoops": "^2.9",
"friendsofphp/php-cs-fixer": "^3.66",
"infection/infection": "^0.29.14",
"jasonmccreary/laravel-test-assertions": "^2.5",
"larastan/larastan": "^3.1",
- "maglnet/composer-require-checker": "^4.8",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
"phpstan/phpstan": "^2.1",
- "phpunit/phpunit": "^12.0",
- "symfony/phpunit-bridge": "^7.0",
- "vimeo/psalm": "^6.5.0"
+ "phpunit/phpunit": "^11.5.50",
+ "symfony/phpunit-bridge": "^7.0"
},
"autoload": {
"classmap": [
commit 90e9b4034f665e2a8cacaf937e55abc070b5af4a
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 16:25:45 2026 +0300
JY-18091 | Changes, composer
diff --git a/composer.json b/composer.json
index 751005e37a..5db26da2c9 100644
--- a/composer.json
+++ b/composer.json
@@ -95,7 +95,7 @@
"google/apps-meet": "^0.5.1",
"guzzlehttp/guzzle": "^7.8",
"guzzlehttp/psr7": "^2.6",
- "halaxa/json-machine": "^1.3",
+ "halaxa/json-machine": "^1.2",
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20
a8ba85203f JY-18091 | Resolve conflicts
4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts
1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp
431b4c096f JY-18091 | Downgrade composer.json
90e9b4034f JY-18091 | Changes, composer
b63d6f5d1f JY-18091 | Composer changes
d017fbd8aa JY-18091 | Merge
7daa10a444 JY-18091 | Cs lint fixes
a472f51b71 JY-18091 | Update composer to support php 8.5
1162b04371 fix(security): bump dependencies (alerts #477)
0c1f2f35df JY-19957 | Update composer.lock with correct dep
574315fc12 JY-19957 | Update composer.locl
c97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade
e4e0e6d46d Merge branch 'master' into secfix/composer-20260415
7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)
4f5795d1d5 JY-20479: Remove unused dependencies
caa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download
07832f2eeb JY-20479: Transcript download PDF optimization
9f17a0f70e JY-20526: Remove Sentence breaker
4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 "^docker-update:" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \
|| grep -rA 20 "^docker-update:" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40
/Users/lukas/jiminny/app/Makefile:docker-update:
/Users/lukas/jiminny/app/Makefile- aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-up:
/Users/lukas/jiminny/app/Makefile- tmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-stop:
/Users/lukas/jiminny/app/Makefile- tmux kill-session -t jiminny_dev_ngrok
/Users/lukas/jiminny/app/Makefile-
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n "arm64v8\|/jiminny/app/qa" ~/jiminny/infrastructure/dev/docker/docker-compose.yml
8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
187d58491294 wernight/ngrok "/entrypoint.sh" 37 seconds ago Up 37 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
b433f55153b5 mariadb:11.4.5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
d09012232958 redis:5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
error: Your local changes to the following files would be overwritten by checkout:
tests/Unit/Services/Mail/TextRelayServiceTest.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M config/logging.php
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 124, done.
remote: Counting objects: 100% (123/123), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)
Receiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.
Resolving deltas: 100% (93/93), completed with 33 local objects.
From github.com:jiminny/app
23fdef5aa9..942ddbe31c master -> origin/master
a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app
96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration
a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
* [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only
+ 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)
* [new branch] master-reset-ES -> origin/master-reset-ES
Updating 23fdef5aa9..942ddbe31c
Fast-forward
contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------
front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----
front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--
front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-
front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------
routes/api_v2.php | 6 +++---
tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------
7 files changed, 61 insertions(+), 46 deletions(-)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env
#IMAGE_TAG="latest"
IMAGE_TAG="arm64v8-latest"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 "lamp:" | grep image
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
docker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest "docker-php-entrypoi…" lamp 3 minutes ago Exited (2) 3 minutes ago
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
87804ee14786 wernight/ngrok "/entrypoint.sh" 18 minutes ago Up 53 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
bc04ffad01b2 mariadb:11.4.5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
e985cd5cfbf7 redis:5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
Filter, search, and stream logs from all your Compose services
in one place with Docker Desktop's Logs view. [URL_WITH_CREDENTIALS]
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2
Learn more at [URL_WITH_CREDENTIALS] php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 9.84ms DONE
cache [PASSWORD_DOTS] 69.91ms DONE
compiled [PASSWORD_DOTS] 2.96ms DONE
events [PASSWORD_DOTS] 1.19ms DONE
routes [PASSWORD_DOTS] 0.65ms DONE
views [PASSWORD_DOTS] 4.44ms DONE
worker-crm-update:worker-crm-update_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-download:worker-download_00: stopped
worker-nudges:worker-nudges_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-emails:worker-emails_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan tinker
Psy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman
New PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`
> app(\Jiminny\Services\Mail\TextRelayService::class)->sync();
= []
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 3.45ms DONE
cache [PASSWORD_DOTS] 10.26ms DONE
compiled [PASSWORD_DOTS] 1.84ms DONE
events [PASSWORD_DOTS] 0.72ms DONE
routes [PASSWORD_DOTS] 6.62ms DONE
views [PASSWORD_DOTS] 4.33ms DONE
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-download:worker-download_00: stopped
worker-emails:worker-emails_00: stopped
worker-nudges:worker-nudges_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-conferences:worker-conferences_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny#
DOCKER
Close Tab
DEV (docker)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ec2-user@ip-10-30-129-190:~ (nc)
Close Tab
ec2-user@ip-10-30-140-255:~ (-zsh)
Close Tab
⌥⌘1
DEV (docker)...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"/Users/lukas/jiminny/app/.env.nikilocal:22:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/.env.local:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/dev.json:18: \"DB_ADMIN_PASSWORD\" : \"dgyt$rTe21-d\",\n/Users/lukas/jiminny/app/.env:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.vscode/settings.json:16: \"password\": \"dgyt$rTe21-d\"\n/Users/lukas/jiminny/app/.env.root:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.root:394:DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.other:14:DB_PASSWORD=dgyt\\$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop\n320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep\na1718cfb Merge pull request #529 from jiminny/katranci-patch-1\n74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3\n0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2\n4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue\n220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url\n543c60b8 Merge branch 'develop' into JY-19432-recall-api-url\nf163a29e JY-19432 Fix formatting\n6de60dd0 JY-19432 Fix formatting\n78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances\n2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3\nd6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code\n4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers\n6426729b JY-20432 Set stopasgroup to false for dialers queue worker\n92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities\ne0796d89 Delete obsolete files\n4a8b1ea2 Delete old docker build scripts before php-8 upgrade\nd790e56d JY-20603 Fix formatting\nfc758135 JY-20603 Move video ec2 instances to external subnet\necb558d5 JY-20761 Spread php-app tasks over ec2 instances\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80\n\ncommit a8ba85203fb10fb793ff07a6e85efac833979335\nMerge: c15e0c8201 a00d53bdd6\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Fri May 15 10:44:44 2026 +0300\n\n JY-18091 | Resolve conflicts\n\ncommit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1\nAuthor: Nikolay Nikolov <nikolay.nikolov@jiminny.com>\nDate: Thu Apr 30 14:54:08 2026 +0300\n\n JY-20625 | JY-20742 | Add laravel/mcp\n \n # Conflicts:\n # composer.lock\n\ndiff --git a/composer.json b/composer.json\nindex 02ffcc050e..89551995a1 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -113,6 +113,7 @@\n \"kalnoy/nestedset\": \"*\",\n \"laravel/framework\": \"^12.28\",\n \"laravel/helpers\": \"^1.7\",\n+ \"laravel/mcp\": \"^0.7.0\",\n \"laravel/passport\": \"^13.0\",\n \"laravel/slack-notification-channel\": \"^3.4\",\n \"laravel/tinker\": \"^2.10.1\",\n\ncommit 431b4c096f4ad0272bac595d078871a78b510bb5\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 17:17:47 2026 +0300\n\n JY-18091 | Downgrade composer.json\n\ndiff --git a/composer.json b/composer.json\nindex 5db26da2c9..baacefbd5f 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -187,20 +187,18 @@\n \"require-dev\": {\n \"barryvdh/laravel-debugbar\": \"^3.15\",\n \"barryvdh/laravel-ide-helper\": \"^3.5\",\n- \"brianium/paratest\": \"^7.12\",\n+ \"brianium/paratest\": \"^7.5\",\n \"browserstack/browserstack-local\": \"^1.1.0\",\n \"filp/whoops\": \"^2.9\",\n \"friendsofphp/php-cs-fixer\": \"^3.66\",\n \"infection/infection\": \"^0.29.14\",\n \"jasonmccreary/laravel-test-assertions\": \"^2.5\",\n \"larastan/larastan\": \"^3.1\",\n- \"maglnet/composer-require-checker\": \"^4.8\",\n \"mockery/mockery\": \"^1.6\",\n \"nunomaduro/collision\": \"^8.6\",\n \"phpstan/phpstan\": \"^2.1\",\n- \"phpunit/phpunit\": \"^12.0\",\n- \"symfony/phpunit-bridge\": \"^7.0\",\n- \"vimeo/psalm\": \"^6.5.0\"\n+ \"phpunit/phpunit\": \"^11.5.50\",\n+ \"symfony/phpunit-bridge\": \"^7.0\"\n },\n \"autoload\": {\n \"classmap\": [\n\ncommit 90e9b4034f665e2a8cacaf937e55abc070b5af4a\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 16:25:45 2026 +0300\n\n JY-18091 | Changes, composer\n\ndiff --git a/composer.json b/composer.json\nindex 751005e37a..5db26da2c9 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -95,7 +95,7 @@\n \"google/apps-meet\": \"^0.5.1\",\n \"guzzlehttp/guzzle\": \"^7.8\",\n \"guzzlehttp/psr7\": \"^2.6\",\n- \"halaxa/json-machine\": \"^1.3\",\n+ \"halaxa/json-machine\": \"^1.2\",\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20\n\na8ba85203f JY-18091 | Resolve conflicts\n4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts\n1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp\n431b4c096f JY-18091 | Downgrade composer.json\n90e9b4034f JY-18091 | Changes, composer\nb63d6f5d1f JY-18091 | Composer changes\nd017fbd8aa JY-18091 | Merge\n7daa10a444 JY-18091 | Cs lint fixes\na472f51b71 JY-18091 | Update composer to support php 8.5\n1162b04371 fix(security): bump dependencies (alerts #477)\n0c1f2f35df JY-19957 | Update composer.lock with correct dep\n574315fc12 JY-19957 | Update composer.locl\nc97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade\ne4e0e6d46d Merge branch 'master' into secfix/composer-20260415\n7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)\n4f5795d1d5 JY-20479: Remove unused dependencies\ncaa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download\n07832f2eeb JY-20479: Transcript download PDF optimization\n9f17a0f70e JY-20526: Remove Sentence breaker\n4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 \"^docker-update:\" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \\\n || grep -rA 20 \"^docker-update:\" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40\n/Users/lukas/jiminny/app/Makefile:docker-update:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\taws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-up:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-stop:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux kill-session -t jiminny_dev_ngrok\n/Users/lukas/jiminny/app/Makefile-\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n \"arm64v8\\|/jiminny/app/qa\" ~/jiminny/infrastructure/dev/docker/docker-compose.yml\n8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 37 seconds ago Up 37 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n187d58491294 wernight/ngrok \"/entrypoint.sh\" 37 seconds ago Up 37 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nb433f55153b5 mariadb:11.4.5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\n207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 37 seconds ago Up 37 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nd09012232958 redis:5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Services/Mail/TextRelayServiceTest.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nSwitched to branch 'master'\nYour branch is up to date with 'origin/master'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 124, done.\nremote: Counting objects: 100% (123/123), done.\nremote: Compressing objects: 100% (32/32), done.\nremote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)\nReceiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.\nResolving deltas: 100% (93/93), completed with 33 local objects.\nFrom github.com:jiminny/app\n 23fdef5aa9..942ddbe31c master -> origin/master\n a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app\n 96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration\n a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details\n * [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only\n + 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)\n * [new branch] master-reset-ES -> origin/master-reset-ES\nUpdating 23fdef5aa9..942ddbe31c\nFast-forward\n contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------\n front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----\n front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--\n front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-\n front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------\n routes/api_v2.php | 6 +++---\n tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------\n 7 files changed, 61 insertions(+), 46 deletions(-)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\nphp-8.5: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\narm64v8-php-8.5: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env\n#IMAGE_TAG=\"latest\"\nIMAGE_TAG=\"arm64v8-latest\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 \"lamp:\" | grep image\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \ndocker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest \"docker-php-entrypoi…\" lamp 3 minutes ago Exited (2) 3 minutes ago \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\nlatest: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\narm64v8-latest: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\nff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 18 minutes ago Up 53 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n87804ee14786 wernight/ngrok \"/entrypoint.sh\" 18 minutes ago Up 53 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nbc04ffad01b2 mariadb:11.4.5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\ne985cd5cfbf7 redis:5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\n121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 18 minutes ago Up 53 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\n Filter, search, and stream logs from all your Compose services\n in one place with Docker Desktop's Logs view. docker-desktop://dashboard/logs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\nroot@docker_lamp_1:/home/jiminny# ^C\nroot@docker_lamp_1:/home/jiminny# \nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entity) $ dev\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> exit\n\n INFO Goodbye.\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 9.84ms DONE\n cache ............................................................................................................................... 69.91ms DONE\n compiled ............................................................................................................................. 2.96ms DONE\n events ............................................................................................................................... 1.19ms DONE\n routes ............................................................................................................................... 0.65ms DONE\n views ................................................................................................................................ 4.44ms DONE\n\nworker-crm-update:worker-crm-update_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-download:worker-download_00: stopped\nworker-nudges:worker-nudges_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> app(\\Jiminny\\Services\\Mail\\TextRelayService::class)->sync();\n\n= []\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 3.45ms DONE\n cache ............................................................................................................................... 10.26ms DONE\n compiled ............................................................................................................................. 1.84ms DONE\n events ............................................................................................................................... 0.72ms DONE\n routes ............................................................................................................................... 6.62ms DONE\n views ................................................................................................................................ 4.33ms DONE\n\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny#","depth":4,"on_screen":true,"value":"/Users/lukas/jiminny/app/.env.nikilocal:22:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/.env.local:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/dev.json:18: \"DB_ADMIN_PASSWORD\" : \"dgyt$rTe21-d\",\n/Users/lukas/jiminny/app/.env:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.vscode/settings.json:16: \"password\": \"dgyt$rTe21-d\"\n/Users/lukas/jiminny/app/.env.root:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.root:394:DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.other:14:DB_PASSWORD=dgyt\\$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop\n320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep\na1718cfb Merge pull request #529 from jiminny/katranci-patch-1\n74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3\n0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2\n4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue\n220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url\n543c60b8 Merge branch 'develop' into JY-19432-recall-api-url\nf163a29e JY-19432 Fix formatting\n6de60dd0 JY-19432 Fix formatting\n78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances\n2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3\nd6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code\n4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers\n6426729b JY-20432 Set stopasgroup to false for dialers queue worker\n92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities\ne0796d89 Delete obsolete files\n4a8b1ea2 Delete old docker build scripts before php-8 upgrade\nd790e56d JY-20603 Fix formatting\nfc758135 JY-20603 Move video ec2 instances to external subnet\necb558d5 JY-20761 Spread php-app tasks over ec2 instances\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80\n\ncommit a8ba85203fb10fb793ff07a6e85efac833979335\nMerge: c15e0c8201 a00d53bdd6\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Fri May 15 10:44:44 2026 +0300\n\n JY-18091 | Resolve conflicts\n\ncommit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1\nAuthor: Nikolay Nikolov <nikolay.nikolov@jiminny.com>\nDate: Thu Apr 30 14:54:08 2026 +0300\n\n JY-20625 | JY-20742 | Add laravel/mcp\n \n # Conflicts:\n # composer.lock\n\ndiff --git a/composer.json b/composer.json\nindex 02ffcc050e..89551995a1 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -113,6 +113,7 @@\n \"kalnoy/nestedset\": \"*\",\n \"laravel/framework\": \"^12.28\",\n \"laravel/helpers\": \"^1.7\",\n+ \"laravel/mcp\": \"^0.7.0\",\n \"laravel/passport\": \"^13.0\",\n \"laravel/slack-notification-channel\": \"^3.4\",\n \"laravel/tinker\": \"^2.10.1\",\n\ncommit 431b4c096f4ad0272bac595d078871a78b510bb5\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 17:17:47 2026 +0300\n\n JY-18091 | Downgrade composer.json\n\ndiff --git a/composer.json b/composer.json\nindex 5db26da2c9..baacefbd5f 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -187,20 +187,18 @@\n \"require-dev\": {\n \"barryvdh/laravel-debugbar\": \"^3.15\",\n \"barryvdh/laravel-ide-helper\": \"^3.5\",\n- \"brianium/paratest\": \"^7.12\",\n+ \"brianium/paratest\": \"^7.5\",\n \"browserstack/browserstack-local\": \"^1.1.0\",\n \"filp/whoops\": \"^2.9\",\n \"friendsofphp/php-cs-fixer\": \"^3.66\",\n \"infection/infection\": \"^0.29.14\",\n \"jasonmccreary/laravel-test-assertions\": \"^2.5\",\n \"larastan/larastan\": \"^3.1\",\n- \"maglnet/composer-require-checker\": \"^4.8\",\n \"mockery/mockery\": \"^1.6\",\n \"nunomaduro/collision\": \"^8.6\",\n \"phpstan/phpstan\": \"^2.1\",\n- \"phpunit/phpunit\": \"^12.0\",\n- \"symfony/phpunit-bridge\": \"^7.0\",\n- \"vimeo/psalm\": \"^6.5.0\"\n+ \"phpunit/phpunit\": \"^11.5.50\",\n+ \"symfony/phpunit-bridge\": \"^7.0\"\n },\n \"autoload\": {\n \"classmap\": [\n\ncommit 90e9b4034f665e2a8cacaf937e55abc070b5af4a\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 16:25:45 2026 +0300\n\n JY-18091 | Changes, composer\n\ndiff --git a/composer.json b/composer.json\nindex 751005e37a..5db26da2c9 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -95,7 +95,7 @@\n \"google/apps-meet\": \"^0.5.1\",\n \"guzzlehttp/guzzle\": \"^7.8\",\n \"guzzlehttp/psr7\": \"^2.6\",\n- \"halaxa/json-machine\": \"^1.3\",\n+ \"halaxa/json-machine\": \"^1.2\",\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20\n\na8ba85203f JY-18091 | Resolve conflicts\n4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts\n1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp\n431b4c096f JY-18091 | Downgrade composer.json\n90e9b4034f JY-18091 | Changes, composer\nb63d6f5d1f JY-18091 | Composer changes\nd017fbd8aa JY-18091 | Merge\n7daa10a444 JY-18091 | Cs lint fixes\na472f51b71 JY-18091 | Update composer to support php 8.5\n1162b04371 fix(security): bump dependencies (alerts #477)\n0c1f2f35df JY-19957 | Update composer.lock with correct dep\n574315fc12 JY-19957 | Update composer.locl\nc97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade\ne4e0e6d46d Merge branch 'master' into secfix/composer-20260415\n7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)\n4f5795d1d5 JY-20479: Remove unused dependencies\ncaa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download\n07832f2eeb JY-20479: Transcript download PDF optimization\n9f17a0f70e JY-20526: Remove Sentence breaker\n4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 \"^docker-update:\" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \\\n || grep -rA 20 \"^docker-update:\" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40\n/Users/lukas/jiminny/app/Makefile:docker-update:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\taws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-up:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-stop:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux kill-session -t jiminny_dev_ngrok\n/Users/lukas/jiminny/app/Makefile-\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n \"arm64v8\\|/jiminny/app/qa\" ~/jiminny/infrastructure/dev/docker/docker-compose.yml\n8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 37 seconds ago Up 37 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n187d58491294 wernight/ngrok \"/entrypoint.sh\" 37 seconds ago Up 37 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nb433f55153b5 mariadb:11.4.5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\n207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 37 seconds ago Up 37 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nd09012232958 redis:5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Services/Mail/TextRelayServiceTest.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nSwitched to branch 'master'\nYour branch is up to date with 'origin/master'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 124, done.\nremote: Counting objects: 100% (123/123), done.\nremote: Compressing objects: 100% (32/32), done.\nremote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)\nReceiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.\nResolving deltas: 100% (93/93), completed with 33 local objects.\nFrom github.com:jiminny/app\n 23fdef5aa9..942ddbe31c master -> origin/master\n a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app\n 96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration\n a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details\n * [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only\n + 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)\n * [new branch] master-reset-ES -> origin/master-reset-ES\nUpdating 23fdef5aa9..942ddbe31c\nFast-forward\n contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------\n front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----\n front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--\n front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-\n front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------\n routes/api_v2.php | 6 +++---\n tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------\n 7 files changed, 61 insertions(+), 46 deletions(-)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\nphp-8.5: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\narm64v8-php-8.5: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env\n#IMAGE_TAG=\"latest\"\nIMAGE_TAG=\"arm64v8-latest\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 \"lamp:\" | grep image\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \ndocker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest \"docker-php-entrypoi…\" lamp 3 minutes ago Exited (2) 3 minutes ago \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\nlatest: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\narm64v8-latest: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\nff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 18 minutes ago Up 53 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n87804ee14786 wernight/ngrok \"/entrypoint.sh\" 18 minutes ago Up 53 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nbc04ffad01b2 mariadb:11.4.5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\ne985cd5cfbf7 redis:5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\n121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 18 minutes ago Up 53 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\n Filter, search, and stream logs from all your Compose services\n in one place with Docker Desktop's Logs view. docker-desktop://dashboard/logs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\nroot@docker_lamp_1:/home/jiminny# ^C\nroot@docker_lamp_1:/home/jiminny# \nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entity) $ dev\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> exit\n\n INFO Goodbye.\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 9.84ms DONE\n cache ............................................................................................................................... 69.91ms DONE\n compiled ............................................................................................................................. 2.96ms DONE\n events ............................................................................................................................... 1.19ms DONE\n routes ............................................................................................................................... 0.65ms DONE\n views ................................................................................................................................ 4.44ms DONE\n\nworker-crm-update:worker-crm-update_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-download:worker-download_00: stopped\nworker-nudges:worker-nudges_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> app(\\Jiminny\\Services\\Mail\\TextRelayService::class)->sync();\n\n= []\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 3.45ms DONE\n cache ............................................................................................................................... 10.26ms DONE\n compiled ............................................................................................................................. 1.84ms DONE\n events ............................................................................................................................... 0.72ms DONE\n routes ............................................................................................................................... 6.62ms DONE\n views ................................................................................................................................ 4.33ms DONE\n\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-nudges:worker-nudges_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker-conferences:worker-conferences_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny#","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.06732048,"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 (docker)","depth":2,"bounds":{"left":0.33759972,"top":1.0,"width":0.06732048,"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.33959442,"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":"-zsh","depth":2,"bounds":{"left":0.40492022,"top":1.0,"width":0.06732048,"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.4069149,"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.4722407,"top":1.0,"width":0.06732048,"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.4742354,"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":"-zsh","depth":2,"bounds":{"left":0.53956115,"top":1.0,"width":0.06715426,"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.5415558,"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":"ec2-user@ip-10-30-129-190:~ (nc)","depth":2,"bounds":{"left":0.60671544,"top":1.0,"width":0.06715426,"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.6087101,"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":"ec2-user@ip-10-30-140-255:~ (-zsh)","depth":2,"bounds":{"left":0.67386967,"top":1.0,"width":0.06715426,"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.67586434,"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.7273936,"top":1.0,"width":0.01861702,"height":-0.023144484},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"DEV (docker)","depth":1,"bounds":{"left":0.49468085,"top":1.0,"width":0.029920213,"height":-0.02394259},"on_screen":true,"role_description":"text"}]...
|
8991122171112646891
|
-5697495435468530982
|
typing_pause
|
accessibility
|
NULL
|
/Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SE /Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SECRET]
/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/.env.local:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/dev.json:18: "DB_ADMIN_PASSWORD" : "dgyt$rTe21-d",
/Users/lukas/jiminny/app/.env:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.vscode/settings.json:16: "password": "dgyt$rTe21-d"
/Users/lukas/jiminny/app/.env.root:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.env.root:394:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.other:14:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#[ENV_SECRET]
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop
320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep
a1718cfb Merge pull request #529 from jiminny/katranci-patch-1
74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3
0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2
4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue
220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url
543c60b8 Merge branch 'develop' into JY-19432-recall-api-url
f163a29e JY-19432 Fix formatting
6de60dd0 JY-19432 Fix formatting
78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances
2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3
d6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code
4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers
6426729b JY-20432 Set stopasgroup to false for dialers queue worker
92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities
e0796d89 Delete obsolete files
4a8b1ea2 Delete old docker build scripts before php-8 upgrade
d790e56d JY-20603 Fix formatting
fc758135 JY-20603 Move video ec2 instances to external subnet
ecb558d5 JY-20761 Spread php-app tasks over ec2 instances
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80
commit a8ba85203fb10fb793ff07a6e85efac833979335
Merge: c15e0c8201 a00d53bdd6
Author: Nikolay Ivanov <[EMAIL]>
Date: Fri May 15 10:44:44 2026 +0300
JY-18091 | Resolve conflicts
commit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1
Author: Nikolay Nikolov <[EMAIL]>
Date: Thu Apr 30 14:54:08 2026 +0300
JY-20625 | JY-20742 | Add laravel/mcp
# Conflicts:
# composer.lock
diff --git a/composer.json b/composer.json
index 02ffcc050e..89551995a1 100644
--- a/composer.json
+++ b/composer.json
@@ -113,6 +113,7 @@
"kalnoy/nestedset": "*",
"laravel/framework": "^12.28",
"laravel/helpers": "^1.7",
+ "laravel/mcp": "^0.7.0",
"laravel/passport": "^13.0",
"laravel/slack-notification-channel": "^3.4",
"laravel/tinker": "^2.10.1",
commit 431b4c096f4ad0272bac595d078871a78b510bb5
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 17:17:47 2026 +0300
JY-18091 | Downgrade composer.json
diff --git a/composer.json b/composer.json
index 5db26da2c9..baacefbd5f 100644
--- a/composer.json
+++ b/composer.json
@@ -187,20 +187,18 @@
"require-dev": {
"barryvdh/laravel-debugbar": "^3.15",
"barryvdh/laravel-ide-helper": "^3.5",
- "brianium/paratest": "^7.12",
+ "brianium/paratest": "^7.5",
"browserstack/browserstack-local": "^1.1.0",
"filp/whoops": "^2.9",
"friendsofphp/php-cs-fixer": "^3.66",
"infection/infection": "^0.29.14",
"jasonmccreary/laravel-test-assertions": "^2.5",
"larastan/larastan": "^3.1",
- "maglnet/composer-require-checker": "^4.8",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
"phpstan/phpstan": "^2.1",
- "phpunit/phpunit": "^12.0",
- "symfony/phpunit-bridge": "^7.0",
- "vimeo/psalm": "^6.5.0"
+ "phpunit/phpunit": "^11.5.50",
+ "symfony/phpunit-bridge": "^7.0"
},
"autoload": {
"classmap": [
commit 90e9b4034f665e2a8cacaf937e55abc070b5af4a
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 16:25:45 2026 +0300
JY-18091 | Changes, composer
diff --git a/composer.json b/composer.json
index 751005e37a..5db26da2c9 100644
--- a/composer.json
+++ b/composer.json
@@ -95,7 +95,7 @@
"google/apps-meet": "^0.5.1",
"guzzlehttp/guzzle": "^7.8",
"guzzlehttp/psr7": "^2.6",
- "halaxa/json-machine": "^1.3",
+ "halaxa/json-machine": "^1.2",
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20
a8ba85203f JY-18091 | Resolve conflicts
4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts
1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp
431b4c096f JY-18091 | Downgrade composer.json
90e9b4034f JY-18091 | Changes, composer
b63d6f5d1f JY-18091 | Composer changes
d017fbd8aa JY-18091 | Merge
7daa10a444 JY-18091 | Cs lint fixes
a472f51b71 JY-18091 | Update composer to support php 8.5
1162b04371 fix(security): bump dependencies (alerts #477)
0c1f2f35df JY-19957 | Update composer.lock with correct dep
574315fc12 JY-19957 | Update composer.locl
c97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade
e4e0e6d46d Merge branch 'master' into secfix/composer-20260415
7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)
4f5795d1d5 JY-20479: Remove unused dependencies
caa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download
07832f2eeb JY-20479: Transcript download PDF optimization
9f17a0f70e JY-20526: Remove Sentence breaker
4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 "^docker-update:" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \
|| grep -rA 20 "^docker-update:" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40
/Users/lukas/jiminny/app/Makefile:docker-update:
/Users/lukas/jiminny/app/Makefile- aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-up:
/Users/lukas/jiminny/app/Makefile- tmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-stop:
/Users/lukas/jiminny/app/Makefile- tmux kill-session -t jiminny_dev_ngrok
/Users/lukas/jiminny/app/Makefile-
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n "arm64v8\|/jiminny/app/qa" ~/jiminny/infrastructure/dev/docker/docker-compose.yml
8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
187d58491294 wernight/ngrok "/entrypoint.sh" 37 seconds ago Up 37 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
b433f55153b5 mariadb:11.4.5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
d09012232958 redis:5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
error: Your local changes to the following files would be overwritten by checkout:
tests/Unit/Services/Mail/TextRelayServiceTest.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M config/logging.php
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 124, done.
remote: Counting objects: 100% (123/123), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)
Receiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.
Resolving deltas: 100% (93/93), completed with 33 local objects.
From github.com:jiminny/app
23fdef5aa9..942ddbe31c master -> origin/master
a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app
96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration
a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
* [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only
+ 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)
* [new branch] master-reset-ES -> origin/master-reset-ES
Updating 23fdef5aa9..942ddbe31c
Fast-forward
contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------
front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----
front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--
front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-
front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------
routes/api_v2.php | 6 +++---
tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------
7 files changed, 61 insertions(+), 46 deletions(-)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env
#IMAGE_TAG="latest"
IMAGE_TAG="arm64v8-latest"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 "lamp:" | grep image
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
docker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest "docker-php-entrypoi…" lamp 3 minutes ago Exited (2) 3 minutes ago
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
87804ee14786 wernight/ngrok "/entrypoint.sh" 18 minutes ago Up 53 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
bc04ffad01b2 mariadb:11.4.5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
e985cd5cfbf7 redis:5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
Filter, search, and stream logs from all your Compose services
in one place with Docker Desktop's Logs view. [URL_WITH_CREDENTIALS]
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2
Learn more at [URL_WITH_CREDENTIALS] php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 9.84ms DONE
cache [PASSWORD_DOTS] 69.91ms DONE
compiled [PASSWORD_DOTS] 2.96ms DONE
events [PASSWORD_DOTS] 1.19ms DONE
routes [PASSWORD_DOTS] 0.65ms DONE
views [PASSWORD_DOTS] 4.44ms DONE
worker-crm-update:worker-crm-update_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-download:worker-download_00: stopped
worker-nudges:worker-nudges_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-emails:worker-emails_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan tinker
Psy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman
New PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`
> app(\Jiminny\Services\Mail\TextRelayService::class)->sync();
= []
root@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 3.45ms DONE
cache [PASSWORD_DOTS] 10.26ms DONE
compiled [PASSWORD_DOTS] 1.84ms DONE
events [PASSWORD_DOTS] 0.72ms DONE
routes [PASSWORD_DOTS] 6.62ms DONE
views [PASSWORD_DOTS] 4.33ms DONE
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-crm-update:worker-crm-update_00: stopped
worker-download:worker-download_00: stopped
worker-emails:worker-emails_00: stopped
worker-nudges:worker-nudges_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker-conferences:worker-conferences_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny#
DOCKER
Close Tab
DEV (docker)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ec2-user@ip-10-30-129-190:~ (nc)
Close Tab
ec2-user@ip-10-30-140-255:~ (-zsh)
Close Tab
⌥⌘1
DEV (docker)...
|
78728
|
NULL
|
NULL
|
NULL
|
|
78729
|
2763
|
29
|
2026-05-27T12:56:48.499906+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886608499_m1.jpg...
|
iTerm2
|
DEV (docker)
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
/Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SE /Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SECRET]
/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/.env.local:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/dev.json:18: "DB_ADMIN_PASSWORD" : "dgyt$rTe21-d",
/Users/lukas/jiminny/app/.env:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.vscode/settings.json:16: "password": "dgyt$rTe21-d"
/Users/lukas/jiminny/app/.env.root:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.env.root:394:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.other:14:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#[ENV_SECRET]
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop
320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep
a1718cfb Merge pull request #529 from jiminny/katranci-patch-1
74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3
0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2
4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue
220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url
543c60b8 Merge branch 'develop' into JY-19432-recall-api-url
f163a29e JY-19432 Fix formatting
6de60dd0 JY-19432 Fix formatting
78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances
2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3
d6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code
4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers
6426729b JY-20432 Set stopasgroup to false for dialers queue worker
92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities
e0796d89 Delete obsolete files
4a8b1ea2 Delete old docker build scripts before php-8 upgrade
d790e56d JY-20603 Fix formatting
fc758135 JY-20603 Move video ec2 instances to external subnet
ecb558d5 JY-20761 Spread php-app tasks over ec2 instances
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80
commit a8ba85203fb10fb793ff07a6e85efac833979335
Merge: c15e0c8201 a00d53bdd6
Author: Nikolay Ivanov <[EMAIL]>
Date: Fri May 15 10:44:44 2026 +0300
JY-18091 | Resolve conflicts
commit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1
Author: Nikolay Nikolov <[EMAIL]>
Date: Thu Apr 30 14:54:08 2026 +0300
JY-20625 | JY-20742 | Add laravel/mcp
# Conflicts:
# composer.lock
diff --git a/composer.json b/composer.json
index 02ffcc050e..89551995a1 100644
--- a/composer.json
+++ b/composer.json
@@ -113,6 +113,7 @@
"kalnoy/nestedset": "*",
"laravel/framework": "^12.28",
"laravel/helpers": "^1.7",
+ "laravel/mcp": "^0.7.0",
"laravel/passport": "^13.0",
"laravel/slack-notification-channel": "^3.4",
"laravel/tinker": "^2.10.1",
commit 431b4c096f4ad0272bac595d078871a78b510bb5
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 17:17:47 2026 +0300
JY-18091 | Downgrade composer.json
diff --git a/composer.json b/composer.json
index 5db26da2c9..baacefbd5f 100644
--- a/composer.json
+++ b/composer.json
@@ -187,20 +187,18 @@
"require-dev": {
"barryvdh/laravel-debugbar": "^3.15",
"barryvdh/laravel-ide-helper": "^3.5",
- "brianium/paratest": "^7.12",
+ "brianium/paratest": "^7.5",
"browserstack/browserstack-local": "^1.1.0",
"filp/whoops": "^2.9",
"friendsofphp/php-cs-fixer": "^3.66",
"infection/infection": "^0.29.14",
"jasonmccreary/laravel-test-assertions": "^2.5",
"larastan/larastan": "^3.1",
- "maglnet/composer-require-checker": "^4.8",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
"phpstan/phpstan": "^2.1",
- "phpunit/phpunit": "^12.0",
- "symfony/phpunit-bridge": "^7.0",
- "vimeo/psalm": "^6.5.0"
+ "phpunit/phpunit": "^11.5.50",
+ "symfony/phpunit-bridge": "^7.0"
},
"autoload": {
"classmap": [
commit 90e9b4034f665e2a8cacaf937e55abc070b5af4a
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 16:25:45 2026 +0300
JY-18091 | Changes, composer
diff --git a/composer.json b/composer.json
index 751005e37a..5db26da2c9 100644
--- a/composer.json
+++ b/composer.json
@@ -95,7 +95,7 @@
"google/apps-meet": "^0.5.1",
"guzzlehttp/guzzle": "^7.8",
"guzzlehttp/psr7": "^2.6",
- "halaxa/json-machine": "^1.3",
+ "halaxa/json-machine": "^1.2",
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20
a8ba85203f JY-18091 | Resolve conflicts
4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts
1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp
431b4c096f JY-18091 | Downgrade composer.json
90e9b4034f JY-18091 | Changes, composer
b63d6f5d1f JY-18091 | Composer changes
d017fbd8aa JY-18091 | Merge
7daa10a444 JY-18091 | Cs lint fixes
a472f51b71 JY-18091 | Update composer to support php 8.5
1162b04371 fix(security): bump dependencies (alerts #477)
0c1f2f35df JY-19957 | Update composer.lock with correct dep
574315fc12 JY-19957 | Update composer.locl
c97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade
e4e0e6d46d Merge branch 'master' into secfix/composer-20260415
7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)
4f5795d1d5 JY-20479: Remove unused dependencies
caa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download
07832f2eeb JY-20479: Transcript download PDF optimization
9f17a0f70e JY-20526: Remove Sentence breaker
4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 "^docker-update:" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \
|| grep -rA 20 "^docker-update:" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40
/Users/lukas/jiminny/app/Makefile:docker-update:
/Users/lukas/jiminny/app/Makefile- aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-up:
/Users/lukas/jiminny/app/Makefile- tmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-stop:
/Users/lukas/jiminny/app/Makefile- tmux kill-session -t jiminny_dev_ngrok
/Users/lukas/jiminny/app/Makefile-
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n "arm64v8\|/jiminny/app/qa" ~/jiminny/infrastructure/dev/docker/docker-compose.yml
8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
187d58491294 wernight/ngrok "/entrypoint.sh" 37 seconds ago Up 37 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
b433f55153b5 mariadb:11.4.5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
d09012232958 redis:5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
error: Your local changes to the following files would be overwritten by checkout:
tests/Unit/Services/Mail/TextRelayServiceTest.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M config/logging.php
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 124, done.
remote: Counting objects: 100% (123/123), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)
Receiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.
Resolving deltas: 100% (93/93), completed with 33 local objects.
From github.com:jiminny/app
23fdef5aa9..942ddbe31c master -> origin/master
a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app
96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration
a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
* [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only
+ 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)
* [new branch] master-reset-ES -> origin/master-reset-ES
Updating 23fdef5aa9..942ddbe31c
Fast-forward
contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------
front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----
front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--
front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-
front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------
routes/api_v2.php | 6 +++---
tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------
7 files changed, 61 insertions(+), 46 deletions(-)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env
#IMAGE_TAG="latest"
IMAGE_TAG="arm64v8-latest"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 "lamp:" | grep image
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
docker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest "docker-php-entrypoi…" lamp 3 minutes ago Exited (2) 3 minutes ago
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
87804ee14786 wernight/ngrok "/entrypoint.sh" 18 minutes ago Up 53 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
bc04ffad01b2 mariadb:11.4.5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
e985cd5cfbf7 redis:5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
Filter, search, and stream logs from all your Compose services
in one place with Docker Desktop's Logs view. [URL_WITH_CREDENTIALS]
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2
Learn more at [URL_WITH_CREDENTIALS] php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 9.84ms DONE
cache [PASSWORD_DOTS] 69.91ms DONE
compiled [PASSWORD_DOTS] 2.96ms DONE
events [PASSWORD_DOTS] 1.19ms DONE
routes [PASSWORD_DOTS] 0.65ms DONE
views [PASSWORD_DOTS] 4.44ms DONE
worker-crm-update:worker-crm-update_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-download:worker-download_00: stopped
worker-nudges:worker-nudges_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-emails:worker-emails_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan tinker
Psy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman
New PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`
> app(\Jiminny\Services\Mail\TextRelayService::class)->sync();
= []
root@docker_lamp_1:/home/jiminny# ;p
DOCKER
Close Tab
DEV (docker)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ec2-user@ip-10-30-129-190:~ (nc)
Close Tab
ec2-user@ip-10-30-140-255:~ (-zsh)
Close Tab
⌥⌘1
DEV (docker)...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"/Users/lukas/jiminny/app/.env.nikilocal:22:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/.env.local:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/dev.json:18: \"DB_ADMIN_PASSWORD\" : \"dgyt$rTe21-d\",\n/Users/lukas/jiminny/app/.env:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.vscode/settings.json:16: \"password\": \"dgyt$rTe21-d\"\n/Users/lukas/jiminny/app/.env.root:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.root:394:DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.other:14:DB_PASSWORD=dgyt\\$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop\n320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep\na1718cfb Merge pull request #529 from jiminny/katranci-patch-1\n74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3\n0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2\n4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue\n220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url\n543c60b8 Merge branch 'develop' into JY-19432-recall-api-url\nf163a29e JY-19432 Fix formatting\n6de60dd0 JY-19432 Fix formatting\n78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances\n2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3\nd6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code\n4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers\n6426729b JY-20432 Set stopasgroup to false for dialers queue worker\n92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities\ne0796d89 Delete obsolete files\n4a8b1ea2 Delete old docker build scripts before php-8 upgrade\nd790e56d JY-20603 Fix formatting\nfc758135 JY-20603 Move video ec2 instances to external subnet\necb558d5 JY-20761 Spread php-app tasks over ec2 instances\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80\n\ncommit a8ba85203fb10fb793ff07a6e85efac833979335\nMerge: c15e0c8201 a00d53bdd6\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Fri May 15 10:44:44 2026 +0300\n\n JY-18091 | Resolve conflicts\n\ncommit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1\nAuthor: Nikolay Nikolov <nikolay.nikolov@jiminny.com>\nDate: Thu Apr 30 14:54:08 2026 +0300\n\n JY-20625 | JY-20742 | Add laravel/mcp\n \n # Conflicts:\n # composer.lock\n\ndiff --git a/composer.json b/composer.json\nindex 02ffcc050e..89551995a1 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -113,6 +113,7 @@\n \"kalnoy/nestedset\": \"*\",\n \"laravel/framework\": \"^12.28\",\n \"laravel/helpers\": \"^1.7\",\n+ \"laravel/mcp\": \"^0.7.0\",\n \"laravel/passport\": \"^13.0\",\n \"laravel/slack-notification-channel\": \"^3.4\",\n \"laravel/tinker\": \"^2.10.1\",\n\ncommit 431b4c096f4ad0272bac595d078871a78b510bb5\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 17:17:47 2026 +0300\n\n JY-18091 | Downgrade composer.json\n\ndiff --git a/composer.json b/composer.json\nindex 5db26da2c9..baacefbd5f 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -187,20 +187,18 @@\n \"require-dev\": {\n \"barryvdh/laravel-debugbar\": \"^3.15\",\n \"barryvdh/laravel-ide-helper\": \"^3.5\",\n- \"brianium/paratest\": \"^7.12\",\n+ \"brianium/paratest\": \"^7.5\",\n \"browserstack/browserstack-local\": \"^1.1.0\",\n \"filp/whoops\": \"^2.9\",\n \"friendsofphp/php-cs-fixer\": \"^3.66\",\n \"infection/infection\": \"^0.29.14\",\n \"jasonmccreary/laravel-test-assertions\": \"^2.5\",\n \"larastan/larastan\": \"^3.1\",\n- \"maglnet/composer-require-checker\": \"^4.8\",\n \"mockery/mockery\": \"^1.6\",\n \"nunomaduro/collision\": \"^8.6\",\n \"phpstan/phpstan\": \"^2.1\",\n- \"phpunit/phpunit\": \"^12.0\",\n- \"symfony/phpunit-bridge\": \"^7.0\",\n- \"vimeo/psalm\": \"^6.5.0\"\n+ \"phpunit/phpunit\": \"^11.5.50\",\n+ \"symfony/phpunit-bridge\": \"^7.0\"\n },\n \"autoload\": {\n \"classmap\": [\n\ncommit 90e9b4034f665e2a8cacaf937e55abc070b5af4a\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 16:25:45 2026 +0300\n\n JY-18091 | Changes, composer\n\ndiff --git a/composer.json b/composer.json\nindex 751005e37a..5db26da2c9 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -95,7 +95,7 @@\n \"google/apps-meet\": \"^0.5.1\",\n \"guzzlehttp/guzzle\": \"^7.8\",\n \"guzzlehttp/psr7\": \"^2.6\",\n- \"halaxa/json-machine\": \"^1.3\",\n+ \"halaxa/json-machine\": \"^1.2\",\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20\n\na8ba85203f JY-18091 | Resolve conflicts\n4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts\n1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp\n431b4c096f JY-18091 | Downgrade composer.json\n90e9b4034f JY-18091 | Changes, composer\nb63d6f5d1f JY-18091 | Composer changes\nd017fbd8aa JY-18091 | Merge\n7daa10a444 JY-18091 | Cs lint fixes\na472f51b71 JY-18091 | Update composer to support php 8.5\n1162b04371 fix(security): bump dependencies (alerts #477)\n0c1f2f35df JY-19957 | Update composer.lock with correct dep\n574315fc12 JY-19957 | Update composer.locl\nc97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade\ne4e0e6d46d Merge branch 'master' into secfix/composer-20260415\n7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)\n4f5795d1d5 JY-20479: Remove unused dependencies\ncaa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download\n07832f2eeb JY-20479: Transcript download PDF optimization\n9f17a0f70e JY-20526: Remove Sentence breaker\n4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 \"^docker-update:\" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \\\n || grep -rA 20 \"^docker-update:\" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40\n/Users/lukas/jiminny/app/Makefile:docker-update:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\taws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-up:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-stop:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux kill-session -t jiminny_dev_ngrok\n/Users/lukas/jiminny/app/Makefile-\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n \"arm64v8\\|/jiminny/app/qa\" ~/jiminny/infrastructure/dev/docker/docker-compose.yml\n8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 37 seconds ago Up 37 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n187d58491294 wernight/ngrok \"/entrypoint.sh\" 37 seconds ago Up 37 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nb433f55153b5 mariadb:11.4.5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\n207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 37 seconds ago Up 37 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nd09012232958 redis:5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Services/Mail/TextRelayServiceTest.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nSwitched to branch 'master'\nYour branch is up to date with 'origin/master'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 124, done.\nremote: Counting objects: 100% (123/123), done.\nremote: Compressing objects: 100% (32/32), done.\nremote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)\nReceiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.\nResolving deltas: 100% (93/93), completed with 33 local objects.\nFrom github.com:jiminny/app\n 23fdef5aa9..942ddbe31c master -> origin/master\n a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app\n 96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration\n a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details\n * [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only\n + 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)\n * [new branch] master-reset-ES -> origin/master-reset-ES\nUpdating 23fdef5aa9..942ddbe31c\nFast-forward\n contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------\n front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----\n front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--\n front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-\n front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------\n routes/api_v2.php | 6 +++---\n tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------\n 7 files changed, 61 insertions(+), 46 deletions(-)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\nphp-8.5: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\narm64v8-php-8.5: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env\n#IMAGE_TAG=\"latest\"\nIMAGE_TAG=\"arm64v8-latest\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 \"lamp:\" | grep image\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \ndocker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest \"docker-php-entrypoi…\" lamp 3 minutes ago Exited (2) 3 minutes ago \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\nlatest: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\narm64v8-latest: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\nff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 18 minutes ago Up 53 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n87804ee14786 wernight/ngrok \"/entrypoint.sh\" 18 minutes ago Up 53 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nbc04ffad01b2 mariadb:11.4.5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\ne985cd5cfbf7 redis:5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\n121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 18 minutes ago Up 53 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\n Filter, search, and stream logs from all your Compose services\n in one place with Docker Desktop's Logs view. docker-desktop://dashboard/logs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\nroot@docker_lamp_1:/home/jiminny# ^C\nroot@docker_lamp_1:/home/jiminny# \nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entity) $ dev\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> exit\n\n INFO Goodbye.\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 9.84ms DONE\n cache ............................................................................................................................... 69.91ms DONE\n compiled ............................................................................................................................. 2.96ms DONE\n events ............................................................................................................................... 1.19ms DONE\n routes ............................................................................................................................... 0.65ms DONE\n views ................................................................................................................................ 4.44ms DONE\n\nworker-crm-update:worker-crm-update_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-download:worker-download_00: stopped\nworker-nudges:worker-nudges_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> app(\\Jiminny\\Services\\Mail\\TextRelayService::class)->sync();\n\n= []\n\nroot@docker_lamp_1:/home/jiminny# ;p","depth":4,"on_screen":true,"value":"/Users/lukas/jiminny/app/.env.nikilocal:22:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',\n/Users/lukas/jiminny/app/.env.local:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/dev.json:18: \"DB_ADMIN_PASSWORD\" : \"dgyt$rTe21-d\",\n/Users/lukas/jiminny/app/.env:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.vscode/settings.json:16: \"password\": \"dgyt$rTe21-d\"\n/Users/lukas/jiminny/app/.env.root:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.root:394:DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.other:14:DB_PASSWORD=dgyt\\$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:17:DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.env.local.bak:19:#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+DB_ADMIN_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+DB_PASSWORD=dgyt$rTe21-d\n/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#DB_ADMIN_PASSWORD=dgyt$rTe21-d\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop\n320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep\na1718cfb Merge pull request #529 from jiminny/katranci-patch-1\n74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3\n0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2\n4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue\n220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url\n543c60b8 Merge branch 'develop' into JY-19432-recall-api-url\nf163a29e JY-19432 Fix formatting\n6de60dd0 JY-19432 Fix formatting\n78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances\n2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3\nd6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code\n4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers\n6426729b JY-20432 Set stopasgroup to false for dialers queue worker\n92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities\ne0796d89 Delete obsolete files\n4a8b1ea2 Delete old docker build scripts before php-8 upgrade\nd790e56d JY-20603 Fix formatting\nfc758135 JY-20603 Move video ec2 instances to external subnet\necb558d5 JY-20761 Spread php-app tasks over ec2 instances\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80\n\ncommit a8ba85203fb10fb793ff07a6e85efac833979335\nMerge: c15e0c8201 a00d53bdd6\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Fri May 15 10:44:44 2026 +0300\n\n JY-18091 | Resolve conflicts\n\ncommit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1\nAuthor: Nikolay Nikolov <nikolay.nikolov@jiminny.com>\nDate: Thu Apr 30 14:54:08 2026 +0300\n\n JY-20625 | JY-20742 | Add laravel/mcp\n \n # Conflicts:\n # composer.lock\n\ndiff --git a/composer.json b/composer.json\nindex 02ffcc050e..89551995a1 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -113,6 +113,7 @@\n \"kalnoy/nestedset\": \"*\",\n \"laravel/framework\": \"^12.28\",\n \"laravel/helpers\": \"^1.7\",\n+ \"laravel/mcp\": \"^0.7.0\",\n \"laravel/passport\": \"^13.0\",\n \"laravel/slack-notification-channel\": \"^3.4\",\n \"laravel/tinker\": \"^2.10.1\",\n\ncommit 431b4c096f4ad0272bac595d078871a78b510bb5\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 17:17:47 2026 +0300\n\n JY-18091 | Downgrade composer.json\n\ndiff --git a/composer.json b/composer.json\nindex 5db26da2c9..baacefbd5f 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -187,20 +187,18 @@\n \"require-dev\": {\n \"barryvdh/laravel-debugbar\": \"^3.15\",\n \"barryvdh/laravel-ide-helper\": \"^3.5\",\n- \"brianium/paratest\": \"^7.12\",\n+ \"brianium/paratest\": \"^7.5\",\n \"browserstack/browserstack-local\": \"^1.1.0\",\n \"filp/whoops\": \"^2.9\",\n \"friendsofphp/php-cs-fixer\": \"^3.66\",\n \"infection/infection\": \"^0.29.14\",\n \"jasonmccreary/laravel-test-assertions\": \"^2.5\",\n \"larastan/larastan\": \"^3.1\",\n- \"maglnet/composer-require-checker\": \"^4.8\",\n \"mockery/mockery\": \"^1.6\",\n \"nunomaduro/collision\": \"^8.6\",\n \"phpstan/phpstan\": \"^2.1\",\n- \"phpunit/phpunit\": \"^12.0\",\n- \"symfony/phpunit-bridge\": \"^7.0\",\n- \"vimeo/psalm\": \"^6.5.0\"\n+ \"phpunit/phpunit\": \"^11.5.50\",\n+ \"symfony/phpunit-bridge\": \"^7.0\"\n },\n \"autoload\": {\n \"classmap\": [\n\ncommit 90e9b4034f665e2a8cacaf937e55abc070b5af4a\nAuthor: Nikolay Ivanov <nikolay.ivanov@jiminny.com>\nDate: Tue May 12 16:25:45 2026 +0300\n\n JY-18091 | Changes, composer\n\ndiff --git a/composer.json b/composer.json\nindex 751005e37a..5db26da2c9 100644\n--- a/composer.json\n+++ b/composer.json\n@@ -95,7 +95,7 @@\n \"google/apps-meet\": \"^0.5.1\",\n \"guzzlehttp/guzzle\": \"^7.8\",\n \"guzzlehttp/psr7\": \"^2.6\",\n- \"halaxa/json-machine\": \"^1.3\",\n+ \"halaxa/json-machine\": \"^1.2\",\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20\n\na8ba85203f JY-18091 | Resolve conflicts\n4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts\n1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp\n431b4c096f JY-18091 | Downgrade composer.json\n90e9b4034f JY-18091 | Changes, composer\nb63d6f5d1f JY-18091 | Composer changes\nd017fbd8aa JY-18091 | Merge\n7daa10a444 JY-18091 | Cs lint fixes\na472f51b71 JY-18091 | Update composer to support php 8.5\n1162b04371 fix(security): bump dependencies (alerts #477)\n0c1f2f35df JY-19957 | Update composer.lock with correct dep\n574315fc12 JY-19957 | Update composer.locl\nc97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade\ne4e0e6d46d Merge branch 'master' into secfix/composer-20260415\n7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)\n4f5795d1d5 JY-20479: Remove unused dependencies\ncaa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download\n07832f2eeb JY-20479: Transcript download PDF optimization\n9f17a0f70e JY-20526: Remove Sentence breaker\n4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 \"^docker-update:\" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \\\n || grep -rA 20 \"^docker-update:\" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40\n/Users/lukas/jiminny/app/Makefile:docker-update:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\taws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\tdocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} bash -c \"cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini\"\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} supervisorctl restart all\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\t${DOCKER_COMMAND} php -v\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-up:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'\n/Users/lukas/jiminny/app/Makefile-\n/Users/lukas/jiminny/app/Makefile-ngrok-stop:\n/Users/lukas/jiminny/app/Makefile-\u0000\u0000\u0000\u0000\u0000\ttmux kill-session -t jiminny_dev_ngrok\n/Users/lukas/jiminny/app/Makefile-\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n \"arm64v8\\|/jiminny/app/qa\" ~/jiminny/infrastructure/dev/docker/docker-compose.yml\n8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 37 seconds ago Up 37 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n187d58491294 wernight/ngrok \"/entrypoint.sh\" 37 seconds ago Up 37 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nb433f55153b5 mariadb:11.4.5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\n207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 37 seconds ago Up 37 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nd09012232958 redis:5 \"docker-entrypoint.s…\" 37 seconds ago Up 37 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nerror: Your local changes to the following files would be overwritten by checkout:\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Services/Mail/TextRelayServiceTest.php\nPlease commit your changes or stash them before you switch branches.\nAborting\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master\nM\u0000\u0000\u0000\u0000\u0000\u0000\t.env.local\nM\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/JiminnyDebugCommand.php\nM\u0000\u0000\u0000\u0000\u0000\u0000\tconfig/logging.php\nSwitched to branch 'master'\nYour branch is up to date with 'origin/master'.\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull\nremote: Enumerating objects: 124, done.\nremote: Counting objects: 100% (123/123), done.\nremote: Compressing objects: 100% (32/32), done.\nremote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)\nReceiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.\nResolving deltas: 100% (93/93), completed with 33 local objects.\nFrom github.com:jiminny/app\n 23fdef5aa9..942ddbe31c master -> origin/master\n a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app\n 96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration\n a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details\n * [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only\n + 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)\n * [new branch] master-reset-ES -> origin/master-reset-ES\nUpdating 23fdef5aa9..942ddbe31c\nFast-forward\n contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------\n front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----\n front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--\n front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-\n front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------\n routes/api_v2.php | 6 +++---\n tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------\n 7 files changed, 61 insertions(+), 46 deletions(-)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\nphp-8.5: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\narm64v8-php-8.5: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Image is up to date for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env\n#IMAGE_TAG=\"latest\"\nIMAGE_TAG=\"arm64v8-latest\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 \"lamp:\" | grep image\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \ndocker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest \"docker-php-entrypoi…\" lamp 3 minutes ago Exited (2) 3 minutes ago \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update\naws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com\nLogin Succeeded\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\nlatest: Pulling from jiminny/app/qa\nDigest: sha256:92b2c3b1ce5badf9f7add1f42efe3636e3d8ef50ee1b1fd66f7c7dfc539cbf3c\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:latest\ndocker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\narm64v8-latest: Pulling from jiminny/app/qa\nDigest: sha256:d6b7ebd9b71c0480b909d77fceada3df720c6594e4c853228765509b36f52db6\nStatus: Downloaded newer image for 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\n\nWhat's next:\n View a summary of image vulnerabilities and recommendations → docker scout quickview 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker: 'docker exec' requires at least 2 arguments\n\nUsage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]\n\nSee 'docker exec --help' for more information\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\nff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 \"/usr/local/bin/dumb…\" 18 minutes ago Up 53 seconds 0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp kibana\n87804ee14786 wernight/ngrok \"/entrypoint.sh\" 18 minutes ago Up 53 seconds 0.0.0.0:4040->4040/tcp, [::]:4040->4040/tcp ngrok\nbc04ffad01b2 mariadb:11.4.5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1\ne985cd5cfbf7 redis:5 \"docker-entrypoint.s…\" 18 minutes ago Up 53 seconds 0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp redis\n121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 \"/tini -- /usr/local…\" 18 minutes ago Up 53 seconds 0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 0.0.0.0:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp\nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nWARN[0000] The \"rTe21\" variable is not set. Defaulting to a blank string. \nno configuration file provided: not found\n\nWhat's next:\n Debug this Compose error with Gordon → docker ai \"help me fix this compose error\"\n Filter, search, and stream logs from all your Compose services\n in one place with Docker Desktop's Logs view. docker-desktop://dashboard/logs\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ dev\nroot@docker_lamp_1:/home/jiminny# ^C\nroot@docker_lamp_1:/home/jiminny# \nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20963-fix-import-on-deleted-entity) $ dev\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> exit\n\n INFO Goodbye.\n\nroot@docker_lamp_1:/home/jiminny# php artisan optimize:clear && supervisorctl restart all\n\n INFO Clearing cached bootstrap files. \n\n config ............................................................................................................................... 9.84ms DONE\n cache ............................................................................................................................... 69.91ms DONE\n compiled ............................................................................................................................. 2.96ms DONE\n events ............................................................................................................................... 1.19ms DONE\n routes ............................................................................................................................... 0.65ms DONE\n views ................................................................................................................................ 4.44ms DONE\n\nworker-crm-update:worker-crm-update_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-download:worker-download_00: stopped\nworker-nudges:worker-nudges_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-emails:worker-emails_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\nroot@docker_lamp_1:/home/jiminny# php artisan tinker\nPsy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman\nNew PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`\n\n> app(\\Jiminny\\Services\\Mail\\TextRelayService::class)->sync();\n\n= []\n\nroot@docker_lamp_1:/home/jiminny# ;p","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (docker)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"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.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"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.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-129-190:~ (nc)","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"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.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-140-255:~ (-zsh)","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"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.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"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.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"DEV (docker)","depth":1,"bounds":{"left":0.46875,"top":0.033333335,"width":0.0625,"height":0.017777778},"on_screen":true,"role_description":"text"}]...
|
6991069187994105039
|
-5697495435470628134
|
typing_pause
|
accessibility
|
NULL
|
/Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SE /Users/lukas/jiminny/app/.env.nikilocal:22:[ENV_SECRET]
/Users/lukas/jiminny/app/bootstrap/cache/config.php:898: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:927: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:947: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:962: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:982: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/bootstrap/cache/config.php:1176: 'password' => 'dgyt$rTe21-d',
/Users/lukas/jiminny/app/.env.local:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/dev.json:18: "DB_ADMIN_PASSWORD" : "dgyt$rTe21-d",
/Users/lukas/jiminny/app/.env:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.vscode/settings.json:16: "password": "dgyt$rTe21-d"
/Users/lukas/jiminny/app/.env.root:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.env.root:394:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.other:14:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:17:[ENV_SECRET]
/Users/lukas/jiminny/app/.env.local.bak:19:#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local1/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:51:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:53:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp/shelved.patch:55:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:138:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp30/shelved.patch:140:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:177:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp31/shelved.patch:179:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:832:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:834:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp14/shelved.patch:836:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/env/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:44:+#[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:46:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/temp16/shelved.patch:48:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:51:+[ENV_SECRET]
/Users/lukas/jiminny/app/.idea/shelf/_env_local_not_sure_why_it_was_changed/shelved.patch:53:+#[ENV_SECRET]
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log -p --all -S 'rTe21'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker compose ps -a
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure log --oneline -20 develop
320ab019 (HEAD -> develop, origin/develop, origin/HEAD) Merge pull request #684 from jiminny/JY-18802-sqs-sleep
a1718cfb Merge pull request #529 from jiminny/katranci-patch-1
74ca65d5 Merge pull request #662 from jiminny/JY-16646-rds-logs-s3
0ca88f6b Merge pull request #732 from jiminny/JY-20761-spread-app-ec2
4ae090c3 Merge pull request #728 from jiminny/JY-20623-panorama-sqs-queue
220f2624 Merge pull request #693 from jiminny/JY-19432-recall-api-url
543c60b8 Merge branch 'develop' into JY-19432-recall-api-url
f163a29e JY-19432 Fix formatting
6de60dd0 JY-19432 Fix formatting
78eb8ff8 Merge pull request #715 from jiminny/JY-20225-spot-instances
2d048485 Merge pull request #730 from jiminny/JY-20603-worker-video-s3
d6fa2555 Merge pull request #733 from jiminny/delete-obsolete-code
4a3c99c1 Merge pull request #735 from jiminny/JY-20432-stop-as-group-to-false-for-dialers
6426729b JY-20432 Set stopasgroup to false for dialers queue worker
92d6d1cd Merge pull request #725 from jiminny/JY-20556-vulnerabilities
e0796d89 Delete obsolete files
4a8b1ea2 Delete old docker build scripts before php-8 upgrade
d790e56d JY-20603 Fix formatting
fc758135 JY-20603 Move video ec2 instances to external subnet
ecb558d5 JY-20761 Spread php-app tasks over ec2 instances
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git -C ~/jiminny/infrastructure diff HEAD~10 -- docker-compose.yml
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ cd ~/jiminny/app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log -p -- composer.json | head -80
commit a8ba85203fb10fb793ff07a6e85efac833979335
Merge: c15e0c8201 a00d53bdd6
Author: Nikolay Ivanov <[EMAIL]>
Date: Fri May 15 10:44:44 2026 +0300
JY-18091 | Resolve conflicts
commit 1dfd9adf88600a0fd00a794dfd0fdef6b27ffcc1
Author: Nikolay Nikolov <[EMAIL]>
Date: Thu Apr 30 14:54:08 2026 +0300
JY-20625 | JY-20742 | Add laravel/mcp
# Conflicts:
# composer.lock
diff --git a/composer.json b/composer.json
index 02ffcc050e..89551995a1 100644
--- a/composer.json
+++ b/composer.json
@@ -113,6 +113,7 @@
"kalnoy/nestedset": "*",
"laravel/framework": "^12.28",
"laravel/helpers": "^1.7",
+ "laravel/mcp": "^0.7.0",
"laravel/passport": "^13.0",
"laravel/slack-notification-channel": "^3.4",
"laravel/tinker": "^2.10.1",
commit 431b4c096f4ad0272bac595d078871a78b510bb5
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 17:17:47 2026 +0300
JY-18091 | Downgrade composer.json
diff --git a/composer.json b/composer.json
index 5db26da2c9..baacefbd5f 100644
--- a/composer.json
+++ b/composer.json
@@ -187,20 +187,18 @@
"require-dev": {
"barryvdh/laravel-debugbar": "^3.15",
"barryvdh/laravel-ide-helper": "^3.5",
- "brianium/paratest": "^7.12",
+ "brianium/paratest": "^7.5",
"browserstack/browserstack-local": "^1.1.0",
"filp/whoops": "^2.9",
"friendsofphp/php-cs-fixer": "^3.66",
"infection/infection": "^0.29.14",
"jasonmccreary/laravel-test-assertions": "^2.5",
"larastan/larastan": "^3.1",
- "maglnet/composer-require-checker": "^4.8",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
"phpstan/phpstan": "^2.1",
- "phpunit/phpunit": "^12.0",
- "symfony/phpunit-bridge": "^7.0",
- "vimeo/psalm": "^6.5.0"
+ "phpunit/phpunit": "^11.5.50",
+ "symfony/phpunit-bridge": "^7.0"
},
"autoload": {
"classmap": [
commit 90e9b4034f665e2a8cacaf937e55abc070b5af4a
Author: Nikolay Ivanov <[EMAIL]>
Date: Tue May 12 16:25:45 2026 +0300
JY-18091 | Changes, composer
diff --git a/composer.json b/composer.json
index 751005e37a..5db26da2c9 100644
--- a/composer.json
+++ b/composer.json
@@ -95,7 +95,7 @@
"google/apps-meet": "^0.5.1",
"guzzlehttp/guzzle": "^7.8",
"guzzlehttp/psr7": "^2.6",
- "halaxa/json-machine": "^1.3",
+ "halaxa/json-machine": "^1.2",
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ git log --oneline -- composer.json composer.lock | head -20
a8ba85203f JY-18091 | Resolve conflicts
4802820669 JY-20625 | JY-20742 | fix composer.lock conflicts
1dfd9adf88 JY-20625 | JY-20742 | Add laravel/mcp
431b4c096f JY-18091 | Downgrade composer.json
90e9b4034f JY-18091 | Changes, composer
b63d6f5d1f JY-18091 | Composer changes
d017fbd8aa JY-18091 | Merge
7daa10a444 JY-18091 | Cs lint fixes
a472f51b71 JY-18091 | Update composer to support php 8.5
1162b04371 fix(security): bump dependencies (alerts #477)
0c1f2f35df JY-19957 | Update composer.lock with correct dep
574315fc12 JY-19957 | Update composer.locl
c97ad51416 JY-19957 | Remove abanded sympfony debug, compose upgrade
e4e0e6d46d Merge branch 'master' into secfix/composer-20260415
7f8b428f9d fix(security): bump composer dependencies (alerts #457 #454 #434 #429 #425)
4f5795d1d5 JY-20479: Remove unused dependencies
caa07f2990 Merge branch 'master' into JY-20479-optimize-transcript-pdf-download
07832f2eeb JY-20479: Transcript download PDF optimization
9f17a0f70e JY-20526: Remove Sentence breaker
4e8ba8ee06 JY-19955: update aws-sdk, symfony-process, paragonie, psy/psysh, robrichards/xmlseclibs
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -A 20 "^docker-update:" ~/jiminny/infrastructure/dev/docker/Makefile 2>/dev/null \
|| grep -rA 20 "^docker-update:" ~/jiminny/{app,infrastructure} 2>/dev/null | head -40
/Users/lukas/jiminny/app/Makefile:docker-update:
/Users/lukas/jiminny/app/Makefile- aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin https://438740370364.dkr.ecr.us-east-2.amazonaws.com
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:php-8.5
/Users/lukas/jiminny/app/Makefile- docker pull 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-php-8.5
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-disable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-docker-xdebug-enable:
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} bash -c "cp ~/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini"
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} supervisorctl restart all
/Users/lukas/jiminny/app/Makefile- ${DOCKER_COMMAND} php -v
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-up:
/Users/lukas/jiminny/app/Makefile- tmux new-session -d -s jiminny_dev_ngrok 'ngrok http -subdomain=$(shell grep TUNNEL_HOST .env | cut -d @ -f 2 | cut -d . -f 1) -host-header=app.dev.jiminny.com app.dev.jiminny.com:80'
/Users/lukas/jiminny/app/Makefile-
/Users/lukas/jiminny/app/Makefile-ngrok-stop:
/Users/lukas/jiminny/app/Makefile- tmux kill-session -t jiminny_dev_ngrok
/Users/lukas/jiminny/app/Makefile-
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ grep -n "arm64v8\|/jiminny/app/qa" ~/jiminny/infrastructure/dev/docker/docker-compose.yml
8: image: 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:$IMAGE_TAG
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9a4f60fb6a99 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
187d58491294 wernight/ngrok "/entrypoint.sh" 37 seconds ago Up 37 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
b433f55153b5 mariadb:11.4.5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
207dfee16e28 docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
d09012232958 redis:5 "docker-entrypoint.s…" 37 seconds ago Up 37 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
error: Your local changes to the following files would be overwritten by checkout:
tests/Unit/Services/Mail/TextRelayServiceTest.php
Please commit your changes or stash them before you switch branches.
Aborting
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20891-fix-alias-mismatch-on-sms-text-relay) $ co master
M .env.local
M app/Console/Commands/JiminnyDebugCommand.php
M config/logging.php
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ git pull
remote: Enumerating objects: 124, done.
remote: Counting objects: 100% (123/123), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 124 (delta 93), reused 116 (delta 91), pack-reused 1 (from 1)
Receiving objects: 100% (124/124), 19.27 KiB | 458.00 KiB/s, done.
Resolving deltas: 100% (93/93), completed with 33 local objects.
From github.com:jiminny/app
23fdef5aa9..942ddbe31c master -> origin/master
a9a392e002..5210fb54ee JY-20741-user-can-log-in-access-the-desktop-app -> origin/JY-20741-user-can-log-in-access-the-desktop-app
96be090229..95a97136e1 JY-208020-salesforce-zoom-integration -> origin/JY-208020-salesforce-zoom-integration
a3e9bf6025..7507e30daa JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details -> origin/JY-20835-mcp-enable-users-to-get-a-list-of-deals-and-their-details
* [new branch] JY-20855-ES-mapping-only -> origin/JY-20855-ES-mapping-only
+ 6b75136f66...3b1d77c6cf JY-20855-mcp-ES-mappings -> origin/JY-20855-mcp-ES-mappings (forced update)
* [new branch] master-reset-ES -> origin/master-reset-ES
Updating 23fdef5aa9..942ddbe31c
Fast-forward
contrib/swagger_v2.yml | 58 ++++++++++++++++++++++++++++++++++++----------------------
front-end/src/components/shared/AskAnything/EventSource.js | 12 ++++++++----
front-end/src/components/shared/AskAnything/__mocks__/mocks.js | 7 +++++--
front-end/src/components/shared/AskAnything/__mocks__/requestHandlers.js | 2 +-
front-end/src/components/shared/AskAnything/usePrompt.js | 13 +++++--------
routes/api_v2.php | 6 +++---
tests/Feature/Http/Controllers/ActivityAskAnythingTest.php | 9 +++------
7 files changed, 61 insertions(+), 46 deletions(-)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ grep IMAGE_TAG ~/jiminny/infrastructure/dev/docker/.env
#IMAGE_TAG="latest"
IMAGE_TAG="arm64v8-latest"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ cd ~/jiminny/infrastructure/dev/docker
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose config | grep -A1 "lamp:" | grep image
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ docker compose ps -a | grep lamp
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
docker_lamp_1 438740370364.dkr.ecr.us-east-2.amazonaws.com/jiminny/app/qa:arm64v8-latest "docker-php-entrypoi…" lamp 3 minutes ago Exited (2) 3 minutes ago
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ app
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ make docker-update
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ dev
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug /bin/bash
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (master) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ff56c63186b7 docker.elastic.co/kibana/kibana:7.10.2 "/usr/local/bin/dumb…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:5601->5601/tcp, [::]:5601->5601/tcp kibana
87804ee14786 wernight/ngrok "/entrypoint.sh" 18 minutes ago Up 53 seconds [IP_ADDRESS]:4040->4040/tcp, [::]:4040->4040/tcp ngrok
bc04ffad01b2 mariadb:11.4.5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:3306->3306/tcp, [::]:3306->3306/tcp docker-mariadb-1
e985cd5cfbf7 redis:5 "docker-entrypoint.s…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:6379->6379/tcp, [::]:6379->6379/tcp redis
121dce36b86a docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/local…" 18 minutes ago Up 53 seconds [IP_ADDRESS]:9200->9200/tcp, [::]:9200->9200/tcp, [IP_ADDRESS]:9300->9300/tcp, [::]:9300->9300/tcp elasticsearch
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose ps -a | grep lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (master) $ docker compose logs --tail=30 lamp
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
WARN[0000] The "rTe21" variable is not set. Defaulting to a blank string.
no configuration file provided: not found
What's next:
Debug this Compose error with Gordon → docker ai "help me fix this compose error"
Filter, search, and stream logs from all your Compose services
in one place with Docker Desktop's Logs view. [URL_WITH_CREDENTIALS]
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug a1a97af7b5a2
Learn more at [URL_WITH_CREDENTIALS] php artisan optimize:clear && supervisorctl restart all
INFO Clearing cached bootstrap files.
config [PASSWORD_DOTS] 9.84ms DONE
cache [PASSWORD_DOTS] 69.91ms DONE
compiled [PASSWORD_DOTS] 2.96ms DONE
events [PASSWORD_DOTS] 1.19ms DONE
routes [PASSWORD_DOTS] 0.65ms DONE
views [PASSWORD_DOTS] 4.44ms DONE
worker-crm-update:worker-crm-update_00: stopped
jiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped
jiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped
jiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped
jiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped
worker-analytics:worker-analytics_00: stopped
worker-download:worker-download_00: stopped
worker-nudges:worker-nudges_00: stopped
artisan-schedule:artisan-schedule_00: stopped
worker-emails:worker-emails_00: stopped
worker-conferences:worker-conferences_00: stopped
worker-crm-sync:worker-crm-sync_00: stopped
jiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped
worker:worker_00: stopped
worker-audio:worker-audio_00: stopped
worker-calendar:worker-calendar_00: stopped
worker-es-update:worker-es-update_00: stopped
artisan-schedule:artisan-schedule_00: started
jiminny-worker-processing-1:jiminny-worker-processing-1_00: started
jiminny-worker-processing-2:jiminny-worker-processing-2_00: started
jiminny-worker-processing-3:jiminny-worker-processing-3_00: started
jiminny-worker-processing-4:jiminny-worker-processing-4_00: started
jiminny-worker-processing-5:jiminny-worker-processing-5_00: started
jiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started
worker:worker_00: started
worker-analytics:worker-analytics_00: started
worker-audio:worker-audio_00: started
worker-calendar:worker-calendar_00: started
worker-conferences:worker-conferences_00: started
worker-crm-sync:worker-crm-sync_00: started
worker-crm-update:worker-crm-update_00: started
worker-download:worker-download_00: started
worker-emails:worker-emails_00: started
worker-es-update:worker-es-update_00: started
worker-nudges:worker-nudges_00: started
root@docker_lamp_1:/home/jiminny# php artisan tinker
Psy Shell v0.12.22 (PHP 8.5.5 — cli) by Justin Hileman
New PHP manual is available (latest: 3.0.7). Update with `doc --update-manual`
> app(\Jiminny\Services\Mail\TextRelayService::class)->sync();
= []
root@docker_lamp_1:/home/jiminny# ;p
DOCKER
Close Tab
DEV (docker)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
ec2-user@ip-10-30-129-190:~ (nc)
Close Tab
ec2-user@ip-10-30-140-255:~ (-zsh)
Close Tab
⌥⌘1
DEV (docker)...
|
78727
|
NULL
|
NULL
|
NULL
|
|
78727
|
2763
|
28
|
2026-05-27T12:56:38.830028+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886598830_m1.jpg...
|
iTerm2
|
DOCKER (docker-compose)
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
docker_lamp_1 | 2026-05-27 12:39:02 Running [ docker_lamp_1 | 2026-05-27 12:39:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:39:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:39:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:39:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:39:08 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:39:10 Running ['artisan' activity:aircall:check-and-renew] 2s 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-27 12:39:12 Running ['artisan' track:retry-failed-downloads] 1s 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 | 2026-05-27 12:40:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:40:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:40:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:40:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:40:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:40:09 Running ['artisan' conference:monitor:count] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:40:10 Running ['artisan' activity:purge-stale] ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:purge-stale > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:40:11 Running ['artisan' mailbox:text-relay:sync] Relayed 0 message(s).
docker_lamp_1 | .... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:40:13 Running ['artisan' conference:pre-meeting-notification] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:40:15 Running ['artisan' conference:monitor:start] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:40:16 Running ['artisan' conference:monitor:end] ..... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:40:17 Running ['artisan' jiminny:fix-hubspot-tokens] . 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:40:20 Running ['artisan' conference:pre-meeting-reminder] in background 1.88ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-05-27 12:40:20 Running ['artisan' hubspot:journal-poll --start] in background 1.20ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-05-27 12:40:20 Running ['artisan' jiminny:transcription:retry-failed] No failed transcriptions found.
docker_lamp_1 | 🚀 Starting HubSpot journal polling service...
docker_lamp_1 | 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:transcription:retry-failed > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:40:22 Running ['artisan' crm:reset-governor] [PASSWORD_DOTS] 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:reset-governor > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:40:25 Running ['artisan' crm:bullhorn:ping --heartbeat] 0 social account(s) to be processed ...
docker_lamp_1 |
docker_lamp_1 | Done!
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-05-27 12:41:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:41:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:41:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:41:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:41:08 Running ['artisan' mailbox:batch:process --max-batches=15] 2s 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-27 12:41:10 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-27 12:36:12 (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 | ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-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-27 12:41:12 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:41:12 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 301.19ms DONE
docker_lamp_1 | 2026-05-27 12:41:12 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:41:12 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 16.63ms DONE
docker_lamp_1 | 2026-05-27 12:41:12 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:41:12 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] 7.90ms DONE
docker_lamp_1 | 2026-05-27 12:41:13 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:41:13 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] 7.16ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-27 12:42:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:42:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:42:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:42:05 Running ['artisan' mailbox:skip-lists:refresh] . 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:42:07 Running ['artisan' mailbox:batch:process --max-batches=15] 2s 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-27 12:42:10 Running ['artisan' conference:monitor:count] ... 3s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:42:13 Running ['artisan' mailbox:batch:create] ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/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-27 12:42:17 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:42:17 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] 70.74ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-27 12:43:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:43:04 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:43:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:43:07 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:43:08 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:43:10 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 2.83ms 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-27 12:43:10 Running ['artisan' calendar:sync --dateMode=daily] 2026-05-27 12:43:19 Jiminny\Jobs\Calendar\SyncCalendarEvents ....... RUNNING
docker_lamp_1 | 2026-05-27 12:43:20 Jiminny\Jobs\Calendar\SyncCalendarEvents ....... 1s DONE
docker_lamp_1 | 2026-05-27 12:43:22 Jiminny\Jobs\Calendar\SyncCalendarEvents ....... RUNNING
docker_lamp_1 | 12s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' calendar:sync --dateMode=daily > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | 2026-05-27 12:43:22 Jiminny\Jobs\Calendar\SyncCalendarEvents . 378.18ms DONE
docker_lamp_1 | 2026-05-27 12:43:22 Jiminny\Jobs\Calendar\SyncCalendarEvents ....... RUNNING
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-05-27 12:43:22 Jiminny\Jobs\Calendar\SyncCalendarEvents .. 69.77ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-27 12:44:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:44:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:44:04 Running ['artisan' jiminny:monitor-social-accounts] 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:44:07 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:44:08 Running ['artisan' mailbox:batch:process --max-batches=15] 3s 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-27 12:44:12 Running ['artisan' conference:monitor:count] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:44:13 Running ['artisan' crm:sync-objects] 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-27 06:44: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-27 06:44: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-27 06:44:27 (delay: 14s)
docker_lamp_1 | [PASSWORD_DOTS] 1s 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-27 12:44:15 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:44:15 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 35.79ms DONE
docker_lamp_1 | 2026-05-27 12:44:17 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:44:17 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 31.09ms DONE
docker_lamp_1 | 2026-05-27 12:44:19 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:44:20 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 1s DONE
docker_lamp_1 | 2026-05-27 12:44:21 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:44:21 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 15.19ms DONE
docker_lamp_1 | 2026-05-27 12:44:23 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:44:25 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 1s DONE
docker_lamp_1 | 2026-05-27 12:44:25 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:44:25 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 53.92ms DONE
docker_lamp_1 | 2026-05-27 12:44:27 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:44:27 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 67.35ms DONE
docker_lamp_1 | 2026-05-27 12:44:29 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:44:37 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 7s DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-27 12:45:16 Running ['artisan' meeting-bot:schedule-bot] .. 11s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:45:28 Running ['artisan' dialers:monitor-activities] . 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:45:33 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-27 12:45:37 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:45:39 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:45:41 Running ['artisan' activity:purge-stale] ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:purge-stale > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:45:42 Running ['artisan' mailbox:text-relay:sync] Relayed 0 message(s).
docker_lamp_1 | .... 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:45:44 Running ['artisan' conference:pre-meeting-notification] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:45:46 Running ['artisan' conference:monitor:start] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:45:47 Running ['artisan' conference:monitor:end] ..... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:45:49 Running ['artisan' jiminny:fix-hubspot-tokens] . 3s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:45:52 Running ['artisan' conference:pre-meeting-reminder] in background 3.33ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-05-27 12:45:52 Running ['artisan' hubspot:journal-poll --start] in background 1.16ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-05-27 12:45:52 Running ['artisan' datadog:report:processing-sla-activities] 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' datadog:report:processing-sla-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:45:55 Running ['artisan' activity:sync --from='2026-05-27 12:29:00' --to='2026-05-27 12:45:00' --skipProviders='ringcentral' --skipProviders='avaya' --skipProviders='telus' --skipProviders='talkdesk'] 🚀 Starting HubSpot journal polling service...
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync --from='2026-05-27 12:29:00' --to='2026-05-27 12:45:00' --skipProviders='ringcentral' --skipProviders='avaya' --skipProviders='telus' --skipProviders='talkdesk' > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:45:57 Running ['artisan' crm:bullhorn:ping --heartbeat] 2026-05-27 12:45:58 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:45:58 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] 99.54ms DONE
docker_lamp_1 | 2026-05-27 12:45:58 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 0 social account(s) to be processed ...
docker_lamp_1 |
docker_lamp_1 | Done!
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:45:59 Running ['artisan' nudges:send --silent] 2026-05-27 12:45:59 Jiminny\Jobs\Activity\SyncActivity ....... 944.88ms DONE
docker_lamp_1 | 2026-05-27 12:45:59 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:46:00 Jiminny\Jobs\Activity\SyncActivity ....... 936.60ms DONE
docker_lamp_1 | 2026-05-27 12:46:00 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' nudges:send --silent > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:46:00 Running ['artisan' jiminny:playlists:normalize-sort] 2026-05-27 12:46:01 Jiminny\Jobs\Activity\SyncActivity ....... 872.92ms DONE
docker_lamp_1 | 2026-05-27 12:46:01 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:playlists:normalize-sort > '/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-27 12:46:02 Jiminny\Jobs\Activity\SyncActivity ....... 889.12ms DONE
docker_lamp_1 | 2026-05-27 12:46:02 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:46:02 Jiminny\Jobs\Activity\SyncActivity ....... 235.35ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-27 12:47:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:47:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:47:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:47:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:47:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:47:09 Running ['artisan' mailbox:batch:create] ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/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-27 12:47:11 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:47:11 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] 43.25ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-27 12:48:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:48:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:48:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:48:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:48:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:48:08 Running ['artisan' conference:monitor:count] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:48:10 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 1.20ms 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-27 12:48:10 Running ['artisan' crm:autolog-delayed] Dispatched autolog delayed jobs for all applicable teams:
docker_lamp_1 | [PASSWORD_DOTS] 1s 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
docker_lamp_1 |
docker_lamp_1 | 2026-05-27 12:49:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:49:04 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:49:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:49:07 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:49:08 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/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-27 12:50:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:50:04 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:50:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:50:07 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:50:08 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:50:09 Running ['artisan' conference:monitor:count] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:50:11 Running ['artisan' activity:purge-stale] ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:purge-stale > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:50:12 Running ['artisan' mailbox:text-relay:sync] Relayed 0 message(s).
docker_lamp_1 | .... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:50:14 Running ['artisan' conference:pre-meeting-notification] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:50:15 Running ['artisan' conference:monitor:start] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:50:16 Running ['artisan' conference:monitor:end] ..... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:50:17 Running ['artisan' jiminny:fix-hubspot-tokens] . 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:50:20 Running ['artisan' conference:pre-meeting-reminder] in background 1.04ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-05-27 12:50:20 Running ['artisan' hubspot:journal-poll --start] in background 0.76ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-05-27 12:50:20 Running ['artisan' jiminny:transcription:retry-failed] No failed transcriptions found.
docker_lamp_1 | 🚀 Starting HubSpot journal polling service...
docker_lamp_1 | 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:transcription:retry-failed > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:50:22 Running ['artisan' crm:reset-governor] [PASSWORD_DOTS] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:reset-governor > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:50:24 Running ['artisan' crm:bullhorn:ping --heartbeat] 0 social account(s) to be processed ...
docker_lamp_1 |
docker_lamp_1 | Done!
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-05-27 12:51:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:51:04 Running ['artisan' dialers:monitor-activities] . 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:51:06 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:51:08 Running ['artisan' mailbox:skip-lists:refresh] . 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:51:10 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:51:11 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-27 12:41:12 (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 | ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-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-27 12:51:13 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:51:14 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 344.79ms DONE
docker_lamp_1 | 2026-05-27 12:51:14 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:51:14 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 10.23ms DONE
docker_lamp_1 | 2026-05-27 12:51:14 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:51:14 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] 6.37ms DONE
docker_lamp_1 | 2026-05-27 12:51:14 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:51:14 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] 6.27ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-27 12:52:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:52:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:52:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:52:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:52:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:52:08 Running ['artisan' conference:monitor:count] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:52:10 Running ['artisan' mailbox:batch:create] ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:52:11 Running ['artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-05-27 12:36:00' --to='2026-05-27 12:52:00'] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-05-27 12:36:00' --to='2026-05-27 12: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 | 2026-05-27 12:52:12 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:52:12 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] 21.72ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-27 12:53:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:53:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:53:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:53:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:53:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:53:08 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 1.46ms 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-27 12:54:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:54:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:54:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:54:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:54:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:54:09 Running ['artisan' conference:monitor:count] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:54:10 Running ['artisan' activity:aircall:check-and-renew] 1s 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-27 12:54:12 Running ['artisan' track:retry-failed-downloads] 1s 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 | 2026-05-27 12:55:11 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:55:13 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:55:14 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:55:15 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:55:17 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:55:18 Running ['artisan' activity:purge-stale] ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:purge-stale > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:55:20 Running ['artisan' mailbox:text-relay:sync] Relayed 0 message(s).
docker_lamp_1 | .... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:55:22 Running ['artisan' conference:pre-meeting-notification] 3s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:55:25 Running ['artisan' conference:monitor:start] ... 3s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:55:28 Running ['artisan' conference:monitor:end] ..... 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:55:31 Running ['artisan' jiminny:fix-hubspot-tokens] . 9s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:55:40 Running ['artisan' conference:pre-meeting-reminder] in background 7.60ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-05-27 12:55:40 Running ['artisan' hubspot:journal-poll --start] in background 1.32ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-05-27 12:55:40 Running ['artisan' crm:bullhorn:ping --heartbeat] 0 social account(s) to be processed ...
docker_lamp_1 |
docker_lamp_1 | Done!
docker_lamp_1 | 🚀 Starting HubSpot journal polling service...
docker_lamp_1 | 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-05-27 12:56:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:56:04 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:56:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:56:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:56:08 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:56:10 Running ['artisan' conference:monitor:count] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:56:11 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-27 12:51:13 (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...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"docker_lamp_1 | 2026-05-27 12:39:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:39:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:39:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:39:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:39:08 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:39:10 Running ['artisan' activity:aircall:check-and-renew] 2s 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-27 12:39:12 Running ['artisan' track:retry-failed-downloads] 1s 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 | 2026-05-27 12:40:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:40:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:40:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:40:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:40:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:40:09 Running ['artisan' conference:monitor:count] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:40:10 Running ['artisan' activity:purge-stale] ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:purge-stale > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:40:11 Running ['artisan' mailbox:text-relay:sync] Relayed 0 message(s).\ndocker_lamp_1 | .... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:40:13 Running ['artisan' conference:pre-meeting-notification] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:40:15 Running ['artisan' conference:monitor:start] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:40:16 Running ['artisan' conference:monitor:end] ..... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:40:17 Running ['artisan' jiminny:fix-hubspot-tokens] . 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:40:20 Running ['artisan' conference:pre-meeting-reminder] in background 1.88ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-05-27 12:40:20 Running ['artisan' hubspot:journal-poll --start] in background 1.20ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-05-27 12:40:20 Running ['artisan' jiminny:transcription:retry-failed] No failed transcriptions found.\ndocker_lamp_1 | 🚀\u0000 Starting HubSpot journal polling service...\ndocker_lamp_1 | 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:transcription:retry-failed > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:40:22 Running ['artisan' crm:reset-governor] ......... 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:reset-governor > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:40:25 Running ['artisan' crm:bullhorn:ping --heartbeat] 0 social account(s) to be processed ...\ndocker_lamp_1 | \ndocker_lamp_1 | Done!\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/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-27 12:41:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:41:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:41:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:41:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:41:08 Running ['artisan' mailbox:batch:process --max-batches=15] 2s 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-27 12:41:10 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-27 12:36:12 (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 | ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-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-27 12:41:12 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-27 12:41:12 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 301.19ms DONE\ndocker_lamp_1 | 2026-05-27 12:41:12 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-27 12:41:12 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 16.63ms DONE\ndocker_lamp_1 | 2026-05-27 12:41:12 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-27 12:41:12 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ........ 7.90ms DONE\ndocker_lamp_1 | 2026-05-27 12:41:13 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-27 12:41:13 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ........ 7.16ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-27 12:42:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:42:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:42:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:42:05 Running ['artisan' mailbox:skip-lists:refresh] . 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:42:07 Running ['artisan' mailbox:batch:process --max-batches=15] 2s 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-27 12:42:10 Running ['artisan' conference:monitor:count] ... 3s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:42:13 Running ['artisan' mailbox:batch:create] ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/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-27 12:42:17 Jiminny\\Jobs\\Mailbox\\CreateBatches ............. RUNNING\ndocker_lamp_1 | 2026-05-27 12:42:17 Jiminny\\Jobs\\Mailbox\\CreateBatches ........ 70.74ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-27 12:43:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:43:04 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:43:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:43:07 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:43:08 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:43:10 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 2.83ms 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-27 12:43:10 Running ['artisan' calendar:sync --dateMode=daily] 2026-05-27 12:43:19 Jiminny\\Jobs\\Calendar\\SyncCalendarEvents ....... RUNNING\ndocker_lamp_1 | 2026-05-27 12:43:20 Jiminny\\Jobs\\Calendar\\SyncCalendarEvents ....... 1s DONE\ndocker_lamp_1 | 2026-05-27 12:43:22 Jiminny\\Jobs\\Calendar\\SyncCalendarEvents ....... RUNNING\ndocker_lamp_1 | 12s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' calendar:sync --dateMode=daily > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-27 12:43:22 Jiminny\\Jobs\\Calendar\\SyncCalendarEvents . 378.18ms DONE\ndocker_lamp_1 | 2026-05-27 12:43:22 Jiminny\\Jobs\\Calendar\\SyncCalendarEvents ....... RUNNING\ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-05-27 12:43:22 Jiminny\\Jobs\\Calendar\\SyncCalendarEvents .. 69.77ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-27 12:44:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:44:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:44:04 Running ['artisan' jiminny:monitor-social-accounts] 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:44:07 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:44:08 Running ['artisan' mailbox:batch:process --max-batches=15] 3s 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-27 12:44:12 Running ['artisan' conference:monitor:count] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:44:13 Running ['artisan' crm:sync-objects] 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-27 06:44: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-27 06:44: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-27 06:44:27 (delay: 14s)\ndocker_lamp_1 | ........... 1s 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-27 12:44:15 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-27 12:44:15 Jiminny\\Jobs\\Crm\\SyncObjects .............. 35.79ms DONE\ndocker_lamp_1 | 2026-05-27 12:44:17 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-27 12:44:17 Jiminny\\Jobs\\Crm\\SyncObjects .............. 31.09ms DONE\ndocker_lamp_1 | 2026-05-27 12:44:19 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-27 12:44:20 Jiminny\\Jobs\\Crm\\SyncObjects ................... 1s DONE\ndocker_lamp_1 | 2026-05-27 12:44:21 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-27 12:44:21 Jiminny\\Jobs\\Crm\\SyncObjects .............. 15.19ms DONE\ndocker_lamp_1 | 2026-05-27 12:44:23 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-27 12:44:25 Jiminny\\Jobs\\Crm\\SyncObjects ................... 1s DONE\ndocker_lamp_1 | 2026-05-27 12:44:25 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-27 12:44:25 Jiminny\\Jobs\\Crm\\SyncObjects .............. 53.92ms DONE\ndocker_lamp_1 | 2026-05-27 12:44:27 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-27 12:44:27 Jiminny\\Jobs\\Crm\\SyncObjects .............. 67.35ms DONE\ndocker_lamp_1 | 2026-05-27 12:44:29 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-27 12:44:37 Jiminny\\Jobs\\Crm\\SyncObjects ................... 7s DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-27 12:45:16 Running ['artisan' meeting-bot:schedule-bot] .. 11s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:45:28 Running ['artisan' dialers:monitor-activities] . 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:45:33 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-27 12:45:37 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:45:39 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:45:41 Running ['artisan' activity:purge-stale] ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:purge-stale > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:45:42 Running ['artisan' mailbox:text-relay:sync] Relayed 0 message(s).\ndocker_lamp_1 | .... 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:45:44 Running ['artisan' conference:pre-meeting-notification] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:45:46 Running ['artisan' conference:monitor:start] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:45:47 Running ['artisan' conference:monitor:end] ..... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:45:49 Running ['artisan' jiminny:fix-hubspot-tokens] . 3s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:45:52 Running ['artisan' conference:pre-meeting-reminder] in background 3.33ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-05-27 12:45:52 Running ['artisan' hubspot:journal-poll --start] in background 1.16ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-05-27 12:45:52 Running ['artisan' datadog:report:processing-sla-activities] 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' datadog:report:processing-sla-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:45:55 Running ['artisan' activity:sync --from='2026-05-27 12:29:00' --to='2026-05-27 12:45:00' --skipProviders='ringcentral' --skipProviders='avaya' --skipProviders='telus' --skipProviders='talkdesk'] 🚀\u0000 Starting HubSpot journal polling service...\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync --from='2026-05-27 12:29:00' --to='2026-05-27 12:45:00' --skipProviders='ringcentral' --skipProviders='avaya' --skipProviders='telus' --skipProviders='talkdesk' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:45:57 Running ['artisan' crm:bullhorn:ping --heartbeat] 2026-05-27 12:45:58 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | 2026-05-27 12:45:58 Jiminny\\Jobs\\Activity\\SyncActivity ........ 99.54ms DONE\ndocker_lamp_1 | 2026-05-27 12:45:58 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | 0 social account(s) to be processed ...\ndocker_lamp_1 | \ndocker_lamp_1 | Done!\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:45:59 Running ['artisan' nudges:send --silent] 2026-05-27 12:45:59 Jiminny\\Jobs\\Activity\\SyncActivity ....... 944.88ms DONE\ndocker_lamp_1 | 2026-05-27 12:45:59 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | 2026-05-27 12:46:00 Jiminny\\Jobs\\Activity\\SyncActivity ....... 936.60ms DONE\ndocker_lamp_1 | 2026-05-27 12:46:00 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' nudges:send --silent > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:46:00 Running ['artisan' jiminny:playlists:normalize-sort] 2026-05-27 12:46:01 Jiminny\\Jobs\\Activity\\SyncActivity ....... 872.92ms DONE\ndocker_lamp_1 | 2026-05-27 12:46:01 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:playlists:normalize-sort > '/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-27 12:46:02 Jiminny\\Jobs\\Activity\\SyncActivity ....... 889.12ms DONE\ndocker_lamp_1 | 2026-05-27 12:46:02 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | 2026-05-27 12:46:02 Jiminny\\Jobs\\Activity\\SyncActivity ....... 235.35ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-27 12:47:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:47:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:47:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:47:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:47:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:47:09 Running ['artisan' mailbox:batch:create] ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/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-27 12:47:11 Jiminny\\Jobs\\Mailbox\\CreateBatches ............. RUNNING\ndocker_lamp_1 | 2026-05-27 12:47:11 Jiminny\\Jobs\\Mailbox\\CreateBatches ........ 43.25ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-27 12:48:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:48:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:48:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:48:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:48:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:48:08 Running ['artisan' conference:monitor:count] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:48:10 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 1.20ms 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-27 12:48:10 Running ['artisan' crm:autolog-delayed] Dispatched autolog delayed jobs for all applicable teams: \ndocker_lamp_1 | ........ 1s 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\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-27 12:49:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:49:04 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:49:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:49:07 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:49:08 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/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-27 12:50:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:50:04 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:50:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:50:07 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:50:08 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:50:09 Running ['artisan' conference:monitor:count] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:50:11 Running ['artisan' activity:purge-stale] ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:purge-stale > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:50:12 Running ['artisan' mailbox:text-relay:sync] Relayed 0 message(s).\ndocker_lamp_1 | .... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:50:14 Running ['artisan' conference:pre-meeting-notification] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:50:15 Running ['artisan' conference:monitor:start] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:50:16 Running ['artisan' conference:monitor:end] ..... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:50:17 Running ['artisan' jiminny:fix-hubspot-tokens] . 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:50:20 Running ['artisan' conference:pre-meeting-reminder] in background 1.04ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-05-27 12:50:20 Running ['artisan' hubspot:journal-poll --start] in background 0.76ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-05-27 12:50:20 Running ['artisan' jiminny:transcription:retry-failed] No failed transcriptions found.\ndocker_lamp_1 | 🚀\u0000 Starting HubSpot journal polling service...\ndocker_lamp_1 | 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:transcription:retry-failed > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:50:22 Running ['artisan' crm:reset-governor] ......... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:reset-governor > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:50:24 Running ['artisan' crm:bullhorn:ping --heartbeat] 0 social account(s) to be processed ...\ndocker_lamp_1 | \ndocker_lamp_1 | Done!\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/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-27 12:51:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:51:04 Running ['artisan' dialers:monitor-activities] . 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:51:06 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:51:08 Running ['artisan' mailbox:skip-lists:refresh] . 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:51:10 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:51:11 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-27 12:41:12 (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 | ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-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-27 12:51:13 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-27 12:51:14 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 344.79ms DONE\ndocker_lamp_1 | 2026-05-27 12:51:14 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-27 12:51:14 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 10.23ms DONE\ndocker_lamp_1 | 2026-05-27 12:51:14 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-27 12:51:14 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ........ 6.37ms DONE\ndocker_lamp_1 | 2026-05-27 12:51:14 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-27 12:51:14 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ........ 6.27ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-27 12:52:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:52:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:52:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:52:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:52:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:52:08 Running ['artisan' conference:monitor:count] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:52:10 Running ['artisan' mailbox:batch:create] ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:52:11 Running ['artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-05-27 12:36:00' --to='2026-05-27 12:52:00'] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-05-27 12:36:00' --to='2026-05-27 12: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 | 2026-05-27 12:52:12 Jiminny\\Jobs\\Mailbox\\CreateBatches ............. RUNNING\ndocker_lamp_1 | 2026-05-27 12:52:12 Jiminny\\Jobs\\Mailbox\\CreateBatches ........ 21.72ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-27 12:53:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:53:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:53:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:53:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:53:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:53:08 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 1.46ms 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-27 12:54:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:54:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:54:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:54:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:54:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:54:09 Running ['artisan' conference:monitor:count] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:54:10 Running ['artisan' activity:aircall:check-and-renew] 1s 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-27 12:54:12 Running ['artisan' track:retry-failed-downloads] 1s 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 | 2026-05-27 12:55:11 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:55:13 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:55:14 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:55:15 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:55:17 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:55:18 Running ['artisan' activity:purge-stale] ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:purge-stale > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:55:20 Running ['artisan' mailbox:text-relay:sync] Relayed 0 message(s).\ndocker_lamp_1 | .... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:55:22 Running ['artisan' conference:pre-meeting-notification] 3s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:55:25 Running ['artisan' conference:monitor:start] ... 3s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:55:28 Running ['artisan' conference:monitor:end] ..... 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:55:31 Running ['artisan' jiminny:fix-hubspot-tokens] . 9s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:55:40 Running ['artisan' conference:pre-meeting-reminder] in background 7.60ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-05-27 12:55:40 Running ['artisan' hubspot:journal-poll --start] in background 1.32ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-05-27 12:55:40 Running ['artisan' crm:bullhorn:ping --heartbeat] 0 social account(s) to be processed ...\ndocker_lamp_1 | \ndocker_lamp_1 | Done!\ndocker_lamp_1 | 🚀\u0000 Starting HubSpot journal polling service...\ndocker_lamp_1 | 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/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-27 12:56:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:56:04 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:56:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:56:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:56:08 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:56:10 Running ['artisan' conference:monitor:count] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:56:11 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-27 12:51:13 (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 | ... 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:56:13 Running ['artisan' activity:notify-not-logged] 2026-05-27 12:56:13 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-27 12:56:15 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ 1s DONE\ndocker_lamp_1 | 2026-05-27 12:56:15 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-27 12:56:15 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 37.33ms DONE\ndocker_lamp_1 | 2026-05-27 12:56:15 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-27 12:56:15 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 58.23ms DONE\ndocker_lamp_1 | 2026-05-27 12:56:15 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-27 12:56:15 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 70.36ms DONE\ndocker_lamp_1 | . 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:56:15 Running ['artisan' activity:status-count] {\"canceled\":24,\"completed\":1,\"scheduled\":1}...... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:56:17 Running ['artisan' mailbox:sync] Queueing 2 inbox(es) for sync.\ndocker_lamp_1 | ............... 1s 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-27 12:56:20 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-05-27 12:56:20 Jiminny\\Jobs\\Mailbox\\SyncInbox ............ 96.21ms DONE\ndocker_lamp_1 | 2026-05-27 12:56:20 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-05-27 12:56:20 Jiminny\\Jobs\\Mailbox\\SyncInbox ............ 90.40ms DONE\n\n\nv View in Docker Desktop o View Config l View Logs w Enable Watch d Detach","depth":4,"on_screen":true,"value":"docker_lamp_1 | 2026-05-27 12:39:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:39:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:39:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:39:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:39:08 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:39:10 Running ['artisan' activity:aircall:check-and-renew] 2s 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-27 12:39:12 Running ['artisan' track:retry-failed-downloads] 1s 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 | 2026-05-27 12:40:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:40:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:40:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:40:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:40:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:40:09 Running ['artisan' conference:monitor:count] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:40:10 Running ['artisan' activity:purge-stale] ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:purge-stale > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:40:11 Running ['artisan' mailbox:text-relay:sync] Relayed 0 message(s).\ndocker_lamp_1 | .... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:40:13 Running ['artisan' conference:pre-meeting-notification] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:40:15 Running ['artisan' conference:monitor:start] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:40:16 Running ['artisan' conference:monitor:end] ..... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:40:17 Running ['artisan' jiminny:fix-hubspot-tokens] . 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:40:20 Running ['artisan' conference:pre-meeting-reminder] in background 1.88ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-05-27 12:40:20 Running ['artisan' hubspot:journal-poll --start] in background 1.20ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-05-27 12:40:20 Running ['artisan' jiminny:transcription:retry-failed] No failed transcriptions found.\ndocker_lamp_1 | 🚀\u0000 Starting HubSpot journal polling service...\ndocker_lamp_1 | 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:transcription:retry-failed > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:40:22 Running ['artisan' crm:reset-governor] ......... 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:reset-governor > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:40:25 Running ['artisan' crm:bullhorn:ping --heartbeat] 0 social account(s) to be processed ...\ndocker_lamp_1 | \ndocker_lamp_1 | Done!\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/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-27 12:41:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:41:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:41:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:41:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:41:08 Running ['artisan' mailbox:batch:process --max-batches=15] 2s 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-27 12:41:10 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-27 12:36:12 (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 | ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-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-27 12:41:12 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-27 12:41:12 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 301.19ms DONE\ndocker_lamp_1 | 2026-05-27 12:41:12 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-27 12:41:12 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 16.63ms DONE\ndocker_lamp_1 | 2026-05-27 12:41:12 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-27 12:41:12 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ........ 7.90ms DONE\ndocker_lamp_1 | 2026-05-27 12:41:13 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-27 12:41:13 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ........ 7.16ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-27 12:42:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:42:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:42:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:42:05 Running ['artisan' mailbox:skip-lists:refresh] . 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:42:07 Running ['artisan' mailbox:batch:process --max-batches=15] 2s 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-27 12:42:10 Running ['artisan' conference:monitor:count] ... 3s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:42:13 Running ['artisan' mailbox:batch:create] ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/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-27 12:42:17 Jiminny\\Jobs\\Mailbox\\CreateBatches ............. RUNNING\ndocker_lamp_1 | 2026-05-27 12:42:17 Jiminny\\Jobs\\Mailbox\\CreateBatches ........ 70.74ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-27 12:43:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:43:04 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:43:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:43:07 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:43:08 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:43:10 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 2.83ms 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-27 12:43:10 Running ['artisan' calendar:sync --dateMode=daily] 2026-05-27 12:43:19 Jiminny\\Jobs\\Calendar\\SyncCalendarEvents ....... RUNNING\ndocker_lamp_1 | 2026-05-27 12:43:20 Jiminny\\Jobs\\Calendar\\SyncCalendarEvents ....... 1s DONE\ndocker_lamp_1 | 2026-05-27 12:43:22 Jiminny\\Jobs\\Calendar\\SyncCalendarEvents ....... RUNNING\ndocker_lamp_1 | 12s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' calendar:sync --dateMode=daily > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-27 12:43:22 Jiminny\\Jobs\\Calendar\\SyncCalendarEvents . 378.18ms DONE\ndocker_lamp_1 | 2026-05-27 12:43:22 Jiminny\\Jobs\\Calendar\\SyncCalendarEvents ....... RUNNING\ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-05-27 12:43:22 Jiminny\\Jobs\\Calendar\\SyncCalendarEvents .. 69.77ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-27 12:44:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:44:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:44:04 Running ['artisan' jiminny:monitor-social-accounts] 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:44:07 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:44:08 Running ['artisan' mailbox:batch:process --max-batches=15] 3s 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-27 12:44:12 Running ['artisan' conference:monitor:count] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:44:13 Running ['artisan' crm:sync-objects] 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-27 06:44: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-27 06:44: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-27 06:44:27 (delay: 14s)\ndocker_lamp_1 | ........... 1s 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-27 12:44:15 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-27 12:44:15 Jiminny\\Jobs\\Crm\\SyncObjects .............. 35.79ms DONE\ndocker_lamp_1 | 2026-05-27 12:44:17 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-27 12:44:17 Jiminny\\Jobs\\Crm\\SyncObjects .............. 31.09ms DONE\ndocker_lamp_1 | 2026-05-27 12:44:19 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-27 12:44:20 Jiminny\\Jobs\\Crm\\SyncObjects ................... 1s DONE\ndocker_lamp_1 | 2026-05-27 12:44:21 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-27 12:44:21 Jiminny\\Jobs\\Crm\\SyncObjects .............. 15.19ms DONE\ndocker_lamp_1 | 2026-05-27 12:44:23 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-27 12:44:25 Jiminny\\Jobs\\Crm\\SyncObjects ................... 1s DONE\ndocker_lamp_1 | 2026-05-27 12:44:25 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-27 12:44:25 Jiminny\\Jobs\\Crm\\SyncObjects .............. 53.92ms DONE\ndocker_lamp_1 | 2026-05-27 12:44:27 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-27 12:44:27 Jiminny\\Jobs\\Crm\\SyncObjects .............. 67.35ms DONE\ndocker_lamp_1 | 2026-05-27 12:44:29 Jiminny\\Jobs\\Crm\\SyncObjects ................... RUNNING\ndocker_lamp_1 | 2026-05-27 12:44:37 Jiminny\\Jobs\\Crm\\SyncObjects ................... 7s DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-27 12:45:16 Running ['artisan' meeting-bot:schedule-bot] .. 11s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:45:28 Running ['artisan' dialers:monitor-activities] . 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:45:33 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-27 12:45:37 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:45:39 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:45:41 Running ['artisan' activity:purge-stale] ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:purge-stale > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:45:42 Running ['artisan' mailbox:text-relay:sync] Relayed 0 message(s).\ndocker_lamp_1 | .... 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:45:44 Running ['artisan' conference:pre-meeting-notification] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:45:46 Running ['artisan' conference:monitor:start] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:45:47 Running ['artisan' conference:monitor:end] ..... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:45:49 Running ['artisan' jiminny:fix-hubspot-tokens] . 3s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:45:52 Running ['artisan' conference:pre-meeting-reminder] in background 3.33ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-05-27 12:45:52 Running ['artisan' hubspot:journal-poll --start] in background 1.16ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-05-27 12:45:52 Running ['artisan' datadog:report:processing-sla-activities] 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' datadog:report:processing-sla-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:45:55 Running ['artisan' activity:sync --from='2026-05-27 12:29:00' --to='2026-05-27 12:45:00' --skipProviders='ringcentral' --skipProviders='avaya' --skipProviders='telus' --skipProviders='talkdesk'] 🚀\u0000 Starting HubSpot journal polling service...\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync --from='2026-05-27 12:29:00' --to='2026-05-27 12:45:00' --skipProviders='ringcentral' --skipProviders='avaya' --skipProviders='telus' --skipProviders='talkdesk' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:45:57 Running ['artisan' crm:bullhorn:ping --heartbeat] 2026-05-27 12:45:58 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | 2026-05-27 12:45:58 Jiminny\\Jobs\\Activity\\SyncActivity ........ 99.54ms DONE\ndocker_lamp_1 | 2026-05-27 12:45:58 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | 0 social account(s) to be processed ...\ndocker_lamp_1 | \ndocker_lamp_1 | Done!\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:45:59 Running ['artisan' nudges:send --silent] 2026-05-27 12:45:59 Jiminny\\Jobs\\Activity\\SyncActivity ....... 944.88ms DONE\ndocker_lamp_1 | 2026-05-27 12:45:59 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | 2026-05-27 12:46:00 Jiminny\\Jobs\\Activity\\SyncActivity ....... 936.60ms DONE\ndocker_lamp_1 | 2026-05-27 12:46:00 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' nudges:send --silent > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:46:00 Running ['artisan' jiminny:playlists:normalize-sort] 2026-05-27 12:46:01 Jiminny\\Jobs\\Activity\\SyncActivity ....... 872.92ms DONE\ndocker_lamp_1 | 2026-05-27 12:46:01 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:playlists:normalize-sort > '/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-27 12:46:02 Jiminny\\Jobs\\Activity\\SyncActivity ....... 889.12ms DONE\ndocker_lamp_1 | 2026-05-27 12:46:02 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | 2026-05-27 12:46:02 Jiminny\\Jobs\\Activity\\SyncActivity ....... 235.35ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-27 12:47:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:47:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:47:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:47:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:47:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:47:09 Running ['artisan' mailbox:batch:create] ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/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-27 12:47:11 Jiminny\\Jobs\\Mailbox\\CreateBatches ............. RUNNING\ndocker_lamp_1 | 2026-05-27 12:47:11 Jiminny\\Jobs\\Mailbox\\CreateBatches ........ 43.25ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-27 12:48:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:48:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:48:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:48:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:48:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:48:08 Running ['artisan' conference:monitor:count] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:48:10 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 1.20ms 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-27 12:48:10 Running ['artisan' crm:autolog-delayed] Dispatched autolog delayed jobs for all applicable teams: \ndocker_lamp_1 | ........ 1s 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\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-27 12:49:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:49:04 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:49:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:49:07 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:49:08 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/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-27 12:50:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:50:04 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:50:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:50:07 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:50:08 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:50:09 Running ['artisan' conference:monitor:count] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:50:11 Running ['artisan' activity:purge-stale] ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:purge-stale > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:50:12 Running ['artisan' mailbox:text-relay:sync] Relayed 0 message(s).\ndocker_lamp_1 | .... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:50:14 Running ['artisan' conference:pre-meeting-notification] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:50:15 Running ['artisan' conference:monitor:start] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:50:16 Running ['artisan' conference:monitor:end] ..... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:50:17 Running ['artisan' jiminny:fix-hubspot-tokens] . 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:50:20 Running ['artisan' conference:pre-meeting-reminder] in background 1.04ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-05-27 12:50:20 Running ['artisan' hubspot:journal-poll --start] in background 0.76ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-05-27 12:50:20 Running ['artisan' jiminny:transcription:retry-failed] No failed transcriptions found.\ndocker_lamp_1 | 🚀\u0000 Starting HubSpot journal polling service...\ndocker_lamp_1 | 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:transcription:retry-failed > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:50:22 Running ['artisan' crm:reset-governor] ......... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:reset-governor > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:50:24 Running ['artisan' crm:bullhorn:ping --heartbeat] 0 social account(s) to be processed ...\ndocker_lamp_1 | \ndocker_lamp_1 | Done!\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/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-27 12:51:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:51:04 Running ['artisan' dialers:monitor-activities] . 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:51:06 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:51:08 Running ['artisan' mailbox:skip-lists:refresh] . 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:51:10 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:51:11 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-27 12:41:12 (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 | ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-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-27 12:51:13 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-27 12:51:14 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 344.79ms DONE\ndocker_lamp_1 | 2026-05-27 12:51:14 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-27 12:51:14 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 10.23ms DONE\ndocker_lamp_1 | 2026-05-27 12:51:14 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-27 12:51:14 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ........ 6.37ms DONE\ndocker_lamp_1 | 2026-05-27 12:51:14 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-27 12:51:14 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ........ 6.27ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-27 12:52:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:52:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:52:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:52:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:52:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:52:08 Running ['artisan' conference:monitor:count] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:52:10 Running ['artisan' mailbox:batch:create] ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:52:11 Running ['artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-05-27 12:36:00' --to='2026-05-27 12:52:00'] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-05-27 12:36:00' --to='2026-05-27 12: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 | 2026-05-27 12:52:12 Jiminny\\Jobs\\Mailbox\\CreateBatches ............. RUNNING\ndocker_lamp_1 | 2026-05-27 12:52:12 Jiminny\\Jobs\\Mailbox\\CreateBatches ........ 21.72ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-05-27 12:53:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:53:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:53:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:53:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:53:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:53:08 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 1.46ms 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-27 12:54:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:54:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:54:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:54:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:54:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:54:09 Running ['artisan' conference:monitor:count] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:54:10 Running ['artisan' activity:aircall:check-and-renew] 1s 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-27 12:54:12 Running ['artisan' track:retry-failed-downloads] 1s 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 | 2026-05-27 12:55:11 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:55:13 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:55:14 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:55:15 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:55:17 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:55:18 Running ['artisan' activity:purge-stale] ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:purge-stale > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:55:20 Running ['artisan' mailbox:text-relay:sync] Relayed 0 message(s).\ndocker_lamp_1 | .... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:55:22 Running ['artisan' conference:pre-meeting-notification] 3s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:55:25 Running ['artisan' conference:monitor:start] ... 3s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:55:28 Running ['artisan' conference:monitor:end] ..... 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:55:31 Running ['artisan' jiminny:fix-hubspot-tokens] . 9s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:55:40 Running ['artisan' conference:pre-meeting-reminder] in background 7.60ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-05-27 12:55:40 Running ['artisan' hubspot:journal-poll --start] in background 1.32ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-05-27 12:55:40 Running ['artisan' crm:bullhorn:ping --heartbeat] 0 social account(s) to be processed ...\ndocker_lamp_1 | \ndocker_lamp_1 | Done!\ndocker_lamp_1 | 🚀\u0000 Starting HubSpot journal polling service...\ndocker_lamp_1 | 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/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-27 12:56:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:56:04 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:56:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:56:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:56:08 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:56:10 Running ['artisan' conference:monitor:count] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:56:11 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-27 12:51:13 (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 | ... 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:56:13 Running ['artisan' activity:notify-not-logged] 2026-05-27 12:56:13 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-27 12:56:15 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ 1s DONE\ndocker_lamp_1 | 2026-05-27 12:56:15 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-27 12:56:15 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 37.33ms DONE\ndocker_lamp_1 | 2026-05-27 12:56:15 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-27 12:56:15 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 58.23ms DONE\ndocker_lamp_1 | 2026-05-27 12:56:15 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-05-27 12:56:15 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 70.36ms DONE\ndocker_lamp_1 | . 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:56:15 Running ['artisan' activity:status-count] {\"canceled\":24,\"completed\":1,\"scheduled\":1}...... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-05-27 12:56:17 Running ['artisan' mailbox:sync] Queueing 2 inbox(es) for sync.\ndocker_lamp_1 | ............... 1s 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-27 12:56:20 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-05-27 12:56:20 Jiminny\\Jobs\\Mailbox\\SyncInbox ............ 96.21ms DONE\ndocker_lamp_1 | 2026-05-27 12:56:20 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-05-27 12:56:20 Jiminny\\Jobs\\Mailbox\\SyncInbox ............ 90.40ms DONE\n\n\nv View in Docker Desktop o View Config l View Logs w Enable Watch d Detach","is_focused":true},{"role":"AXButton","text":"Menu","depth":3,"bounds":{"left":0.5069444,"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.48472223,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Tue May 26 11:57:09 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 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 Tue May 26 12:25:04 UTC 2026\n\n System load: 0.0 Processes: 138\n Usage of /: 58.1% of 7.57GB Users logged in: 4\n Memory usage: 37% 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\n47 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: Tue May 26 06:32:25 2026 from 212.5.153.87\nlukas@jiminny-prod-bastion:~$ client_loop: send disconnect: Broken pipe\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 Wed May 27 06:47:28 UTC 2026\n\n System load: 0.0 Processes: 119\n Usage of /: 58.1% of 7.57GB Users logged in: 2\n Memory usage: 33% 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\n47 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: Tue May 26 12:25:05 2026 from 212.5.153.87\nlukas@jiminny-prod-bastion:~$","depth":5,"on_screen":true,"value":"Last login: Tue May 26 11:57:09 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ 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 Tue May 26 12:25:04 UTC 2026\n\n System load: 0.0 Processes: 138\n Usage of /: 58.1% of 7.57GB Users logged in: 4\n Memory usage: 37% 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\n47 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: Tue May 26 06:32:25 2026 from 212.5.153.87\nlukas@jiminny-prod-bastion:~$ client_loop: send disconnect: Broken pipe\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 Wed May 27 06:47:28 UTC 2026\n\n System load: 0.0 Processes: 119\n Usage of /: 58.1% of 7.57GB Users logged in: 2\n Memory usage: 33% 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\n47 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: Tue May 26 12:25:05 2026 from 212.5.153.87\nlukas@jiminny-prod-bastion:~$","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98541665,"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.54097223,"top":0.09,"width":0.4409722,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Tue May 26 11:57:09 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ eu\n(lukas@jiminny-eu-bastion) Verification code: \nWelcome to Ubuntu 22.04.4 LTS (GNU/Linux 6.8.0-1047-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 Tue May 26 12:25:10 UTC 2026\n\n System load: 0.0 Processes: 146\n Usage of /: 57.8% of 7.57GB Users logged in: 6\n Memory usage: 23% IPv4 address for eth0: 10.20.163.228\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\n96 updates can be applied immediately.\n5 of these updates are standard security updates.\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: Tue May 26 06:32:33 2026 from 212.5.153.87\nlukas@jiminny-eu-bastion:~$ client_loop: send disconnect: Broken pipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"on_screen":true,"value":"Last login: Tue May 26 11:57:09 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ eu\n(lukas@jiminny-eu-bastion) Verification code: \nWelcome to Ubuntu 22.04.4 LTS (GNU/Linux 6.8.0-1047-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 Tue May 26 12:25:10 UTC 2026\n\n System load: 0.0 Processes: 146\n Usage of /: 57.8% of 7.57GB Users logged in: 6\n Memory usage: 23% IPv4 address for eth0: 10.20.163.228\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\n96 updates can be applied immediately.\n5 of these updates are standard security updates.\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: Tue May 26 06:32:33 2026 from 212.5.153.87\nlukas@jiminny-eu-bastion:~$ client_loop: send disconnect: Broken pipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98541665,"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.54097223,"top":0.24,"width":0.4409722,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Tue May 26 11:57:09 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users\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 Wed May 27 08:24:50 UTC 2026\n\n System load: 0.0 Processes: 113\n Usage of /: 57.4% of 7.57GB Users logged in: 1\n Memory usage: 28% 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\n91 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: Mon May 18 06:46:53 2026 from 212.5.153.87\nlukas@jiminny-stage-bastion:~$","depth":5,"on_screen":true,"value":"Last login: Tue May 26 11:57:09 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users\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 Wed May 27 08:24:50 UTC 2026\n\n System load: 0.0 Processes: 113\n Usage of /: 57.4% of 7.57GB Users logged in: 1\n Memory usage: 28% 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\n91 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: Mon May 18 06:46:53 2026 from 212.5.153.87\nlukas@jiminny-stage-bastion:~$","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98541665,"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.54097223,"top":0.41,"width":0.4409722,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Tue May 26 11:58:03 on ttys001\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Use\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5222222,"top":0.48222223,"width":0.47777778,"height":0.22222222},"on_screen":true,"lines":[{"char_start":0,"char_count":43,"bounds":{"left":0.52569443,"top":0.48222223,"width":0.23888889,"height":0.02}},{"char_start":43,"char_count":1,"bounds":{"left":0.52569443,"top":0.50222224,"width":0.0055555557,"height":0.02}},{"char_start":44,"char_count":75,"bounds":{"left":0.52569443,"top":0.5222222,"width":0.41666666,"height":0.02}},{"char_start":119,"char_count":1,"bounds":{"left":0.52569443,"top":0.5422222,"width":0.0055555557,"height":0.02}},{"char_start":120,"char_count":52,"bounds":{"left":0.52569443,"top":0.56222224,"width":0.2888889,"height":0.02}},{"char_start":172,"char_count":44,"bounds":{"left":0.52569443,"top":0.5822222,"width":0.24444444,"height":0.02}}],"value":"Last login: Tue May 26 11:58:03 on ttys001\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Use\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98541665,"top":0.5594444,"width":0.010416667,"height":0.016666668},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥5 QA (-zsh)","depth":4,"bounds":{"left":0.54097223,"top":0.56,"width":0.4409722,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Tue May 26 11:58:03 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 /Use\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5222222,"top":0.63222224,"width":0.47777778,"height":0.22222222},"on_screen":true,"lines":[{"char_start":0,"char_count":43,"bounds":{"left":0.52569443,"top":0.63222224,"width":0.23888889,"height":0.02}},{"char_start":43,"char_count":1,"bounds":{"left":0.52569443,"top":0.6522222,"width":0.0055555557,"height":0.02}},{"char_start":44,"char_count":75,"bounds":{"left":0.52569443,"top":0.6722222,"width":0.41666666,"height":0.02}},{"char_start":119,"char_count":1,"bounds":{"left":0.52569443,"top":0.69222224,"width":0.0055555557,"height":0.02}},{"char_start":120,"char_count":52,"bounds":{"left":0.52569443,"top":0.7122222,"width":0.2888889,"height":0.02}},{"char_start":172,"char_count":44,"bounds":{"left":0.52569443,"top":0.7322222,"width":0.24444444,"height":0.02}}],"value":"Last login: Tue May 26 11:58:03 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 /Use\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98541665,"top":0.70944446,"width":0.010416667,"height":0.016666668},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥6 FE (-zsh)","depth":4,"bounds":{"left":0.54097223,"top":0.71,"width":0.4409722,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Tue May 26 11:58:03 on ttys005\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5222222,"top":0.7822222,"width":0.47777778,"height":0.21777777},"on_screen":true,"lines":[{"char_start":0,"char_count":43,"bounds":{"left":0.52569443,"top":0.7822222,"width":0.23888889,"height":0.02}},{"char_start":43,"char_count":1,"bounds":{"left":0.52569443,"top":0.80222225,"width":0.0055555557,"height":0.02}},{"char_start":44,"char_count":75,"bounds":{"left":0.52569443,"top":0.82222223,"width":0.41666666,"height":0.02}},{"char_start":119,"char_count":1,"bounds":{"left":0.52569443,"top":0.8422222,"width":0.0055555557,"height":0.02}},{"char_start":120,"char_count":75,"bounds":{"left":0.52569443,"top":0.8622222,"width":0.41666666,"height":0.02}},{"char_start":195,"char_count":44,"bounds":{"left":0.52569443,"top":0.88222224,"width":0.24444444,"height":0.02}}],"value":"Last login: Tue May 26 11:58:03 on ttys005\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98541665,"top":0.85944444,"width":0.010416667,"height":0.016666668},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥7 EXT (-zsh)","depth":4,"bounds":{"left":0.54097223,"top":0.86,"width":0.4409722,"height":0.015555556},"on_screen":true,"role_description":"text"},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (docker)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"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.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"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.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"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.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-129-190:~ (nc)","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"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.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ec2-user@ip-10-30-140-255:~ (-zsh)","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"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.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"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.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"on_screen":true,"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"DOCKER (docker-compose)","depth":1,"bounds":{"left":0.43611112,"top":0.033333335,"width":0.12708333,"height":0.017777778},"on_screen":true,"role_description":"text"}]...
|
7776649838712531717
|
1572292553099821920
|
click
|
accessibility
|
NULL
|
docker_lamp_1 | 2026-05-27 12:39:02 Running [ docker_lamp_1 | 2026-05-27 12:39:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:39:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:39:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:39:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:39:08 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:39:10 Running ['artisan' activity:aircall:check-and-renew] 2s 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-27 12:39:12 Running ['artisan' track:retry-failed-downloads] 1s 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 | 2026-05-27 12:40:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:40:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:40:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:40:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:40:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:40:09 Running ['artisan' conference:monitor:count] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:40:10 Running ['artisan' activity:purge-stale] ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:purge-stale > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:40:11 Running ['artisan' mailbox:text-relay:sync] Relayed 0 message(s).
docker_lamp_1 | .... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:40:13 Running ['artisan' conference:pre-meeting-notification] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:40:15 Running ['artisan' conference:monitor:start] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:40:16 Running ['artisan' conference:monitor:end] ..... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:40:17 Running ['artisan' jiminny:fix-hubspot-tokens] . 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:40:20 Running ['artisan' conference:pre-meeting-reminder] in background 1.88ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-05-27 12:40:20 Running ['artisan' hubspot:journal-poll --start] in background 1.20ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-05-27 12:40:20 Running ['artisan' jiminny:transcription:retry-failed] No failed transcriptions found.
docker_lamp_1 | 🚀 Starting HubSpot journal polling service...
docker_lamp_1 | 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:transcription:retry-failed > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:40:22 Running ['artisan' crm:reset-governor] [PASSWORD_DOTS] 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:reset-governor > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:40:25 Running ['artisan' crm:bullhorn:ping --heartbeat] 0 social account(s) to be processed ...
docker_lamp_1 |
docker_lamp_1 | Done!
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-05-27 12:41:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:41:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:41:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:41:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:41:08 Running ['artisan' mailbox:batch:process --max-batches=15] 2s 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-27 12:41:10 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-27 12:36:12 (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 | ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-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-27 12:41:12 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:41:12 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 301.19ms DONE
docker_lamp_1 | 2026-05-27 12:41:12 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:41:12 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 16.63ms DONE
docker_lamp_1 | 2026-05-27 12:41:12 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:41:12 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] 7.90ms DONE
docker_lamp_1 | 2026-05-27 12:41:13 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:41:13 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] 7.16ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-27 12:42:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:42:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:42:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:42:05 Running ['artisan' mailbox:skip-lists:refresh] . 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:42:07 Running ['artisan' mailbox:batch:process --max-batches=15] 2s 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-27 12:42:10 Running ['artisan' conference:monitor:count] ... 3s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:42:13 Running ['artisan' mailbox:batch:create] ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/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-27 12:42:17 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:42:17 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] 70.74ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-27 12:43:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:43:04 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:43:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:43:07 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:43:08 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:43:10 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 2.83ms 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-27 12:43:10 Running ['artisan' calendar:sync --dateMode=daily] 2026-05-27 12:43:19 Jiminny\Jobs\Calendar\SyncCalendarEvents ....... RUNNING
docker_lamp_1 | 2026-05-27 12:43:20 Jiminny\Jobs\Calendar\SyncCalendarEvents ....... 1s DONE
docker_lamp_1 | 2026-05-27 12:43:22 Jiminny\Jobs\Calendar\SyncCalendarEvents ....... RUNNING
docker_lamp_1 | 12s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' calendar:sync --dateMode=daily > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | 2026-05-27 12:43:22 Jiminny\Jobs\Calendar\SyncCalendarEvents . 378.18ms DONE
docker_lamp_1 | 2026-05-27 12:43:22 Jiminny\Jobs\Calendar\SyncCalendarEvents ....... RUNNING
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-05-27 12:43:22 Jiminny\Jobs\Calendar\SyncCalendarEvents .. 69.77ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-27 12:44:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:44:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:44:04 Running ['artisan' jiminny:monitor-social-accounts] 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:44:07 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:44:08 Running ['artisan' mailbox:batch:process --max-batches=15] 3s 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-27 12:44:12 Running ['artisan' conference:monitor:count] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:44:13 Running ['artisan' crm:sync-objects] 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-27 06:44: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-27 06:44: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-27 06:44:27 (delay: 14s)
docker_lamp_1 | [PASSWORD_DOTS] 1s 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-27 12:44:15 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:44:15 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 35.79ms DONE
docker_lamp_1 | 2026-05-27 12:44:17 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:44:17 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 31.09ms DONE
docker_lamp_1 | 2026-05-27 12:44:19 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:44:20 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 1s DONE
docker_lamp_1 | 2026-05-27 12:44:21 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:44:21 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 15.19ms DONE
docker_lamp_1 | 2026-05-27 12:44:23 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:44:25 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 1s DONE
docker_lamp_1 | 2026-05-27 12:44:25 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:44:25 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 53.92ms DONE
docker_lamp_1 | 2026-05-27 12:44:27 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:44:27 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 67.35ms DONE
docker_lamp_1 | 2026-05-27 12:44:29 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:44:37 Jiminny\Jobs\Crm\SyncObjects [PASSWORD_DOTS] 7s DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-27 12:45:16 Running ['artisan' meeting-bot:schedule-bot] .. 11s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:45:28 Running ['artisan' dialers:monitor-activities] . 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:45:33 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-27 12:45:37 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:45:39 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:45:41 Running ['artisan' activity:purge-stale] ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:purge-stale > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:45:42 Running ['artisan' mailbox:text-relay:sync] Relayed 0 message(s).
docker_lamp_1 | .... 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:45:44 Running ['artisan' conference:pre-meeting-notification] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:45:46 Running ['artisan' conference:monitor:start] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:45:47 Running ['artisan' conference:monitor:end] ..... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:45:49 Running ['artisan' jiminny:fix-hubspot-tokens] . 3s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:45:52 Running ['artisan' conference:pre-meeting-reminder] in background 3.33ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-05-27 12:45:52 Running ['artisan' hubspot:journal-poll --start] in background 1.16ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-05-27 12:45:52 Running ['artisan' datadog:report:processing-sla-activities] 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' datadog:report:processing-sla-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:45:55 Running ['artisan' activity:sync --from='2026-05-27 12:29:00' --to='2026-05-27 12:45:00' --skipProviders='ringcentral' --skipProviders='avaya' --skipProviders='telus' --skipProviders='talkdesk'] 🚀 Starting HubSpot journal polling service...
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync --from='2026-05-27 12:29:00' --to='2026-05-27 12:45:00' --skipProviders='ringcentral' --skipProviders='avaya' --skipProviders='telus' --skipProviders='talkdesk' > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:45:57 Running ['artisan' crm:bullhorn:ping --heartbeat] 2026-05-27 12:45:58 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:45:58 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] 99.54ms DONE
docker_lamp_1 | 2026-05-27 12:45:58 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 0 social account(s) to be processed ...
docker_lamp_1 |
docker_lamp_1 | Done!
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:45:59 Running ['artisan' nudges:send --silent] 2026-05-27 12:45:59 Jiminny\Jobs\Activity\SyncActivity ....... 944.88ms DONE
docker_lamp_1 | 2026-05-27 12:45:59 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:46:00 Jiminny\Jobs\Activity\SyncActivity ....... 936.60ms DONE
docker_lamp_1 | 2026-05-27 12:46:00 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' nudges:send --silent > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:46:00 Running ['artisan' jiminny:playlists:normalize-sort] 2026-05-27 12:46:01 Jiminny\Jobs\Activity\SyncActivity ....... 872.92ms DONE
docker_lamp_1 | 2026-05-27 12:46:01 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:playlists:normalize-sort > '/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-27 12:46:02 Jiminny\Jobs\Activity\SyncActivity ....... 889.12ms DONE
docker_lamp_1 | 2026-05-27 12:46:02 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:46:02 Jiminny\Jobs\Activity\SyncActivity ....... 235.35ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-27 12:47:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:47:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:47:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:47:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:47:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:47:09 Running ['artisan' mailbox:batch:create] ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/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-27 12:47:11 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:47:11 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] 43.25ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-27 12:48:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:48:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:48:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:48:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:48:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:48:08 Running ['artisan' conference:monitor:count] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:48:10 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 1.20ms 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-27 12:48:10 Running ['artisan' crm:autolog-delayed] Dispatched autolog delayed jobs for all applicable teams:
docker_lamp_1 | [PASSWORD_DOTS] 1s 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
docker_lamp_1 |
docker_lamp_1 | 2026-05-27 12:49:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:49:04 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:49:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:49:07 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:49:08 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/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-27 12:50:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:50:04 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:50:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:50:07 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:50:08 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:50:09 Running ['artisan' conference:monitor:count] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:50:11 Running ['artisan' activity:purge-stale] ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:purge-stale > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:50:12 Running ['artisan' mailbox:text-relay:sync] Relayed 0 message(s).
docker_lamp_1 | .... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:50:14 Running ['artisan' conference:pre-meeting-notification] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:50:15 Running ['artisan' conference:monitor:start] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:50:16 Running ['artisan' conference:monitor:end] ..... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:50:17 Running ['artisan' jiminny:fix-hubspot-tokens] . 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:50:20 Running ['artisan' conference:pre-meeting-reminder] in background 1.04ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-05-27 12:50:20 Running ['artisan' hubspot:journal-poll --start] in background 0.76ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-05-27 12:50:20 Running ['artisan' jiminny:transcription:retry-failed] No failed transcriptions found.
docker_lamp_1 | 🚀 Starting HubSpot journal polling service...
docker_lamp_1 | 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:transcription:retry-failed > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:50:22 Running ['artisan' crm:reset-governor] [PASSWORD_DOTS] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:reset-governor > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:50:24 Running ['artisan' crm:bullhorn:ping --heartbeat] 0 social account(s) to be processed ...
docker_lamp_1 |
docker_lamp_1 | Done!
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-05-27 12:51:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:51:04 Running ['artisan' dialers:monitor-activities] . 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:51:06 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:51:08 Running ['artisan' mailbox:skip-lists:refresh] . 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:51:10 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:51:11 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-27 12:41:12 (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 | ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-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-27 12:51:13 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:51:14 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 344.79ms DONE
docker_lamp_1 | 2026-05-27 12:51:14 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:51:14 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 10.23ms DONE
docker_lamp_1 | 2026-05-27 12:51:14 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:51:14 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] 6.37ms DONE
docker_lamp_1 | 2026-05-27 12:51:14 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:51:14 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] 6.27ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-27 12:52:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:52:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:52:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:52:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:52:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:52:08 Running ['artisan' conference:monitor:count] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:52:10 Running ['artisan' mailbox:batch:create] ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:52:11 Running ['artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-05-27 12:36:00' --to='2026-05-27 12:52:00'] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-05-27 12:36:00' --to='2026-05-27 12: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 | 2026-05-27 12:52:12 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-05-27 12:52:12 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] 21.72ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-05-27 12:53:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:53:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:53:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:53:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:53:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:53:08 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 1.46ms 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-27 12:54:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:54:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:54:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:54:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:54:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:54:09 Running ['artisan' conference:monitor:count] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:54:10 Running ['artisan' activity:aircall:check-and-renew] 1s 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-27 12:54:12 Running ['artisan' track:retry-failed-downloads] 1s 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 | 2026-05-27 12:55:11 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:55:13 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:55:14 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:55:15 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:55:17 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:55:18 Running ['artisan' activity:purge-stale] ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:purge-stale > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:55:20 Running ['artisan' mailbox:text-relay:sync] Relayed 0 message(s).
docker_lamp_1 | .... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:55:22 Running ['artisan' conference:pre-meeting-notification] 3s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:55:25 Running ['artisan' conference:monitor:start] ... 3s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:55:28 Running ['artisan' conference:monitor:end] ..... 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:55:31 Running ['artisan' jiminny:fix-hubspot-tokens] . 9s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:55:40 Running ['artisan' conference:pre-meeting-reminder] in background 7.60ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-05-27 12:55:40 Running ['artisan' hubspot:journal-poll --start] in background 1.32ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-05-27 12:55:40 Running ['artisan' crm:bullhorn:ping --heartbeat] 0 social account(s) to be processed ...
docker_lamp_1 |
docker_lamp_1 | Done!
docker_lamp_1 | 🚀 Starting HubSpot journal polling service...
docker_lamp_1 | 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-05-27 12:56:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:56:04 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:56:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:56:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:56:08 Running ['artisan' mailbox:batch:process --max-batches=15] 1s 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-27 12:56:10 Running ['artisan' conference:monitor:count] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-05-27 12:56:11 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-05-27 12:51:13 (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...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
78728
|
2764
|
30
|
2026-05-27T12:56:38.634444+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886598634_m2.jpg...
|
iTerm2
|
DOCKER (docker-compose)
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
rnpstomViewNeWENNCCoocKetucioTOOI-WindowFV faVsco. rnpstomViewNeWENNCCoocKetucioTOOI-WindowFV faVsco.|s ~$ JY-20915-fix-missing-header-text-reProinet v© SyncMailbox.phppho l0005.ongpheo matl.criyphe maxio.php"medd"sueamine.oneHwowercalonephp queue.phpnho salestorce.onosamconesecure-neddcis.oiwpservices.ohgppslack.ohephptimezones.ohgphp view.ohrphp webhook-server.ohg> En contrit.→darabasrontcent>E3 langTextRelayServiceTest.php3.env.productionclass TextRelayServiceouoere Tuncczon syne diidnode modtles hhrary toon→tnanstant mualiid> @ resourcesv hroutesphe api.phpmockhrhts300%L2•Wed 27 May 15:56:38+0.SunCechonntcustom channeowntol nessace.fsxory"P.p Eull oointrmessadetstory.teum: true)36 22 (01»id;ment (Sservice, Snailbox, Smessageld, SexpectedAlias, SexpectedHost)) (column: "enail provider id'. Smessageld)->firstO:weatecnphe api_v2.phpne concale nbophe customer_api.phpMoamsioo0o.oneMo haalth obomuoro celcoweo.onMaweb cnopp weonook.one> scriptev(ln storage> O apo>en debugbat> &a frameworkvMloascitianore0 audio wav= custom logBchounit.xolFttieгgeg9898&8&SеKerwrhuworhbssmessageidSTATUS_PROCESSINGnoeld SrelavedtextQUEUE ENAILSruicel Successfully disnatched nessace!. ""eytesdsync completed', Olaravel.log x SF (iminny@localhost)HS Jocal (jiminny@alocalhost) console (PROD) A console [EU)ContOlA ISTAGINGSS&BRGN686856020588TEAREOSUSHENLI11AAAA(2826-85-27 12:55:12) Local.INFO: Jiminny\Console\Conmands\Comnand::run Menory usage before starting2826-85-27 12:55:12 Local.INF0: ScheduleBotConnand Dispatched activities to capture "count":0) "correlation id":"41002826-85-27 12:55:12 Local.INFOJiminny Console Connands|Conmand::run Menory usage for command d2826-85-27 12:55:14| Local.INF0: Jiminny Console Connands|Comnand::run Menory usage before starting command "command":"d2826-85-27 12:55:14| Local.INF0: Jiminny Console Conmands Connand::run nenory usaac for conmand cc[2826-85-27 12:55:15]Loca.wurfet:honzcoring starscorrela-zon10: 560b0t6b-c160-4068-a577-t394essezddcrace-10-(2826-85-27 12:55:15 Zocal.NOTICE: Monitoring end#"correlation_id*:*56b8df60-c16c-4c60-a577-f394e33e2ddc* "trace_id":"b4826-85-77 77:5537Locau,IWFU: Janinny Console comnands comand::run henory usaac bcrore stariing command comeand: n(2826-85-27 12:55:171 Zocal.INF0: Jiminny|Console|Connands|Connand::run Menory usage for command (*c7826-85-27LocauWFu: Jaminny console, comnands comnand::run henory usage berore stariing commandconcand?h12826-85-27 12:55:181(EmailSchedule) STARTING batch process {"host":"docker_lamp_1"} {"correlation_id*:*75fb791mano-85o7leran Schedulelatt. asoanch onocess "host". "docken tanduorocessed"er "corcelat12926-85-27 12-55-181nd::run Memory usage for command {*comnTanoo8saLocaL.INFU: Jiminny console \conmands \comnand::run Henory usage before starting command 1 command": ac12826-85-22nand::run Henory usage for command 1 conind": "activity:purgeTinooiheS5wocatuete uminny Tronsole vonmands vonnanderun Henory usane hesane stactano commandconmanden[2826-85-27LocaL.INFU: [TextRelayService) Starting sync 1natlbox":"catch-alletxt.staging.J1minny.com, expected(2826-85-27 12:55:22) local.INFO: [TextRelayService) Sync completed ("nailbox":"[EMAIL]","message)12926-85-2712-55:22 1 1oc1 TNE0. Besnny Consollel Connandel Connande -cun Menony usade fon connand con(2826-85-27 12:55:25) local.INF0: Jiminny\Console\Connands\Connand::run Menory usage before starting connand {"command":"co)(2826-85-27 12:55:25) local.INF0: Running pre-neeting notification connand ("correlation_id":"87e0c627-3642-4017-bf25-264f,[2826-85-27 12:55:25) local.INF0: Jiminny\Console\Connands\Connand::run Menory usage for command ("connand":"conference:pre(2826-85-27 12:55:28) local.INF0: Jiminny\Console\Connands\Connand::run Menory usage before starting connand ("command":"co)2826-85-27 12:55:28 Local.INF0: Running conference:moniton:stant conmand for activities in (2026-85-27 12:45:08. 2826-85-32826-85-27 12:55:28 Local.INF0: conference:nonston:start No activities found in (2026-05-27 12:45:08. 2826-85-27 12:58:2826-85-27 12:55:28 Local.INF0: Jiminny Console Conmands|Command::run Menory usage for command *conmand":"conference:non)2826-85-27 12:55:31 Local.INF0: Jiminny Console Connands| Comnand::run Menory usage before starting comnand ""command":"co)2826-85-27 12:55:31) Local.INF0: conference:noniton:end:Jiminny\Console\Commands Activities MonitorMeetingEndCommand::lo0A2826-85-27 12:55:311 Local.INF0: conference:noniton:end:Jiminny\Console\Conmands\Activities MonitorMeetingEndCommand::looA12826-85-27 12:55:311 Local.INF0: Jiminny Console| Connands| Comnand::run Menory usage for command "connand":"conference: non)12826-85-27 12:55:381 Zocal.NOTICE: Repaining HubSpot tokens start Pcorrelation_id":"3SadS085-589b-4afa-8ab6-194229ce310612826-85-27 12:55:381 Zocal.INF0: Trying to refresh HubSpot token ("account_id":59, "undated at":2825-10-93 69:32:85** 4"co)12826-85-27 12:55:381Local.INF0: [EncnyptedTokenManager) Generating access token. {"mode":"Legacy"} ("correlation_id*:35a.[2026-05-27 12:5S:38] Local.INFO: [SocialAccountService) Refreshing token from provider {"socialAccountId":59, "provider*:*hi12926-85-27 12:55:391LocaErrUr: Falted to retresh Huosoor token account1d"*5%"uodated.ar:2825018-85 8932785 Nea[2826-05-27 12:5S:39] Local.INF0: Trying to refresh HubSpot token {"account_id":306, "updated_at*: *2023-11-27 69:30:83*) {°c)12826-85-27 12:55:391local,INF0: [EncryptedTokenManageri Generating access token. {"mode"-"legacy"} {"corcelatiionid*:*35a)[2826-05-27 12:55:39] Local.INFO: [SocialAccountService) Refreshing token fron provider {"socialAcco02826-85-27 12:55:481 Local, ERROR: Faiiled to refresh HubSpot token {"account.id":386, "uodated at»:*2923-11-27 69:38:83*, "ne[2826-85-27 12:55:40] Local.INFO: Trying to refresh HubSpot token {"account_id":1372, "updated_at*:*2825-10-02 14:47:86*} 1*12826-85-27 12:55-491 1oc01,TN50: [FncevntedTokenManader) Generatina access token. {"rode","leoacu»} ("coccelation 1a*.*75a12826-85-27 12:55-491|Local.INFO: [SocialAccountService) Refreshing token fron provider {"socialAccountId":1372, "provider*:sased to nerresh HuiSoor Taken Laccount la"tsyD lundatedareetoiohethehotsse12824-85-27 12:55-491|Repaining HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_1d*:*35ad58)12824-85-27 12-55-45%and: :run Menory usage before starting comnand {*comJocal TuCh• Kesoov, Consolal Cossaodel Coneaodepun Menony ucaod fon conmand Pcossand»."cae-bullbonne.2924-95-27[2826-05-272924-95.2712-55-45[HubSpot Journal Polling) Getting offset from database {"offset":"*."jiminny_team_id":1}sodl Stantfnd noll4od convie.{"correlation_id":"f7da3683-aefb-4f3krner hensewietcan I test it locally first. if I place env from stagingYes. The service relies on a few things you'd need in place1. Credentials file The constructor expects storage/text-relay.fson (a Google service account JSON key file)Gmbtrom sthaind and oince it there2. .env values to copy from stagingGOOGLE TEXTUSERECOOGLE TEXT HASTGOOGLE TEXT RELAY TOPIC:DEPLOY REGION:the cnail mailbox address# e.g. txt.jiminny.com or txt.staging.Jiminny.com# the Pub/Sub topic nam# eu or us3. Run the sunc manualiv vin tinker tinside docker 1aeo 1%eossttaegdocker exec -it docker_lamp_1 php artisan tinkerb)pheapp(\Jiminny\Services\Ma1l\TextRelayService::class)-sync():Caveat: The service reads from Gmail history and dispatches jobs to the queue. If you don't want it to actuallsend SMS, make sure QUEUE_CONNECTICN»sync is not set (or use a test queue), or just call isForCurrentEnvironnentorectly via tinker to verity the header logic without disaatchine amvthinotioh.Ssvc = new class extends \Jiminny\Services\Mail\TextRelayService & public function _construct(Som Serviceassvc-soetServicelconttaltminny.google text user"I then sinsoect a eessade canuai ivlsasg= sonailService-susers_messages-sget(config(*iminty.google text user'), *THE_MESSAGE ID')collect(5-s0-20etPayload()-soetHeaders())-soluck("value", "nane")thut wey von can Mrit whht nandore tra nenhily oraeaet do htas macesod Calora tha ull evoc nineAsk anything (%OL)- @ CodnAdhotvMndturTasmehisesaudenod...
|
NULL
|
5203752588234532813
|
NULL
|
click
|
ocr
|
NULL
|
rnpstomViewNeWENNCCoocKetucioTOOI-WindowFV faVsco. rnpstomViewNeWENNCCoocKetucioTOOI-WindowFV faVsco.|s ~$ JY-20915-fix-missing-header-text-reProinet v© SyncMailbox.phppho l0005.ongpheo matl.criyphe maxio.php"medd"sueamine.oneHwowercalonephp queue.phpnho salestorce.onosamconesecure-neddcis.oiwpservices.ohgppslack.ohephptimezones.ohgphp view.ohrphp webhook-server.ohg> En contrit.→darabasrontcent>E3 langTextRelayServiceTest.php3.env.productionclass TextRelayServiceouoere Tuncczon syne diidnode modtles hhrary toon→tnanstant mualiid> @ resourcesv hroutesphe api.phpmockhrhts300%L2•Wed 27 May 15:56:38+0.SunCechonntcustom channeowntol nessace.fsxory"P.p Eull oointrmessadetstory.teum: true)36 22 (01»id;ment (Sservice, Snailbox, Smessageld, SexpectedAlias, SexpectedHost)) (column: "enail provider id'. Smessageld)->firstO:weatecnphe api_v2.phpne concale nbophe customer_api.phpMoamsioo0o.oneMo haalth obomuoro celcoweo.onMaweb cnopp weonook.one> scriptev(ln storage> O apo>en debugbat> &a frameworkvMloascitianore0 audio wav= custom logBchounit.xolFttieгgeg9898&8&SеKerwrhuworhbssmessageidSTATUS_PROCESSINGnoeld SrelavedtextQUEUE ENAILSruicel Successfully disnatched nessace!. ""eytesdsync completed', Olaravel.log x SF (iminny@localhost)HS Jocal (jiminny@alocalhost) console (PROD) A console [EU)ContOlA ISTAGINGSS&BRGN686856020588TEAREOSUSHENLI11AAAA(2826-85-27 12:55:12) Local.INFO: Jiminny\Console\Conmands\Comnand::run Menory usage before starting2826-85-27 12:55:12 Local.INF0: ScheduleBotConnand Dispatched activities to capture "count":0) "correlation id":"41002826-85-27 12:55:12 Local.INFOJiminny Console Connands|Conmand::run Menory usage for command d2826-85-27 12:55:14| Local.INF0: Jiminny Console Connands|Comnand::run Menory usage before starting command "command":"d2826-85-27 12:55:14| Local.INF0: Jiminny Console Conmands Connand::run nenory usaac for conmand cc[2826-85-27 12:55:15]Loca.wurfet:honzcoring starscorrela-zon10: 560b0t6b-c160-4068-a577-t394essezddcrace-10-(2826-85-27 12:55:15 Zocal.NOTICE: Monitoring end#"correlation_id*:*56b8df60-c16c-4c60-a577-f394e33e2ddc* "trace_id":"b4826-85-77 77:5537Locau,IWFU: Janinny Console comnands comand::run henory usaac bcrore stariing command comeand: n(2826-85-27 12:55:171 Zocal.INF0: Jiminny|Console|Connands|Connand::run Menory usage for command (*c7826-85-27LocauWFu: Jaminny console, comnands comnand::run henory usage berore stariing commandconcand?h12826-85-27 12:55:181(EmailSchedule) STARTING batch process {"host":"docker_lamp_1"} {"correlation_id*:*75fb791mano-85o7leran Schedulelatt. asoanch onocess "host". "docken tanduorocessed"er "corcelat12926-85-27 12-55-181nd::run Memory usage for command {*comnTanoo8saLocaL.INFU: Jiminny console \conmands \comnand::run Henory usage before starting command 1 command": ac12826-85-22nand::run Henory usage for command 1 conind": "activity:purgeTinooiheS5wocatuete uminny Tronsole vonmands vonnanderun Henory usane hesane stactano commandconmanden[2826-85-27LocaL.INFU: [TextRelayService) Starting sync 1natlbox":"catch-alletxt.staging.J1minny.com, expected(2826-85-27 12:55:22) local.INFO: [TextRelayService) Sync completed ("nailbox":"[EMAIL]","message)12926-85-2712-55:22 1 1oc1 TNE0. Besnny Consollel Connandel Connande -cun Menony usade fon connand con(2826-85-27 12:55:25) local.INF0: Jiminny\Console\Connands\Connand::run Menory usage before starting connand {"command":"co)(2826-85-27 12:55:25) local.INF0: Running pre-neeting notification connand ("correlation_id":"87e0c627-3642-4017-bf25-264f,[2826-85-27 12:55:25) local.INF0: Jiminny\Console\Connands\Connand::run Menory usage for command ("connand":"conference:pre(2826-85-27 12:55:28) local.INF0: Jiminny\Console\Connands\Connand::run Menory usage before starting connand ("command":"co)2826-85-27 12:55:28 Local.INF0: Running conference:moniton:stant conmand for activities in (2026-85-27 12:45:08. 2826-85-32826-85-27 12:55:28 Local.INF0: conference:nonston:start No activities found in (2026-05-27 12:45:08. 2826-85-27 12:58:2826-85-27 12:55:28 Local.INF0: Jiminny Console Conmands|Command::run Menory usage for command *conmand":"conference:non)2826-85-27 12:55:31 Local.INF0: Jiminny Console Connands| Comnand::run Menory usage before starting comnand ""command":"co)2826-85-27 12:55:31) Local.INF0: conference:noniton:end:Jiminny\Console\Commands Activities MonitorMeetingEndCommand::lo0A2826-85-27 12:55:311 Local.INF0: conference:noniton:end:Jiminny\Console\Conmands\Activities MonitorMeetingEndCommand::looA12826-85-27 12:55:311 Local.INF0: Jiminny Console| Connands| Comnand::run Menory usage for command "connand":"conference: non)12826-85-27 12:55:381 Zocal.NOTICE: Repaining HubSpot tokens start Pcorrelation_id":"3SadS085-589b-4afa-8ab6-194229ce310612826-85-27 12:55:381 Zocal.INF0: Trying to refresh HubSpot token ("account_id":59, "undated at":2825-10-93 69:32:85** 4"co)12826-85-27 12:55:381Local.INF0: [EncnyptedTokenManager) Generating access token. {"mode":"Legacy"} ("correlation_id*:35a.[2026-05-27 12:5S:38] Local.INFO: [SocialAccountService) Refreshing token from provider {"socialAccountId":59, "provider*:*hi12926-85-27 12:55:391LocaErrUr: Falted to retresh Huosoor token account1d"*5%"uodated.ar:2825018-85 8932785 Nea[2826-05-27 12:5S:39] Local.INF0: Trying to refresh HubSpot token {"account_id":306, "updated_at*: *2023-11-27 69:30:83*) {°c)12826-85-27 12:55:391local,INF0: [EncryptedTokenManageri Generating access token. {"mode"-"legacy"} {"corcelatiionid*:*35a)[2826-05-27 12:55:39] Local.INFO: [SocialAccountService) Refreshing token fron provider {"socialAcco02826-85-27 12:55:481 Local, ERROR: Faiiled to refresh HubSpot token {"account.id":386, "uodated at»:*2923-11-27 69:38:83*, "ne[2826-85-27 12:55:40] Local.INFO: Trying to refresh HubSpot token {"account_id":1372, "updated_at*:*2825-10-02 14:47:86*} 1*12826-85-27 12:55-491 1oc01,TN50: [FncevntedTokenManader) Generatina access token. {"rode","leoacu»} ("coccelation 1a*.*75a12826-85-27 12:55-491|Local.INFO: [SocialAccountService) Refreshing token fron provider {"socialAccountId":1372, "provider*:sased to nerresh HuiSoor Taken Laccount la"tsyD lundatedareetoiohethehotsse12824-85-27 12:55-491|Repaining HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_1d*:*35ad58)12824-85-27 12-55-45%and: :run Menory usage before starting comnand {*comJocal TuCh• Kesoov, Consolal Cossaodel Coneaodepun Menony ucaod fon conmand Pcossand»."cae-bullbonne.2924-95-27[2826-05-272924-95.2712-55-45[HubSpot Journal Polling) Getting offset from database {"offset":"*."jiminny_team_id":1}sodl Stantfnd noll4od convie.{"correlation_id":"f7da3683-aefb-4f3krner hensewietcan I test it locally first. if I place env from stagingYes. The service relies on a few things you'd need in place1. Credentials file The constructor expects storage/text-relay.fson (a Google service account JSON key file)Gmbtrom sthaind and oince it there2. .env values to copy from stagingGOOGLE TEXTUSERECOOGLE TEXT HASTGOOGLE TEXT RELAY TOPIC:DEPLOY REGION:the cnail mailbox address# e.g. txt.jiminny.com or txt.staging.Jiminny.com# the Pub/Sub topic nam# eu or us3. Run the sunc manualiv vin tinker tinside docker 1aeo 1%eossttaegdocker exec -it docker_lamp_1 php artisan tinkerb)pheapp(\Jiminny\Services\Ma1l\TextRelayService::class)-sync():Caveat: The service reads from Gmail history and dispatches jobs to the queue. If you don't want it to actuallsend SMS, make sure QUEUE_CONNECTICN»sync is not set (or use a test queue), or just call isForCurrentEnvironnentorectly via tinker to verity the header logic without disaatchine amvthinotioh.Ssvc = new class extends \Jiminny\Services\Mail\TextRelayService & public function _construct(Som Serviceassvc-soetServicelconttaltminny.google text user"I then sinsoect a eessade canuai ivlsasg= sonailService-susers_messages-sget(config(*iminty.google text user'), *THE_MESSAGE ID')collect(5-s0-20etPayload()-soetHeaders())-soluck("value", "nane")thut wey von can Mrit whht nandore tra nenhily oraeaet do htas macesod Calora tha ull evoc nineAsk anything (%OL)- @ CodnAdhotvMndturTasmehisesaudenod...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
78726
|
2764
|
29
|
2026-05-27T12:56:36.892437+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886596892_m2.jpg...
|
PhpStorm
|
faVsco.js – laravel.log
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
108
Previous Highlighted Error
Next Highlighted Error
[2026-05-27 12:55:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"41d4bbce-5baf-49aa-a276-c1c74a65020a","trace_id":"1d0d4404-bf0a-4053-84ca-68be39511779"}
[2026-05-27 12:55:12] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {"count":0} {"correlation_id":"41d4bbce-5baf-49aa-a276-c1c74a65020a","trace_id":"1d0d4404-bf0a-4053-84ca-68be39511779"}
[2026-05-27 12:55:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"41d4bbce-5baf-49aa-a276-c1c74a65020a","trace_id":"1d0d4404-bf0a-4053-84ca-68be39511779"}
[2026-05-27 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d","trace_id":"aedb441d-c947-4f26-a1cd-056e48b6f5ed"}
[2026-05-27 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d","trace_id":"aedb441d-c947-4f26-a1cd-056e48b6f5ed"}
[2026-05-27 12:55:15] local.NOTICE: Monitoring start {"correlation_id":"56b0df60-e16c-4c60-a577-f394e33e2ddc","trace_id":"ba2c277f-5516-49b6-854a-b4f446a1cb6c"}
[2026-05-27 12:55:15] local.NOTICE: Monitoring end {"correlation_id":"56b0df60-e16c-4c60-a577-f394e33e2ddc","trace_id":"ba2c277f-5516-49b6-854a-b4f446a1cb6c"}
[2026-05-27 12:55:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"3b3db768-2cbe-4893-a39d-39c1ed923f29","trace_id":"dedb9613-95f2-47d1-a51b-82fff1514a22"}
[2026-05-27 12:55:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"3b3db768-2cbe-4893-a39d-39c1ed923f29","trace_id":"dedb9613-95f2-47d1-a51b-82fff1514a22"}
[2026-05-27 12:55:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:18] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:18] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"5e1f4a28-d081-4c59-8d76-a116dadc701e","trace_id":"b7e8d289-707b-47c1-9d6c-f47ebad1e01b"}
[2026-05-27 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"5e1f4a28-d081-4c59-8d76-a116dadc701e","trace_id":"b7e8d289-707b-47c1-9d6c-f47ebad1e01b"}
[2026-05-27 12:55:21] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:21] local.INFO: [TextRelayService] Starting sync {"mailbox":"[EMAIL]","expected_alias":"catch-all","expected_host":"txt.staging.jiminny.com"} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:22] local.INFO: [TextRelayService] Sync completed {"mailbox":"[EMAIL]","messages_processed":0,"message_ids":[]} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"87e0c627-3642-4d17-bf25-264f6fdc1969","trace_id":"3b555fb3-83d8-4284-bb7c-0f783b4ed083"}
[2026-05-27 12:55:25] local.INFO: Running pre-meeting notification command {"correlation_id":"87e0c627-3642-4d17-bf25-264f6fdc1969","trace_id":"3b555fb3-83d8-4284-bb7c-0f783b4ed083"}
[2026-05-27 12:55:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"87e0c627-3642-4d17-bf25-264f6fdc1969","trace_id":"3b555fb3-83d8-4284-bb7c-0f783b4ed083"}
[2026-05-27 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:28] local.INFO: Running conference:monitor:start command for activities in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:28] local.INFO: [conference:monitor:start] No activities found in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:38] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:38] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:38] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:38] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"85c09ea4-f8d1-4cc2-b767-a5f2d957d016","trace_id":"4fe5a8fa-1ac5-407c-926c-83f504d762d4"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"6e057ca5-65bf-41f6-b8af-08e715bc654d","trace_id":"6aea00b5-6221-4847-8961-7a86ef3210cd"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"6e057ca5-65bf-41f6-b8af-08e715bc654d","trace_id":"6aea00b5-6221-4847-8961-7a86ef3210cd"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-27T12:57:45.940375Z"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"85c09ea4-f8d1-4cc2-b767-a5f2d957d016","trace_id":"4fe5a8fa-1ac5-407c-926c-83f504d762d4"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:03] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"52d58fe6-511d-4783-83d2-2cd095621565","trace_id":"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12"}
[2026-05-27 12:56:03] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {"count":0} {"correlation_id":"52d58fe6-511d-4783-83d2-2cd095621565","trace_id":"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12"}
[2026-05-27 12:56:03] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"52d58fe6-511d-4783-83d2-2cd095621565","trace_id":"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12"}
[2026-05-27 12:56:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1","trace_id":"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4"}
[2026-05-27 12:56:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1","trace_id":"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4"}
[2026-05-27 12:56:06] local.NOTICE: Monitoring start {"correlation_id":"dc41678d-bf39-4a6e-870f-d38c97eff1c3","trace_id":"10976781-275a-4aee-a84d-b6fa96ad2602"}
[2026-05-27 12:56:06] local.NOTICE: Monitoring end {"correlation_id":"dc41678d-bf39-4a6e-870f-d38c97eff1c3","trace_id":"10976781-275a-4aee-a84d-b6fa96ad2602"}
[2026-05-27 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"45813b78-011b-4ba5-8928-5a82bdd9f4ab","trace_id":"f88e2e25-2c4f-4690-a49b-ccc8fb856866"}
[2026-05-27 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"45813b78-011b-4ba5-8928-5a82bdd9f4ab","trace_id":"f88e2e25-2c4f-4690-a49b-ccc8fb856866"}
[2026-05-27 12:56:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:09] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:09] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:11] local.INFO: Running conference:monitor:count command for activities in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:11] local.INFO: [conference:monitor:count] No activities found in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"aab715c2-fbe0-4a65-9292-b2b218775424","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"aab715c2-fbe0-4a65-9292-b2b218775424","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SyncHubspotObjects] Starting sync {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","usage":24777784,"real_usage":65011712,"pid":42210} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1499,"provider":"hubspot","refreshToken":"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86","state":"connected"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [SocialAccountService] Token refreshed {"socialAccountId":1499,"provider":"hubspot","state":"connected"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {"team":2} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/deals/search","total_requests":1,"total_records_fetched":0,"total_elapsed_seconds":0.28,"average_seconds_per_request":0.28} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [HubSpot] Synced opportunities {"team":2,"strategies":"lastModified","sync_count":0,"total":0,"last_synced_id":null,"duration_ms":286.56} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","provider":"hubspot","status":"completed","duration_ms":1417.45,"usage":25188000,"real_usage":65011712,"pid":42210} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","usage":25162720,"real_usage":65011712,"pid":42210} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {"userId":"33e34a7a-1c02-4f04-87ac-22c3a385e6e3","account":{"Jiminny\\Models\\SocialAccount":{"id":306,"sociable_id":109,"provider_user_id":"11348452","expires":1701077403,"refresh_token_expires":null,"provider":"hubspot","state":"full-refresh","auth_scope":null,"retry_after":null,"created_at":"2020-09-01 16:59:04","updated_at":"2023-11-27 09:30:03"}}} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":109,"team_id":29} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","provider":"hubspot","status":"disconnected","duration_ms":28.83,"usage":25162928,"real_usage":65011712,"pid":42210,"reason":"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","usage":25120440,"real_usage":65011712,"pid":42210} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {"userId":"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b","account":null} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":130,"team_id":42} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","provider":"hubspot","status":"disconnected","duration_ms":50.47,"usage":25140104,"real_usage":65011712,"pid":42210,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","usage":25100792,"real_usage":65011712,"pid":42210} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {"userId":"71e3aac5-fb66-47c5-a236-2d051ae3e319","account":null} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":256,"team_id":49} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","provider":"hubspot","status":"disconnected","duration_ms":61.91,"usage":25136552,"real_usage":65011712,"pid":42210,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"8adbd852-a071-43d7-9393-80d2ceb0461e","trace_id":"f2fefab6-f987-4a8d-8ba9-98e358be3479"}
[2026-05-27 12:56:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"8adbd852-a071-43d7-9393-80d2ceb0461e","trace_id":"f2fefab6-f987-4a8d-8ba9-98e358be3479"}
[2026-05-27 12:56:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:19] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:19] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {"inbox_id":59} {"correlation_id":"cf9cc0f9-72df-468a-9dfd-7419e132cd3c","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {"correlation_id":"cf9cc0f9-72df-468a-9dfd-7419e132cd3c","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":59} {"correlation_id":"cf9cc0f9-72df-468a-9dfd-7419e132cd3c","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {"inbox_id":212} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.WARNING: [Salesforce] Account not connected for user {"userId":"641f1acb-16b8-42d1-8726-df52979dad0e","account":{"Jiminny\\Models\\SocialAccount":{"id":1500,"sociable_id":143,"provider_user_id":"0052g000003frelAAA","expires":null,"refresh_token_expires":null,"provider":"salesforce","state":"full-refresh","auth_scope":"refresh_token web api","retry_after":null,"created_at":"2026-02-06 08:39:03","updated_at":"2026-05-14 09:46:30"}}} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"salesforce","crm_owner":143,"team_id":1} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.ERROR: Failed to set service context for google: Your Salesforce account has become disconnected. Please login to Jiminny to reconnect. {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":212} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide
app ~/jiminny/app, folder
.circleci, folder
backend-code, folder
.env.staging
Dockerfile
start.sh
frontend-code
worker-code
worker-video-code
config.yml, YAML file
config_continue.yml, YAML file
subenv_to_branch_map
workflows_prod.yml, YAML file
workflows_qa.yml, YAML file...
|
[{"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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.09740692,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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.8374335,"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":"TextRelayServiceTest","depth":6,"bounds":{"left":0.85272604,"top":0.019952115,"width":0.062832445,"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 'TextRelayServiceTest'","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 'TextRelayServiceTest'","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":"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.37632978,"top":0.10055866,"width":0.00731383,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","depth":4,"bounds":{"left":0.3856383,"top":0.10055866,"width":0.009640957,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.39694148,"top":0.09896249,"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.40425533,"top":0.09896249,"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\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\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":"108","depth":4,"bounds":{"left":0.72539896,"top":0.10055866,"width":0.011968086,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.7390292,"top":0.09896249,"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.7463431,"top":0.09896249,"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":"[2026-05-27 12:55:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"41d4bbce-5baf-49aa-a276-c1c74a65020a\",\"trace_id\":\"1d0d4404-bf0a-4053-84ca-68be39511779\"}\n[2026-05-27 12:55:12] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {\"count\":0} {\"correlation_id\":\"41d4bbce-5baf-49aa-a276-c1c74a65020a\",\"trace_id\":\"1d0d4404-bf0a-4053-84ca-68be39511779\"}\n[2026-05-27 12:55:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"41d4bbce-5baf-49aa-a276-c1c74a65020a\",\"trace_id\":\"1d0d4404-bf0a-4053-84ca-68be39511779\"}\n[2026-05-27 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d\",\"trace_id\":\"aedb441d-c947-4f26-a1cd-056e48b6f5ed\"}\n[2026-05-27 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d\",\"trace_id\":\"aedb441d-c947-4f26-a1cd-056e48b6f5ed\"}\n[2026-05-27 12:55:15] local.NOTICE: Monitoring start {\"correlation_id\":\"56b0df60-e16c-4c60-a577-f394e33e2ddc\",\"trace_id\":\"ba2c277f-5516-49b6-854a-b4f446a1cb6c\"}\n[2026-05-27 12:55:15] local.NOTICE: Monitoring end {\"correlation_id\":\"56b0df60-e16c-4c60-a577-f394e33e2ddc\",\"trace_id\":\"ba2c277f-5516-49b6-854a-b4f446a1cb6c\"}\n[2026-05-27 12:55:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"3b3db768-2cbe-4893-a39d-39c1ed923f29\",\"trace_id\":\"dedb9613-95f2-47d1-a51b-82fff1514a22\"}\n[2026-05-27 12:55:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"3b3db768-2cbe-4893-a39d-39c1ed923f29\",\"trace_id\":\"dedb9613-95f2-47d1-a51b-82fff1514a22\"}\n[2026-05-27 12:55:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:18] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:18] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"5e1f4a28-d081-4c59-8d76-a116dadc701e\",\"trace_id\":\"b7e8d289-707b-47c1-9d6c-f47ebad1e01b\"}\n[2026-05-27 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"5e1f4a28-d081-4c59-8d76-a116dadc701e\",\"trace_id\":\"b7e8d289-707b-47c1-9d6c-f47ebad1e01b\"}\n[2026-05-27 12:55:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:21] local.INFO: [TextRelayService] Starting sync {\"mailbox\":\"catch-all@txt.staging.jiminny.com\",\"expected_alias\":\"catch-all\",\"expected_host\":\"txt.staging.jiminny.com\"} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:22] local.INFO: [TextRelayService] Sync completed {\"mailbox\":\"catch-all@txt.staging.jiminny.com\",\"messages_processed\":0,\"message_ids\":[]} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"87e0c627-3642-4d17-bf25-264f6fdc1969\",\"trace_id\":\"3b555fb3-83d8-4284-bb7c-0f783b4ed083\"}\n[2026-05-27 12:55:25] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"87e0c627-3642-4d17-bf25-264f6fdc1969\",\"trace_id\":\"3b555fb3-83d8-4284-bb7c-0f783b4ed083\"}\n[2026-05-27 12:55:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"87e0c627-3642-4d17-bf25-264f6fdc1969\",\"trace_id\":\"3b555fb3-83d8-4284-bb7c-0f783b4ed083\"}\n[2026-05-27 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:28] local.INFO: Running conference:monitor:start command for activities in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:28] local.INFO: [conference:monitor:start] No activities found in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:38] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:38] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:38] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:38] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"85c09ea4-f8d1-4cc2-b767-a5f2d957d016\",\"trace_id\":\"4fe5a8fa-1ac5-407c-926c-83f504d762d4\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"6e057ca5-65bf-41f6-b8af-08e715bc654d\",\"trace_id\":\"6aea00b5-6221-4847-8961-7a86ef3210cd\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"6e057ca5-65bf-41f6-b8af-08e715bc654d\",\"trace_id\":\"6aea00b5-6221-4847-8961-7a86ef3210cd\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-27T12:57:45.940375Z\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"85c09ea4-f8d1-4cc2-b767-a5f2d957d016\",\"trace_id\":\"4fe5a8fa-1ac5-407c-926c-83f504d762d4\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:03] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"52d58fe6-511d-4783-83d2-2cd095621565\",\"trace_id\":\"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12\"}\n[2026-05-27 12:56:03] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {\"count\":0} {\"correlation_id\":\"52d58fe6-511d-4783-83d2-2cd095621565\",\"trace_id\":\"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12\"}\n[2026-05-27 12:56:03] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"52d58fe6-511d-4783-83d2-2cd095621565\",\"trace_id\":\"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12\"}\n[2026-05-27 12:56:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1\",\"trace_id\":\"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4\"}\n[2026-05-27 12:56:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1\",\"trace_id\":\"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4\"}\n[2026-05-27 12:56:06] local.NOTICE: Monitoring start {\"correlation_id\":\"dc41678d-bf39-4a6e-870f-d38c97eff1c3\",\"trace_id\":\"10976781-275a-4aee-a84d-b6fa96ad2602\"}\n[2026-05-27 12:56:06] local.NOTICE: Monitoring end {\"correlation_id\":\"dc41678d-bf39-4a6e-870f-d38c97eff1c3\",\"trace_id\":\"10976781-275a-4aee-a84d-b6fa96ad2602\"}\n[2026-05-27 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"45813b78-011b-4ba5-8928-5a82bdd9f4ab\",\"trace_id\":\"f88e2e25-2c4f-4690-a49b-ccc8fb856866\"}\n[2026-05-27 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"45813b78-011b-4ba5-8928-5a82bdd9f4ab\",\"trace_id\":\"f88e2e25-2c4f-4690-a49b-ccc8fb856866\"}\n[2026-05-27 12:56:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:09] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:09] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:11] local.INFO: Running conference:monitor:count command for activities in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:11] local.INFO: [conference:monitor:count] No activities found in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"aab715c2-fbe0-4a65-9292-b2b218775424\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"aab715c2-fbe0-4a65-9292-b2b218775424\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":24777784,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":1,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0.28} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [HubSpot] Synced opportunities {\"team\":2,\"strategies\":\"lastModified\",\"sync_count\":0,\"total\":0,\"last_synced_id\":null,\"duration_ms\":286.56} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1417.45,\"usage\":25188000,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25162720,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":28.83,\"usage\":25162928,\"real_usage\":65011712,\"pid\":42210,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25120440,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":50.47,\"usage\":25140104,\"real_usage\":65011712,\"pid\":42210,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25100792,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":61.91,\"usage\":25136552,\"real_usage\":65011712,\"pid\":42210,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"8adbd852-a071-43d7-9393-80d2ceb0461e\",\"trace_id\":\"f2fefab6-f987-4a8d-8ba9-98e358be3479\"}\n[2026-05-27 12:56:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"8adbd852-a071-43d7-9393-80d2ceb0461e\",\"trace_id\":\"f2fefab6-f987-4a8d-8ba9-98e358be3479\"}\n[2026-05-27 12:56:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:19] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:19] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"cf9cc0f9-72df-468a-9dfd-7419e132cd3c\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"cf9cc0f9-72df-468a-9dfd-7419e132cd3c\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"cf9cc0f9-72df-468a-9dfd-7419e132cd3c\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"641f1acb-16b8-42d1-8726-df52979dad0e\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1500,\"sociable_id\":143,\"provider_user_id\":\"0052g000003frelAAA\",\"expires\":null,\"refresh_token_expires\":null,\"provider\":\"salesforce\",\"state\":\"full-refresh\",\"auth_scope\":\"refresh_token web api\",\"retry_after\":null,\"created_at\":\"2026-02-06 08:39:03\",\"updated_at\":\"2026-05-14 09:46:30\"}}} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":143,\"team_id\":1} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.ERROR: Failed to set service context for google: Your Salesforce account has become disconnected. Please login to Jiminny to reconnect. {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}","depth":4,"bounds":{"left":0.4331782,"top":0.09736632,"width":0.5668218,"height":0.90263367},"on_screen":true,"value":"[2026-05-27 12:55:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"41d4bbce-5baf-49aa-a276-c1c74a65020a\",\"trace_id\":\"1d0d4404-bf0a-4053-84ca-68be39511779\"}\n[2026-05-27 12:55:12] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {\"count\":0} {\"correlation_id\":\"41d4bbce-5baf-49aa-a276-c1c74a65020a\",\"trace_id\":\"1d0d4404-bf0a-4053-84ca-68be39511779\"}\n[2026-05-27 12:55:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"41d4bbce-5baf-49aa-a276-c1c74a65020a\",\"trace_id\":\"1d0d4404-bf0a-4053-84ca-68be39511779\"}\n[2026-05-27 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d\",\"trace_id\":\"aedb441d-c947-4f26-a1cd-056e48b6f5ed\"}\n[2026-05-27 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d\",\"trace_id\":\"aedb441d-c947-4f26-a1cd-056e48b6f5ed\"}\n[2026-05-27 12:55:15] local.NOTICE: Monitoring start {\"correlation_id\":\"56b0df60-e16c-4c60-a577-f394e33e2ddc\",\"trace_id\":\"ba2c277f-5516-49b6-854a-b4f446a1cb6c\"}\n[2026-05-27 12:55:15] local.NOTICE: Monitoring end {\"correlation_id\":\"56b0df60-e16c-4c60-a577-f394e33e2ddc\",\"trace_id\":\"ba2c277f-5516-49b6-854a-b4f446a1cb6c\"}\n[2026-05-27 12:55:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"3b3db768-2cbe-4893-a39d-39c1ed923f29\",\"trace_id\":\"dedb9613-95f2-47d1-a51b-82fff1514a22\"}\n[2026-05-27 12:55:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"3b3db768-2cbe-4893-a39d-39c1ed923f29\",\"trace_id\":\"dedb9613-95f2-47d1-a51b-82fff1514a22\"}\n[2026-05-27 12:55:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:18] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:18] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"5e1f4a28-d081-4c59-8d76-a116dadc701e\",\"trace_id\":\"b7e8d289-707b-47c1-9d6c-f47ebad1e01b\"}\n[2026-05-27 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"5e1f4a28-d081-4c59-8d76-a116dadc701e\",\"trace_id\":\"b7e8d289-707b-47c1-9d6c-f47ebad1e01b\"}\n[2026-05-27 12:55:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:21] local.INFO: [TextRelayService] Starting sync {\"mailbox\":\"catch-all@txt.staging.jiminny.com\",\"expected_alias\":\"catch-all\",\"expected_host\":\"txt.staging.jiminny.com\"} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:22] local.INFO: [TextRelayService] Sync completed {\"mailbox\":\"catch-all@txt.staging.jiminny.com\",\"messages_processed\":0,\"message_ids\":[]} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"87e0c627-3642-4d17-bf25-264f6fdc1969\",\"trace_id\":\"3b555fb3-83d8-4284-bb7c-0f783b4ed083\"}\n[2026-05-27 12:55:25] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"87e0c627-3642-4d17-bf25-264f6fdc1969\",\"trace_id\":\"3b555fb3-83d8-4284-bb7c-0f783b4ed083\"}\n[2026-05-27 12:55:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"87e0c627-3642-4d17-bf25-264f6fdc1969\",\"trace_id\":\"3b555fb3-83d8-4284-bb7c-0f783b4ed083\"}\n[2026-05-27 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:28] local.INFO: Running conference:monitor:start command for activities in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:28] local.INFO: [conference:monitor:start] No activities found in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:38] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:38] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:38] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:38] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"85c09ea4-f8d1-4cc2-b767-a5f2d957d016\",\"trace_id\":\"4fe5a8fa-1ac5-407c-926c-83f504d762d4\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"6e057ca5-65bf-41f6-b8af-08e715bc654d\",\"trace_id\":\"6aea00b5-6221-4847-8961-7a86ef3210cd\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"6e057ca5-65bf-41f6-b8af-08e715bc654d\",\"trace_id\":\"6aea00b5-6221-4847-8961-7a86ef3210cd\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-27T12:57:45.940375Z\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"85c09ea4-f8d1-4cc2-b767-a5f2d957d016\",\"trace_id\":\"4fe5a8fa-1ac5-407c-926c-83f504d762d4\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:03] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"52d58fe6-511d-4783-83d2-2cd095621565\",\"trace_id\":\"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12\"}\n[2026-05-27 12:56:03] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {\"count\":0} {\"correlation_id\":\"52d58fe6-511d-4783-83d2-2cd095621565\",\"trace_id\":\"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12\"}\n[2026-05-27 12:56:03] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"52d58fe6-511d-4783-83d2-2cd095621565\",\"trace_id\":\"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12\"}\n[2026-05-27 12:56:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1\",\"trace_id\":\"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4\"}\n[2026-05-27 12:56:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1\",\"trace_id\":\"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4\"}\n[2026-05-27 12:56:06] local.NOTICE: Monitoring start {\"correlation_id\":\"dc41678d-bf39-4a6e-870f-d38c97eff1c3\",\"trace_id\":\"10976781-275a-4aee-a84d-b6fa96ad2602\"}\n[2026-05-27 12:56:06] local.NOTICE: Monitoring end {\"correlation_id\":\"dc41678d-bf39-4a6e-870f-d38c97eff1c3\",\"trace_id\":\"10976781-275a-4aee-a84d-b6fa96ad2602\"}\n[2026-05-27 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"45813b78-011b-4ba5-8928-5a82bdd9f4ab\",\"trace_id\":\"f88e2e25-2c4f-4690-a49b-ccc8fb856866\"}\n[2026-05-27 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"45813b78-011b-4ba5-8928-5a82bdd9f4ab\",\"trace_id\":\"f88e2e25-2c4f-4690-a49b-ccc8fb856866\"}\n[2026-05-27 12:56:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:09] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:09] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:11] local.INFO: Running conference:monitor:count command for activities in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:11] local.INFO: [conference:monitor:count] No activities found in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"aab715c2-fbe0-4a65-9292-b2b218775424\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"aab715c2-fbe0-4a65-9292-b2b218775424\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":24777784,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":1,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0.28} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [HubSpot] Synced opportunities {\"team\":2,\"strategies\":\"lastModified\",\"sync_count\":0,\"total\":0,\"last_synced_id\":null,\"duration_ms\":286.56} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1417.45,\"usage\":25188000,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25162720,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":28.83,\"usage\":25162928,\"real_usage\":65011712,\"pid\":42210,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25120440,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":50.47,\"usage\":25140104,\"real_usage\":65011712,\"pid\":42210,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25100792,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":61.91,\"usage\":25136552,\"real_usage\":65011712,\"pid\":42210,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"8adbd852-a071-43d7-9393-80d2ceb0461e\",\"trace_id\":\"f2fefab6-f987-4a8d-8ba9-98e358be3479\"}\n[2026-05-27 12:56:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"8adbd852-a071-43d7-9393-80d2ceb0461e\",\"trace_id\":\"f2fefab6-f987-4a8d-8ba9-98e358be3479\"}\n[2026-05-27 12:56:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:19] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:19] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"cf9cc0f9-72df-468a-9dfd-7419e132cd3c\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"cf9cc0f9-72df-468a-9dfd-7419e132cd3c\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"cf9cc0f9-72df-468a-9dfd-7419e132cd3c\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"641f1acb-16b8-42d1-8726-df52979dad0e\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1500,\"sociable_id\":143,\"provider_user_id\":\"0052g000003frelAAA\",\"expires\":null,\"refresh_token_expires\":null,\"provider\":\"salesforce\",\"state\":\"full-refresh\",\"auth_scope\":\"refresh_token web api\",\"retry_after\":null,\"created_at\":\"2026-02-06 08:39:03\",\"updated_at\":\"2026-05-14 09:46:30\"}}} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":143,\"team_id\":1} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.ERROR: Failed to set service context for google: Your Salesforce account has become disconnected. Please login to Jiminny to reconnect. {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}","role_description":"text entry area","is_enabled":true,"is_focused":true,"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},{"role":"AXStaticText","text":"app ~/jiminny/app, folder","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".circleci, folder","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"backend-code, folder","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".env.staging","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dockerfile","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"start.sh","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"frontend-code","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"worker-code","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"worker-video-code","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"config.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"config_continue.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"subenv_to_branch_map","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"workflows_prod.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"workflows_qa.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"}]...
|
-7116558536416563733
|
-2921165101966234307
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
108
Previous Highlighted Error
Next Highlighted Error
[2026-05-27 12:55:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"41d4bbce-5baf-49aa-a276-c1c74a65020a","trace_id":"1d0d4404-bf0a-4053-84ca-68be39511779"}
[2026-05-27 12:55:12] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {"count":0} {"correlation_id":"41d4bbce-5baf-49aa-a276-c1c74a65020a","trace_id":"1d0d4404-bf0a-4053-84ca-68be39511779"}
[2026-05-27 12:55:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"41d4bbce-5baf-49aa-a276-c1c74a65020a","trace_id":"1d0d4404-bf0a-4053-84ca-68be39511779"}
[2026-05-27 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d","trace_id":"aedb441d-c947-4f26-a1cd-056e48b6f5ed"}
[2026-05-27 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d","trace_id":"aedb441d-c947-4f26-a1cd-056e48b6f5ed"}
[2026-05-27 12:55:15] local.NOTICE: Monitoring start {"correlation_id":"56b0df60-e16c-4c60-a577-f394e33e2ddc","trace_id":"ba2c277f-5516-49b6-854a-b4f446a1cb6c"}
[2026-05-27 12:55:15] local.NOTICE: Monitoring end {"correlation_id":"56b0df60-e16c-4c60-a577-f394e33e2ddc","trace_id":"ba2c277f-5516-49b6-854a-b4f446a1cb6c"}
[2026-05-27 12:55:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"3b3db768-2cbe-4893-a39d-39c1ed923f29","trace_id":"dedb9613-95f2-47d1-a51b-82fff1514a22"}
[2026-05-27 12:55:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"3b3db768-2cbe-4893-a39d-39c1ed923f29","trace_id":"dedb9613-95f2-47d1-a51b-82fff1514a22"}
[2026-05-27 12:55:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:18] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:18] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"5e1f4a28-d081-4c59-8d76-a116dadc701e","trace_id":"b7e8d289-707b-47c1-9d6c-f47ebad1e01b"}
[2026-05-27 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"5e1f4a28-d081-4c59-8d76-a116dadc701e","trace_id":"b7e8d289-707b-47c1-9d6c-f47ebad1e01b"}
[2026-05-27 12:55:21] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:21] local.INFO: [TextRelayService] Starting sync {"mailbox":"[EMAIL]","expected_alias":"catch-all","expected_host":"txt.staging.jiminny.com"} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:22] local.INFO: [TextRelayService] Sync completed {"mailbox":"[EMAIL]","messages_processed":0,"message_ids":[]} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"87e0c627-3642-4d17-bf25-264f6fdc1969","trace_id":"3b555fb3-83d8-4284-bb7c-0f783b4ed083"}
[2026-05-27 12:55:25] local.INFO: Running pre-meeting notification command {"correlation_id":"87e0c627-3642-4d17-bf25-264f6fdc1969","trace_id":"3b555fb3-83d8-4284-bb7c-0f783b4ed083"}
[2026-05-27 12:55:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"87e0c627-3642-4d17-bf25-264f6fdc1969","trace_id":"3b555fb3-83d8-4284-bb7c-0f783b4ed083"}
[2026-05-27 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:28] local.INFO: Running conference:monitor:start command for activities in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:28] local.INFO: [conference:monitor:start] No activities found in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:38] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:38] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:38] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:38] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"85c09ea4-f8d1-4cc2-b767-a5f2d957d016","trace_id":"4fe5a8fa-1ac5-407c-926c-83f504d762d4"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"6e057ca5-65bf-41f6-b8af-08e715bc654d","trace_id":"6aea00b5-6221-4847-8961-7a86ef3210cd"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"6e057ca5-65bf-41f6-b8af-08e715bc654d","trace_id":"6aea00b5-6221-4847-8961-7a86ef3210cd"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-27T12:57:45.940375Z"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"85c09ea4-f8d1-4cc2-b767-a5f2d957d016","trace_id":"4fe5a8fa-1ac5-407c-926c-83f504d762d4"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:03] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"52d58fe6-511d-4783-83d2-2cd095621565","trace_id":"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12"}
[2026-05-27 12:56:03] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {"count":0} {"correlation_id":"52d58fe6-511d-4783-83d2-2cd095621565","trace_id":"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12"}
[2026-05-27 12:56:03] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"52d58fe6-511d-4783-83d2-2cd095621565","trace_id":"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12"}
[2026-05-27 12:56:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1","trace_id":"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4"}
[2026-05-27 12:56:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1","trace_id":"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4"}
[2026-05-27 12:56:06] local.NOTICE: Monitoring start {"correlation_id":"dc41678d-bf39-4a6e-870f-d38c97eff1c3","trace_id":"10976781-275a-4aee-a84d-b6fa96ad2602"}
[2026-05-27 12:56:06] local.NOTICE: Monitoring end {"correlation_id":"dc41678d-bf39-4a6e-870f-d38c97eff1c3","trace_id":"10976781-275a-4aee-a84d-b6fa96ad2602"}
[2026-05-27 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"45813b78-011b-4ba5-8928-5a82bdd9f4ab","trace_id":"f88e2e25-2c4f-4690-a49b-ccc8fb856866"}
[2026-05-27 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"45813b78-011b-4ba5-8928-5a82bdd9f4ab","trace_id":"f88e2e25-2c4f-4690-a49b-ccc8fb856866"}
[2026-05-27 12:56:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:09] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:09] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:11] local.INFO: Running conference:monitor:count command for activities in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:11] local.INFO: [conference:monitor:count] No activities found in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"aab715c2-fbe0-4a65-9292-b2b218775424","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"aab715c2-fbe0-4a65-9292-b2b218775424","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SyncHubspotObjects] Starting sync {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","usage":24777784,"real_usage":65011712,"pid":42210} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1499,"provider":"hubspot","refreshToken":"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86","state":"connected"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [SocialAccountService] Token refreshed {"socialAccountId":1499,"provider":"hubspot","state":"connected"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {"team":2} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/deals/search","total_requests":1,"total_records_fetched":0,"total_elapsed_seconds":0.28,"average_seconds_per_request":0.28} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [HubSpot] Synced opportunities {"team":2,"strategies":"lastModified","sync_count":0,"total":0,"last_synced_id":null,"duration_ms":286.56} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","provider":"hubspot","status":"completed","duration_ms":1417.45,"usage":25188000,"real_usage":65011712,"pid":42210} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","usage":25162720,"real_usage":65011712,"pid":42210} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {"userId":"33e34a7a-1c02-4f04-87ac-22c3a385e6e3","account":{"Jiminny\\Models\\SocialAccount":{"id":306,"sociable_id":109,"provider_user_id":"11348452","expires":1701077403,"refresh_token_expires":null,"provider":"hubspot","state":"full-refresh","auth_scope":null,"retry_after":null,"created_at":"2020-09-01 16:59:04","updated_at":"2023-11-27 09:30:03"}}} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":109,"team_id":29} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","provider":"hubspot","status":"disconnected","duration_ms":28.83,"usage":25162928,"real_usage":65011712,"pid":42210,"reason":"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","usage":25120440,"real_usage":65011712,"pid":42210} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {"userId":"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b","account":null} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":130,"team_id":42} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","provider":"hubspot","status":"disconnected","duration_ms":50.47,"usage":25140104,"real_usage":65011712,"pid":42210,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","usage":25100792,"real_usage":65011712,"pid":42210} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {"userId":"71e3aac5-fb66-47c5-a236-2d051ae3e319","account":null} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":256,"team_id":49} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","provider":"hubspot","status":"disconnected","duration_ms":61.91,"usage":25136552,"real_usage":65011712,"pid":42210,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"8adbd852-a071-43d7-9393-80d2ceb0461e","trace_id":"f2fefab6-f987-4a8d-8ba9-98e358be3479"}
[2026-05-27 12:56:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"8adbd852-a071-43d7-9393-80d2ceb0461e","trace_id":"f2fefab6-f987-4a8d-8ba9-98e358be3479"}
[2026-05-27 12:56:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:19] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:19] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {"inbox_id":59} {"correlation_id":"cf9cc0f9-72df-468a-9dfd-7419e132cd3c","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {"correlation_id":"cf9cc0f9-72df-468a-9dfd-7419e132cd3c","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":59} {"correlation_id":"cf9cc0f9-72df-468a-9dfd-7419e132cd3c","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {"inbox_id":212} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.WARNING: [Salesforce] Account not connected for user {"userId":"641f1acb-16b8-42d1-8726-df52979dad0e","account":{"Jiminny\\Models\\SocialAccount":{"id":1500,"sociable_id":143,"provider_user_id":"0052g000003frelAAA","expires":null,"refresh_token_expires":null,"provider":"salesforce","state":"full-refresh","auth_scope":"refresh_token web api","retry_after":null,"created_at":"2026-02-06 08:39:03","updated_at":"2026-05-14 09:46:30"}}} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"salesforce","crm_owner":143,"team_id":1} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.ERROR: Failed to set service context for google: Your Salesforce account has become disconnected. Please login to Jiminny to reconnect. {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":212} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide
app ~/jiminny/app, folder
.circleci, folder
backend-code, folder
.env.staging
Dockerfile
start.sh
frontend-code
worker-code
worker-video-code
config.yml, YAML file
config_continue.yml, YAML file
subenv_to_branch_map
workflows_prod.yml, YAML file
workflows_qa.yml, YAML file...
|
78723
|
NULL
|
NULL
|
NULL
|
|
78725
|
2763
|
27
|
2026-05-27T12:56:36.791047+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886596791_m1.jpg...
|
PhpStorm
|
faVsco.js – custom.log
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
108
Previous Highlighted Error
Next Highlighted Error...
|
[{"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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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":"TextRelayServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'TextRelayServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'TextRelayServiceTest'","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":"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,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","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\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\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":"108","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}]...
|
5035782338932105749
|
-6434304657575212149
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
108
Previous Highlighted Error
Next Highlighted Error...
|
78724
|
NULL
|
NULL
|
NULL
|
|
78724
|
2763
|
26
|
2026-05-27T12:56:35.830015+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886595830_m1.jpg...
|
PhpStorm
|
faVsco.js – custom.log
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
6
Previous Highlighted Error
Next Highlighted Error
Editor for custom.log
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide
app ~/jiminny/app, folder
.circleci, folder
backend-code, folder
.env.staging
Dockerfile
start.sh
frontend-code
worker-code
worker-video-code
config.yml, YAML file
config_continue.yml, YAML file
subenv_to_branch_map
workflows_prod.yml, YAML file
workflows_qa.yml, YAML file
workflows_qai.yml, YAML file
workflows_staging.yml, YAML file
workflows_subenv.yml, YAML file
.cursor
.github
.sonarlint
.vscode
.windsurf
app, sources root
Actions
Component
Acl, folder
ActionItems, folder
Activity, folder
ActivityAnalytics, folder
ActivitySearch, folder
AiActivityType, folder
AiAutomation, folder
AiCallScoring, folder
AskAnything, folder
Dtos, folder
Events, folder
AskAnythingPromptService.php, class
HistoryService.php, class
AskJiminnyAi, folder
AWS, folder
BillingManagement, folder
Cache, folder
CoachingFeedback, folder
Country, folder
CustomerApi, folder
Database, folder
Datadog, folder
DateTime, folder
DealInsights, folder
DealRisks, folder
ElasticSearch, folder
Eloquent, folder
Encoding, folder
Encryption, folder
ES, folder
Faker, folder
FeatureFlags, folder
FFMpeg, folder
FileSystem, folder
Gecko, folder
Gong, folder
GuzzleHttp, folder
KeyPoints, folder
Kiosk, folder
LanguageDetection, folder...
|
[{"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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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":"TextRelayServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'TextRelayServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'TextRelayServiceTest'","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":"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,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","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\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\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,"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":"Editor for custom.log","depth":4,"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":true,"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},{"role":"AXStaticText","text":"app ~/jiminny/app, folder","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".circleci, folder","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"backend-code, folder","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".env.staging","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dockerfile","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"start.sh","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"frontend-code","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"worker-code","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"worker-video-code","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"config.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"config_continue.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"subenv_to_branch_map","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"workflows_prod.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"workflows_qa.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"workflows_qai.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"workflows_staging.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"workflows_subenv.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".cursor","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".github","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".sonarlint","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".vscode","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".windsurf","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"app, sources root","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Actions","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Component","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Acl, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ActionItems, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Activity, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ActivityAnalytics, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ActivitySearch, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AiActivityType, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AiAutomation, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AiCallScoring, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AskAnything, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dtos, folder","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Events, folder","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AskAnythingPromptService.php, class","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HistoryService.php, class","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AskJiminnyAi, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AWS, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"BillingManagement, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Cache, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"CoachingFeedback, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Country, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"CustomerApi, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Database, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Datadog, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"DateTime, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"DealInsights, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"DealRisks, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ElasticSearch, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Eloquent, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Encoding, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Encryption, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ES, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Faker, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"FeatureFlags, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"FFMpeg, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"FileSystem, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Gecko, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Gong, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"GuzzleHttp, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KeyPoints, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Kiosk, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"LanguageDetection, folder","depth":9,"on_screen":false,"role_description":"text"}]...
|
-4538651910930564120
|
-1250714193234720373
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
6
Previous Highlighted Error
Next Highlighted Error
Editor for custom.log
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide
app ~/jiminny/app, folder
.circleci, folder
backend-code, folder
.env.staging
Dockerfile
start.sh
frontend-code
worker-code
worker-video-code
config.yml, YAML file
config_continue.yml, YAML file
subenv_to_branch_map
workflows_prod.yml, YAML file
workflows_qa.yml, YAML file
workflows_qai.yml, YAML file
workflows_staging.yml, YAML file
workflows_subenv.yml, YAML file
.cursor
.github
.sonarlint
.vscode
.windsurf
app, sources root
Actions
Component
Acl, folder
ActionItems, folder
Activity, folder
ActivityAnalytics, folder
ActivitySearch, folder
AiActivityType, folder
AiAutomation, folder
AiCallScoring, folder
AskAnything, folder
Dtos, folder
Events, folder
AskAnythingPromptService.php, class
HistoryService.php, class
AskJiminnyAi, folder
AWS, folder
BillingManagement, folder
Cache, folder
CoachingFeedback, folder
Country, folder
CustomerApi, folder
Database, folder
Datadog, folder
DateTime, folder
DealInsights, folder
DealRisks, folder
ElasticSearch, folder
Eloquent, folder
Encoding, folder
Encryption, folder
ES, folder
Faker, folder
FeatureFlags, folder
FFMpeg, folder
FileSystem, folder
Gecko, folder
Gong, folder
GuzzleHttp, folder
KeyPoints, folder
Kiosk, folder
LanguageDetection, folder...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
78723
|
2764
|
28
|
2026-05-27T12:56:35.631818+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886595631_m2.jpg...
|
PhpStorm
|
faVsco.js – custom.log
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
6
Previous Highlighted Error
Next Highlighted Error
Editor for custom.log
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide
app ~/jiminny/app, folder
.circleci, folder
backend-code, folder
.env.staging
Dockerfile
start.sh
frontend-code
worker-code
worker-video-code
config.yml, YAML file
config_continue.yml, YAML file
subenv_to_branch_map
workflows_prod.yml, YAML file
workflows_qa.yml, YAML file
workflows_qai.yml, YAML file
workflows_staging.yml, YAML file
workflows_subenv.yml, YAML file
.cursor
.github
.sonarlint
.vscode
.windsurf...
|
[{"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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.09740692,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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.8374335,"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":"TextRelayServiceTest","depth":6,"bounds":{"left":0.85272604,"top":0.019952115,"width":0.062832445,"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 'TextRelayServiceTest'","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 'TextRelayServiceTest'","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":"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.37632978,"top":0.10055866,"width":0.00731383,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","depth":4,"bounds":{"left":0.3856383,"top":0.10055866,"width":0.009640957,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.39694148,"top":0.09896249,"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.40425533,"top":0.09896249,"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\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\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.7293883,"top":0.10055866,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.7390292,"top":0.09896249,"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.7463431,"top":0.09896249,"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":"Editor for custom.log","depth":4,"bounds":{"left":0.43051863,"top":0.09736632,"width":0.32280585,"height":0.8818835},"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":true,"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},{"role":"AXStaticText","text":"app ~/jiminny/app, folder","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".circleci, folder","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"backend-code, folder","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".env.staging","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dockerfile","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"start.sh","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"frontend-code","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"worker-code","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"worker-video-code","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"config.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"config_continue.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"subenv_to_branch_map","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"workflows_prod.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"workflows_qa.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"workflows_qai.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"workflows_staging.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"workflows_subenv.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".cursor","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".github","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".sonarlint","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".vscode","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".windsurf","depth":7,"on_screen":false,"role_description":"text"}]...
|
-755122716377735253
|
-1827192610738501205
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
6
Previous Highlighted Error
Next Highlighted Error
Editor for custom.log
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide
app ~/jiminny/app, folder
.circleci, folder
backend-code, folder
.env.staging
Dockerfile
start.sh
frontend-code
worker-code
worker-video-code
config.yml, YAML file
config_continue.yml, YAML file
subenv_to_branch_map
workflows_prod.yml, YAML file
workflows_qa.yml, YAML file
workflows_qai.yml, YAML file
workflows_staging.yml, YAML file
workflows_subenv.yml, YAML file
.cursor
.github
.sonarlint
.vscode
.windsurf...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
78722
|
2763
|
25
|
2026-05-27T12:56:34.724714+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886594724_m1.jpg...
|
PhpStorm
|
faVsco.js – custom.log
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
6
Previous Highlighted Error
Next Highlighted Error
"dealstage": {
"value": "closedlost",
"timestamp": 1778230152543, # 2026-05-08 08:49:12
"source": "CRM_UI",
"sourceId": "userId:71523846",
"updatedByUserId": 71523846,
"versions": [
{
"name": "dealstage",
"value": "closedlost",
"timestamp": 1778230152543, # 2026-05-08 08:49:12
"sourceId": "userId:71523846",
"source": "CRM_UI",
"sourceVid": [],
"requestId": "019e06c6-cd38-76f4-ae81-2d85ca04a72c",
"updatedByUserId": 71523846,
"useTimestampAsPersistenceTimestamp": true,
"sourceUpstreamDeployable": "InboundDbObjects-Service-web"
},
{
"name": "dealstage",
"value": "735341516",
"timestamp": 1773305812311, # 2026-03-12 08:56:52
"sourceId": "userId:76091797",
"source": "CRM_UI",
"sourceVid": [],
"requestId": "019ce143-5502-7857-86c1-e4699e3d745d",
"updatedByUserId": 76091797,
"useTimestampAsPersistenceTimestamp": true,
"sourceUpstreamDeployable": "CrmObjectBuilderRpcServer-userweb"
}
]
},
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide
app ~/jiminny/app, folder
.circleci, folder
backend-code, folder
.env.staging
Dockerfile
start.sh
frontend-code
worker-code
worker-video-code
config.yml, YAML file
config_continue.yml, YAML file
subenv_to_branch_map
workflows_prod.yml, YAML file
workflows_qa.yml, YAML file
workflows_qai.yml, YAML file
workflows_staging.yml, YAML file
workflows_subenv.yml, YAML file
.cursor
.github
.sonarlint
.vscode
.windsurf
app, sources root
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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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":"TextRelayServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'TextRelayServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'TextRelayServiceTest'","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":"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,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","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\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\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,"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":"\"dealstage\": {\n \"value\": \"closedlost\",\n \"timestamp\": 1778230152543, # 2026-05-08 08:49:12\n \"source\": \"CRM_UI\",\n \"sourceId\": \"userId:71523846\",\n \"updatedByUserId\": 71523846,\n \"versions\": [\n {\n \"name\": \"dealstage\",\n \"value\": \"closedlost\",\n \"timestamp\": 1778230152543, # 2026-05-08 08:49:12\n \"sourceId\": \"userId:71523846\",\n \"source\": \"CRM_UI\",\n \"sourceVid\": [],\n \"requestId\": \"019e06c6-cd38-76f4-ae81-2d85ca04a72c\",\n \"updatedByUserId\": 71523846,\n \"useTimestampAsPersistenceTimestamp\": true,\n \"sourceUpstreamDeployable\": \"InboundDbObjects-Service-web\"\n },\n {\n \"name\": \"dealstage\",\n \"value\": \"735341516\",\n \"timestamp\": 1773305812311, # 2026-03-12 08:56:52\n \"sourceId\": \"userId:76091797\",\n \"source\": \"CRM_UI\",\n \"sourceVid\": [],\n \"requestId\": \"019ce143-5502-7857-86c1-e4699e3d745d\",\n \"updatedByUserId\": 76091797,\n \"useTimestampAsPersistenceTimestamp\": true,\n \"sourceUpstreamDeployable\": \"CrmObjectBuilderRpcServer-userweb\"\n }\n ]\n},","depth":4,"on_screen":true,"value":"\"dealstage\": {\n \"value\": \"closedlost\",\n \"timestamp\": 1778230152543, # 2026-05-08 08:49:12\n \"source\": \"CRM_UI\",\n \"sourceId\": \"userId:71523846\",\n \"updatedByUserId\": 71523846,\n \"versions\": [\n {\n \"name\": \"dealstage\",\n \"value\": \"closedlost\",\n \"timestamp\": 1778230152543, # 2026-05-08 08:49:12\n \"sourceId\": \"userId:71523846\",\n \"source\": \"CRM_UI\",\n \"sourceVid\": [],\n \"requestId\": \"019e06c6-cd38-76f4-ae81-2d85ca04a72c\",\n \"updatedByUserId\": 71523846,\n \"useTimestampAsPersistenceTimestamp\": true,\n \"sourceUpstreamDeployable\": \"InboundDbObjects-Service-web\"\n },\n {\n \"name\": \"dealstage\",\n \"value\": \"735341516\",\n \"timestamp\": 1773305812311, # 2026-03-12 08:56:52\n \"sourceId\": \"userId:76091797\",\n \"source\": \"CRM_UI\",\n \"sourceVid\": [],\n \"requestId\": \"019ce143-5502-7857-86c1-e4699e3d745d\",\n \"updatedByUserId\": 76091797,\n \"useTimestampAsPersistenceTimestamp\": true,\n \"sourceUpstreamDeployable\": \"CrmObjectBuilderRpcServer-userweb\"\n }\n ]\n},","role_description":"text entry area","is_enabled":true,"is_focused":true,"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},{"role":"AXStaticText","text":"app ~/jiminny/app, folder","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".circleci, folder","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"backend-code, folder","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".env.staging","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dockerfile","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"start.sh","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"frontend-code","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"worker-code","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"worker-video-code","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"config.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"config_continue.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"subenv_to_branch_map","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"workflows_prod.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"workflows_qa.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"workflows_qai.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"workflows_staging.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"workflows_subenv.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".cursor","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".github","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".sonarlint","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".vscode","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".windsurf","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"app, sources root","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Actions","depth":8,"on_screen":false,"role_description":"text"}]...
|
-1850671007154827527
|
-1971307730094880373
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
6
Previous Highlighted Error
Next Highlighted Error
"dealstage": {
"value": "closedlost",
"timestamp": 1778230152543, # 2026-05-08 08:49:12
"source": "CRM_UI",
"sourceId": "userId:71523846",
"updatedByUserId": 71523846,
"versions": [
{
"name": "dealstage",
"value": "closedlost",
"timestamp": 1778230152543, # 2026-05-08 08:49:12
"sourceId": "userId:71523846",
"source": "CRM_UI",
"sourceVid": [],
"requestId": "019e06c6-cd38-76f4-ae81-2d85ca04a72c",
"updatedByUserId": 71523846,
"useTimestampAsPersistenceTimestamp": true,
"sourceUpstreamDeployable": "InboundDbObjects-Service-web"
},
{
"name": "dealstage",
"value": "735341516",
"timestamp": 1773305812311, # 2026-03-12 08:56:52
"sourceId": "userId:76091797",
"source": "CRM_UI",
"sourceVid": [],
"requestId": "019ce143-5502-7857-86c1-e4699e3d745d",
"updatedByUserId": 76091797,
"useTimestampAsPersistenceTimestamp": true,
"sourceUpstreamDeployable": "CrmObjectBuilderRpcServer-userweb"
}
]
},
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide
app ~/jiminny/app, folder
.circleci, folder
backend-code, folder
.env.staging
Dockerfile
start.sh
frontend-code
worker-code
worker-video-code
config.yml, YAML file
config_continue.yml, YAML file
subenv_to_branch_map
workflows_prod.yml, YAML file
workflows_qa.yml, YAML file
workflows_qai.yml, YAML file
workflows_staging.yml, YAML file
workflows_subenv.yml, YAML file
.cursor
.github
.sonarlint
.vscode
.windsurf
app, sources root
Actions...
|
78720
|
NULL
|
NULL
|
NULL
|
|
78721
|
2764
|
27
|
2026-05-27T12:56:34.624150+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886594624_m2.jpg...
|
PhpStorm
|
faVsco.js – laravel.log
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
6
Previous 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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.09740692,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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.8374335,"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":"TextRelayServiceTest","depth":6,"bounds":{"left":0.85272604,"top":0.019952115,"width":0.062832445,"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 'TextRelayServiceTest'","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 'TextRelayServiceTest'","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":"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.37632978,"top":0.10055866,"width":0.00731383,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","depth":4,"bounds":{"left":0.3856383,"top":0.10055866,"width":0.009640957,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.39694148,"top":0.09896249,"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.40425533,"top":0.09896249,"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\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\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":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.7390292,"top":0.09896249,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
5361353910361124162
|
-6438807707444672117
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
6
Previous Highlighted Error...
|
78719
|
NULL
|
NULL
|
NULL
|
|
78720
|
2763
|
24
|
2026-05-27T12:56:33.342345+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886593342_m1.jpg...
|
PhpStorm
|
faVsco.js – laravel.log
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
[2026-05-27 12:55:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"41d4bbce-5baf-49aa-a276-c1c74a65020a","trace_id":"1d0d4404-bf0a-4053-84ca-68be39511779"}
[2026-05-27 12:55:12] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {"count":0} {"correlation_id":"41d4bbce-5baf-49aa-a276-c1c74a65020a","trace_id":"1d0d4404-bf0a-4053-84ca-68be39511779"}
[2026-05-27 12:55:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"41d4bbce-5baf-49aa-a276-c1c74a65020a","trace_id":"1d0d4404-bf0a-4053-84ca-68be39511779"}
[2026-05-27 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d","trace_id":"aedb441d-c947-4f26-a1cd-056e48b6f5ed"}
[2026-05-27 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d","trace_id":"aedb441d-c947-4f26-a1cd-056e48b6f5ed"}
[2026-05-27 12:55:15] local.NOTICE: Monitoring start {"correlation_id":"56b0df60-e16c-4c60-a577-f394e33e2ddc","trace_id":"ba2c277f-5516-49b6-854a-b4f446a1cb6c"}
[2026-05-27 12:55:15] local.NOTICE: Monitoring end {"correlation_id":"56b0df60-e16c-4c60-a577-f394e33e2ddc","trace_id":"ba2c277f-5516-49b6-854a-b4f446a1cb6c"}
[2026-05-27 12:55:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"3b3db768-2cbe-4893-a39d-39c1ed923f29","trace_id":"dedb9613-95f2-47d1-a51b-82fff1514a22"}
[2026-05-27 12:55:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"3b3db768-2cbe-4893-a39d-39c1ed923f29","trace_id":"dedb9613-95f2-47d1-a51b-82fff1514a22"}
[2026-05-27 12:55:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:18] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:18] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"5e1f4a28-d081-4c59-8d76-a116dadc701e","trace_id":"b7e8d289-707b-47c1-9d6c-f47ebad1e01b"}
[2026-05-27 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"5e1f4a28-d081-4c59-8d76-a116dadc701e","trace_id":"b7e8d289-707b-47c1-9d6c-f47ebad1e01b"}
[2026-05-27 12:55:21] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:21] local.INFO: [TextRelayService] Starting sync {"mailbox":"[EMAIL]","expected_alias":"catch-all","expected_host":"txt.staging.jiminny.com"} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:22] local.INFO: [TextRelayService] Sync completed {"mailbox":"[EMAIL]","messages_processed":0,"message_ids":[]} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"87e0c627-3642-4d17-bf25-264f6fdc1969","trace_id":"3b555fb3-83d8-4284-bb7c-0f783b4ed083"}
[2026-05-27 12:55:25] local.INFO: Running pre-meeting notification command {"correlation_id":"87e0c627-3642-4d17-bf25-264f6fdc1969","trace_id":"3b555fb3-83d8-4284-bb7c-0f783b4ed083"}
[2026-05-27 12:55:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"87e0c627-3642-4d17-bf25-264f6fdc1969","trace_id":"3b555fb3-83d8-4284-bb7c-0f783b4ed083"}
[2026-05-27 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:28] local.INFO: Running conference:monitor:start command for activities in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:28] local.INFO: [conference:monitor:start] No activities found in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:38] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:38] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:38] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:38] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"85c09ea4-f8d1-4cc2-b767-a5f2d957d016","trace_id":"4fe5a8fa-1ac5-407c-926c-83f504d762d4"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"6e057ca5-65bf-41f6-b8af-08e715bc654d","trace_id":"6aea00b5-6221-4847-8961-7a86ef3210cd"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"6e057ca5-65bf-41f6-b8af-08e715bc654d","trace_id":"6aea00b5-6221-4847-8961-7a86ef3210cd"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-27T12:57:45.940375Z"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"85c09ea4-f8d1-4cc2-b767-a5f2d957d016","trace_id":"4fe5a8fa-1ac5-407c-926c-83f504d762d4"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:03] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"52d58fe6-511d-4783-83d2-2cd095621565","trace_id":"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12"}
[2026-05-27 12:56:03] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {"count":0} {"correlation_id":"52d58fe6-511d-4783-83d2-2cd095621565","trace_id":"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12"}
[2026-05-27 12:56:03] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"52d58fe6-511d-4783-83d2-2cd095621565","trace_id":"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12"}
[2026-05-27 12:56:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1","trace_id":"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4"}
[2026-05-27 12:56:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1","trace_id":"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4"}
[2026-05-27 12:56:06] local.NOTICE: Monitoring start {"correlation_id":"dc41678d-bf39-4a6e-870f-d38c97eff1c3","trace_id":"10976781-275a-4aee-a84d-b6fa96ad2602"}
[2026-05-27 12:56:06] local.NOTICE: Monitoring end {"correlation_id":"dc41678d-bf39-4a6e-870f-d38c97eff1c3","trace_id":"10976781-275a-4aee-a84d-b6fa96ad2602"}
[2026-05-27 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"45813b78-011b-4ba5-8928-5a82bdd9f4ab","trace_id":"f88e2e25-2c4f-4690-a49b-ccc8fb856866"}
[2026-05-27 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"45813b78-011b-4ba5-8928-5a82bdd9f4ab","trace_id":"f88e2e25-2c4f-4690-a49b-ccc8fb856866"}
[2026-05-27 12:56:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:09] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:09] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:11] local.INFO: Running conference:monitor:count command for activities in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:11] local.INFO: [conference:monitor:count] No activities found in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"aab715c2-fbe0-4a65-9292-b2b218775424","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"aab715c2-fbe0-4a65-9292-b2b218775424","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SyncHubspotObjects] Starting sync {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","usage":24777784,"real_usage":65011712,"pid":42210} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1499,"provider":"hubspot","refreshToken":"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86","state":"connected"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [SocialAccountService] Token refreshed {"socialAccountId":1499,"provider":"hubspot","state":"connected"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {"team":2} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/deals/search","total_requests":1,"total_records_fetched":0,"total_elapsed_seconds":0.28,"average_seconds_per_request":0.28} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [HubSpot] Synced opportunities {"team":2,"strategies":"lastModified","sync_count":0,"total":0,"last_synced_id":null,"duration_ms":286.56} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","provider":"hubspot","status":"completed","duration_ms":1417.45,"usage":25188000,"real_usage":65011712,"pid":42210} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","usage":25162720,"real_usage":65011712,"pid":42210} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {"userId":"33e34a7a-1c02-4f04-87ac-22c3a385e6e3","account":{"Jiminny\\Models\\SocialAccount":{"id":306,"sociable_id":109,"provider_user_id":"11348452","expires":1701077403,"refresh_token_expires":null,"provider":"hubspot","state":"full-refresh","auth_scope":null,"retry_after":null,"created_at":"2020-09-01 16:59:04","updated_at":"2023-11-27 09:30:03"}}} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":109,"team_id":29} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","provider":"hubspot","status":"disconnected","duration_ms":28.83,"usage":25162928,"real_usage":65011712,"pid":42210,"reason":"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","usage":25120440,"real_usage":65011712,"pid":42210} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {"userId":"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b","account":null} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":130,"team_id":42} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","provider":"hubspot","status":"disconnected","duration_ms":50.47,"usage":25140104,"real_usage":65011712,"pid":42210,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","usage":25100792,"real_usage":65011712,"pid":42210} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {"userId":"71e3aac5-fb66-47c5-a236-2d051ae3e319","account":null} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":256,"team_id":49} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","provider":"hubspot","status":"disconnected","duration_ms":61.91,"usage":25136552,"real_usage":65011712,"pid":42210,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"8adbd852-a071-43d7-9393-80d2ceb0461e","trace_id":"f2fefab6-f987-4a8d-8ba9-98e358be3479"}
[2026-05-27 12:56:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"8adbd852-a071-43d7-9393-80d2ceb0461e","trace_id":"f2fefab6-f987-4a8d-8ba9-98e358be3479"}
[2026-05-27 12:56:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:19] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:19] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {"inbox_id":59} {"correlation_id":"cf9cc0f9-72df-468a-9dfd-7419e132cd3c","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {"correlation_id":"cf9cc0f9-72df-468a-9dfd-7419e132cd3c","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":59} {"correlation_id":"cf9cc0f9-72df-468a-9dfd-7419e132cd3c","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {"inbox_id":212} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.WARNING: [Salesforce] Account not connected for user {"userId":"641f1acb-16b8-42d1-8726-df52979dad0e","account":{"Jiminny\\Models\\SocialAccount":{"id":1500,"sociable_id":143,"provider_user_id":"0052g000003frelAAA","expires":null,"refresh_token_expires":null,"provider":"salesforce","state":"full-refresh","auth_scope":"refresh_token web api","retry_after":null,"created_at":"2026-02-06 08:39:03","updated_at":"2026-05-14 09:46:30"}}} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"salesforce","crm_owner":143,"team_id":1} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.ERROR: Failed to set service context for google: Your Salesforce account has become disconnected. Please login to Jiminny to reconnect. {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":212} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide
app ~/jiminny/app, folder
.circleci, folder
backend-code, folder
.env.staging
Dockerfile
start.sh
frontend-code
worker-code
worker-video-code
config.yml, YAML file
config_continue.yml, YAML file
subenv_to_branch_map
workflows_prod.yml, YAML file
workflows_qa.yml, YAML file
workflows_qai.yml, YAML file
workflows_staging.yml, YAML file
workflows_subenv.yml, YAML file
.cursor
.github
.sonarlint
.vscode
.windsurf
app, sources root
Actions
Component
Acl, folder
ActionItems, folder
Activity, folder
ActivityAnalytics, folder
ActivitySearch, folder
AiActivityType, folder
AiAutomation, folder
AiCallScoring, folder
AskAnything, folder
Dtos, folder
Events, folder
AskAnythingPromptService.php, class
HistoryService.php, class
AskJiminnyAi, folder
AWS, folder
BillingManagement, folder
Cache, folder
CoachingFeedback, folder
Country, folder
CustomerApi, folder
Database, folder
Datadog, folder
DateTime, folder
DealInsights, folder
DealRisks, folder
ElasticSearch, folder
Eloquent, folder
Encoding, folder
Encryption, folder
ES, folder
Faker, folder
FeatureFlags, folder
FFMpeg, folder
FileSystem, folder
Gecko, folder
Gong, folder
GuzzleHttp, folder
KeyPoints, folder
Kiosk, folder
LanguageDetection, folder
LiveFeed, folder
Locks, folder
Math, folder
MediaPipeline, folder
MeetingBot, folder
MobileSettings, folder
Model, folder...
|
[{"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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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":"TextRelayServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'TextRelayServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'TextRelayServiceTest'","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":"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,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","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\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\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":"AXTextArea","text":"[2026-05-27 12:55:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"41d4bbce-5baf-49aa-a276-c1c74a65020a\",\"trace_id\":\"1d0d4404-bf0a-4053-84ca-68be39511779\"}\n[2026-05-27 12:55:12] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {\"count\":0} {\"correlation_id\":\"41d4bbce-5baf-49aa-a276-c1c74a65020a\",\"trace_id\":\"1d0d4404-bf0a-4053-84ca-68be39511779\"}\n[2026-05-27 12:55:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"41d4bbce-5baf-49aa-a276-c1c74a65020a\",\"trace_id\":\"1d0d4404-bf0a-4053-84ca-68be39511779\"}\n[2026-05-27 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d\",\"trace_id\":\"aedb441d-c947-4f26-a1cd-056e48b6f5ed\"}\n[2026-05-27 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d\",\"trace_id\":\"aedb441d-c947-4f26-a1cd-056e48b6f5ed\"}\n[2026-05-27 12:55:15] local.NOTICE: Monitoring start {\"correlation_id\":\"56b0df60-e16c-4c60-a577-f394e33e2ddc\",\"trace_id\":\"ba2c277f-5516-49b6-854a-b4f446a1cb6c\"}\n[2026-05-27 12:55:15] local.NOTICE: Monitoring end {\"correlation_id\":\"56b0df60-e16c-4c60-a577-f394e33e2ddc\",\"trace_id\":\"ba2c277f-5516-49b6-854a-b4f446a1cb6c\"}\n[2026-05-27 12:55:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"3b3db768-2cbe-4893-a39d-39c1ed923f29\",\"trace_id\":\"dedb9613-95f2-47d1-a51b-82fff1514a22\"}\n[2026-05-27 12:55:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"3b3db768-2cbe-4893-a39d-39c1ed923f29\",\"trace_id\":\"dedb9613-95f2-47d1-a51b-82fff1514a22\"}\n[2026-05-27 12:55:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:18] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:18] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"5e1f4a28-d081-4c59-8d76-a116dadc701e\",\"trace_id\":\"b7e8d289-707b-47c1-9d6c-f47ebad1e01b\"}\n[2026-05-27 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"5e1f4a28-d081-4c59-8d76-a116dadc701e\",\"trace_id\":\"b7e8d289-707b-47c1-9d6c-f47ebad1e01b\"}\n[2026-05-27 12:55:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:21] local.INFO: [TextRelayService] Starting sync {\"mailbox\":\"catch-all@txt.staging.jiminny.com\",\"expected_alias\":\"catch-all\",\"expected_host\":\"txt.staging.jiminny.com\"} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:22] local.INFO: [TextRelayService] Sync completed {\"mailbox\":\"catch-all@txt.staging.jiminny.com\",\"messages_processed\":0,\"message_ids\":[]} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"87e0c627-3642-4d17-bf25-264f6fdc1969\",\"trace_id\":\"3b555fb3-83d8-4284-bb7c-0f783b4ed083\"}\n[2026-05-27 12:55:25] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"87e0c627-3642-4d17-bf25-264f6fdc1969\",\"trace_id\":\"3b555fb3-83d8-4284-bb7c-0f783b4ed083\"}\n[2026-05-27 12:55:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"87e0c627-3642-4d17-bf25-264f6fdc1969\",\"trace_id\":\"3b555fb3-83d8-4284-bb7c-0f783b4ed083\"}\n[2026-05-27 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:28] local.INFO: Running conference:monitor:start command for activities in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:28] local.INFO: [conference:monitor:start] No activities found in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:38] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:38] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:38] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:38] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"85c09ea4-f8d1-4cc2-b767-a5f2d957d016\",\"trace_id\":\"4fe5a8fa-1ac5-407c-926c-83f504d762d4\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"6e057ca5-65bf-41f6-b8af-08e715bc654d\",\"trace_id\":\"6aea00b5-6221-4847-8961-7a86ef3210cd\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"6e057ca5-65bf-41f6-b8af-08e715bc654d\",\"trace_id\":\"6aea00b5-6221-4847-8961-7a86ef3210cd\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-27T12:57:45.940375Z\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"85c09ea4-f8d1-4cc2-b767-a5f2d957d016\",\"trace_id\":\"4fe5a8fa-1ac5-407c-926c-83f504d762d4\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:03] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"52d58fe6-511d-4783-83d2-2cd095621565\",\"trace_id\":\"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12\"}\n[2026-05-27 12:56:03] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {\"count\":0} {\"correlation_id\":\"52d58fe6-511d-4783-83d2-2cd095621565\",\"trace_id\":\"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12\"}\n[2026-05-27 12:56:03] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"52d58fe6-511d-4783-83d2-2cd095621565\",\"trace_id\":\"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12\"}\n[2026-05-27 12:56:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1\",\"trace_id\":\"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4\"}\n[2026-05-27 12:56:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1\",\"trace_id\":\"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4\"}\n[2026-05-27 12:56:06] local.NOTICE: Monitoring start {\"correlation_id\":\"dc41678d-bf39-4a6e-870f-d38c97eff1c3\",\"trace_id\":\"10976781-275a-4aee-a84d-b6fa96ad2602\"}\n[2026-05-27 12:56:06] local.NOTICE: Monitoring end {\"correlation_id\":\"dc41678d-bf39-4a6e-870f-d38c97eff1c3\",\"trace_id\":\"10976781-275a-4aee-a84d-b6fa96ad2602\"}\n[2026-05-27 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"45813b78-011b-4ba5-8928-5a82bdd9f4ab\",\"trace_id\":\"f88e2e25-2c4f-4690-a49b-ccc8fb856866\"}\n[2026-05-27 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"45813b78-011b-4ba5-8928-5a82bdd9f4ab\",\"trace_id\":\"f88e2e25-2c4f-4690-a49b-ccc8fb856866\"}\n[2026-05-27 12:56:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:09] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:09] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:11] local.INFO: Running conference:monitor:count command for activities in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:11] local.INFO: [conference:monitor:count] No activities found in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"aab715c2-fbe0-4a65-9292-b2b218775424\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"aab715c2-fbe0-4a65-9292-b2b218775424\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":24777784,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":1,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0.28} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [HubSpot] Synced opportunities {\"team\":2,\"strategies\":\"lastModified\",\"sync_count\":0,\"total\":0,\"last_synced_id\":null,\"duration_ms\":286.56} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1417.45,\"usage\":25188000,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25162720,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":28.83,\"usage\":25162928,\"real_usage\":65011712,\"pid\":42210,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25120440,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":50.47,\"usage\":25140104,\"real_usage\":65011712,\"pid\":42210,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25100792,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":61.91,\"usage\":25136552,\"real_usage\":65011712,\"pid\":42210,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"8adbd852-a071-43d7-9393-80d2ceb0461e\",\"trace_id\":\"f2fefab6-f987-4a8d-8ba9-98e358be3479\"}\n[2026-05-27 12:56:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"8adbd852-a071-43d7-9393-80d2ceb0461e\",\"trace_id\":\"f2fefab6-f987-4a8d-8ba9-98e358be3479\"}\n[2026-05-27 12:56:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:19] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:19] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"cf9cc0f9-72df-468a-9dfd-7419e132cd3c\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"cf9cc0f9-72df-468a-9dfd-7419e132cd3c\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"cf9cc0f9-72df-468a-9dfd-7419e132cd3c\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"641f1acb-16b8-42d1-8726-df52979dad0e\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1500,\"sociable_id\":143,\"provider_user_id\":\"0052g000003frelAAA\",\"expires\":null,\"refresh_token_expires\":null,\"provider\":\"salesforce\",\"state\":\"full-refresh\",\"auth_scope\":\"refresh_token web api\",\"retry_after\":null,\"created_at\":\"2026-02-06 08:39:03\",\"updated_at\":\"2026-05-14 09:46:30\"}}} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":143,\"team_id\":1} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.ERROR: Failed to set service context for google: Your Salesforce account has become disconnected. Please login to Jiminny to reconnect. {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}","depth":4,"on_screen":true,"value":"[2026-05-27 12:55:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"41d4bbce-5baf-49aa-a276-c1c74a65020a\",\"trace_id\":\"1d0d4404-bf0a-4053-84ca-68be39511779\"}\n[2026-05-27 12:55:12] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {\"count\":0} {\"correlation_id\":\"41d4bbce-5baf-49aa-a276-c1c74a65020a\",\"trace_id\":\"1d0d4404-bf0a-4053-84ca-68be39511779\"}\n[2026-05-27 12:55:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"41d4bbce-5baf-49aa-a276-c1c74a65020a\",\"trace_id\":\"1d0d4404-bf0a-4053-84ca-68be39511779\"}\n[2026-05-27 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d\",\"trace_id\":\"aedb441d-c947-4f26-a1cd-056e48b6f5ed\"}\n[2026-05-27 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d\",\"trace_id\":\"aedb441d-c947-4f26-a1cd-056e48b6f5ed\"}\n[2026-05-27 12:55:15] local.NOTICE: Monitoring start {\"correlation_id\":\"56b0df60-e16c-4c60-a577-f394e33e2ddc\",\"trace_id\":\"ba2c277f-5516-49b6-854a-b4f446a1cb6c\"}\n[2026-05-27 12:55:15] local.NOTICE: Monitoring end {\"correlation_id\":\"56b0df60-e16c-4c60-a577-f394e33e2ddc\",\"trace_id\":\"ba2c277f-5516-49b6-854a-b4f446a1cb6c\"}\n[2026-05-27 12:55:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"3b3db768-2cbe-4893-a39d-39c1ed923f29\",\"trace_id\":\"dedb9613-95f2-47d1-a51b-82fff1514a22\"}\n[2026-05-27 12:55:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"3b3db768-2cbe-4893-a39d-39c1ed923f29\",\"trace_id\":\"dedb9613-95f2-47d1-a51b-82fff1514a22\"}\n[2026-05-27 12:55:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:18] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:18] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"5e1f4a28-d081-4c59-8d76-a116dadc701e\",\"trace_id\":\"b7e8d289-707b-47c1-9d6c-f47ebad1e01b\"}\n[2026-05-27 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"5e1f4a28-d081-4c59-8d76-a116dadc701e\",\"trace_id\":\"b7e8d289-707b-47c1-9d6c-f47ebad1e01b\"}\n[2026-05-27 12:55:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:21] local.INFO: [TextRelayService] Starting sync {\"mailbox\":\"catch-all@txt.staging.jiminny.com\",\"expected_alias\":\"catch-all\",\"expected_host\":\"txt.staging.jiminny.com\"} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:22] local.INFO: [TextRelayService] Sync completed {\"mailbox\":\"catch-all@txt.staging.jiminny.com\",\"messages_processed\":0,\"message_ids\":[]} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"87e0c627-3642-4d17-bf25-264f6fdc1969\",\"trace_id\":\"3b555fb3-83d8-4284-bb7c-0f783b4ed083\"}\n[2026-05-27 12:55:25] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"87e0c627-3642-4d17-bf25-264f6fdc1969\",\"trace_id\":\"3b555fb3-83d8-4284-bb7c-0f783b4ed083\"}\n[2026-05-27 12:55:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"87e0c627-3642-4d17-bf25-264f6fdc1969\",\"trace_id\":\"3b555fb3-83d8-4284-bb7c-0f783b4ed083\"}\n[2026-05-27 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:28] local.INFO: Running conference:monitor:start command for activities in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:28] local.INFO: [conference:monitor:start] No activities found in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:38] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:38] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:38] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:38] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"85c09ea4-f8d1-4cc2-b767-a5f2d957d016\",\"trace_id\":\"4fe5a8fa-1ac5-407c-926c-83f504d762d4\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"6e057ca5-65bf-41f6-b8af-08e715bc654d\",\"trace_id\":\"6aea00b5-6221-4847-8961-7a86ef3210cd\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"6e057ca5-65bf-41f6-b8af-08e715bc654d\",\"trace_id\":\"6aea00b5-6221-4847-8961-7a86ef3210cd\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-27T12:57:45.940375Z\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"85c09ea4-f8d1-4cc2-b767-a5f2d957d016\",\"trace_id\":\"4fe5a8fa-1ac5-407c-926c-83f504d762d4\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:03] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"52d58fe6-511d-4783-83d2-2cd095621565\",\"trace_id\":\"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12\"}\n[2026-05-27 12:56:03] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {\"count\":0} {\"correlation_id\":\"52d58fe6-511d-4783-83d2-2cd095621565\",\"trace_id\":\"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12\"}\n[2026-05-27 12:56:03] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"52d58fe6-511d-4783-83d2-2cd095621565\",\"trace_id\":\"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12\"}\n[2026-05-27 12:56:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1\",\"trace_id\":\"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4\"}\n[2026-05-27 12:56:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1\",\"trace_id\":\"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4\"}\n[2026-05-27 12:56:06] local.NOTICE: Monitoring start {\"correlation_id\":\"dc41678d-bf39-4a6e-870f-d38c97eff1c3\",\"trace_id\":\"10976781-275a-4aee-a84d-b6fa96ad2602\"}\n[2026-05-27 12:56:06] local.NOTICE: Monitoring end {\"correlation_id\":\"dc41678d-bf39-4a6e-870f-d38c97eff1c3\",\"trace_id\":\"10976781-275a-4aee-a84d-b6fa96ad2602\"}\n[2026-05-27 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"45813b78-011b-4ba5-8928-5a82bdd9f4ab\",\"trace_id\":\"f88e2e25-2c4f-4690-a49b-ccc8fb856866\"}\n[2026-05-27 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"45813b78-011b-4ba5-8928-5a82bdd9f4ab\",\"trace_id\":\"f88e2e25-2c4f-4690-a49b-ccc8fb856866\"}\n[2026-05-27 12:56:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:09] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:09] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:11] local.INFO: Running conference:monitor:count command for activities in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:11] local.INFO: [conference:monitor:count] No activities found in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"aab715c2-fbe0-4a65-9292-b2b218775424\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"aab715c2-fbe0-4a65-9292-b2b218775424\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":24777784,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":1,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0.28} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [HubSpot] Synced opportunities {\"team\":2,\"strategies\":\"lastModified\",\"sync_count\":0,\"total\":0,\"last_synced_id\":null,\"duration_ms\":286.56} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1417.45,\"usage\":25188000,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25162720,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":28.83,\"usage\":25162928,\"real_usage\":65011712,\"pid\":42210,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25120440,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":50.47,\"usage\":25140104,\"real_usage\":65011712,\"pid\":42210,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25100792,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":61.91,\"usage\":25136552,\"real_usage\":65011712,\"pid\":42210,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"8adbd852-a071-43d7-9393-80d2ceb0461e\",\"trace_id\":\"f2fefab6-f987-4a8d-8ba9-98e358be3479\"}\n[2026-05-27 12:56:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"8adbd852-a071-43d7-9393-80d2ceb0461e\",\"trace_id\":\"f2fefab6-f987-4a8d-8ba9-98e358be3479\"}\n[2026-05-27 12:56:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:19] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:19] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"cf9cc0f9-72df-468a-9dfd-7419e132cd3c\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"cf9cc0f9-72df-468a-9dfd-7419e132cd3c\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"cf9cc0f9-72df-468a-9dfd-7419e132cd3c\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"641f1acb-16b8-42d1-8726-df52979dad0e\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1500,\"sociable_id\":143,\"provider_user_id\":\"0052g000003frelAAA\",\"expires\":null,\"refresh_token_expires\":null,\"provider\":\"salesforce\",\"state\":\"full-refresh\",\"auth_scope\":\"refresh_token web api\",\"retry_after\":null,\"created_at\":\"2026-02-06 08:39:03\",\"updated_at\":\"2026-05-14 09:46:30\"}}} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":143,\"team_id\":1} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.ERROR: Failed to set service context for google: Your Salesforce account has become disconnected. Please login to Jiminny to reconnect. {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}","role_description":"text entry area","is_enabled":true,"is_focused":true,"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},{"role":"AXStaticText","text":"app ~/jiminny/app, folder","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".circleci, folder","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"backend-code, folder","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".env.staging","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dockerfile","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"start.sh","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"frontend-code","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"worker-code","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"worker-video-code","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"config.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"config_continue.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"subenv_to_branch_map","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"workflows_prod.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"workflows_qa.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"workflows_qai.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"workflows_staging.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"workflows_subenv.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".cursor","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".github","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".sonarlint","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".vscode","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".windsurf","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"app, sources root","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Actions","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Component","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Acl, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ActionItems, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Activity, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ActivityAnalytics, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ActivitySearch, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AiActivityType, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AiAutomation, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AiCallScoring, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AskAnything, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dtos, folder","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Events, folder","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AskAnythingPromptService.php, class","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HistoryService.php, class","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AskJiminnyAi, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AWS, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"BillingManagement, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Cache, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"CoachingFeedback, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Country, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"CustomerApi, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Database, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Datadog, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"DateTime, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"DealInsights, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"DealRisks, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ElasticSearch, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Eloquent, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Encoding, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Encryption, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ES, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Faker, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"FeatureFlags, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"FFMpeg, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"FileSystem, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Gecko, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Gong, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"GuzzleHttp, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KeyPoints, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Kiosk, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"LanguageDetection, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"LiveFeed, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Locks, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Math, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"MediaPipeline, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"MeetingBot, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"MobileSettings, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Model, folder","depth":9,"on_screen":false,"role_description":"text"}]...
|
-4445563490604123824
|
-2921165651722048195
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
[2026-05-27 12:55:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"41d4bbce-5baf-49aa-a276-c1c74a65020a","trace_id":"1d0d4404-bf0a-4053-84ca-68be39511779"}
[2026-05-27 12:55:12] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {"count":0} {"correlation_id":"41d4bbce-5baf-49aa-a276-c1c74a65020a","trace_id":"1d0d4404-bf0a-4053-84ca-68be39511779"}
[2026-05-27 12:55:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"41d4bbce-5baf-49aa-a276-c1c74a65020a","trace_id":"1d0d4404-bf0a-4053-84ca-68be39511779"}
[2026-05-27 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d","trace_id":"aedb441d-c947-4f26-a1cd-056e48b6f5ed"}
[2026-05-27 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d","trace_id":"aedb441d-c947-4f26-a1cd-056e48b6f5ed"}
[2026-05-27 12:55:15] local.NOTICE: Monitoring start {"correlation_id":"56b0df60-e16c-4c60-a577-f394e33e2ddc","trace_id":"ba2c277f-5516-49b6-854a-b4f446a1cb6c"}
[2026-05-27 12:55:15] local.NOTICE: Monitoring end {"correlation_id":"56b0df60-e16c-4c60-a577-f394e33e2ddc","trace_id":"ba2c277f-5516-49b6-854a-b4f446a1cb6c"}
[2026-05-27 12:55:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"3b3db768-2cbe-4893-a39d-39c1ed923f29","trace_id":"dedb9613-95f2-47d1-a51b-82fff1514a22"}
[2026-05-27 12:55:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"3b3db768-2cbe-4893-a39d-39c1ed923f29","trace_id":"dedb9613-95f2-47d1-a51b-82fff1514a22"}
[2026-05-27 12:55:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:18] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:18] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"5e1f4a28-d081-4c59-8d76-a116dadc701e","trace_id":"b7e8d289-707b-47c1-9d6c-f47ebad1e01b"}
[2026-05-27 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"5e1f4a28-d081-4c59-8d76-a116dadc701e","trace_id":"b7e8d289-707b-47c1-9d6c-f47ebad1e01b"}
[2026-05-27 12:55:21] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:21] local.INFO: [TextRelayService] Starting sync {"mailbox":"[EMAIL]","expected_alias":"catch-all","expected_host":"txt.staging.jiminny.com"} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:22] local.INFO: [TextRelayService] Sync completed {"mailbox":"[EMAIL]","messages_processed":0,"message_ids":[]} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"87e0c627-3642-4d17-bf25-264f6fdc1969","trace_id":"3b555fb3-83d8-4284-bb7c-0f783b4ed083"}
[2026-05-27 12:55:25] local.INFO: Running pre-meeting notification command {"correlation_id":"87e0c627-3642-4d17-bf25-264f6fdc1969","trace_id":"3b555fb3-83d8-4284-bb7c-0f783b4ed083"}
[2026-05-27 12:55:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"87e0c627-3642-4d17-bf25-264f6fdc1969","trace_id":"3b555fb3-83d8-4284-bb7c-0f783b4ed083"}
[2026-05-27 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:28] local.INFO: Running conference:monitor:start command for activities in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:28] local.INFO: [conference:monitor:start] No activities found in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:38] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:38] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:38] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:38] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"85c09ea4-f8d1-4cc2-b767-a5f2d957d016","trace_id":"4fe5a8fa-1ac5-407c-926c-83f504d762d4"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"6e057ca5-65bf-41f6-b8af-08e715bc654d","trace_id":"6aea00b5-6221-4847-8961-7a86ef3210cd"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"6e057ca5-65bf-41f6-b8af-08e715bc654d","trace_id":"6aea00b5-6221-4847-8961-7a86ef3210cd"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-27T12:57:45.940375Z"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"85c09ea4-f8d1-4cc2-b767-a5f2d957d016","trace_id":"4fe5a8fa-1ac5-407c-926c-83f504d762d4"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:03] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"52d58fe6-511d-4783-83d2-2cd095621565","trace_id":"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12"}
[2026-05-27 12:56:03] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {"count":0} {"correlation_id":"52d58fe6-511d-4783-83d2-2cd095621565","trace_id":"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12"}
[2026-05-27 12:56:03] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"52d58fe6-511d-4783-83d2-2cd095621565","trace_id":"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12"}
[2026-05-27 12:56:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1","trace_id":"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4"}
[2026-05-27 12:56:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1","trace_id":"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4"}
[2026-05-27 12:56:06] local.NOTICE: Monitoring start {"correlation_id":"dc41678d-bf39-4a6e-870f-d38c97eff1c3","trace_id":"10976781-275a-4aee-a84d-b6fa96ad2602"}
[2026-05-27 12:56:06] local.NOTICE: Monitoring end {"correlation_id":"dc41678d-bf39-4a6e-870f-d38c97eff1c3","trace_id":"10976781-275a-4aee-a84d-b6fa96ad2602"}
[2026-05-27 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"45813b78-011b-4ba5-8928-5a82bdd9f4ab","trace_id":"f88e2e25-2c4f-4690-a49b-ccc8fb856866"}
[2026-05-27 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"45813b78-011b-4ba5-8928-5a82bdd9f4ab","trace_id":"f88e2e25-2c4f-4690-a49b-ccc8fb856866"}
[2026-05-27 12:56:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:09] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:09] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:11] local.INFO: Running conference:monitor:count command for activities in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:11] local.INFO: [conference:monitor:count] No activities found in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"aab715c2-fbe0-4a65-9292-b2b218775424","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"aab715c2-fbe0-4a65-9292-b2b218775424","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SyncHubspotObjects] Starting sync {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","usage":24777784,"real_usage":65011712,"pid":42210} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1499,"provider":"hubspot","refreshToken":"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86","state":"connected"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [SocialAccountService] Token refreshed {"socialAccountId":1499,"provider":"hubspot","state":"connected"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {"team":2} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/deals/search","total_requests":1,"total_records_fetched":0,"total_elapsed_seconds":0.28,"average_seconds_per_request":0.28} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [HubSpot] Synced opportunities {"team":2,"strategies":"lastModified","sync_count":0,"total":0,"last_synced_id":null,"duration_ms":286.56} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","provider":"hubspot","status":"completed","duration_ms":1417.45,"usage":25188000,"real_usage":65011712,"pid":42210} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","usage":25162720,"real_usage":65011712,"pid":42210} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {"userId":"33e34a7a-1c02-4f04-87ac-22c3a385e6e3","account":{"Jiminny\\Models\\SocialAccount":{"id":306,"sociable_id":109,"provider_user_id":"11348452","expires":1701077403,"refresh_token_expires":null,"provider":"hubspot","state":"full-refresh","auth_scope":null,"retry_after":null,"created_at":"2020-09-01 16:59:04","updated_at":"2023-11-27 09:30:03"}}} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":109,"team_id":29} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","provider":"hubspot","status":"disconnected","duration_ms":28.83,"usage":25162928,"real_usage":65011712,"pid":42210,"reason":"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","usage":25120440,"real_usage":65011712,"pid":42210} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {"userId":"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b","account":null} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":130,"team_id":42} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","provider":"hubspot","status":"disconnected","duration_ms":50.47,"usage":25140104,"real_usage":65011712,"pid":42210,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","usage":25100792,"real_usage":65011712,"pid":42210} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {"userId":"71e3aac5-fb66-47c5-a236-2d051ae3e319","account":null} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":256,"team_id":49} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","provider":"hubspot","status":"disconnected","duration_ms":61.91,"usage":25136552,"real_usage":65011712,"pid":42210,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"8adbd852-a071-43d7-9393-80d2ceb0461e","trace_id":"f2fefab6-f987-4a8d-8ba9-98e358be3479"}
[2026-05-27 12:56:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"8adbd852-a071-43d7-9393-80d2ceb0461e","trace_id":"f2fefab6-f987-4a8d-8ba9-98e358be3479"}
[2026-05-27 12:56:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:19] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:19] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {"inbox_id":59} {"correlation_id":"cf9cc0f9-72df-468a-9dfd-7419e132cd3c","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {"correlation_id":"cf9cc0f9-72df-468a-9dfd-7419e132cd3c","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":59} {"correlation_id":"cf9cc0f9-72df-468a-9dfd-7419e132cd3c","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {"inbox_id":212} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.WARNING: [Salesforce] Account not connected for user {"userId":"641f1acb-16b8-42d1-8726-df52979dad0e","account":{"Jiminny\\Models\\SocialAccount":{"id":1500,"sociable_id":143,"provider_user_id":"0052g000003frelAAA","expires":null,"refresh_token_expires":null,"provider":"salesforce","state":"full-refresh","auth_scope":"refresh_token web api","retry_after":null,"created_at":"2026-02-06 08:39:03","updated_at":"2026-05-14 09:46:30"}}} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"salesforce","crm_owner":143,"team_id":1} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.ERROR: Failed to set service context for google: Your Salesforce account has become disconnected. Please login to Jiminny to reconnect. {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":212} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide
app ~/jiminny/app, folder
.circleci, folder
backend-code, folder
.env.staging
Dockerfile
start.sh
frontend-code
worker-code
worker-video-code
config.yml, YAML file
config_continue.yml, YAML file
subenv_to_branch_map
workflows_prod.yml, YAML file
workflows_qa.yml, YAML file
workflows_qai.yml, YAML file
workflows_staging.yml, YAML file
workflows_subenv.yml, YAML file
.cursor
.github
.sonarlint
.vscode
.windsurf
app, sources root
Actions
Component
Acl, folder
ActionItems, folder
Activity, folder
ActivityAnalytics, folder
ActivitySearch, folder
AiActivityType, folder
AiAutomation, folder
AiCallScoring, folder
AskAnything, folder
Dtos, folder
Events, folder
AskAnythingPromptService.php, class
HistoryService.php, class
AskJiminnyAi, folder
AWS, folder
BillingManagement, folder
Cache, folder
CoachingFeedback, folder
Country, folder
CustomerApi, folder
Database, folder
Datadog, folder
DateTime, folder
DealInsights, folder
DealRisks, folder
ElasticSearch, folder
Eloquent, folder
Encoding, folder
Encryption, folder
ES, folder
Faker, folder
FeatureFlags, folder
FFMpeg, folder
FileSystem, folder
Gecko, folder
Gong, folder
GuzzleHttp, folder
KeyPoints, folder
Kiosk, folder
LanguageDetection, folder
LiveFeed, folder
Locks, folder
Math, folder
MediaPipeline, folder
MeetingBot, folder
MobileSettings, folder
Model, folder...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
78719
|
2764
|
26
|
2026-05-27T12:56:33.239437+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886593239_m2.jpg...
|
PhpStorm
|
faVsco.js – custom.log
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
[2026-05-27 12:55:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"41d4bbce-5baf-49aa-a276-c1c74a65020a","trace_id":"1d0d4404-bf0a-4053-84ca-68be39511779"}
[2026-05-27 12:55:12] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {"count":0} {"correlation_id":"41d4bbce-5baf-49aa-a276-c1c74a65020a","trace_id":"1d0d4404-bf0a-4053-84ca-68be39511779"}
[2026-05-27 12:55:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"41d4bbce-5baf-49aa-a276-c1c74a65020a","trace_id":"1d0d4404-bf0a-4053-84ca-68be39511779"}
[2026-05-27 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d","trace_id":"aedb441d-c947-4f26-a1cd-056e48b6f5ed"}
[2026-05-27 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d","trace_id":"aedb441d-c947-4f26-a1cd-056e48b6f5ed"}
[2026-05-27 12:55:15] local.NOTICE: Monitoring start {"correlation_id":"56b0df60-e16c-4c60-a577-f394e33e2ddc","trace_id":"ba2c277f-5516-49b6-854a-b4f446a1cb6c"}
[2026-05-27 12:55:15] local.NOTICE: Monitoring end {"correlation_id":"56b0df60-e16c-4c60-a577-f394e33e2ddc","trace_id":"ba2c277f-5516-49b6-854a-b4f446a1cb6c"}
[2026-05-27 12:55:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"3b3db768-2cbe-4893-a39d-39c1ed923f29","trace_id":"dedb9613-95f2-47d1-a51b-82fff1514a22"}
[2026-05-27 12:55:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"3b3db768-2cbe-4893-a39d-39c1ed923f29","trace_id":"dedb9613-95f2-47d1-a51b-82fff1514a22"}
[2026-05-27 12:55:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:18] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:18] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"5e1f4a28-d081-4c59-8d76-a116dadc701e","trace_id":"b7e8d289-707b-47c1-9d6c-f47ebad1e01b"}
[2026-05-27 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"5e1f4a28-d081-4c59-8d76-a116dadc701e","trace_id":"b7e8d289-707b-47c1-9d6c-f47ebad1e01b"}
[2026-05-27 12:55:21] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:21] local.INFO: [TextRelayService] Starting sync {"mailbox":"[EMAIL]","expected_alias":"catch-all","expected_host":"txt.staging.jiminny.com"} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:22] local.INFO: [TextRelayService] Sync completed {"mailbox":"[EMAIL]","messages_processed":0,"message_ids":[]} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"87e0c627-3642-4d17-bf25-264f6fdc1969","trace_id":"3b555fb3-83d8-4284-bb7c-0f783b4ed083"}
[2026-05-27 12:55:25] local.INFO: Running pre-meeting notification command {"correlation_id":"87e0c627-3642-4d17-bf25-264f6fdc1969","trace_id":"3b555fb3-83d8-4284-bb7c-0f783b4ed083"}
[2026-05-27 12:55:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"87e0c627-3642-4d17-bf25-264f6fdc1969","trace_id":"3b555fb3-83d8-4284-bb7c-0f783b4ed083"}
[2026-05-27 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:28] local.INFO: Running conference:monitor:start command for activities in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:28] local.INFO: [conference:monitor:start] No activities found in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:38] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:38] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:38] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:38] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"85c09ea4-f8d1-4cc2-b767-a5f2d957d016","trace_id":"4fe5a8fa-1ac5-407c-926c-83f504d762d4"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"6e057ca5-65bf-41f6-b8af-08e715bc654d","trace_id":"6aea00b5-6221-4847-8961-7a86ef3210cd"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"6e057ca5-65bf-41f6-b8af-08e715bc654d","trace_id":"6aea00b5-6221-4847-8961-7a86ef3210cd"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-27T12:57:45.940375Z"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"85c09ea4-f8d1-4cc2-b767-a5f2d957d016","trace_id":"4fe5a8fa-1ac5-407c-926c-83f504d762d4"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:03] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"52d58fe6-511d-4783-83d2-2cd095621565","trace_id":"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12"}
[2026-05-27 12:56:03] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {"count":0} {"correlation_id":"52d58fe6-511d-4783-83d2-2cd095621565","trace_id":"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12"}
[2026-05-27 12:56:03] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"52d58fe6-511d-4783-83d2-2cd095621565","trace_id":"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12"}
[2026-05-27 12:56:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1","trace_id":"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4"}
[2026-05-27 12:56:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1","trace_id":"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4"}
[2026-05-27 12:56:06] local.NOTICE: Monitoring start {"correlation_id":"dc41678d-bf39-4a6e-870f-d38c97eff1c3","trace_id":"10976781-275a-4aee-a84d-b6fa96ad2602"}
[2026-05-27 12:56:06] local.NOTICE: Monitoring end {"correlation_id":"dc41678d-bf39-4a6e-870f-d38c97eff1c3","trace_id":"10976781-275a-4aee-a84d-b6fa96ad2602"}
[2026-05-27 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"45813b78-011b-4ba5-8928-5a82bdd9f4ab","trace_id":"f88e2e25-2c4f-4690-a49b-ccc8fb856866"}
[2026-05-27 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"45813b78-011b-4ba5-8928-5a82bdd9f4ab","trace_id":"f88e2e25-2c4f-4690-a49b-ccc8fb856866"}
[2026-05-27 12:56:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:09] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:09] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:11] local.INFO: Running conference:monitor:count command for activities in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:11] local.INFO: [conference:monitor:count] No activities found in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"aab715c2-fbe0-4a65-9292-b2b218775424","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"aab715c2-fbe0-4a65-9292-b2b218775424","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SyncHubspotObjects] Starting sync {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","usage":24777784,"real_usage":65011712,"pid":42210} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1499,"provider":"hubspot","refreshToken":"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86","state":"connected"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [SocialAccountService] Token refreshed {"socialAccountId":1499,"provider":"hubspot","state":"connected"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {"team":2} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/deals/search","total_requests":1,"total_records_fetched":0,"total_elapsed_seconds":0.28,"average_seconds_per_request":0.28} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [HubSpot] Synced opportunities {"team":2,"strategies":"lastModified","sync_count":0,"total":0,"last_synced_id":null,"duration_ms":286.56} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","provider":"hubspot","status":"completed","duration_ms":1417.45,"usage":25188000,"real_usage":65011712,"pid":42210} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","usage":25162720,"real_usage":65011712,"pid":42210} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {"userId":"33e34a7a-1c02-4f04-87ac-22c3a385e6e3","account":{"Jiminny\\Models\\SocialAccount":{"id":306,"sociable_id":109,"provider_user_id":"11348452","expires":1701077403,"refresh_token_expires":null,"provider":"hubspot","state":"full-refresh","auth_scope":null,"retry_after":null,"created_at":"2020-09-01 16:59:04","updated_at":"2023-11-27 09:30:03"}}} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":109,"team_id":29} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","provider":"hubspot","status":"disconnected","duration_ms":28.83,"usage":25162928,"real_usage":65011712,"pid":42210,"reason":"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","usage":25120440,"real_usage":65011712,"pid":42210} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {"userId":"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b","account":null} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":130,"team_id":42} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","provider":"hubspot","status":"disconnected","duration_ms":50.47,"usage":25140104,"real_usage":65011712,"pid":42210,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","usage":25100792,"real_usage":65011712,"pid":42210} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {"userId":"71e3aac5-fb66-47c5-a236-2d051ae3e319","account":null} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":256,"team_id":49} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","provider":"hubspot","status":"disconnected","duration_ms":61.91,"usage":25136552,"real_usage":65011712,"pid":42210,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"8adbd852-a071-43d7-9393-80d2ceb0461e","trace_id":"f2fefab6-f987-4a8d-8ba9-98e358be3479"}
[2026-05-27 12:56:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"8adbd852-a071-43d7-9393-80d2ceb0461e","trace_id":"f2fefab6-f987-4a8d-8ba9-98e358be3479"}
[2026-05-27 12:56:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:19] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:19] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {"inbox_id":59} {"correlation_id":"cf9cc0f9-72df-468a-9dfd-7419e132cd3c","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {"correlation_id":"cf9cc0f9-72df-468a-9dfd-7419e132cd3c","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":59} {"correlation_id":"cf9cc0f9-72df-468a-9dfd-7419e132cd3c","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {"inbox_id":212} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.WARNING: [Salesforce] Account not connected for user {"userId":"641f1acb-16b8-42d1-8726-df52979dad0e","account":{"Jiminny\\Models\\SocialAccount":{"id":1500,"sociable_id":143,"provider_user_id":"0052g000003frelAAA","expires":null,"refresh_token_expires":null,"provider":"salesforce","state":"full-refresh","auth_scope":"refresh_token web api","retry_after":null,"created_at":"2026-02-06 08:39:03","updated_at":"2026-05-14 09:46:30"}}} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"salesforce","crm_owner":143,"team_id":1} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.ERROR: Failed to set service context for google: Your Salesforce account has become disconnected. Please login to Jiminny to reconnect. {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":212} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}...
|
[{"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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.09740692,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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.8374335,"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":"TextRelayServiceTest","depth":6,"bounds":{"left":0.85272604,"top":0.019952115,"width":0.062832445,"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 'TextRelayServiceTest'","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 'TextRelayServiceTest'","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":"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.37632978,"top":0.10055866,"width":0.00731383,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","depth":4,"bounds":{"left":0.3856383,"top":0.10055866,"width":0.009640957,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.39694148,"top":0.09896249,"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.40425533,"top":0.09896249,"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\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\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":"AXTextArea","text":"[2026-05-27 12:55:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"41d4bbce-5baf-49aa-a276-c1c74a65020a\",\"trace_id\":\"1d0d4404-bf0a-4053-84ca-68be39511779\"}\n[2026-05-27 12:55:12] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {\"count\":0} {\"correlation_id\":\"41d4bbce-5baf-49aa-a276-c1c74a65020a\",\"trace_id\":\"1d0d4404-bf0a-4053-84ca-68be39511779\"}\n[2026-05-27 12:55:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"41d4bbce-5baf-49aa-a276-c1c74a65020a\",\"trace_id\":\"1d0d4404-bf0a-4053-84ca-68be39511779\"}\n[2026-05-27 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d\",\"trace_id\":\"aedb441d-c947-4f26-a1cd-056e48b6f5ed\"}\n[2026-05-27 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d\",\"trace_id\":\"aedb441d-c947-4f26-a1cd-056e48b6f5ed\"}\n[2026-05-27 12:55:15] local.NOTICE: Monitoring start {\"correlation_id\":\"56b0df60-e16c-4c60-a577-f394e33e2ddc\",\"trace_id\":\"ba2c277f-5516-49b6-854a-b4f446a1cb6c\"}\n[2026-05-27 12:55:15] local.NOTICE: Monitoring end {\"correlation_id\":\"56b0df60-e16c-4c60-a577-f394e33e2ddc\",\"trace_id\":\"ba2c277f-5516-49b6-854a-b4f446a1cb6c\"}\n[2026-05-27 12:55:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"3b3db768-2cbe-4893-a39d-39c1ed923f29\",\"trace_id\":\"dedb9613-95f2-47d1-a51b-82fff1514a22\"}\n[2026-05-27 12:55:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"3b3db768-2cbe-4893-a39d-39c1ed923f29\",\"trace_id\":\"dedb9613-95f2-47d1-a51b-82fff1514a22\"}\n[2026-05-27 12:55:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:18] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:18] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"5e1f4a28-d081-4c59-8d76-a116dadc701e\",\"trace_id\":\"b7e8d289-707b-47c1-9d6c-f47ebad1e01b\"}\n[2026-05-27 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"5e1f4a28-d081-4c59-8d76-a116dadc701e\",\"trace_id\":\"b7e8d289-707b-47c1-9d6c-f47ebad1e01b\"}\n[2026-05-27 12:55:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:21] local.INFO: [TextRelayService] Starting sync {\"mailbox\":\"catch-all@txt.staging.jiminny.com\",\"expected_alias\":\"catch-all\",\"expected_host\":\"txt.staging.jiminny.com\"} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:22] local.INFO: [TextRelayService] Sync completed {\"mailbox\":\"catch-all@txt.staging.jiminny.com\",\"messages_processed\":0,\"message_ids\":[]} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"87e0c627-3642-4d17-bf25-264f6fdc1969\",\"trace_id\":\"3b555fb3-83d8-4284-bb7c-0f783b4ed083\"}\n[2026-05-27 12:55:25] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"87e0c627-3642-4d17-bf25-264f6fdc1969\",\"trace_id\":\"3b555fb3-83d8-4284-bb7c-0f783b4ed083\"}\n[2026-05-27 12:55:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"87e0c627-3642-4d17-bf25-264f6fdc1969\",\"trace_id\":\"3b555fb3-83d8-4284-bb7c-0f783b4ed083\"}\n[2026-05-27 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:28] local.INFO: Running conference:monitor:start command for activities in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:28] local.INFO: [conference:monitor:start] No activities found in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:38] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:38] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:38] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:38] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"85c09ea4-f8d1-4cc2-b767-a5f2d957d016\",\"trace_id\":\"4fe5a8fa-1ac5-407c-926c-83f504d762d4\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"6e057ca5-65bf-41f6-b8af-08e715bc654d\",\"trace_id\":\"6aea00b5-6221-4847-8961-7a86ef3210cd\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"6e057ca5-65bf-41f6-b8af-08e715bc654d\",\"trace_id\":\"6aea00b5-6221-4847-8961-7a86ef3210cd\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-27T12:57:45.940375Z\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"85c09ea4-f8d1-4cc2-b767-a5f2d957d016\",\"trace_id\":\"4fe5a8fa-1ac5-407c-926c-83f504d762d4\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:03] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"52d58fe6-511d-4783-83d2-2cd095621565\",\"trace_id\":\"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12\"}\n[2026-05-27 12:56:03] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {\"count\":0} {\"correlation_id\":\"52d58fe6-511d-4783-83d2-2cd095621565\",\"trace_id\":\"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12\"}\n[2026-05-27 12:56:03] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"52d58fe6-511d-4783-83d2-2cd095621565\",\"trace_id\":\"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12\"}\n[2026-05-27 12:56:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1\",\"trace_id\":\"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4\"}\n[2026-05-27 12:56:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1\",\"trace_id\":\"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4\"}\n[2026-05-27 12:56:06] local.NOTICE: Monitoring start {\"correlation_id\":\"dc41678d-bf39-4a6e-870f-d38c97eff1c3\",\"trace_id\":\"10976781-275a-4aee-a84d-b6fa96ad2602\"}\n[2026-05-27 12:56:06] local.NOTICE: Monitoring end {\"correlation_id\":\"dc41678d-bf39-4a6e-870f-d38c97eff1c3\",\"trace_id\":\"10976781-275a-4aee-a84d-b6fa96ad2602\"}\n[2026-05-27 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"45813b78-011b-4ba5-8928-5a82bdd9f4ab\",\"trace_id\":\"f88e2e25-2c4f-4690-a49b-ccc8fb856866\"}\n[2026-05-27 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"45813b78-011b-4ba5-8928-5a82bdd9f4ab\",\"trace_id\":\"f88e2e25-2c4f-4690-a49b-ccc8fb856866\"}\n[2026-05-27 12:56:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:09] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:09] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:11] local.INFO: Running conference:monitor:count command for activities in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:11] local.INFO: [conference:monitor:count] No activities found in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"aab715c2-fbe0-4a65-9292-b2b218775424\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"aab715c2-fbe0-4a65-9292-b2b218775424\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":24777784,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":1,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0.28} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [HubSpot] Synced opportunities {\"team\":2,\"strategies\":\"lastModified\",\"sync_count\":0,\"total\":0,\"last_synced_id\":null,\"duration_ms\":286.56} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1417.45,\"usage\":25188000,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25162720,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":28.83,\"usage\":25162928,\"real_usage\":65011712,\"pid\":42210,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25120440,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":50.47,\"usage\":25140104,\"real_usage\":65011712,\"pid\":42210,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25100792,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":61.91,\"usage\":25136552,\"real_usage\":65011712,\"pid\":42210,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"8adbd852-a071-43d7-9393-80d2ceb0461e\",\"trace_id\":\"f2fefab6-f987-4a8d-8ba9-98e358be3479\"}\n[2026-05-27 12:56:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"8adbd852-a071-43d7-9393-80d2ceb0461e\",\"trace_id\":\"f2fefab6-f987-4a8d-8ba9-98e358be3479\"}\n[2026-05-27 12:56:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:19] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:19] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"cf9cc0f9-72df-468a-9dfd-7419e132cd3c\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"cf9cc0f9-72df-468a-9dfd-7419e132cd3c\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"cf9cc0f9-72df-468a-9dfd-7419e132cd3c\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"641f1acb-16b8-42d1-8726-df52979dad0e\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1500,\"sociable_id\":143,\"provider_user_id\":\"0052g000003frelAAA\",\"expires\":null,\"refresh_token_expires\":null,\"provider\":\"salesforce\",\"state\":\"full-refresh\",\"auth_scope\":\"refresh_token web api\",\"retry_after\":null,\"created_at\":\"2026-02-06 08:39:03\",\"updated_at\":\"2026-05-14 09:46:30\"}}} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":143,\"team_id\":1} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.ERROR: Failed to set service context for google: Your Salesforce account has become disconnected. Please login to Jiminny to reconnect. {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}","depth":4,"bounds":{"left":0.4331782,"top":0.09736632,"width":0.5668218,"height":0.90263367},"on_screen":true,"value":"[2026-05-27 12:55:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"41d4bbce-5baf-49aa-a276-c1c74a65020a\",\"trace_id\":\"1d0d4404-bf0a-4053-84ca-68be39511779\"}\n[2026-05-27 12:55:12] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {\"count\":0} {\"correlation_id\":\"41d4bbce-5baf-49aa-a276-c1c74a65020a\",\"trace_id\":\"1d0d4404-bf0a-4053-84ca-68be39511779\"}\n[2026-05-27 12:55:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"41d4bbce-5baf-49aa-a276-c1c74a65020a\",\"trace_id\":\"1d0d4404-bf0a-4053-84ca-68be39511779\"}\n[2026-05-27 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d\",\"trace_id\":\"aedb441d-c947-4f26-a1cd-056e48b6f5ed\"}\n[2026-05-27 12:55:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d\",\"trace_id\":\"aedb441d-c947-4f26-a1cd-056e48b6f5ed\"}\n[2026-05-27 12:55:15] local.NOTICE: Monitoring start {\"correlation_id\":\"56b0df60-e16c-4c60-a577-f394e33e2ddc\",\"trace_id\":\"ba2c277f-5516-49b6-854a-b4f446a1cb6c\"}\n[2026-05-27 12:55:15] local.NOTICE: Monitoring end {\"correlation_id\":\"56b0df60-e16c-4c60-a577-f394e33e2ddc\",\"trace_id\":\"ba2c277f-5516-49b6-854a-b4f446a1cb6c\"}\n[2026-05-27 12:55:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"3b3db768-2cbe-4893-a39d-39c1ed923f29\",\"trace_id\":\"dedb9613-95f2-47d1-a51b-82fff1514a22\"}\n[2026-05-27 12:55:17] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"3b3db768-2cbe-4893-a39d-39c1ed923f29\",\"trace_id\":\"dedb9613-95f2-47d1-a51b-82fff1514a22\"}\n[2026-05-27 12:55:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:18] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:18] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:18] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"75fb79e4-71d7-4533-94e6-ed2ca6531e11\",\"trace_id\":\"4d9236e2-51d7-475a-99d2-487589468575\"}\n[2026-05-27 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"5e1f4a28-d081-4c59-8d76-a116dadc701e\",\"trace_id\":\"b7e8d289-707b-47c1-9d6c-f47ebad1e01b\"}\n[2026-05-27 12:55:20] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"5e1f4a28-d081-4c59-8d76-a116dadc701e\",\"trace_id\":\"b7e8d289-707b-47c1-9d6c-f47ebad1e01b\"}\n[2026-05-27 12:55:21] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:21] local.INFO: [TextRelayService] Starting sync {\"mailbox\":\"catch-all@txt.staging.jiminny.com\",\"expected_alias\":\"catch-all\",\"expected_host\":\"txt.staging.jiminny.com\"} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:22] local.INFO: [TextRelayService] Sync completed {\"mailbox\":\"catch-all@txt.staging.jiminny.com\",\"messages_processed\":0,\"message_ids\":[]} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:22] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"a6659ab1-f9e9-458f-8b49-b65216d5141f\",\"trace_id\":\"2f832b37-0925-4801-a2e0-80f234c834ce\"}\n[2026-05-27 12:55:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"87e0c627-3642-4d17-bf25-264f6fdc1969\",\"trace_id\":\"3b555fb3-83d8-4284-bb7c-0f783b4ed083\"}\n[2026-05-27 12:55:25] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"87e0c627-3642-4d17-bf25-264f6fdc1969\",\"trace_id\":\"3b555fb3-83d8-4284-bb7c-0f783b4ed083\"}\n[2026-05-27 12:55:25] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"87e0c627-3642-4d17-bf25-264f6fdc1969\",\"trace_id\":\"3b555fb3-83d8-4284-bb7c-0f783b4ed083\"}\n[2026-05-27 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:28] local.INFO: Running conference:monitor:start command for activities in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:28] local.INFO: [conference:monitor:start] No activities found in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:28] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"79376862-86ae-416a-9af3-2f790e35c610\",\"trace_id\":\"85b2da1c-9140-4d3d-ab55-9577deac7825\"}\n[2026-05-27 12:55:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"12:50\",\"to\":\"12:55\"} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"02:45\",\"to\":\"02:50\"} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:31] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"e922989f-9f26-4870-be4e-a3ed274edd06\",\"trace_id\":\"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2\"}\n[2026-05-27 12:55:38] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:38] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:38] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:38] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:39] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:40] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"35ad5085-589b-4afa-8ab6-194229ce310f\",\"trace_id\":\"fcb90117-62fd-4a79-967a-c93b797a9aab\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"85c09ea4-f8d1-4cc2-b767-a5f2d957d016\",\"trace_id\":\"4fe5a8fa-1ac5-407c-926c-83f504d762d4\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"6e057ca5-65bf-41f6-b8af-08e715bc654d\",\"trace_id\":\"6aea00b5-6221-4847-8961-7a86ef3210cd\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"6e057ca5-65bf-41f6-b8af-08e715bc654d\",\"trace_id\":\"6aea00b5-6221-4847-8961-7a86ef3210cd\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":62.0} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-05-27T12:57:45.940375Z\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"85c09ea4-f8d1-4cc2-b767-a5f2d957d016\",\"trace_id\":\"4fe5a8fa-1ac5-407c-926c-83f504d762d4\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:03] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"52d58fe6-511d-4783-83d2-2cd095621565\",\"trace_id\":\"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12\"}\n[2026-05-27 12:56:03] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {\"count\":0} {\"correlation_id\":\"52d58fe6-511d-4783-83d2-2cd095621565\",\"trace_id\":\"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12\"}\n[2026-05-27 12:56:03] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"52d58fe6-511d-4783-83d2-2cd095621565\",\"trace_id\":\"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12\"}\n[2026-05-27 12:56:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1\",\"trace_id\":\"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4\"}\n[2026-05-27 12:56:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1\",\"trace_id\":\"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4\"}\n[2026-05-27 12:56:06] local.NOTICE: Monitoring start {\"correlation_id\":\"dc41678d-bf39-4a6e-870f-d38c97eff1c3\",\"trace_id\":\"10976781-275a-4aee-a84d-b6fa96ad2602\"}\n[2026-05-27 12:56:06] local.NOTICE: Monitoring end {\"correlation_id\":\"dc41678d-bf39-4a6e-870f-d38c97eff1c3\",\"trace_id\":\"10976781-275a-4aee-a84d-b6fa96ad2602\"}\n[2026-05-27 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"45813b78-011b-4ba5-8928-5a82bdd9f4ab\",\"trace_id\":\"f88e2e25-2c4f-4690-a49b-ccc8fb856866\"}\n[2026-05-27 12:56:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"45813b78-011b-4ba5-8928-5a82bdd9f4ab\",\"trace_id\":\"f88e2e25-2c4f-4690-a49b-ccc8fb856866\"}\n[2026-05-27 12:56:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:09] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:09] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"91da18c1-d417-4b39-a4a0-c7cb5e976f70\",\"trace_id\":\"11d77bc4-1411-4cc3-a44d-0acca49e3d40\"}\n[2026-05-27 12:56:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:11] local.INFO: Running conference:monitor:count command for activities in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:11] local.INFO: [conference:monitor:count] No activities found in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:11] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:count\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c\",\"trace_id\":\"ee07bdc6-4918-4540-8682-07bc204cf6e5\"}\n[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"f7da3683-aefb-4f36-9d2d-9b731e7e44df\",\"trace_id\":\"71499f0c-b12f-4a08-af95-4f390940c5c2\"}\n[2026-05-27 12:56:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"aab715c2-fbe0-4a65-9292-b2b218775424\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:sync-hubspot-objects\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"aab715c2-fbe0-4a65-9292-b2b218775424\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"usage\":24777784,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Fetching token {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Token needs refreshing {\"socialAccountId\":1499,\"provider\":\"hubspot\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"refreshToken\":\"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86\",\"state\":\"connected\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Saving model {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [SocialAccountService] Token refreshed {\"socialAccountId\":1499,\"provider\":\"hubspot\",\"state\":\"connected\"} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {\"crm_provider\":\"hubspot\",\"crm_owner\":148,\"team_id\":2} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:14] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {\"team\":2} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [Hubspot] Pagination completed {\"team_id\":2,\"endpoint\":\"https://api.hubapi.com/crm/v3/objects/deals/search\",\"total_requests\":1,\"total_records_fetched\":0,\"total_elapsed_seconds\":0.28,\"average_seconds_per_request\":0.28} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [HubSpot] Synced opportunities {\"team\":2,\"strategies\":\"lastModified\",\"sync_count\":0,\"total\":0,\"last_synced_id\":null,\"duration_ms\":286.56} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4\",\"provider\":\"hubspot\",\"status\":\"completed\",\"duration_ms\":1417.45,\"usage\":25188000,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"84144bb1-43a6-40fd-9a9c-0b259220caa0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"usage\":25162720,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"33e34a7a-1c02-4f04-87ac-22c3a385e6e3\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":306,\"sociable_id\":109,\"provider_user_id\":\"11348452\",\"expires\":1701077403,\"refresh_token_expires\":null,\"provider\":\"hubspot\",\"state\":\"full-refresh\",\"auth_scope\":null,\"retry_after\":null,\"created_at\":\"2020-09-01 16:59:04\",\"updated_at\":\"2023-11-27 09:30:03\"}}} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":109,\"team_id\":29} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":29} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2b115eb-93ce-4d1b-929c-173757df8fba\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":28.83,\"usage\":25162928,\"real_usage\":65011712,\"pid\":42210,\"reason\":\"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect.\"} {\"correlation_id\":\"d16fc90d-2daf-4985-a507-10c03db9daf0\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"usage\":25120440,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b\",\"account\":null} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":130,\"team_id\":42} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":42} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"b2d49a54-b645-4637-a7ae-a86cfce6e8e4\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":50.47,\"usage\":25140104,\"real_usage\":65011712,\"pid\":42210,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"69d51f2f-966d-4ce3-a3b0-13db04d24441\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"usage\":25100792,\"real_usage\":65011712,\"pid\":42210} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {\"userId\":\"71e3aac5-fb66-47c5-a236-2d051ae3e319\",\"account\":null} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"hubspot\",\"crm_owner\":256,\"team_id\":49} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"hubspot\",\"team_id\":49} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {\"team\":\"c6b9d6b0-b48d-4832-a68c-a57d60651888\",\"provider\":\"hubspot\",\"status\":\"disconnected\",\"duration_ms\":61.91,\"usage\":25136552,\"real_usage\":65011712,\"pid\":42210,\"reason\":\"Social account for HubSpot cannot be found. Please login to Jiminny to connect.\"} {\"correlation_id\":\"27759f57-4cfe-4fd0-a357-ccb54433120b\",\"trace_id\":\"15667b2a-219a-4ecf-8397-f8b5729ba263\"}\n[2026-05-27 12:56:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"8adbd852-a071-43d7-9393-80d2ceb0461e\",\"trace_id\":\"f2fefab6-f987-4a8d-8ba9-98e358be3479\"}\n[2026-05-27 12:56:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:notify-not-logged\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"8adbd852-a071-43d7-9393-80d2ceb0461e\",\"trace_id\":\"f2fefab6-f987-4a8d-8ba9-98e358be3479\"}\n[2026-05-27 12:56:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.883} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:19] local.INFO: [EmailSchedule] STARTING Inbox Sync {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:19] local.INFO: [EmailSchedule] FINISHED Inbox Sync {\"host\":\"docker_lamp_1\",\"events\":2} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:19] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":62.0,\"memoryPeakBeforeCommandInMb\":99.883,\"memoryPeakAfterCommandInMB\":99.883} {\"correlation_id\":\"1ef33eb4-1aeb-441d-bee8-259627a93960\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":59} {\"correlation_id\":\"cf9cc0f9-72df-468a-9dfd-7419e132cd3c\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {\"correlation_id\":\"cf9cc0f9-72df-468a-9dfd-7419e132cd3c\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":59} {\"correlation_id\":\"cf9cc0f9-72df-468a-9dfd-7419e132cd3c\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {\"inbox_id\":212} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.WARNING: [Salesforce] Account not connected for user {\"userId\":\"641f1acb-16b8-42d1-8726-df52979dad0e\",\"account\":{\"Jiminny\\\\Models\\\\SocialAccount\":{\"id\":1500,\"sociable_id\":143,\"provider_user_id\":\"0052g000003frelAAA\",\"expires\":null,\"refresh_token_expires\":null,\"provider\":\"salesforce\",\"state\":\"full-refresh\",\"auth_scope\":\"refresh_token web api\",\"retry_after\":null,\"created_at\":\"2026-02-06 08:39:03\",\"updated_at\":\"2026-05-14 09:46:30\"}}} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {\"crm_provider\":\"salesforce\",\"crm_owner\":143,\"team_id\":1} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {\"crm_provider\":\"salesforce\",\"team_id\":1} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.ERROR: Failed to set service context for google: Your Salesforce account has become disconnected. Please login to Jiminny to reconnect. {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}\n[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {\"inbox_id\":212} {\"correlation_id\":\"2ebe7131-99ad-40ee-88ce-054a8755ea10\",\"trace_id\":\"566f32c7-b8d7-4e45-800e-124b5da5319e\"}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false}]...
|
-1713126740092526146
|
-2921165101966234307
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
[2026-05-27 12:55:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"41d4bbce-5baf-49aa-a276-c1c74a65020a","trace_id":"1d0d4404-bf0a-4053-84ca-68be39511779"}
[2026-05-27 12:55:12] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {"count":0} {"correlation_id":"41d4bbce-5baf-49aa-a276-c1c74a65020a","trace_id":"1d0d4404-bf0a-4053-84ca-68be39511779"}
[2026-05-27 12:55:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"41d4bbce-5baf-49aa-a276-c1c74a65020a","trace_id":"1d0d4404-bf0a-4053-84ca-68be39511779"}
[2026-05-27 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d","trace_id":"aedb441d-c947-4f26-a1cd-056e48b6f5ed"}
[2026-05-27 12:55:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"77fbb54b-1a7b-48ca-82e1-2ad6d2b51b4d","trace_id":"aedb441d-c947-4f26-a1cd-056e48b6f5ed"}
[2026-05-27 12:55:15] local.NOTICE: Monitoring start {"correlation_id":"56b0df60-e16c-4c60-a577-f394e33e2ddc","trace_id":"ba2c277f-5516-49b6-854a-b4f446a1cb6c"}
[2026-05-27 12:55:15] local.NOTICE: Monitoring end {"correlation_id":"56b0df60-e16c-4c60-a577-f394e33e2ddc","trace_id":"ba2c277f-5516-49b6-854a-b4f446a1cb6c"}
[2026-05-27 12:55:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"3b3db768-2cbe-4893-a39d-39c1ed923f29","trace_id":"dedb9613-95f2-47d1-a51b-82fff1514a22"}
[2026-05-27 12:55:17] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"3b3db768-2cbe-4893-a39d-39c1ed923f29","trace_id":"dedb9613-95f2-47d1-a51b-82fff1514a22"}
[2026-05-27 12:55:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:18] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:18] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:18] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"75fb79e4-71d7-4533-94e6-ed2ca6531e11","trace_id":"4d9236e2-51d7-475a-99d2-487589468575"}
[2026-05-27 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"5e1f4a28-d081-4c59-8d76-a116dadc701e","trace_id":"b7e8d289-707b-47c1-9d6c-f47ebad1e01b"}
[2026-05-27 12:55:20] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"5e1f4a28-d081-4c59-8d76-a116dadc701e","trace_id":"b7e8d289-707b-47c1-9d6c-f47ebad1e01b"}
[2026-05-27 12:55:21] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:21] local.INFO: [TextRelayService] Starting sync {"mailbox":"[EMAIL]","expected_alias":"catch-all","expected_host":"txt.staging.jiminny.com"} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:22] local.INFO: [TextRelayService] Sync completed {"mailbox":"[EMAIL]","messages_processed":0,"message_ids":[]} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:22] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"a6659ab1-f9e9-458f-8b49-b65216d5141f","trace_id":"2f832b37-0925-4801-a2e0-80f234c834ce"}
[2026-05-27 12:55:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"87e0c627-3642-4d17-bf25-264f6fdc1969","trace_id":"3b555fb3-83d8-4284-bb7c-0f783b4ed083"}
[2026-05-27 12:55:25] local.INFO: Running pre-meeting notification command {"correlation_id":"87e0c627-3642-4d17-bf25-264f6fdc1969","trace_id":"3b555fb3-83d8-4284-bb7c-0f783b4ed083"}
[2026-05-27 12:55:25] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"87e0c627-3642-4d17-bf25-264f6fdc1969","trace_id":"3b555fb3-83d8-4284-bb7c-0f783b4ed083"}
[2026-05-27 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:28] local.INFO: Running conference:monitor:start command for activities in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:28] local.INFO: [conference:monitor:start] No activities found in (2026-05-27 12:45:00, 2026-05-27 12:50:00] {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:28] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"79376862-86ae-416a-9af3-2f790e35c610","trace_id":"85b2da1c-9140-4d3d-ab55-9577deac7825"}
[2026-05-27 12:55:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"12:50","to":"12:55"} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:31] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"02:45","to":"02:50"} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:31] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"e922989f-9f26-4870-be4e-a3ed274edd06","trace_id":"6f0dd2a0-4562-40df-a1da-a4c6fdc0abf2"}
[2026-05-27 12:55:38] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:38] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:38] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:38] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:39] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:40] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"35ad5085-589b-4afa-8ab6-194229ce310f","trace_id":"fcb90117-62fd-4a79-967a-c93b797a9aab"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"85c09ea4-f8d1-4cc2-b767-a5f2d957d016","trace_id":"4fe5a8fa-1ac5-407c-926c-83f504d762d4"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"6e057ca5-65bf-41f6-b8af-08e715bc654d","trace_id":"6aea00b5-6221-4847-8961-7a86ef3210cd"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"6e057ca5-65bf-41f6-b8af-08e715bc654d","trace_id":"6aea00b5-6221-4847-8961-7a86ef3210cd"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":62.0} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-05-27T12:57:45.940375Z"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"85c09ea4-f8d1-4cc2-b767-a5f2d957d016","trace_id":"4fe5a8fa-1ac5-407c-926c-83f504d762d4"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:45] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:46] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:51] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:51] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:56] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:55:56] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:03] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"52d58fe6-511d-4783-83d2-2cd095621565","trace_id":"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12"}
[2026-05-27 12:56:03] local.INFO: [ScheduleBotCommand] Dispatched activities to capture {"count":0} {"correlation_id":"52d58fe6-511d-4783-83d2-2cd095621565","trace_id":"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12"}
[2026-05-27 12:56:03] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"52d58fe6-511d-4783-83d2-2cd095621565","trace_id":"3bae8a57-cba4-40c0-bc23-bc6e5df4ba12"}
[2026-05-27 12:56:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1","trace_id":"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4"}
[2026-05-27 12:56:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"b561c2f8-d5e0-4b0c-89d4-3e0092a3ddc1","trace_id":"d6f35eac-1ec1-441d-87f2-2e38a4d4e4a4"}
[2026-05-27 12:56:06] local.NOTICE: Monitoring start {"correlation_id":"dc41678d-bf39-4a6e-870f-d38c97eff1c3","trace_id":"10976781-275a-4aee-a84d-b6fa96ad2602"}
[2026-05-27 12:56:06] local.NOTICE: Monitoring end {"correlation_id":"dc41678d-bf39-4a6e-870f-d38c97eff1c3","trace_id":"10976781-275a-4aee-a84d-b6fa96ad2602"}
[2026-05-27 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"45813b78-011b-4ba5-8928-5a82bdd9f4ab","trace_id":"f88e2e25-2c4f-4690-a49b-ccc8fb856866"}
[2026-05-27 12:56:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"45813b78-011b-4ba5-8928-5a82bdd9f4ab","trace_id":"f88e2e25-2c4f-4690-a49b-ccc8fb856866"}
[2026-05-27 12:56:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:09] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:09] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"91da18c1-d417-4b39-a4a0-c7cb5e976f70","trace_id":"11d77bc4-1411-4cc3-a44d-0acca49e3d40"}
[2026-05-27 12:56:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:11] local.INFO: Running conference:monitor:count command for activities in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:11] local.INFO: [conference:monitor:count] No activities found in (2026-05-27 12:54:00, 2026-05-27 12:56:00] {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:11] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:count","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"3a28ecc0-c67a-4f9d-bf36-2cfcb024ef6c","trace_id":"ee07bdc6-4918-4540-8682-07bc204cf6e5"}
[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:12] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"f7da3683-aefb-4f36-9d2d-9b731e7e44df","trace_id":"71499f0c-b12f-4a08-af95-4f390940c5c2"}
[2026-05-27 12:56:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"aab715c2-fbe0-4a65-9292-b2b218775424","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:sync-hubspot-objects","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"aab715c2-fbe0-4a65-9292-b2b218775424","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SyncHubspotObjects] Starting sync {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","usage":24777784,"real_usage":65011712,"pid":42210} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Fetching token {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Token needs refreshing {"socialAccountId":1499,"provider":"hubspot"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:13] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1499,"provider":"hubspot","refreshToken":"96f94c623a404e02ebdbf07f1b75707bb6cdbf848cbf45d418baf608c41a8d86","state":"connected"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Saving model {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [SocialAccountObserver] Access token was modified, encrypting {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [SocialAccountService] Token refreshed {"socialAccountId":1499,"provider":"hubspot","state":"connected"} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [CrmOwnerResolver] Integration owner matched as CRM Owner {"crm_provider":"hubspot","crm_owner":148,"team_id":2} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:14] local.INFO: [HubSpot] Syncing opportunities using strategy: lastModified {"team":2} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [Hubspot] Pagination completed {"team_id":2,"endpoint":"https://api.hubapi.com/crm/v3/objects/deals/search","total_requests":1,"total_records_fetched":0,"total_elapsed_seconds":0.28,"average_seconds_per_request":0.28} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [HubSpot] Synced opportunities {"team":2,"strategies":"lastModified","sync_count":0,"total":0,"last_synced_id":null,"duration_ms":286.56} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4","provider":"hubspot","status":"completed","duration_ms":1417.45,"usage":25188000,"real_usage":65011712,"pid":42210} {"correlation_id":"84144bb1-43a6-40fd-9a9c-0b259220caa0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","usage":25162720,"real_usage":65011712,"pid":42210} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {"userId":"33e34a7a-1c02-4f04-87ac-22c3a385e6e3","account":{"Jiminny\\Models\\SocialAccount":{"id":306,"sociable_id":109,"provider_user_id":"11348452","expires":1701077403,"refresh_token_expires":null,"provider":"hubspot","state":"full-refresh","auth_scope":null,"retry_after":null,"created_at":"2020-09-01 16:59:04","updated_at":"2023-11-27 09:30:03"}}} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":109,"team_id":29} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":29} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2b115eb-93ce-4d1b-929c-173757df8fba","provider":"hubspot","status":"disconnected","duration_ms":28.83,"usage":25162928,"real_usage":65011712,"pid":42210,"reason":"Your HubSpot account has become disconnected. Please login to Jiminny to reconnect."} {"correlation_id":"d16fc90d-2daf-4985-a507-10c03db9daf0","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","usage":25120440,"real_usage":65011712,"pid":42210} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {"userId":"2ac0447f-3c8c-4ce0-baeb-b63ddb76fa9b","account":null} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":130,"team_id":42} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":42} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"b2d49a54-b645-4637-a7ae-a86cfce6e8e4","provider":"hubspot","status":"disconnected","duration_ms":50.47,"usage":25140104,"real_usage":65011712,"pid":42210,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"69d51f2f-966d-4ce3-a3b0-13db04d24441","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Starting sync {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","usage":25100792,"real_usage":65011712,"pid":42210} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.WARNING: [HubSpot] Account not connected for user {"userId":"71e3aac5-fb66-47c5-a236-2d051ae3e319","account":null} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"hubspot","crm_owner":256,"team_id":49} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"hubspot","team_id":49} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: [SyncHubspotObjects] Sync finished {"team":"c6b9d6b0-b48d-4832-a68c-a57d60651888","provider":"hubspot","status":"disconnected","duration_ms":61.91,"usage":25136552,"real_usage":65011712,"pid":42210,"reason":"Social account for HubSpot cannot be found. Please login to Jiminny to connect."} {"correlation_id":"27759f57-4cfe-4fd0-a357-ccb54433120b","trace_id":"15667b2a-219a-4ecf-8397-f8b5729ba263"}
[2026-05-27 12:56:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"8adbd852-a071-43d7-9393-80d2ceb0461e","trace_id":"f2fefab6-f987-4a8d-8ba9-98e358be3479"}
[2026-05-27 12:56:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:notify-not-logged","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"8adbd852-a071-43d7-9393-80d2ceb0461e","trace_id":"f2fefab6-f987-4a8d-8ba9-98e358be3479"}
[2026-05-27 12:56:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.883} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:19] local.INFO: [EmailSchedule] STARTING Inbox Sync {"host":"docker_lamp_1"} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:19] local.INFO: [EmailSchedule] FINISHED Inbox Sync {"host":"docker_lamp_1","events":2} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:19] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":62.0,"memoryPeakBeforeCommandInMb":99.883,"memoryPeakAfterCommandInMB":99.883} {"correlation_id":"1ef33eb4-1aeb-441d-bee8-259627a93960","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {"inbox_id":59} {"correlation_id":"cf9cc0f9-72df-468a-9dfd-7419e132cd3c","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Inbox service] Skipping METADATA SYNC for inbox 59 due to unauthorized access to the mailbox {"correlation_id":"cf9cc0f9-72df-468a-9dfd-7419e132cd3c","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":59} {"correlation_id":"cf9cc0f9-72df-468a-9dfd-7419e132cd3c","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync start {"inbox_id":212} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.WARNING: [Salesforce] Account not connected for user {"userId":"641f1acb-16b8-42d1-8726-df52979dad0e","account":{"Jiminny\\Models\\SocialAccount":{"id":1500,"sociable_id":143,"provider_user_id":"0052g000003frelAAA","expires":null,"refresh_token_expires":null,"provider":"salesforce","state":"full-refresh","auth_scope":"refresh_token web api","retry_after":null,"created_at":"2026-02-06 08:39:03","updated_at":"2026-05-14 09:46:30"}}} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] Integration owner is not connected, attempting team members {"crm_provider":"salesforce","crm_owner":143,"team_id":1} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team members found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [CrmOwnerResolver] No team member found with active crm connection {"crm_provider":"salesforce","team_id":1} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.ERROR: Failed to set service context for google: Your Salesforce account has become disconnected. Please login to Jiminny to reconnect. {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}
[2026-05-27 12:56:20] local.INFO: [Sync Mailbox] Sync complete {"inbox_id":212} {"correlation_id":"2ebe7131-99ad-40ee-88ce-054a8755ea10","trace_id":"566f32c7-b8d7-4e45-800e-124b5da5319e"}...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
78718
|
2763
|
23
|
2026-05-27T12:56:32.025519+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-27/1779 /Users/lukas/.screenpipe/data/data/2026-05-27/1779886592025_m1.jpg...
|
PhpStorm
|
faVsco.js – custom.log
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
6
Previous Highlighted Error
Next Highlighted Error
"dealstage": {
"value": "closedlost",
"timestamp": 1778230152543, # 2026-05-08 08:49:12
"source": "CRM_UI",
"sourceId": "userId:71523846",
"updatedByUserId": 71523846,
"versions": [
{
"name": "dealstage",
"value": "closedlost",
"timestamp": 1778230152543, # 2026-05-08 08:49:12
"sourceId": "userId:71523846",
"source": "CRM_UI",
"sourceVid": [],
"requestId": "019e06c6-cd38-76f4-ae81-2d85ca04a72c",
"updatedByUserId": 71523846,
"useTimestampAsPersistenceTimestamp": true,
"sourceUpstreamDeployable": "InboundDbObjects-Service-web"
},
{
"name": "dealstage",
"value": "735341516",
"timestamp": 1773305812311, # 2026-03-12 08:56:52
"sourceId": "userId:76091797",
"source": "CRM_UI",
"sourceVid": [],
"requestId": "019ce143-5502-7857-86c1-e4699e3d745d",
"updatedByUserId": 76091797,
"useTimestampAsPersistenceTimestamp": true,
"sourceUpstreamDeployable": "CrmObjectBuilderRpcServer-userweb"
}
]
},
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide
app ~/jiminny/app, folder
.circleci, folder
backend-code, folder
.env.staging
Dockerfile
start.sh
frontend-code
worker-code
worker-video-code
config.yml, YAML file
config_continue.yml, YAML file
subenv_to_branch_map
workflows_prod.yml, YAML file
workflows_qa.yml, YAML file
workflows_qai.yml, YAML file
workflows_staging.yml, YAML file
workflows_subenv.yml, YAML file
.cursor
.github
.sonarlint
.vscode
.windsurf
app, sources root
Actions
Component
Acl, folder
ActionItems, folder
Activity, folder
ActivityAnalytics, folder
ActivitySearch, folder
AiActivityType, folder
AiAutomation, folder
AiCallScoring, folder
AskAnything, folder
Dtos, folder
Events, folder
AskAnythingPromptService.php, class
HistoryService.php, class
AskJiminnyAi, folder
AWS, folder
BillingManagement, folder
Cache, folder
CoachingFeedback, folder
Country, folder
CustomerApi, folder
Database, folder
Datadog, folder
DateTime, folder
DealInsights, folder
DealRisks, folder
ElasticSearch, folder
Eloquent, folder
Encoding, folder
Encryption, folder
ES, folder
Faker, folder
FeatureFlags, folder
FFMpeg, folder
FileSystem, folder
Gecko, folder
Gong, folder
GuzzleHttp, folder
KeyPoints, folder
Kiosk, folder
LanguageDetection, folder
LiveFeed, folder
Locks, folder
Math, folder
MediaPipeline, folder
MeetingBot, folder
MobileSettings, folder
Model, folder
Notification, folder
Nudge, folder
ParagraphBreaker, folder
ParticipantSpeech, folder
PartitionedCookie, folder
PlaybackPage, folder
Playlist, folder
Prophet, folder
ProphetAi, folder
ProsperWorks, folder
Queue, folder
Router, folder
Saml2, folder
SCIM, folder
Seeder, folder
Sentry, folder
Serializer, folder
Settings, folder
Sidekick, folder
Slack, folder
TeamInsights, folder
TimeMemoryMapper, folder
Transcription, folder
TranscriptionSummary, folder
Twilio, folder
Uploader, folder
UrlGenerator, folder
Utility, folder
Uuid, folder
Waveform, folder
Webhooks, folder
Workflow, folder
Configuration, folder
Console, folder
Commands, folder...
|
[{"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":"JY-20915-fix-missing-header-text-relay, menu","depth":5,"on_screen":true,"help_text":"Git Branch: JY-20915-fix-missing-header-text-relay","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":"TextRelayServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'TextRelayServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'TextRelayServiceTest'","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":"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,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","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\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Mail;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Google\\Service\\Gmail as GoogleGmail;\n\nclass TextRelayService\n{\n public function __construct()\n {\n $credentials = storage_path('text-relay.json');\n\n abort_unless(file_exists($credentials), 422);\n\n putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);\n }\n\n /**\n * Fetch the latest messages since the last sync.\n */\n public function sync(): array\n {\n $mailbox = config('jiminny.google_text_user');\n\n $expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';\n $expectedHost = config('jiminny.google_text_host');\n\n Log::info('[TextRelayService] Starting sync', [\n 'mailbox' => $mailbox,\n 'expected_alias' => $expectedAlias,\n 'expected_host' => $expectedHost,\n ]);\n\n $service = $this->getService($mailbox);\n\n $messageHistory = $this->getHistory($service);\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));\n $messageIds = [];\n\n foreach ($messageHistory as $histories) {\n $messages = $histories->messagesAdded ?? [];\n\n foreach ($messages as $message) {\n $messageId = $message->message->id;\n\n if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {\n continue;\n }\n\n $relayedText = TextRelay::where('email_provider_id', $messageId)->first();\n\n if ($relayedText === null) {\n $relayedText = TextRelay::create([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => $messageId,\n 'status' => TextRelay::STATUS_PROCESSING,\n ]);\n }\n\n $job = new EmailTextRelay($messageId, $relayedText);\n $job->onQueue(Constants::QUEUE_EMAILS);\n\n// dispatch($job);\n\n Log::info('[TextRelayService] Successfully dispatched message', [\n 'message_id' => $messageId,\n 'text_relay_id' => $relayedText->id,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n $messageIds[] = $messageId;\n }\n }\n\n Log::info('[TextRelayService] Sync completed', [\n 'mailbox' => $mailbox,\n 'messages_processed' => count($messageIds),\n 'message_ids' => array_slice($messageIds, 0, 10),\n ]);\n\n return $messageIds;\n }\n\n public function getHistory(GoogleGmail $service): array\n {\n $pageToken = null;\n $topic = config('jiminny.google_text_relay_topic');\n $messages = [];\n $historyId = \\Cache::get($topic);\n\n // If we have no history stored, WatchMailboxEvents must not have run yet :/\n if ($historyId == false) {\n $historyId = $this->refreshHistoryPoint($topic);\n }\n\n $params = [\n 'historyTypes' => 'messageAdded',\n 'startHistoryId' => $historyId,\n ];\n\n do {\n try {\n if ($pageToken) {\n $params['pageToken'] = $pageToken;\n }\n\n $historyResponse = $service->users_history->listUsersHistory(\n config('jiminny.google_text_user'),\n $params\n );\n\n $this->setHistoryPoint($topic, (int) $historyResponse->historyId);\n\n if ($historyResponse->getHistory()) {\n $messages = array_merge($messages, $historyResponse->getHistory());\n $pageToken = $historyResponse->getNextPageToken();\n }\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n } while ($pageToken);\n\n return $messages;\n }\n\n protected function setHistoryPoint(string $topic, int $historyPoint): Carbon\n {\n $expiresAt = now()->addDay();\n\n \\Cache::put($topic, $historyPoint, $expiresAt);\n\n return $expiresAt;\n }\n\n public function getService(string $mailbox): GoogleGmail\n {\n $client = new \\Google_Client();\n $client->useApplicationDefaultCredentials();\n $client->addScope(GoogleGmail::GMAIL_MODIFY);\n $client->setAccessType('offline');\n $client->setSubject($mailbox);\n\n return new GoogleGmail($client);\n }\n\n public function refreshHistoryPoint(string $topic): int\n {\n $mailbox = config('jiminny.google_text_user');\n $service = $this->getService($mailbox);\n\n $watchRequest = new GoogleGmail\\WatchRequest();\n $watchRequest->setLabelIds(['INBOX']);\n $watchRequest->setLabelFilterAction('include');\n $watchRequest->setTopicName($topic);\n\n $watchResponse = $service->users->watch($mailbox, $watchRequest);\n\n //$expiryTimestamp = $watchResponse->expiration / 1000;\n $historyPoint = (int) $watchResponse->historyId;\n\n $this->setHistoryPoint($topic, $historyPoint);\n\n return $historyPoint;\n }\n\n private function isForCurrentEnvironment(\n GoogleGmail $service,\n string $mailbox,\n string $messageId,\n string $expectedAlias,\n string $expectedHost\n ): bool {\n try {\n $message = $service->users_messages->get($mailbox, $messageId);\n $headers = $message->getPayload()->getHeaders();\n\n foreach ($headers as $header) {\n if ($header->name === 'X-Gm-Original-To') {\n $matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);\n\n if (! $matches) {\n // Sanitize PII by removing plus-tag content for logging\n $sanitizedOriginalTo = explode('+', $header->value)[0];\n Log::info('[TextRelayService] Refused message', [\n 'message_id' => $messageId,\n 'original_to_sanitized' => $sanitizedOriginalTo,\n ]);\n }\n\n return $matches;\n }\n }\n\n Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => $messageId,\n ]);\n } catch (\\Exception $e) {\n Log::error('[TextRelayService] Failed to inspect message', [\n 'message_id' => $messageId,\n 'exception' => $e->getMessage(),\n ]);\n \\Sentry::captureException($e);\n }\n\n return false;\n }\n\n private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool\n {\n $parts = explode('@', $recipient, 2);\n\n if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {\n return false;\n }\n\n $localBase = explode('+', $parts[0], 2)[0];\n\n return strcasecmp($localBase, $expectedAlias) === 0;\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,"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":"\"dealstage\": {\n \"value\": \"closedlost\",\n \"timestamp\": 1778230152543, # 2026-05-08 08:49:12\n \"source\": \"CRM_UI\",\n \"sourceId\": \"userId:71523846\",\n \"updatedByUserId\": 71523846,\n \"versions\": [\n {\n \"name\": \"dealstage\",\n \"value\": \"closedlost\",\n \"timestamp\": 1778230152543, # 2026-05-08 08:49:12\n \"sourceId\": \"userId:71523846\",\n \"source\": \"CRM_UI\",\n \"sourceVid\": [],\n \"requestId\": \"019e06c6-cd38-76f4-ae81-2d85ca04a72c\",\n \"updatedByUserId\": 71523846,\n \"useTimestampAsPersistenceTimestamp\": true,\n \"sourceUpstreamDeployable\": \"InboundDbObjects-Service-web\"\n },\n {\n \"name\": \"dealstage\",\n \"value\": \"735341516\",\n \"timestamp\": 1773305812311, # 2026-03-12 08:56:52\n \"sourceId\": \"userId:76091797\",\n \"source\": \"CRM_UI\",\n \"sourceVid\": [],\n \"requestId\": \"019ce143-5502-7857-86c1-e4699e3d745d\",\n \"updatedByUserId\": 76091797,\n \"useTimestampAsPersistenceTimestamp\": true,\n \"sourceUpstreamDeployable\": \"CrmObjectBuilderRpcServer-userweb\"\n }\n ]\n},","depth":4,"on_screen":true,"value":"\"dealstage\": {\n \"value\": \"closedlost\",\n \"timestamp\": 1778230152543, # 2026-05-08 08:49:12\n \"source\": \"CRM_UI\",\n \"sourceId\": \"userId:71523846\",\n \"updatedByUserId\": 71523846,\n \"versions\": [\n {\n \"name\": \"dealstage\",\n \"value\": \"closedlost\",\n \"timestamp\": 1778230152543, # 2026-05-08 08:49:12\n \"sourceId\": \"userId:71523846\",\n \"source\": \"CRM_UI\",\n \"sourceVid\": [],\n \"requestId\": \"019e06c6-cd38-76f4-ae81-2d85ca04a72c\",\n \"updatedByUserId\": 71523846,\n \"useTimestampAsPersistenceTimestamp\": true,\n \"sourceUpstreamDeployable\": \"InboundDbObjects-Service-web\"\n },\n {\n \"name\": \"dealstage\",\n \"value\": \"735341516\",\n \"timestamp\": 1773305812311, # 2026-03-12 08:56:52\n \"sourceId\": \"userId:76091797\",\n \"source\": \"CRM_UI\",\n \"sourceVid\": [],\n \"requestId\": \"019ce143-5502-7857-86c1-e4699e3d745d\",\n \"updatedByUserId\": 76091797,\n \"useTimestampAsPersistenceTimestamp\": true,\n \"sourceUpstreamDeployable\": \"CrmObjectBuilderRpcServer-userweb\"\n }\n ]\n},","role_description":"text entry area","is_enabled":true,"is_focused":true,"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},{"role":"AXStaticText","text":"app ~/jiminny/app, folder","depth":6,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".circleci, folder","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"backend-code, folder","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".env.staging","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dockerfile","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"start.sh","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"frontend-code","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"worker-code","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"worker-video-code","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"config.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"config_continue.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"subenv_to_branch_map","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"workflows_prod.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"workflows_qa.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"workflows_qai.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"workflows_staging.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"workflows_subenv.yml, YAML file","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".cursor","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".github","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".sonarlint","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".vscode","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":".windsurf","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"app, sources root","depth":7,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Actions","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Component","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Acl, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ActionItems, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Activity, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ActivityAnalytics, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ActivitySearch, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AiActivityType, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AiAutomation, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AiCallScoring, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AskAnything, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Dtos, folder","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Events, folder","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AskAnythingPromptService.php, class","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HistoryService.php, class","depth":10,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AskJiminnyAi, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"AWS, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"BillingManagement, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Cache, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"CoachingFeedback, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Country, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"CustomerApi, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Database, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Datadog, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"DateTime, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"DealInsights, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"DealRisks, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ElasticSearch, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Eloquent, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Encoding, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Encryption, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ES, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Faker, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"FeatureFlags, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"FFMpeg, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"FileSystem, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Gecko, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Gong, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"GuzzleHttp, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"KeyPoints, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Kiosk, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"LanguageDetection, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"LiveFeed, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Locks, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Math, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"MediaPipeline, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"MeetingBot, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"MobileSettings, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Model, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Notification, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Nudge, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ParagraphBreaker, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ParticipantSpeech, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"PartitionedCookie, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"PlaybackPage, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Playlist, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Prophet, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ProphetAi, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"ProsperWorks, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Queue, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Router, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Saml2, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"SCIM, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Seeder, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Sentry, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Serializer, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Settings, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Sidekick, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Slack, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"TeamInsights, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"TimeMemoryMapper, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Transcription, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"TranscriptionSummary, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Twilio, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Uploader, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"UrlGenerator, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Utility, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Uuid, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Waveform, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Webhooks, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Workflow, folder","depth":9,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Configuration, folder","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Console, folder","depth":8,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Commands, folder","depth":9,"on_screen":false,"role_description":"text"}]...
|
-3361597453849066527
|
-6006514282509727350
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20915-fix-missing-head Project: faVsco.js, menu
JY-20915-fix-missing-header-text-relay, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Mail;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Google\Service\Gmail as GoogleGmail;
class TextRelayService
{
public function __construct()
{
$credentials = storage_path('text-relay.json');
abort_unless(file_exists($credentials), 422);
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $credentials);
}
/**
* Fetch the latest messages since the last sync.
*/
public function sync(): array
{
$mailbox = config('jiminny.google_text_user');
$expectedAlias = config('jiminny.deploy_region') === 'eu' ? 'catch-all-eu' : 'catch-all';
$expectedHost = config('jiminny.google_text_host');
Log::info('[TextRelayService] Starting sync', [
'mailbox' => $mailbox,
'expected_alias' => $expectedAlias,
'expected_host' => $expectedHost,
]);
$service = $this->getService($mailbox);
$messageHistory = $this->getHistory($service);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$messageHistory ' . PHP_EOL . print_r($messageHistory, true));
$messageIds = [];
foreach ($messageHistory as $histories) {
$messages = $histories->messagesAdded ?? [];
foreach ($messages as $message) {
$messageId = $message->message->id;
if (! $this->isForCurrentEnvironment($service, $mailbox, $messageId, $expectedAlias, $expectedHost)) {
continue;
}
$relayedText = TextRelay::where('email_provider_id', $messageId)->first();
if ($relayedText === null) {
$relayedText = TextRelay::create([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => $messageId,
'status' => TextRelay::STATUS_PROCESSING,
]);
}
$job = new EmailTextRelay($messageId, $relayedText);
$job->onQueue(Constants::QUEUE_EMAILS);
// dispatch($job);
Log::info('[TextRelayService] Successfully dispatched message', [
'message_id' => $messageId,
'text_relay_id' => $relayedText->id,
'queue' => Constants::QUEUE_EMAILS,
]);
$messageIds[] = $messageId;
}
}
Log::info('[TextRelayService] Sync completed', [
'mailbox' => $mailbox,
'messages_processed' => count($messageIds),
'message_ids' => array_slice($messageIds, 0, 10),
]);
return $messageIds;
}
public function getHistory(GoogleGmail $service): array
{
$pageToken = null;
$topic = config('jiminny.google_text_relay_topic');
$messages = [];
$historyId = \Cache::get($topic);
// If we have no history stored, WatchMailboxEvents must not have run yet :/
if ($historyId == false) {
$historyId = $this->refreshHistoryPoint($topic);
}
$params = [
'historyTypes' => 'messageAdded',
'startHistoryId' => $historyId,
];
do {
try {
if ($pageToken) {
$params['pageToken'] = $pageToken;
}
$historyResponse = $service->users_history->listUsersHistory(
config('jiminny.google_text_user'),
$params
);
$this->setHistoryPoint($topic, (int) $historyResponse->historyId);
if ($historyResponse->getHistory()) {
$messages = array_merge($messages, $historyResponse->getHistory());
$pageToken = $historyResponse->getNextPageToken();
}
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to fetch Gmail history', [
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
} while ($pageToken);
return $messages;
}
protected function setHistoryPoint(string $topic, int $historyPoint): Carbon
{
$expiresAt = now()->addDay();
\Cache::put($topic, $historyPoint, $expiresAt);
return $expiresAt;
}
public function getService(string $mailbox): GoogleGmail
{
$client = new \Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(GoogleGmail::GMAIL_MODIFY);
$client->setAccessType('offline');
$client->setSubject($mailbox);
return new GoogleGmail($client);
}
public function refreshHistoryPoint(string $topic): int
{
$mailbox = config('jiminny.google_text_user');
$service = $this->getService($mailbox);
$watchRequest = new GoogleGmail\WatchRequest();
$watchRequest->setLabelIds(['INBOX']);
$watchRequest->setLabelFilterAction('include');
$watchRequest->setTopicName($topic);
$watchResponse = $service->users->watch($mailbox, $watchRequest);
//$expiryTimestamp = $watchResponse->expiration / 1000;
$historyPoint = (int) $watchResponse->historyId;
$this->setHistoryPoint($topic, $historyPoint);
return $historyPoint;
}
private function isForCurrentEnvironment(
GoogleGmail $service,
string $mailbox,
string $messageId,
string $expectedAlias,
string $expectedHost
): bool {
try {
$message = $service->users_messages->get($mailbox, $messageId);
$headers = $message->getPayload()->getHeaders();
foreach ($headers as $header) {
if ($header->name === 'X-Gm-Original-To') {
$matches = $this->matchesExpectedRecipient($header->value, $expectedAlias, $expectedHost);
if (! $matches) {
// Sanitize PII by removing plus-tag content for logging
$sanitizedOriginalTo = explode('+', $header->value)[0];
Log::info('[TextRelayService] Refused message', [
'message_id' => $messageId,
'original_to_sanitized' => $sanitizedOriginalTo,
]);
}
return $matches;
}
}
Log::warning('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => $messageId,
]);
} catch (\Exception $e) {
Log::error('[TextRelayService] Failed to inspect message', [
'message_id' => $messageId,
'exception' => $e->getMessage(),
]);
\Sentry::captureException($e);
}
return false;
}
private function matchesExpectedRecipient(string $recipient, string $expectedAlias, string $expectedHost): bool
{
$parts = explode('@', $recipient, 2);
if (count($parts) !== 2 || strcasecmp($parts[1], $expectedHost) !== 0) {
return false;
}
$localBase = explode('+', $parts[0], 2)[0];
return strcasecmp($localBase, $expectedAlias) === 0;
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
6
Previous Highlighted Error
Next Highlighted Error
"dealstage": {
"value": "closedlost",
"timestamp": 1778230152543, # 2026-05-08 08:49:12
"source": "CRM_UI",
"sourceId": "userId:71523846",
"updatedByUserId": 71523846,
"versions": [
{
"name": "dealstage",
"value": "closedlost",
"timestamp": 1778230152543, # 2026-05-08 08:49:12
"sourceId": "userId:71523846",
"source": "CRM_UI",
"sourceVid": [],
"requestId": "019e06c6-cd38-76f4-ae81-2d85ca04a72c",
"updatedByUserId": 71523846,
"useTimestampAsPersistenceTimestamp": true,
"sourceUpstreamDeployable": "InboundDbObjects-Service-web"
},
{
"name": "dealstage",
"value": "735341516",
"timestamp": 1773305812311, # 2026-03-12 08:56:52
"sourceId": "userId:76091797",
"source": "CRM_UI",
"sourceVid": [],
"requestId": "019ce143-5502-7857-86c1-e4699e3d745d",
"updatedByUserId": 76091797,
"useTimestampAsPersistenceTimestamp": true,
"sourceUpstreamDeployable": "CrmObjectBuilderRpcServer-userweb"
}
]
},
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide
app ~/jiminny/app, folder
.circleci, folder
backend-code, folder
.env.staging
Dockerfile
start.sh
frontend-code
worker-code
worker-video-code
config.yml, YAML file
config_continue.yml, YAML file
subenv_to_branch_map
workflows_prod.yml, YAML file
workflows_qa.yml, YAML file
workflows_qai.yml, YAML file
workflows_staging.yml, YAML file
workflows_subenv.yml, YAML file
.cursor
.github
.sonarlint
.vscode
.windsurf
app, sources root
Actions
Component
Acl, folder
ActionItems, folder
Activity, folder
ActivityAnalytics, folder
ActivitySearch, folder
AiActivityType, folder
AiAutomation, folder
AiCallScoring, folder
AskAnything, folder
Dtos, folder
Events, folder
AskAnythingPromptService.php, class
HistoryService.php, class
AskJiminnyAi, folder
AWS, folder
BillingManagement, folder
Cache, folder
CoachingFeedback, folder
Country, folder
CustomerApi, folder
Database, folder
Datadog, folder
DateTime, folder
DealInsights, folder
DealRisks, folder
ElasticSearch, folder
Eloquent, folder
Encoding, folder
Encryption, folder
ES, folder
Faker, folder
FeatureFlags, folder
FFMpeg, folder
FileSystem, folder
Gecko, folder
Gong, folder
GuzzleHttp, folder
KeyPoints, folder
Kiosk, folder
LanguageDetection, folder
LiveFeed, folder
Locks, folder
Math, folder
MediaPipeline, folder
MeetingBot, folder
MobileSettings, folder
Model, folder
Notification, folder
Nudge, folder
ParagraphBreaker, folder
ParticipantSpeech, folder
PartitionedCookie, folder
PlaybackPage, folder
Playlist, folder
Prophet, folder
ProphetAi, folder
ProsperWorks, folder
Queue, folder
Router, folder
Saml2, folder
SCIM, folder
Seeder, folder
Sentry, folder
Serializer, folder
Settings, folder
Sidekick, folder
Slack, folder
TeamInsights, folder
TimeMemoryMapper, folder
Transcription, folder
TranscriptionSummary, folder
Twilio, folder
Uploader, folder
UrlGenerator, folder
Utility, folder
Uuid, folder
Waveform, folder
Webhooks, folder
Workflow, folder
Configuration, folder
Console, folder
Commands, folder...
|
78716
|
NULL
|
NULL
|
NULL
|