@symerian/symi 2.6.2 → 2.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/dist/{agents-qLMWAYwU.js → agents-Dm0V9Z2G.js} +4 -4
  2. package/dist/{agents.config-BmdFH4J5.js → agents.config-DP0CLvIA.js} +1 -1
  3. package/dist/{agents.config-BfjAwFCr.js → agents.config-WdkJjM2-.js} +1 -1
  4. package/dist/{audio-preflight-BVaaZWkg.js → audio-preflight-DHTaS5U1.js} +4 -4
  5. package/dist/{auth-choice-D1u_GPfQ.js → auth-choice-B9OnYICm.js} +1 -1
  6. package/dist/{auth-choice-zFq3WRQ0.js → auth-choice-CXHi61T5.js} +1 -1
  7. package/dist/{banner-DpH44qlJ.js → banner-ToxTMzfL.js} +1 -1
  8. package/dist/build-info.json +3 -3
  9. package/dist/bundled/boot-md/handler.js +6 -6
  10. package/dist/bundled/session-memory/handler.js +6 -6
  11. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  12. package/dist/{channel-options-C8tKm8re.js → channel-options-CsGrHsjP.js} +1 -1
  13. package/dist/{channel-options-0iOfzVR3.js → channel-options-Jl8AKRLD.js} +1 -1
  14. package/dist/{channel-web-DYinYBz4.js → channel-web-qFGaLytG.js} +1 -1
  15. package/dist/{channels-cli-93tLT17t.js → channels-cli-BFyOmW-R.js} +4 -4
  16. package/dist/{channels-cli-C8HgSMTH.js → channels-cli-DQTl2Pk5.js} +4 -4
  17. package/dist/{chrome-DkaXoP36.js → chrome-DYZwl5Gv.js} +7 -7
  18. package/dist/{cli-BYJyRW2M.js → cli-B4biLt2z.js} +1 -1
  19. package/dist/{cli-DapZXGSB.js → cli-DQw_LEew.js} +1 -1
  20. package/dist/{command-registry-9EhYc6da.js → command-registry-D1OePePk.js} +9 -9
  21. package/dist/{completion-cli-BFZv3K5D.js → completion-cli-CI-0hC_u.js} +2 -2
  22. package/dist/{completion-cli-CCeQlMlC.js → completion-cli-DW8a1WYc.js} +1 -1
  23. package/dist/{config-cli-Dv2mtIeM.js → config-cli-CpiluXlO.js} +1 -1
  24. package/dist/{config-cli-DbWMIBUz.js → config-cli-DHXt5cQZ.js} +1 -1
  25. package/dist/{configure-CVQf2UJE.js → configure-CmVnpTNi.js} +3 -3
  26. package/dist/{configure-B8zV6Hxj.js → configure-Ha9cu8Bu.js} +3 -3
  27. package/dist/{deliver-C46-vyqg.js → deliver-dODxSv3b.js} +1 -1
  28. package/dist/{doctor-completion-BunqvoqZ.js → doctor-completion-CRNCOXcf.js} +1 -1
  29. package/dist/{doctor-completion-CLeX1kaN.js → doctor-completion-ve-JPlmN.js} +1 -1
  30. package/dist/entry.js +1 -1
  31. package/dist/extensionAPI.js +1 -1
  32. package/dist/{gateway-cli-Co-tp-WC.js → gateway-cli-BPsbjmUI.js} +9 -9
  33. package/dist/{gateway-cli-DMey_29a.js → gateway-cli-Cc7N8N_E.js} +9 -9
  34. package/dist/{glass-ui-ws-CKb1jTZR.js → glass-ui-ws-1O1O2xC6.js} +7 -7
  35. package/dist/{glass-ui-ws-C4O227UO.js → glass-ui-ws-CKwLnOwl.js} +7 -7
  36. package/dist/{health-CDGOsNeD.js → health-DTRWmRB8.js} +1 -1
  37. package/dist/{health-CM1asUG8.js → health-tYyUNVp5.js} +1 -1
  38. package/dist/{hooks-cli-DFKB3Z6X.js → hooks-cli-Cp81vqRc.js} +2 -2
  39. package/dist/{hooks-cli-Tx0TzSju.js → hooks-cli-eC03ywfG.js} +2 -2
  40. package/dist/{image-CuzFLQWC.js → image-CXu8W39c.js} +1 -1
  41. package/dist/index.js +6 -6
  42. package/dist/llm-slug-generator.js +6 -6
  43. package/dist/{models-CiqHYwje.js → models-CuhnCX2U.js} +2 -2
  44. package/dist/{models-cli-B4ATSsNS.js → models-cli-BzwGQUdn.js} +3 -3
  45. package/dist/{models-cli-B-b-gBKG.js → models-cli-CFr_ZP5y.js} +2 -2
  46. package/dist/{onboard-B_ECX48L.js → onboard-B2g2Q6dd.js} +2 -2
  47. package/dist/{onboard-DcnGZKZX.js → onboard-CcB6pmEy.js} +2 -2
  48. package/dist/{onboard-channels-pfSGhg_C.js → onboard-channels-CWd17q6h.js} +1 -1
  49. package/dist/{onboard-channels-FFQPpuEN.js → onboard-channels-DmRBC7VN.js} +1 -1
  50. package/dist/{onboarding-jhZxQcZ3.js → onboarding-DMqlt_p6.js} +3 -3
  51. package/dist/{onboarding-BU14cspo.js → onboarding-DwvQIqR8.js} +3 -3
  52. package/dist/{onboarding.finalize-ByZT4dF5.js → onboarding.finalize-BUSzTwhM.js} +5 -5
  53. package/dist/{onboarding.finalize-B8oOMfHc.js → onboarding.finalize-lJmZSE4C.js} +6 -6
  54. package/dist/{pi-embedded-BY9AnmoP.js → pi-embedded-CT2JDfQr.js} +147 -141
  55. package/dist/{pi-embedded-helpers-CfqDGQ9J.js → pi-embedded-helpers-pubKo8HQ.js} +4 -4
  56. package/dist/{plugin-registry-DXWJkJX6.js → plugin-registry-DZdPnpP_.js} +1 -1
  57. package/dist/{plugin-registry-CNf1_8hj.js → plugin-registry-vW2V1yCi.js} +1 -1
  58. package/dist/plugin-sdk/{channel-web-DZQQ0mzN.js → channel-web-38aqDKeT.js} +1 -1
  59. package/dist/plugin-sdk/index.js +2 -2
  60. package/dist/plugin-sdk/{reply-DvZeyOVA.js → reply-BjJZjZRr.js} +143 -137
  61. package/dist/plugin-sdk/{web-BCsJFuQu.js → web-BgKYnau3.js} +2 -2
  62. package/dist/{plugins-cli-BiedlZMy.js → plugins-cli-BTq9c2hZ.js} +2 -2
  63. package/dist/{plugins-cli-C9TYM40P.js → plugins-cli-DkAx9r3h.js} +2 -2
  64. package/dist/{program-bnWda72r.js → program-DZx9PtyT.js} +7 -7
  65. package/dist/{program-context-CY1jWc5A.js → program-context-DyfuToE1.js} +17 -17
  66. package/dist/{prompt-select-styled-B_lFTtqp.js → prompt-select-styled-CifWTOoY.js} +4 -4
  67. package/dist/{prompt-select-styled-BEnZY8wI.js → prompt-select-styled-DNbD3v3G.js} +4 -4
  68. package/dist/{provider-auth-helpers-DApJuzBd.js → provider-auth-helpers-BPIIDTwA.js} +1 -1
  69. package/dist/{provider-auth-helpers-DcNKxc7D.js → provider-auth-helpers-BzySaUp5.js} +1 -1
  70. package/dist/{push-apns-CKKHlj6j.js → push-apns-DbpeXPGR.js} +1 -1
  71. package/dist/{push-apns-DA7UMNQH.js → push-apns-IdD-dKZm.js} +1 -1
  72. package/dist/{pw-ai-m0mj2KWK.js → pw-ai-B5asscAD.js} +1 -1
  73. package/dist/{register.agent-ulu0VmOg.js → register.agent-CfFcSvM1.js} +6 -6
  74. package/dist/{register.agent-8lxVlmzQ.js → register.agent-TFUcxDGN.js} +5 -5
  75. package/dist/{register.configure-rq0h5r3X.js → register.configure-BwRTNCws.js} +6 -6
  76. package/dist/{register.configure-45--Sly1.js → register.configure-D3BJejOC.js} +6 -6
  77. package/dist/{register.maintenance-DyEJx7NY.js → register.maintenance-B5350ddh.js} +7 -7
  78. package/dist/{register.maintenance-CXbxRtWI.js → register.maintenance-DkdVYwbj.js} +8 -8
  79. package/dist/{register.message-CiN_pt6K.js → register.message-DTopCPGC.js} +2 -2
  80. package/dist/{register.message-C7Yh1uky.js → register.message-FbCBAfJO.js} +2 -2
  81. package/dist/{register.onboard-e_2hc2Rm.js → register.onboard-DITZn8dx.js} +4 -4
  82. package/dist/{register.onboard-BWaRkbei.js → register.onboard-GSv5xyA3.js} +4 -4
  83. package/dist/{register.setup-BIIFHtF7.js → register.setup-BI6lILMU.js} +4 -4
  84. package/dist/{register.setup-zwh90Vn-.js → register.setup-BuOeoBk0.js} +4 -4
  85. package/dist/{register.status-health-sessions-D6t5maEr.js → register.status-health-sessions-C1RhWKxN.js} +3 -3
  86. package/dist/{register.status-health-sessions-O-sVAFHE.js → register.status-health-sessions-EK4_odLb.js} +3 -3
  87. package/dist/{register.subclis-DOiZocR6.js → register.subclis-Bn_Mr_Wa.js} +9 -9
  88. package/dist/{reply-05js8eGB.js → reply-BGSd_cMI.js} +138 -132
  89. package/dist/{run-main-u-Eyc8Wm.js → run-main-Bu9IAm9E.js} +14 -14
  90. package/dist/{runner-CU9l0uJh.js → runner-WAG0M5s9.js} +1 -1
  91. package/dist/{server-methods-Dds-iEoY.js → server-methods-dxn6-zQz.js} +7 -7
  92. package/dist/{server-methods-Bvl1xubo.js → server-methods-tA9lkIQT.js} +7 -7
  93. package/dist/{server-node-events-Qp-gJMET.js → server-node-events-6jcJSpXA.js} +2 -2
  94. package/dist/{server-node-events-qGqpsPxm.js → server-node-events-CzcTGD9T.js} +2 -2
  95. package/dist/{status-BRSo-LY3.js → status-8176C-aV.js} +2 -2
  96. package/dist/{status-BqQ9mm64.js → status-CcQSl2sN.js} +1 -1
  97. package/dist/{status-BATOXGRi.js → status-DGKT6HnE.js} +2 -2
  98. package/dist/{status-CfYa1Q9K.js → status-DmPOSk-A.js} +1 -1
  99. package/dist/{subagent-registry-lbDgDwLy.js → subagent-registry-DqFKNTCX.js} +141 -135
  100. package/dist/{unified-runner-B4ICXRlg.js → unified-runner-BbanUEmo.js} +166 -160
  101. package/dist/{update-cli-BOaP4XyQ.js → update-cli-FMcGr7MA.js} +8 -8
  102. package/dist/{update-cli-R8-SSkbS.js → update-cli-YCXB_6jz.js} +7 -7
  103. package/dist/{update-runner-CWJ4pC1b.js → update-runner-C8OkrKjW.js} +1 -1
  104. package/dist/{update-runner-B8UmqtLI.js → update-runner-DMP1rCS1.js} +1 -1
  105. package/dist/{web-CQH9fSkH.js → web-BsS1ia0M.js} +6 -6
  106. package/dist/{web-CSrDbJJ7.js → web-CQ2F1f3a.js} +1 -1
  107. package/dist/{web-BWybtnEa.js → web-DoRGusTq.js} +2 -2
  108. package/dist/{web-DBFW0ejP.js → web-LUMjboLF.js} +1 -1
  109. package/package.json +1 -1
@@ -10,10 +10,10 @@ import { $ as resolveSymiAgentDir, B as resolveApiKeyForProvider, C as normalize
10
10
  import { n as formatCliCommand, r as resolveCliName, t as isTruthyEnvValue } from "./env-BDXYbTKj.js";
11
11
  import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-cCYzSU9h.js";
12
12
  import { t as parseBooleanValue$1 } from "./boolean-CE7i9tBR.js";
13
- import { $ as normalizeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as mergeDeliveryContext, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-CfqDGQ9J.js";
13
+ import { $ as normalizeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as mergeDeliveryContext, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-pubKo8HQ.js";
14
14
  import { A as VERSION, C as getConfigValueAtPath, D as isSafeExecutableValue, E as unsetConfigValueAtPath, O as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, S as unsetConfigOverride, T as setConfigValueAtPath, _ as parseDurationMs, a as writeConfigFile, b as resetConfigOverrides, c as TELEGRAM_COMMAND_NAME_PATTERN, f as isInboundPathAllowed, g as normalizeScpRemoteHost, h as resolveIMessageRemoteAttachmentRoots, i as resolveConfigSnapshotHash, k as resolveAgentMaxConcurrent, l as normalizeTelegramCommandName, m as resolveIMessageAttachmentRoots, n as loadConfig, o as validateConfigObjectWithPlugins, r as readConfigFileSnapshot, u as resolveTelegramCustomCommands, v as validateJsonSchemaValue, w as parseConfigPath, x as setConfigOverride, y as getConfigOverrides } from "./config-5SdHIcHU.js";
15
15
  import { a as applyTestPluginDefaults, c as resolveMemorySlotDecision, d as isDangerousHostEnvVarName, i as safeStatSync, n as discoverSymiPlugins, o as normalizePluginsConfig, r as isPathInside, s as resolveEnableState, t as loadPluginManifestRegistry, u as isPathInsideWithRealpath } from "./manifest-registry-yb7sAlu4.js";
16
- import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-DkaXoP36.js";
16
+ import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-DYZwl5Gv.js";
17
17
  import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-Bs0AW1g3.js";
18
18
  import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-XIsvXeC-.js";
19
19
  import { c as detectMime, d as imageMimeFromFormat, f as isAudioFileName, g as MAX_IMAGE_BYTES, i as getImageMetadata, l as extensionForMime, p as isGifMedia, s as resizeToJpeg, v as mediaKindFromMime } from "./image-ops-C7CauEK8.js";
@@ -31,10 +31,10 @@ import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i
31
31
  import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as fetchDiscord, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-CvhXrdgS.js";
32
32
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-BBh3Gsrx.js";
33
33
  import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-SqqWIT22.js";
34
- import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-C46-vyqg.js";
34
+ import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-dODxSv3b.js";
35
35
  import { a as logMessageProcessed, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, i as logLaneEnqueue, l as logWebhookProcessed, m as isDiagnosticsEnabled, o as logMessageQueued, p as emitDiagnosticEvent, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as logWebhookReceived } from "./diagnostic-rPhsBoZz.js";
36
36
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-Zw87xFym.js";
37
- import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-CuzFLQWC.js";
37
+ import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-CXu8W39c.js";
38
38
  import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-Bux9Y_xD.js";
39
39
  import { $ as isVoiceCompatibleAudio, A as extractTelegramLocation, B as normalizeAllowFromWithStore$1, C as buildTelegramGroupFrom, D as buildTypingThreadParams, E as buildTelegramThreadParams, F as resolveTelegramMediaPlaceholder, G as formatLocationText, H as firstDefined$1, I as resolveTelegramReplyId, J as readChannelAllowFromStore, K as toLocationContext, L as resolveTelegramStreamMode, M as normalizeForwardedContext, N as resolveTelegramForumThreadId, O as describeReplyTarget, P as resolveTelegramGroupAllowFromContext, Q as listPairingChannels, R as resolveTelegramThreadSpec, S as buildSenderName, T as buildTelegramParentPeer, U as isSenderIdAllowed, V as resolveSenderAllowMatch, W as mergeAllowFromSources, X as upsertChannelPairingRequest, Y as removeChannelAllowFromStoreEntry, Z as getPairingAdapter, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildGroupLabel, c as sendStickerTelegram, d as wasSentByBot, et as parseTelegramTarget, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as hasBotMention, k as expandTextLinks, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as addChannelAllowFromStoreEntry, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, tt as resolveTelegramTargetChatType, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramGroupPeerId, x as buildSenderLabel, y as withTelegramApiErrorLogging, z as isSenderAllowed$1 } from "./send-DYj_o4_F.js";
40
40
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-Bv5YDJc8.js";
@@ -49,7 +49,7 @@ import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-DL3f
49
49
  import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, t as getAgentScopedMediaLocalRoots } from "./local-roots-DhZz0Ybs.js";
50
50
  import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-CTiz95Vb.js";
51
51
  import { _ as resolveNativeCommandsEnabled, a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, g as isRestartEnabled, h as isNativeCommandsExplicitlyDisabled, i as listChatCommands, l as parseCommandArgs, m as isCommandFlagEnabled, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices, v as resolveNativeSkillsEnabled } from "./commands-registry-Bfc7Uz0o.js";
52
- import { _ as CLI_OUTPUT_MAX_BUFFER, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as resolveMediaUnderstandingScope, h as normalizeMediaUnderstandingChatType, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveTimeoutMs$1, n as createMediaAttachmentCache, o as runCapability, p as resolveConcurrency, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as applyTemplate, y as registerUnhandledRejectionHandler } from "./runner-CU9l0uJh.js";
52
+ import { _ as CLI_OUTPUT_MAX_BUFFER, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as resolveMediaUnderstandingScope, h as normalizeMediaUnderstandingChatType, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveTimeoutMs$1, n as createMediaAttachmentCache, o as runCapability, p as resolveConcurrency, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as applyTemplate, y as registerUnhandledRejectionHandler } from "./runner-WAG0M5s9.js";
53
53
  import { c as getSkillsSnapshotVersion, d as createAsyncLock, f as readJsonFile, i as resolveSkillCommandInvocation, l as pruneExpiredPending, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as writeJsonAtomic, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as resolvePairingPaths } from "./skill-commands-DcVwOafC.js";
54
54
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-DSDTl6Kj.js";
55
55
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-Bso4i15F.js";
@@ -80,7 +80,7 @@ import AjvPkg from "ajv";
80
80
  import { CURRENT_SESSION_VERSION, DefaultResourceLoader, SessionManager, SettingsManager, codingTools, createAgentSession, createEditTool, createReadTool, createWriteTool, estimateTokens, generateSummary, readTool } from "@mariozechner/pi-coding-agent";
81
81
  import { createServer } from "node:http";
82
82
  import { ProxyAgent, fetch as fetch$1 } from "undici";
83
- import WebSocket$1, { WebSocket } from "ws";
83
+ import WebSocket, { WebSocket as WebSocket$1 } from "ws";
84
84
  import { Buffer as Buffer$1 } from "node:buffer";
85
85
  import { EdgeTTS } from "node-edge-tts";
86
86
  import { createJiti } from "jiti";
@@ -4201,7 +4201,7 @@ function resolveMemoryBackendConfig(params) {
4201
4201
 
4202
4202
  //#endregion
4203
4203
  //#region src/memory/search-manager.ts
4204
- const log$9 = createSubsystemLogger("memory");
4204
+ const log$10 = createSubsystemLogger("memory");
4205
4205
  const QMD_MANAGER_CACHE = /* @__PURE__ */ new Map();
4206
4206
  async function getMemorySearchManager(params) {
4207
4207
  const resolved = resolveMemoryBackendConfig(params);
@@ -4234,7 +4234,7 @@ async function getMemorySearchManager(params) {
4234
4234
  }
4235
4235
  } catch (err) {
4236
4236
  const message = err instanceof Error ? err.message : String(err);
4237
- log$9.warn(`qmd memory unavailable; falling back to builtin: ${message}`);
4237
+ log$10.warn(`qmd memory unavailable; falling back to builtin: ${message}`);
4238
4238
  }
4239
4239
  }
4240
4240
  try {
@@ -4261,7 +4261,7 @@ var FallbackMemoryManager = class {
4261
4261
  } catch (err) {
4262
4262
  this.primaryFailed = true;
4263
4263
  this.lastError = err instanceof Error ? err.message : String(err);
4264
- log$9.warn(`qmd memory failed; switching to builtin index: ${this.lastError}`);
4264
+ log$10.warn(`qmd memory failed; switching to builtin index: ${this.lastError}`);
4265
4265
  await this.deps.primary.close?.().catch(() => {});
4266
4266
  this.evictCacheEntry();
4267
4267
  }
@@ -4341,12 +4341,12 @@ var FallbackMemoryManager = class {
4341
4341
  try {
4342
4342
  fallback = await this.deps.fallbackFactory();
4343
4343
  if (!fallback) {
4344
- log$9.warn("memory fallback requested but builtin index is unavailable");
4344
+ log$10.warn("memory fallback requested but builtin index is unavailable");
4345
4345
  return null;
4346
4346
  }
4347
4347
  } catch (err) {
4348
4348
  const message = err instanceof Error ? err.message : String(err);
4349
- log$9.warn(`memory fallback unavailable: ${message}`);
4349
+ log$10.warn(`memory fallback unavailable: ${message}`);
4350
4350
  return null;
4351
4351
  }
4352
4352
  this.fallback = fallback;
@@ -4922,7 +4922,7 @@ async function handleSlackAction(params, cfg, context) {
4922
4922
 
4923
4923
  //#endregion
4924
4924
  //#region src/agents/pi-embedded-runner/logger.ts
4925
- const log$8 = createSubsystemLogger("agent/embedded");
4925
+ const log$9 = createSubsystemLogger("agent/embedded");
4926
4926
 
4927
4927
  //#endregion
4928
4928
  //#region src/agents/pi-embedded-runner/extra-params.ts
@@ -4990,7 +4990,7 @@ function resolveAnthropicBetas(extraParams, provider, modelId) {
4990
4990
  for (const beta of configured) if (typeof beta === "string" && beta.trim()) betas.add(beta.trim());
4991
4991
  }
4992
4992
  if (extraParams?.context1m === true) if (isAnthropic1MModel(modelId)) betas.add(ANTHROPIC_CONTEXT_1M_BETA);
4993
- else log$8.warn(`ignoring context1m for non-opus/sonnet model: ${provider}/${modelId}`);
4993
+ else log$9.warn(`ignoring context1m for non-opus/sonnet model: ${provider}/${modelId}`);
4994
4994
  return betas.size > 0 ? [...betas] : void 0;
4995
4995
  }
4996
4996
  function mergeAnthropicBetaHeader(headers, betas) {
@@ -5901,14 +5901,14 @@ function logToolSchemasForGoogle(params) {
5901
5901
  if (params.provider !== "google-antigravity" && params.provider !== "google-gemini-cli") return;
5902
5902
  const toolNames = params.tools.map((tool, index) => `${index}:${tool.name}`);
5903
5903
  const tools = sanitizeToolsForGoogle(params);
5904
- log$8.info("google tool schema snapshot", {
5904
+ log$9.info("google tool schema snapshot", {
5905
5905
  provider: params.provider,
5906
5906
  toolCount: tools.length,
5907
5907
  tools: toolNames
5908
5908
  });
5909
5909
  for (const [index, tool] of tools.entries()) {
5910
5910
  const violations = findUnsupportedSchemaKeywords(tool.parameters, `${tool.name}.parameters`);
5911
- if (violations.length > 0) log$8.warn("google tool schema has unsupported keywords", {
5911
+ if (violations.length > 0) log$9.warn("google tool schema has unsupported keywords", {
5912
5912
  index,
5913
5913
  tool: tool.name,
5914
5914
  violations: violations.slice(0, 12),
@@ -5920,7 +5920,7 @@ const compactionFailureEmitter = new EventEmitter();
5920
5920
  registerUnhandledRejectionHandler((reason) => {
5921
5921
  const message = describeUnknownError(reason);
5922
5922
  if (!isCompactionFailureError(message)) return false;
5923
- log$8.error(`Auto-compaction failed (unhandled): ${message}`);
5923
+ log$9.error(`Auto-compaction failed (unhandled): ${message}`);
5924
5924
  compactionFailureEmitter.emit("failure", message);
5925
5925
  return true;
5926
5926
  });
@@ -5972,7 +5972,7 @@ function applyGoogleTurnOrderingFix(params) {
5972
5972
  const sanitized = sanitizeGoogleTurnOrdering(params.messages);
5973
5973
  const didPrepend = sanitized !== params.messages;
5974
5974
  if (didPrepend && !hasGoogleTurnOrderingMarker(params.sessionManager)) {
5975
- (params.warn ?? ((message) => log$8.warn(message)))(`google turn ordering fixup: prepended user bootstrap (sessionId=${params.sessionId})`);
5975
+ (params.warn ?? ((message) => log$9.warn(message)))(`google turn ordering fixup: prepended user bootstrap (sessionId=${params.sessionId})`);
5976
5976
  markGoogleTurnOrderingMarker(params.sessionManager);
5977
5977
  }
5978
5978
  return {
@@ -6765,7 +6765,7 @@ function applySystemPromptOverrideToSession(session, override) {
6765
6765
 
6766
6766
  //#endregion
6767
6767
  //#region src/agents/pi-tools.before-tool-call.ts
6768
- const log$7 = createSubsystemLogger("agents/tools");
6768
+ const log$8 = createSubsystemLogger("agents/tools");
6769
6769
  const BEFORE_TOOL_CALL_WRAPPED = Symbol("beforeToolCallWrapped");
6770
6770
  const adjustedParamsByToolCallId = /* @__PURE__ */ new Map();
6771
6771
  const MAX_TRACKED_ADJUSTED_PARAMS = 1024;
@@ -6799,7 +6799,7 @@ async function recordLoopOutcome(args) {
6799
6799
  config: args.ctx.loopDetection
6800
6800
  });
6801
6801
  } catch (err) {
6802
- log$7.warn(`tool loop outcome tracking failed: tool=${args.toolName} error=${String(err)}`);
6802
+ log$8.warn(`tool loop outcome tracking failed: tool=${args.toolName} error=${String(err)}`);
6803
6803
  }
6804
6804
  }
6805
6805
  async function runBeforeToolCallHook(args) {
@@ -6816,7 +6816,7 @@ async function runBeforeToolCallHook(args) {
6816
6816
  const loopResult = detectToolCallLoop(sessionState, toolName, params, args.ctx.loopDetection);
6817
6817
  if (loopResult.stuck) {
6818
6818
  if (loopResult.level === "critical") {
6819
- log$7.error(`Blocking ${toolName} due to critical loop: ${loopResult.message}`);
6819
+ log$8.error(`Blocking ${toolName} due to critical loop: ${loopResult.message}`);
6820
6820
  logToolLoopAction({
6821
6821
  sessionKey: args.ctx.sessionKey,
6822
6822
  sessionId: args.ctx?.agentId,
@@ -6833,7 +6833,7 @@ async function runBeforeToolCallHook(args) {
6833
6833
  reason: loopResult.message
6834
6834
  };
6835
6835
  } else if (shouldEmitLoopWarning(sessionState, loopResult.warningKey ?? `${loopResult.detector}:${toolName}`, loopResult.count)) {
6836
- log$7.warn(`Loop warning for ${toolName}: ${loopResult.message}`);
6836
+ log$8.warn(`Loop warning for ${toolName}: ${loopResult.message}`);
6837
6837
  logToolLoopAction({
6838
6838
  sessionKey: args.ctx.sessionKey,
6839
6839
  sessionId: args.ctx?.agentId,
@@ -6883,7 +6883,7 @@ async function runBeforeToolCallHook(args) {
6883
6883
  }
6884
6884
  } catch (err) {
6885
6885
  const toolCallId = args.toolCallId ? ` toolCallId=${args.toolCallId}` : "";
6886
- log$7.warn(`before_tool_call hook failed: tool=${toolName}${toolCallId} error=${String(err)}`);
6886
+ log$8.warn(`before_tool_call hook failed: tool=${toolName}${toolCallId} error=${String(err)}`);
6887
6887
  }
6888
6888
  return {
6889
6889
  blocked: false,
@@ -8636,7 +8636,7 @@ var GatewayClient = class {
8636
8636
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
8637
8637
  });
8638
8638
  }
8639
- this.ws = new WebSocket(url, wsOptions);
8639
+ this.ws = new WebSocket$1(url, wsOptions);
8640
8640
  this.ws.on("open", () => {
8641
8641
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
8642
8642
  const tlsError = this.validateTlsFingerprint();
@@ -8855,7 +8855,7 @@ var GatewayClient = class {
8855
8855
  return null;
8856
8856
  }
8857
8857
  async request(method, params, opts) {
8858
- if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
8858
+ if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
8859
8859
  const id = randomUUID();
8860
8860
  const frame = {
8861
8861
  type: "req",
@@ -10121,7 +10121,7 @@ async function routeReply(params) {
10121
10121
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
10122
10122
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
10123
10123
  try {
10124
- const { deliverOutboundPayloads } = await import("./deliver-C46-vyqg.js").then((n) => n.n);
10124
+ const { deliverOutboundPayloads } = await import("./deliver-dODxSv3b.js").then((n) => n.n);
10125
10125
  return {
10126
10126
  ok: true,
10127
10127
  messageId: (await deliverOutboundPayloads({
@@ -20175,7 +20175,7 @@ function createRunRegistry(options) {
20175
20175
 
20176
20176
  //#endregion
20177
20177
  //#region src/process/supervisor/supervisor.ts
20178
- const log$6 = createSubsystemLogger("process/supervisor");
20178
+ const log$7 = createSubsystemLogger("process/supervisor");
20179
20179
  function clampTimeout(value) {
20180
20180
  if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) return;
20181
20181
  return Math.max(1, Math.floor(value));
@@ -20361,7 +20361,7 @@ function createProcessSupervisor() {
20361
20361
  exitCode: null,
20362
20362
  exitSignal: null
20363
20363
  });
20364
- log$6.warn(`spawn failed: runId=${runId} reason=${String(err)}`);
20364
+ log$7.warn(`spawn failed: runId=${runId} reason=${String(err)}`);
20365
20365
  throw err;
20366
20366
  }
20367
20367
  };
@@ -36730,7 +36730,7 @@ function createNodesTool(options) {
36730
36730
 
36731
36731
  //#endregion
36732
36732
  //#region src/gateway/session-utils.ts
36733
- const log$5 = createSubsystemLogger("session-utils");
36733
+ const log$6 = createSubsystemLogger("session-utils");
36734
36734
  const AVATAR_MAX_BYTES = 2 * 1024 * 1024;
36735
36735
  function isStorePathTemplate(store) {
36736
36736
  return typeof store === "string" && store.includes("{agentId}");
@@ -37593,7 +37593,7 @@ async function resolveAnnounceTarget(params) {
37593
37593
 
37594
37594
  //#endregion
37595
37595
  //#region src/agents/tools/sessions-send-tool.a2a.ts
37596
- const log$4 = createSubsystemLogger("agents/sessions-send");
37596
+ const log$5 = createSubsystemLogger("agents/sessions-send");
37597
37597
  async function runSessionsSendA2AFlow(params) {
37598
37598
  const runContextId = params.waitRunId ?? "unknown";
37599
37599
  try {
@@ -37684,7 +37684,7 @@ async function runSessionsSendA2AFlow(params) {
37684
37684
  timeoutMs: 1e4
37685
37685
  });
37686
37686
  } catch (err) {
37687
- log$4.warn("sessions_send announce delivery failed", {
37687
+ log$5.warn("sessions_send announce delivery failed", {
37688
37688
  runId: runContextId,
37689
37689
  channel: announceTarget.channel,
37690
37690
  to: announceTarget.to,
@@ -37692,7 +37692,7 @@ async function runSessionsSendA2AFlow(params) {
37692
37692
  });
37693
37693
  }
37694
37694
  } catch (err) {
37695
- log$4.warn("sessions_send announce flow failed", {
37695
+ log$5.warn("sessions_send announce flow failed", {
37696
37696
  runId: runContextId,
37697
37697
  error: formatErrorMessage(err)
37698
37698
  });
@@ -40648,7 +40648,7 @@ function buildCliArgs(params) {
40648
40648
 
40649
40649
  //#endregion
40650
40650
  //#region src/agents/cli-runner.ts
40651
- const log$3 = createSubsystemLogger("agent/claude-cli");
40651
+ const log$4 = createSubsystemLogger("agent/claude-cli");
40652
40652
  async function runCliAgent(params) {
40653
40653
  const started = Date.now();
40654
40654
  const workspaceResolution = resolveRunWorkspaceDir({
@@ -40661,7 +40661,7 @@ async function runCliAgent(params) {
40661
40661
  const redactedSessionId = redactRunIdentifier(params.sessionId);
40662
40662
  const redactedSessionKey = redactRunIdentifier(params.sessionKey);
40663
40663
  const redactedWorkspace = redactRunIdentifier(resolvedWorkspace);
40664
- if (workspaceResolution.usedFallback) log$3.warn(`[workspace-fallback] caller=runCliAgent reason=${workspaceResolution.fallbackReason} run=${params.runId} session=${redactedSessionId} sessionKey=${redactedSessionKey} agent=${workspaceResolution.agentId} workspace=${redactedWorkspace}`);
40664
+ if (workspaceResolution.usedFallback) log$4.warn(`[workspace-fallback] caller=runCliAgent reason=${workspaceResolution.fallbackReason} run=${params.runId} session=${redactedSessionId} sessionKey=${redactedSessionKey} agent=${workspaceResolution.agentId} workspace=${redactedWorkspace}`);
40665
40665
  const workspaceDir = resolvedWorkspace;
40666
40666
  const backendResolved = resolveCliBackendConfig(params.provider, params.config);
40667
40667
  if (!backendResolved) throw new Error(`Unknown CLI backend: ${params.provider}`);
@@ -40678,7 +40678,7 @@ async function runCliAgent(params) {
40678
40678
  sessionId: params.sessionId,
40679
40679
  warn: makeBootstrapWarn({
40680
40680
  sessionLabel,
40681
- warn: (message) => log$3.warn(message)
40681
+ warn: (message) => log$4.warn(message)
40682
40682
  })
40683
40683
  });
40684
40684
  const { defaultAgentId, sessionAgentId } = resolveSessionAgentIds({
@@ -40744,7 +40744,7 @@ async function runCliAgent(params) {
40744
40744
  const queueKey = backend.serialize ?? true ? backendResolved.id : `${backendResolved.id}:${params.runId}`;
40745
40745
  try {
40746
40746
  const output = await enqueueCliRun(queueKey, async () => {
40747
- log$3.info(`cli exec: provider=${params.provider} model=${normalizedModel} promptChars=${params.prompt.length}`);
40747
+ log$4.info(`cli exec: provider=${params.provider} model=${normalizedModel} promptChars=${params.prompt.length}`);
40748
40748
  const logOutputText = isTruthyEnvValue(process.env.SYMI_CLAUDE_CLI_LOG_OUTPUT);
40749
40749
  if (logOutputText) {
40750
40750
  const logArgs = [];
@@ -40777,7 +40777,7 @@ async function runCliAgent(params) {
40777
40777
  const promptIndex = logArgs.indexOf(argsPrompt);
40778
40778
  if (promptIndex >= 0) logArgs[promptIndex] = `<prompt:${argsPrompt.length} chars>`;
40779
40779
  }
40780
- log$3.info(`cli argv: ${backend.command} ${logArgs.join(" ")}`);
40780
+ log$4.info(`cli argv: ${backend.command} ${logArgs.join(" ")}`);
40781
40781
  }
40782
40782
  const env = (() => {
40783
40783
  const next = {
@@ -40815,17 +40815,17 @@ async function runCliAgent(params) {
40815
40815
  const stdout = result.stdout.trim();
40816
40816
  const stderr = result.stderr.trim();
40817
40817
  if (logOutputText) {
40818
- if (stdout) log$3.info(`cli stdout:\n${stdout}`);
40819
- if (stderr) log$3.info(`cli stderr:\n${stderr}`);
40818
+ if (stdout) log$4.info(`cli stdout:\n${stdout}`);
40819
+ if (stderr) log$4.info(`cli stderr:\n${stderr}`);
40820
40820
  }
40821
40821
  if (shouldLogVerbose()) {
40822
- if (stdout) log$3.debug(`cli stdout:\n${stdout}`);
40823
- if (stderr) log$3.debug(`cli stderr:\n${stderr}`);
40822
+ if (stdout) log$4.debug(`cli stdout:\n${stdout}`);
40823
+ if (stderr) log$4.debug(`cli stderr:\n${stderr}`);
40824
40824
  }
40825
40825
  if (result.exitCode !== 0 || result.reason !== "exit") {
40826
40826
  if (result.reason === "no-output-timeout" || result.noOutputTimedOut) {
40827
40827
  const timeoutReason = `CLI produced no output for ${Math.round(noOutputTimeoutMs / 1e3)}s and was terminated.`;
40828
- log$3.warn(`cli watchdog timeout: provider=${params.provider} model=${modelId} session=${cliSessionIdToSend ?? params.sessionId} noOutputTimeoutMs=${noOutputTimeoutMs} pid=${managedRun.pid ?? "unknown"}`);
40828
+ log$4.warn(`cli watchdog timeout: provider=${params.provider} model=${modelId} session=${cliSessionIdToSend ?? params.sessionId} noOutputTimeoutMs=${noOutputTimeoutMs} pid=${managedRun.pid ?? "unknown"}`);
40829
40829
  throw new FailoverError(timeoutReason, {
40830
40830
  reason: "timeout",
40831
40831
  provider: params.provider,
@@ -43560,7 +43560,7 @@ async function deliverSessionMaintenanceWarning(params) {
43560
43560
  return;
43561
43561
  }
43562
43562
  try {
43563
- const { deliverOutboundPayloads } = await import("./deliver-C46-vyqg.js").then((n) => n.n);
43563
+ const { deliverOutboundPayloads } = await import("./deliver-dODxSv3b.js").then((n) => n.n);
43564
43564
  await deliverOutboundPayloads({
43565
43565
  cfg: params.cfg,
43566
43566
  channel,
@@ -47006,7 +47006,7 @@ async function describeStickerImage(params) {
47006
47006
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
47007
47007
  try {
47008
47008
  const buffer = await fs$1.readFile(imagePath);
47009
- const { describeImageWithModel } = await import("./image-CuzFLQWC.js").then((n) => n.n);
47009
+ const { describeImageWithModel } = await import("./image-CXu8W39c.js").then((n) => n.n);
47010
47010
  return (await describeImageWithModel({
47011
47011
  buffer,
47012
47012
  fileName: "sticker.webp",
@@ -49668,7 +49668,7 @@ async function preflightDiscordMessage(params) {
49668
49668
  let preflightTranscript;
49669
49669
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
49670
49670
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
49671
- const { transcribeFirstAudio } = await import("./audio-preflight-BVaaZWkg.js");
49671
+ const { transcribeFirstAudio } = await import("./audio-preflight-DHTaS5U1.js");
49672
49672
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
49673
49673
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
49674
49674
  ctx: {
@@ -53674,7 +53674,7 @@ function isVoiceChannelType(type) {
53674
53674
  function createDefaultDeps() {
53675
53675
  return {
53676
53676
  sendMessageWhatsApp: async (...args) => {
53677
- const { sendMessageWhatsApp } = await import("./web-CQH9fSkH.js");
53677
+ const { sendMessageWhatsApp } = await import("./web-BsS1ia0M.js");
53678
53678
  return await sendMessageWhatsApp(...args);
53679
53679
  },
53680
53680
  sendMessageTelegram: async (...args) => {
@@ -56579,7 +56579,7 @@ function createDiscordGatewayPlugin(params) {
56579
56579
  super(options);
56580
56580
  }
56581
56581
  createWebSocket(url) {
56582
- return new WebSocket$1(url, { agent });
56582
+ return new WebSocket(url, { agent });
56583
56583
  }
56584
56584
  }
56585
56585
  return new ProxyGatewayPlugin();
@@ -66797,7 +66797,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
66797
66797
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
66798
66798
  let preflightTranscript;
66799
66799
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
66800
- const { transcribeFirstAudio } = await import("./audio-preflight-BVaaZWkg.js");
66800
+ const { transcribeFirstAudio } = await import("./audio-preflight-DHTaS5U1.js");
66801
66801
  preflightTranscript = await transcribeFirstAudio({
66802
66802
  ctx: {
66803
66803
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -68954,7 +68954,7 @@ function loadWebLoginQr() {
68954
68954
  return webLoginQrPromise;
68955
68955
  }
68956
68956
  function loadWebChannel() {
68957
- webChannelPromise ??= import("./web-CQH9fSkH.js");
68957
+ webChannelPromise ??= import("./web-BsS1ia0M.js");
68958
68958
  return webChannelPromise;
68959
68959
  }
68960
68960
  function loadWhatsAppActions() {
@@ -69638,7 +69638,7 @@ function createPluginLoaderLogger(logger) {
69638
69638
 
69639
69639
  //#endregion
69640
69640
  //#region src/plugins/tools.ts
69641
- const log$2 = createSubsystemLogger("plugins");
69641
+ const log$3 = createSubsystemLogger("plugins");
69642
69642
  const pluginToolMeta = /* @__PURE__ */ new WeakMap();
69643
69643
  function getPluginToolMeta(tool) {
69644
69644
  return pluginToolMeta.get(tool);
@@ -69660,7 +69660,7 @@ function resolvePluginTools(params) {
69660
69660
  const registry = loadSymiPlugins({
69661
69661
  config: effectiveConfig,
69662
69662
  workspaceDir: params.context.workspaceDir,
69663
- logger: createPluginLoaderLogger(log$2)
69663
+ logger: createPluginLoaderLogger(log$3)
69664
69664
  });
69665
69665
  const tools = [];
69666
69666
  const existing = params.existingToolNames ?? /* @__PURE__ */ new Set();
@@ -69672,7 +69672,7 @@ function resolvePluginTools(params) {
69672
69672
  const pluginIdKey = normalizeToolName(entry.pluginId);
69673
69673
  if (existingNormalized.has(pluginIdKey)) {
69674
69674
  const message = `plugin id conflicts with core tool name (${entry.pluginId})`;
69675
- log$2.error(message);
69675
+ log$3.error(message);
69676
69676
  registry.diagnostics.push({
69677
69677
  level: "error",
69678
69678
  pluginId: entry.pluginId,
@@ -69686,7 +69686,7 @@ function resolvePluginTools(params) {
69686
69686
  try {
69687
69687
  resolved = entry.factory(params.context);
69688
69688
  } catch (err) {
69689
- log$2.error(`plugin tool failed (${entry.pluginId}): ${String(err)}`);
69689
+ log$3.error(`plugin tool failed (${entry.pluginId}): ${String(err)}`);
69690
69690
  continue;
69691
69691
  }
69692
69692
  if (!resolved) continue;
@@ -69701,7 +69701,7 @@ function resolvePluginTools(params) {
69701
69701
  for (const tool of list) {
69702
69702
  if (nameSet.has(tool.name) || existing.has(tool.name)) {
69703
69703
  const message = `plugin tool name conflict (${entry.pluginId}): ${tool.name}`;
69704
- log$2.error(message);
69704
+ log$3.error(message);
69705
69705
  registry.diagnostics.push({
69706
69706
  level: "error",
69707
69707
  pluginId: entry.pluginId,
@@ -71408,7 +71408,7 @@ async function truncateOversizedToolResultsInSession(params) {
71408
71408
  const textLength = getToolResultTextLength(msg);
71409
71409
  if (textLength > maxChars) {
71410
71410
  oversizedIndices.push(i);
71411
- log$8.info(`[tool-result-truncation] Found oversized tool result: entry=${entry.id} chars=${textLength} maxChars=${maxChars} sessionKey=${params.sessionKey ?? params.sessionId ?? "unknown"}`);
71411
+ log$9.info(`[tool-result-truncation] Found oversized tool result: entry=${entry.id} chars=${textLength} maxChars=${maxChars} sessionKey=${params.sessionKey ?? params.sessionId ?? "unknown"}`);
71412
71412
  }
71413
71413
  }
71414
71414
  if (oversizedIndices.length === 0) return {
@@ -71430,7 +71430,7 @@ async function truncateOversizedToolResultsInSession(params) {
71430
71430
  message = truncateToolResultMessage(message, maxChars);
71431
71431
  truncatedCount++;
71432
71432
  const newLength = getToolResultTextLength(message);
71433
- log$8.info(`[tool-result-truncation] Truncated tool result: originalEntry=${entry.id} newChars=${newLength} sessionKey=${params.sessionKey ?? params.sessionId ?? "unknown"}`);
71433
+ log$9.info(`[tool-result-truncation] Truncated tool result: originalEntry=${entry.id} newChars=${newLength} sessionKey=${params.sessionKey ?? params.sessionId ?? "unknown"}`);
71434
71434
  }
71435
71435
  sessionManager.appendMessage(message);
71436
71436
  } else if (entry.type === "compaction") sessionManager.appendCompaction(entry.summary, entry.firstKeptEntryId, entry.tokensBefore, entry.details, entry.fromHook);
@@ -71444,14 +71444,14 @@ async function truncateOversizedToolResultsInSession(params) {
71444
71444
  if (entry.name) sessionManager.appendSessionInfo(entry.name);
71445
71445
  }
71446
71446
  }
71447
- log$8.info(`[tool-result-truncation] Truncated ${truncatedCount} tool result(s) in session (contextWindow=${contextWindowTokens} maxChars=${maxChars}) sessionKey=${params.sessionKey ?? params.sessionId ?? "unknown"}`);
71447
+ log$9.info(`[tool-result-truncation] Truncated ${truncatedCount} tool result(s) in session (contextWindow=${contextWindowTokens} maxChars=${maxChars}) sessionKey=${params.sessionKey ?? params.sessionId ?? "unknown"}`);
71448
71448
  return {
71449
71449
  truncated: true,
71450
71450
  truncatedCount
71451
71451
  };
71452
71452
  } catch (err) {
71453
71453
  const errMsg = err instanceof Error ? err.message : String(err);
71454
- log$8.warn(`[tool-result-truncation] Failed to truncate: ${errMsg}`);
71454
+ log$9.warn(`[tool-result-truncation] Failed to truncate: ${errMsg}`);
71455
71455
  return {
71456
71456
  truncated: false,
71457
71457
  truncatedCount: 0,
@@ -72626,7 +72626,7 @@ async function compactEmbeddedPiSessionDirect(params) {
72626
72626
  const provider = (params.provider ?? DEFAULT_PROVIDER).trim() || DEFAULT_PROVIDER;
72627
72627
  const modelId = (params.model ?? DEFAULT_MODEL).trim() || DEFAULT_MODEL;
72628
72628
  const fail = (reason) => {
72629
- log$8.warn(`[compaction-diag] end runId=${runId} sessionKey=${params.sessionKey ?? params.sessionId} diagId=${diagId} trigger=${trigger} provider=${provider}/${modelId} attempt=${attempt} maxAttempts=${maxAttempts} outcome=failed reason=${classifyCompactionReason(reason)} durationMs=${Date.now() - startedAt}`);
72629
+ log$9.warn(`[compaction-diag] end runId=${runId} sessionKey=${params.sessionKey ?? params.sessionId} diagId=${diagId} trigger=${trigger} provider=${provider}/${modelId} attempt=${attempt} maxAttempts=${maxAttempts} outcome=failed reason=${classifyCompactionReason(reason)} durationMs=${Date.now() - startedAt}`);
72630
72630
  return {
72631
72631
  ok: false,
72632
72632
  compacted: false,
@@ -72694,7 +72694,7 @@ async function compactEmbeddedPiSessionDirect(params) {
72694
72694
  sessionId: params.sessionId,
72695
72695
  warn: makeBootstrapWarn({
72696
72696
  sessionLabel,
72697
- warn: (message) => log$8.warn(message)
72697
+ warn: (message) => log$9.warn(message)
72698
72698
  })
72699
72699
  });
72700
72700
  const runAbortController = new AbortController();
@@ -72834,7 +72834,7 @@ async function compactEmbeddedPiSessionDirect(params) {
72834
72834
  try {
72835
72835
  await repairSessionFileIfNeeded({
72836
72836
  sessionFile: params.sessionFile,
72837
- warn: (message) => log$8.warn(message)
72837
+ warn: (message) => log$9.warn(message)
72838
72838
  });
72839
72839
  await prewarmSessionFile(params.sessionFile);
72840
72840
  const transcriptPolicy = resolveTranscriptPolicy({
@@ -72919,13 +72919,13 @@ async function compactEmbeddedPiSessionDirect(params) {
72919
72919
  messages: preCompactionMessages,
72920
72920
  sessionFile: params.sessionFile
72921
72921
  }, hookCtx).catch((hookErr) => {
72922
- log$8.warn(`before_compaction hook failed: ${String(hookErr)}`);
72922
+ log$9.warn(`before_compaction hook failed: ${String(hookErr)}`);
72923
72923
  });
72924
- const diagEnabled = log$8.isEnabled("debug");
72924
+ const diagEnabled = log$9.isEnabled("debug");
72925
72925
  const preMetrics = diagEnabled ? summarizeCompactionMessages(session.messages) : void 0;
72926
72926
  if (diagEnabled && preMetrics) {
72927
- log$8.debug(`[compaction-diag] start runId=${runId} sessionKey=${params.sessionKey ?? params.sessionId} diagId=${diagId} trigger=${trigger} provider=${provider}/${modelId} attempt=${attempt} maxAttempts=${maxAttempts} pre.messages=${preMetrics.messages} pre.historyTextChars=${preMetrics.historyTextChars} pre.toolResultChars=${preMetrics.toolResultChars} pre.estTokens=${preMetrics.estTokens ?? "unknown"}`);
72928
- log$8.debug(`[compaction-diag] contributors diagId=${diagId} top=${JSON.stringify(preMetrics.contributors)}`);
72927
+ log$9.debug(`[compaction-diag] start runId=${runId} sessionKey=${params.sessionKey ?? params.sessionId} diagId=${diagId} trigger=${trigger} provider=${provider}/${modelId} attempt=${attempt} maxAttempts=${maxAttempts} pre.messages=${preMetrics.messages} pre.historyTextChars=${preMetrics.historyTextChars} pre.toolResultChars=${preMetrics.toolResultChars} pre.estTokens=${preMetrics.estTokens ?? "unknown"}`);
72928
+ log$9.debug(`[compaction-diag] contributors diagId=${diagId} top=${JSON.stringify(preMetrics.contributors)}`);
72929
72929
  }
72930
72930
  const compactStartedAt = Date.now();
72931
72931
  const result = await compactWithSafetyTimeout(() => session.compact(params.customInstructions));
@@ -72943,10 +72943,10 @@ async function compactEmbeddedPiSessionDirect(params) {
72943
72943
  compactedCount: limited.length - session.messages.length,
72944
72944
  sessionFile: params.sessionFile
72945
72945
  }, hookCtx).catch((hookErr) => {
72946
- log$8.warn(`after_compaction hook failed: ${hookErr}`);
72946
+ log$9.warn(`after_compaction hook failed: ${hookErr}`);
72947
72947
  });
72948
72948
  const postMetrics = diagEnabled ? summarizeCompactionMessages(session.messages) : void 0;
72949
- if (diagEnabled && preMetrics && postMetrics) log$8.debug(`[compaction-diag] end runId=${runId} sessionKey=${params.sessionKey ?? params.sessionId} diagId=${diagId} trigger=${trigger} provider=${provider}/${modelId} attempt=${attempt} maxAttempts=${maxAttempts} outcome=compacted reason=none durationMs=${Date.now() - compactStartedAt} retrying=false post.messages=${postMetrics.messages} post.historyTextChars=${postMetrics.historyTextChars} post.toolResultChars=${postMetrics.toolResultChars} post.estTokens=${postMetrics.estTokens ?? "unknown"} delta.messages=${postMetrics.messages - preMetrics.messages} delta.historyTextChars=${postMetrics.historyTextChars - preMetrics.historyTextChars} delta.toolResultChars=${postMetrics.toolResultChars - preMetrics.toolResultChars} delta.estTokens=${typeof preMetrics.estTokens === "number" && typeof postMetrics.estTokens === "number" ? postMetrics.estTokens - preMetrics.estTokens : "unknown"}`);
72949
+ if (diagEnabled && preMetrics && postMetrics) log$9.debug(`[compaction-diag] end runId=${runId} sessionKey=${params.sessionKey ?? params.sessionId} diagId=${diagId} trigger=${trigger} provider=${provider}/${modelId} attempt=${attempt} maxAttempts=${maxAttempts} outcome=compacted reason=none durationMs=${Date.now() - compactStartedAt} retrying=false post.messages=${postMetrics.messages} post.historyTextChars=${postMetrics.historyTextChars} post.toolResultChars=${postMetrics.toolResultChars} post.estTokens=${postMetrics.estTokens ?? "unknown"} delta.messages=${postMetrics.messages - preMetrics.messages} delta.historyTextChars=${postMetrics.historyTextChars - preMetrics.historyTextChars} delta.toolResultChars=${postMetrics.toolResultChars - preMetrics.toolResultChars} delta.estTokens=${typeof preMetrics.estTokens === "number" && typeof postMetrics.estTokens === "number" ? postMetrics.estTokens - preMetrics.estTokens : "unknown"}`);
72950
72950
  return {
72951
72951
  ok: true,
72952
72952
  compacted: true,
@@ -73031,7 +73031,7 @@ function getQueuedFileWriter(writers, filePath) {
73031
73031
  //#endregion
73032
73032
  //#region src/agents/anthropic-payload-log.ts
73033
73033
  const writers$1 = /* @__PURE__ */ new Map();
73034
- const log$1 = createSubsystemLogger("agent/anthropic-payload");
73034
+ const log$2 = createSubsystemLogger("agent/anthropic-payload");
73035
73035
  function resolvePayloadLogConfig(env) {
73036
73036
  const enabled = parseBooleanValue$1(env.SYMI_ANTHROPIC_PAYLOAD_LOG) ?? false;
73037
73037
  const fileOverride = env.SYMI_ANTHROPIC_PAYLOAD_LOG_FILE?.trim();
@@ -73121,13 +73121,13 @@ function createAnthropicPayloadLogger(params) {
73121
73121
  usage,
73122
73122
  error: errorMessage
73123
73123
  });
73124
- log$1.info("anthropic usage", {
73124
+ log$2.info("anthropic usage", {
73125
73125
  runId: params.runId,
73126
73126
  sessionId: params.sessionId,
73127
73127
  usage
73128
73128
  });
73129
73129
  };
73130
- log$1.info("anthropic payload logger enabled", { filePath: writer.filePath });
73130
+ log$2.info("anthropic payload logger enabled", { filePath: writer.filePath });
73131
73131
  return {
73132
73132
  enabled: true,
73133
73133
  wrapStreamFn,
@@ -74996,7 +74996,7 @@ function createEmbeddedPiSessionEventHandler(ctx) {
74996
74996
  //#region src/agents/pi-embedded-subscribe.ts
74997
74997
  const THINKING_TAG_SCAN_RE = /<\s*(\/?)\s*(?:think(?:ing)?|thought|antthinking)\s*>/gi;
74998
74998
  const FINAL_TAG_SCAN_RE = /<\s*(\/?)\s*final\s*>/gi;
74999
- const log = createSubsystemLogger("agent/embedded");
74999
+ const log$1 = createSubsystemLogger("agent/embedded");
75000
75000
  function subscribeEmbeddedPiSession(params) {
75001
75001
  const reasoningMode = params.reasoningMode ?? "off";
75002
75002
  const useMarkdown = (params.toolResultFormat ?? "markdown") === "markdown";
@@ -75153,7 +75153,7 @@ function subscribeEmbeddedPiSession(params) {
75153
75153
  state.compactionRetryReject = reject;
75154
75154
  });
75155
75155
  state.compactionRetryPromise.catch((err) => {
75156
- log.debug(`compaction promise rejected (no waiter): ${String(err)}`);
75156
+ log$1.debug(`compaction promise rejected (no waiter): ${String(err)}`);
75157
75157
  });
75158
75158
  }
75159
75159
  };
@@ -75305,7 +75305,7 @@ function subscribeEmbeddedPiSession(params) {
75305
75305
  if (!chunk) return;
75306
75306
  if (chunk === state.lastBlockReplyText) return;
75307
75307
  if (isMessagingToolDuplicateNormalized(normalizeTextForComparison(chunk), messagingToolSentTextsNormalized)) {
75308
- log.debug(`Skipping block reply - already sent via messaging tool: ${chunk.slice(0, 50)}...`);
75308
+ log$1.debug(`Skipping block reply - already sent via messaging tool: ${chunk.slice(0, 50)}...`);
75309
75309
  return;
75310
75310
  }
75311
75311
  if (shouldSkipAssistantText(chunk)) return;
@@ -75383,7 +75383,7 @@ function subscribeEmbeddedPiSession(params) {
75383
75383
  const ctx = {
75384
75384
  params,
75385
75385
  state,
75386
- log,
75386
+ log: log$1,
75387
75387
  blockChunking,
75388
75388
  blockChunker,
75389
75389
  hookRunner: params.hookRunner,
@@ -75416,7 +75416,7 @@ function subscribeEmbeddedPiSession(params) {
75416
75416
  if (state.unsubscribed) return;
75417
75417
  state.unsubscribed = true;
75418
75418
  if (state.compactionRetryPromise) {
75419
- log.debug(`unsubscribe: rejecting compaction wait runId=${params.runId}`);
75419
+ log$1.debug(`unsubscribe: rejecting compaction wait runId=${params.runId}`);
75420
75420
  const reject = state.compactionRetryReject;
75421
75421
  state.compactionRetryResolve = void 0;
75422
75422
  state.compactionRetryReject = void 0;
@@ -75426,11 +75426,11 @@ function subscribeEmbeddedPiSession(params) {
75426
75426
  reject?.(abortErr);
75427
75427
  }
75428
75428
  if (params.session.isCompacting) {
75429
- log.debug(`unsubscribe: aborting in-flight compaction runId=${params.runId}`);
75429
+ log$1.debug(`unsubscribe: aborting in-flight compaction runId=${params.runId}`);
75430
75430
  try {
75431
75431
  params.session.abortCompaction();
75432
75432
  } catch (err) {
75433
- log.warn(`unsubscribe: compaction abort failed runId=${params.runId} err=${String(err)}`);
75433
+ log$1.warn(`unsubscribe: compaction abort failed runId=${params.runId} err=${String(err)}`);
75434
75434
  }
75435
75435
  }
75436
75436
  sessionUnsubscribe();
@@ -75525,6 +75525,7 @@ function validateShellCommand(command) {
75525
75525
 
75526
75526
  //#endregion
75527
75527
  //#region src/agents/pi-tools.validate-wrapper.ts
75528
+ const log = createSubsystemLogger("agents/tool-validate");
75528
75529
  const EXEC_TOOL_NAMES = new Set(["exec", "bash"]);
75529
75530
  const FILE_TOOL_NAMES = new Set([
75530
75531
  "write",
@@ -75583,13 +75584,22 @@ function wrapToolWithArgValidation(tool) {
75583
75584
  execute(toolCallId, params, ...rest) {
75584
75585
  if (isExecTool) {
75585
75586
  const command = params.command ?? params.cmd;
75586
- if (typeof command !== "string") return originalExecute.call(tool, toolCallId, params, ...rest);
75587
+ if (typeof command !== "string") {
75588
+ log.debug(`[validate] exec called without string command: keys=${Object.keys(params).join(",")}`);
75589
+ return originalExecute.call(tool, toolCallId, params, ...rest);
75590
+ }
75587
75591
  const result = validateShellCommand(command);
75588
- if (!result.valid) return Promise.resolve({ output: `Error: ${result.reason}. The command appears to contain model control tokens. Please provide a clean shell command without any <|, |>, or XML-like tags. Only valid shell syntax is accepted.` });
75589
- if (result.cleaned !== command) return originalExecute.call(tool, toolCallId, {
75590
- ...params,
75591
- command: result.cleaned
75592
- }, ...rest);
75592
+ if (!result.valid) {
75593
+ log.warn(`[validate] exec command rejected: reason=${result.reason} raw=${command.slice(0, 100)}`);
75594
+ return Promise.resolve({ output: `Error: ${result.reason}. The command appears to contain model control tokens. Please provide a clean shell command without any <|, |>, or XML-like tags. Only valid shell syntax is accepted.` });
75595
+ }
75596
+ if (result.cleaned !== command) {
75597
+ log.debug(`[validate] exec command cleaned: raw=${command.slice(0, 80)} → cleaned=${result.cleaned.slice(0, 80)}`);
75598
+ return originalExecute.call(tool, toolCallId, {
75599
+ ...params,
75600
+ command: result.cleaned
75601
+ }, ...rest);
75602
+ }
75593
75603
  return originalExecute.call(tool, toolCallId, params, ...rest);
75594
75604
  }
75595
75605
  const pathKey = FILE_PATH_KEYS.find((k) => typeof params[k] === "string");
@@ -76236,7 +76246,7 @@ function isImageExtension(filePath) {
76236
76246
  }
76237
76247
  async function sanitizeImagesWithLog(images, label, imageSanitization) {
76238
76248
  const { images: sanitized, dropped } = await sanitizeImageBlocks(images, label, imageSanitization);
76239
- if (dropped > 0) log$8.warn(`Native image: dropped ${dropped} image(s) after sanitization (${label}).`);
76249
+ if (dropped > 0) log$9.warn(`Native image: dropped ${dropped} image(s) after sanitization (${label}).`);
76240
76250
  return sanitized;
76241
76251
  }
76242
76252
  /**
@@ -76311,7 +76321,7 @@ async function loadImageFromRef(ref, workspaceDir, options) {
76311
76321
  try {
76312
76322
  let targetPath = ref.resolved;
76313
76323
  if (ref.type === "url") {
76314
- log$8.debug(`Native image: rejecting remote URL (local-only): ${ref.resolved}`);
76324
+ log$9.debug(`Native image: rejecting remote URL (local-only): ${ref.resolved}`);
76315
76325
  return null;
76316
76326
  }
76317
76327
  if (ref.type === "path") {
@@ -76321,7 +76331,7 @@ async function loadImageFromRef(ref, workspaceDir, options) {
76321
76331
  cwd: options.sandbox.root
76322
76332
  }).hostPath;
76323
76333
  } catch (err) {
76324
- log$8.debug(`Native image: sandbox validation failed for ${ref.resolved}: ${err instanceof Error ? err.message : String(err)}`);
76334
+ log$9.debug(`Native image: sandbox validation failed for ${ref.resolved}: ${err instanceof Error ? err.message : String(err)}`);
76325
76335
  return null;
76326
76336
  }
76327
76337
  else if (!path.isAbsolute(targetPath)) targetPath = path.resolve(workspaceDir, targetPath);
@@ -76335,7 +76345,7 @@ async function loadImageFromRef(ref, workspaceDir, options) {
76335
76345
  })
76336
76346
  }) : await loadWebMedia(targetPath, options?.maxBytes);
76337
76347
  if (media.kind !== "image") {
76338
- log$8.debug(`Native image: not an image file: ${targetPath} (got ${media.kind})`);
76348
+ log$9.debug(`Native image: not an image file: ${targetPath} (got ${media.kind})`);
76339
76349
  return null;
76340
76350
  }
76341
76351
  const mimeType = media.contentType ?? "image/jpeg";
@@ -76345,7 +76355,7 @@ async function loadImageFromRef(ref, workspaceDir, options) {
76345
76355
  mimeType
76346
76356
  };
76347
76357
  } catch (err) {
76348
- log$8.debug(`Native image: failed to load ${ref.resolved}: ${err instanceof Error ? err.message : String(err)}`);
76358
+ log$9.debug(`Native image: failed to load ${ref.resolved}: ${err instanceof Error ? err.message : String(err)}`);
76349
76359
  return null;
76350
76360
  }
76351
76361
  }
@@ -76444,7 +76454,7 @@ async function detectAndLoadPromptImages(params) {
76444
76454
  loadedCount: 0,
76445
76455
  skippedCount: 0
76446
76456
  };
76447
- log$8.debug(`Native image: detected ${allRefs.length} image refs (${promptRefs.length} in prompt, ${uniqueHistoryRefs.length} in history)`);
76457
+ log$9.debug(`Native image: detected ${allRefs.length} image refs (${promptRefs.length} in prompt, ${uniqueHistoryRefs.length} in history)`);
76448
76458
  const promptImages = [...params.existingImages ?? []];
76449
76459
  const historyImagesByIndex = /* @__PURE__ */ new Map();
76450
76460
  let loadedCount = 0;
@@ -76461,7 +76471,7 @@ async function detectAndLoadPromptImages(params) {
76461
76471
  else historyImagesByIndex.set(ref.messageIndex, [image]);
76462
76472
  } else promptImages.push(image);
76463
76473
  loadedCount++;
76464
- log$8.debug(`Native image: loaded ${ref.type} ${ref.resolved}`);
76474
+ log$9.debug(`Native image: loaded ${ref.type} ${ref.resolved}`);
76465
76475
  } else skippedCount++;
76466
76476
  }
76467
76477
  const imageSanitization = { maxDimensionPx: params.maxDimensionPx };
@@ -76557,7 +76567,7 @@ async function runEmbeddedAttempt(params) {
76557
76567
  const resolvedWorkspace = resolveUserPath(params.workspaceDir);
76558
76568
  const prevCwd = process.cwd();
76559
76569
  const runAbortController = new AbortController();
76560
- log$8.debug(`embedded run start: runId=${params.runId} sessionId=${params.sessionId} provider=${params.provider} model=${params.modelId} thinking=${params.thinkLevel} messageChannel=${params.messageChannel ?? params.messageProvider ?? "unknown"}`);
76570
+ log$9.debug(`embedded run start: runId=${params.runId} sessionId=${params.sessionId} provider=${params.provider} model=${params.modelId} thinking=${params.thinkLevel} messageChannel=${params.messageChannel ?? params.messageProvider ?? "unknown"}`);
76561
76571
  await fs$1.mkdir(resolvedWorkspace, { recursive: true });
76562
76572
  const sandboxSessionKey = params.sessionKey?.trim() || params.sessionId;
76563
76573
  const sandbox = await resolveSandboxContext({
@@ -76593,7 +76603,7 @@ async function runEmbeddedAttempt(params) {
76593
76603
  sessionId: params.sessionId,
76594
76604
  warn: makeBootstrapWarn({
76595
76605
  sessionLabel,
76596
- warn: (message) => log$8.warn(message)
76606
+ warn: (message) => log$9.warn(message)
76597
76607
  })
76598
76608
  });
76599
76609
  const workspaceNotes = hookAdjustedBootstrapFiles.some((file) => file.name === DEFAULT_BOOTSTRAP_FILENAME && !file.missing) ? ["Reminder: commit your changes in this workspace after edits."] : void 0;
@@ -76792,7 +76802,7 @@ async function runEmbeddedAttempt(params) {
76792
76802
  try {
76793
76803
  await repairSessionFileIfNeeded({
76794
76804
  sessionFile: params.sessionFile,
76795
- warn: (message) => log$8.warn(message)
76805
+ warn: (message) => log$9.warn(message)
76796
76806
  });
76797
76807
  const hadSessionFile = await fs$1.stat(params.sessionFile).then(() => true).catch(() => false);
76798
76808
  const transcriptPolicy = resolveTranscriptPolicy({
@@ -76801,7 +76811,7 @@ async function runEmbeddedAttempt(params) {
76801
76811
  modelId: params.modelId
76802
76812
  });
76803
76813
  const versionCheck = await handleSessionVersion(params.sessionFile);
76804
- if (versionCheck.archived) log$8.warn(`session archived: created by ${versionCheck.poisonVersion}, known corruption range → ${versionCheck.archivePath}`);
76814
+ if (versionCheck.archived) log$9.warn(`session archived: created by ${versionCheck.poisonVersion}, known corruption range → ${versionCheck.archivePath}`);
76805
76815
  await prewarmSessionFile(params.sessionFile);
76806
76816
  sessionManager = guardSessionManager(SessionManager.open(params.sessionFile), {
76807
76817
  agentId: sessionAgentId,
@@ -77056,7 +77066,6 @@ async function runEmbeddedAttempt(params) {
77056
77066
  const TOOL_ERROR_ABORT_THRESHOLD = 5;
77057
77067
  const TOOL_ERROR_WARN_THRESHOLD = 3;
77058
77068
  let consecutiveToolErrors = 0;
77059
- let lastErrorToolName = "";
77060
77069
  const subscription = subscribeEmbeddedPiSession({
77061
77070
  session: activeSession,
77062
77071
  runId: params.runId,
@@ -77080,26 +77089,23 @@ async function runEmbeddedAttempt(params) {
77080
77089
  params.onAgentEvent?.(evt);
77081
77090
  if (evt.stream === "tool" && !aborted) {
77082
77091
  const phase = typeof evt.data?.phase === "string" ? evt.data.phase : "";
77083
- const toolName = typeof evt.data?.name === "string" ? evt.data.name : "";
77084
77092
  const isError = evt.data?.isError === true;
77085
- if (phase === "result" && toolName) {
77086
- if (isError && toolName === lastErrorToolName) consecutiveToolErrors++;
77087
- else if (isError) {
77088
- consecutiveToolErrors = 1;
77089
- lastErrorToolName = toolName;
77090
- } else {
77091
- consecutiveToolErrors = 0;
77092
- lastErrorToolName = "";
77093
- }
77093
+ if (phase === "result") {
77094
+ if (isError) consecutiveToolErrors++;
77095
+ else consecutiveToolErrors = 0;
77094
77096
  if (consecutiveToolErrors >= TOOL_ERROR_ABORT_THRESHOLD) {
77095
- log$8.error(`Agent-loop circuit breaker: ${toolName} failed ${consecutiveToolErrors} consecutive times. Aborting run ${params.runId}.`);
77096
- abortRun(false, /* @__PURE__ */ new Error(`Tool ${toolName} failed ${consecutiveToolErrors} consecutive times. The model may be generating corrupted tool arguments. Run aborted to prevent infinite loop.`));
77097
- } else if (consecutiveToolErrors === TOOL_ERROR_WARN_THRESHOLD) log$8.warn(`Agent-loop tool error warning: ${toolName} failed ${consecutiveToolErrors} times consecutively. runId=${params.runId}`);
77097
+ const toolName = typeof evt.data?.name === "string" ? evt.data.name : "unknown";
77098
+ log$9.error(`Agent-loop circuit breaker: ${consecutiveToolErrors} consecutive tool errors (last: ${toolName}). Aborting run ${params.runId}.`);
77099
+ abortRun(false, /* @__PURE__ */ new Error(`${consecutiveToolErrors} consecutive tool errors. The model may be generating corrupted tool arguments. Run aborted to prevent infinite loop.`));
77100
+ } else if (consecutiveToolErrors === TOOL_ERROR_WARN_THRESHOLD) {
77101
+ const toolName = typeof evt.data?.name === "string" ? evt.data.name : "unknown";
77102
+ log$9.warn(`Agent-loop tool error warning: ${consecutiveToolErrors} consecutive failures (last: ${toolName}). runId=${params.runId}`);
77103
+ }
77098
77104
  }
77099
77105
  }
77100
77106
  if (evt.stream === "assistant" && typeof evt.data?.text === "string" && !aborted) {
77101
77107
  streamMonitor.onChunk(evt.data.text);
77102
- if (streamMonitor.shouldStop()) log$8.debug(`stream monitor detection (log-only, no abort): runId=${params.runId} reason=${streamMonitor.getStopReason()}`);
77108
+ if (streamMonitor.shouldStop()) log$9.debug(`stream monitor detection (log-only, no abort): runId=${params.runId} reason=${streamMonitor.getStopReason()}`);
77103
77109
  }
77104
77110
  },
77105
77111
  enforceFinalTag: params.enforceFinalTag,
@@ -77119,7 +77125,7 @@ async function runEmbeddedAttempt(params) {
77119
77125
  let abortWarnTimer;
77120
77126
  const isProbeSession = params.sessionId?.startsWith("probe-") ?? false;
77121
77127
  const abortTimer = setTimeout(() => {
77122
- if (!isProbeSession) log$8.warn(`embedded run timeout: runId=${params.runId} sessionId=${params.sessionId} timeoutMs=${params.timeoutMs}`);
77128
+ if (!isProbeSession) log$9.warn(`embedded run timeout: runId=${params.runId} sessionId=${params.sessionId} timeoutMs=${params.timeoutMs}`);
77123
77129
  if (shouldFlagCompactionTimeout({
77124
77130
  isTimeout: true,
77125
77131
  isCompactionPendingOrRetrying: subscription.isCompacting(),
@@ -77128,7 +77134,7 @@ async function runEmbeddedAttempt(params) {
77128
77134
  abortRun(true);
77129
77135
  if (!abortWarnTimer) abortWarnTimer = setTimeout(() => {
77130
77136
  if (!activeSession.isStreaming) return;
77131
- if (!isProbeSession) log$8.warn(`embedded run abort still streaming: runId=${params.runId} sessionId=${params.sessionId}`);
77137
+ if (!isProbeSession) log$9.warn(`embedded run abort still streaming: runId=${params.runId} sessionId=${params.sessionId}`);
77132
77138
  }, 1e4);
77133
77139
  }, Math.max(1, params.timeoutMs));
77134
77140
  armSymipulseTimer = () => {
@@ -77136,7 +77142,7 @@ async function runEmbeddedAttempt(params) {
77136
77142
  clearSymipulseTimer();
77137
77143
  symipulseTimer = setTimeout(() => {
77138
77144
  if (aborted) return;
77139
- if (!isProbeSession) log$8.warn(`symipulse timeout: runId=${params.runId} sessionId=${params.sessionId} symipulseMs=${symipulseMs} (no activity)`);
77145
+ if (!isProbeSession) log$9.warn(`symipulse timeout: runId=${params.runId} sessionId=${params.sessionId} symipulseMs=${symipulseMs} (no activity)`);
77140
77146
  if (shouldFlagCompactionTimeout({
77141
77147
  isTimeout: true,
77142
77148
  isCompactionPendingOrRetrying: subscription.isCompacting(),
@@ -77180,13 +77186,13 @@ async function runEmbeddedAttempt(params) {
77180
77186
  prompt: params.prompt,
77181
77187
  messages: activeSession.messages
77182
77188
  }, hookCtx).catch((hookErr) => {
77183
- log$8.warn(`before_prompt_build hook failed: ${String(hookErr)}`);
77189
+ log$9.warn(`before_prompt_build hook failed: ${String(hookErr)}`);
77184
77190
  }) : void 0;
77185
77191
  const legacyResult = hookRunner?.hasHooks("before_agent_start") ? await hookRunner.runBeforeAgentStart({
77186
77192
  prompt: params.prompt,
77187
77193
  messages: activeSession.messages
77188
77194
  }, hookCtx).catch((hookErr) => {
77189
- log$8.warn(`before_agent_start hook (legacy prompt build path) failed: ${String(hookErr)}`);
77195
+ log$9.warn(`before_agent_start hook (legacy prompt build path) failed: ${String(hookErr)}`);
77190
77196
  }) : void 0;
77191
77197
  const hookResult = {
77192
77198
  systemPrompt: promptBuildResult?.systemPrompt ?? legacyResult?.systemPrompt,
@@ -77194,7 +77200,7 @@ async function runEmbeddedAttempt(params) {
77194
77200
  };
77195
77201
  if (hookResult?.prependContext) {
77196
77202
  effectivePrompt = `${hookResult.prependContext}\n\n${params.prompt}`;
77197
- log$8.debug(`hooks: prepended context to prompt (${hookResult.prependContext.length} chars)`);
77203
+ log$9.debug(`hooks: prepended context to prompt (${hookResult.prependContext.length} chars)`);
77198
77204
  }
77199
77205
  {
77200
77206
  const autoRecallAgentId = normalizeAgentId(params.sessionKey);
@@ -77211,11 +77217,11 @@ async function runEmbeddedAttempt(params) {
77211
77217
  if (recallResults.length > 0) {
77212
77218
  const recallBlock = `<memory_context>\nThe following memory snippets were automatically retrieved as relevant context:\n\n${recallResults.map((r) => `[${r.path}#L${r.startLine}-L${r.endLine}]\n${r.snippet}`).join("\n---\n")}\n</memory_context>`;
77213
77219
  effectivePrompt = `${recallBlock}\n\n${effectivePrompt}`;
77214
- log$8.debug(`auto-recall: injected ${recallResults.length} snippets (${recallBlock.length} chars)`);
77220
+ log$9.debug(`auto-recall: injected ${recallResults.length} snippets (${recallBlock.length} chars)`);
77215
77221
  }
77216
77222
  }
77217
77223
  } catch (recallErr) {
77218
- log$8.debug(`auto-recall: skipped (${String(recallErr)})`);
77224
+ log$9.debug(`auto-recall: skipped (${String(recallErr)})`);
77219
77225
  }
77220
77226
  }
77221
77227
  {
@@ -77227,10 +77233,10 @@ async function runEmbeddedAttempt(params) {
77227
77233
  if (planResult.enter) {
77228
77234
  if (planResult.stripped != null) effectivePrompt = planResult.stripped;
77229
77235
  effectivePrompt = `${PLAN_MODE_SYSTEM_PROMPT}\n\n${effectivePrompt}`;
77230
- log$8.info(`plan-mode: activated (${planResult.reason}) for runId=${params.runId}`);
77236
+ log$9.info(`plan-mode: activated (${planResult.reason}) for runId=${params.runId}`);
77231
77237
  } else if (planResult.stripped != null) effectivePrompt = planResult.stripped;
77232
77238
  }
77233
- log$8.debug(`embedded run prompt start: runId=${params.runId} sessionId=${params.sessionId}`);
77239
+ log$9.debug(`embedded run prompt start: runId=${params.runId} sessionId=${params.sessionId}`);
77234
77240
  cacheTrace?.recordStage("prompt:before", {
77235
77241
  prompt: effectivePrompt,
77236
77242
  messages: activeSession.messages
@@ -77242,7 +77248,7 @@ async function runEmbeddedAttempt(params) {
77242
77248
  const sessionContext = sessionManager.buildSessionContext();
77243
77249
  const sanitizedOrphan = transcriptPolicy.sanitizeThinkingSignatures ? sanitizeAntigravityThinkingBlocks(sessionContext.messages) : sessionContext.messages;
77244
77250
  activeSession.agent.replaceMessages(sanitizedOrphan);
77245
- log$8.warn(`Removed orphaned user message to prevent consecutive user turns. runId=${params.runId} sessionId=${params.sessionId}`);
77251
+ log$9.warn(`Removed orphaned user message to prevent consecutive user turns. runId=${params.runId} sessionId=${params.sessionId}`);
77246
77252
  }
77247
77253
  try {
77248
77254
  const imageResult = await detectAndLoadPromptImages({
@@ -77264,12 +77270,12 @@ async function runEmbeddedAttempt(params) {
77264
77270
  messages: activeSession.messages,
77265
77271
  note: `images: prompt=${imageResult.images.length} history=${imageResult.historyImagesByIndex.size}`
77266
77272
  });
77267
- if (log$8.isEnabled("debug")) {
77273
+ if (log$9.isEnabled("debug")) {
77268
77274
  const msgCount = activeSession.messages.length;
77269
77275
  const systemLen = systemPromptText?.length ?? 0;
77270
77276
  const promptLen = effectivePrompt.length;
77271
77277
  const sessionSummary = summarizeSessionContext(activeSession.messages);
77272
- log$8.debug(`[context-diag] pre-prompt: sessionKey=${params.sessionKey ?? params.sessionId} messages=${msgCount} roleCounts=${sessionSummary.roleCounts} historyTextChars=${sessionSummary.totalTextChars} maxMessageTextChars=${sessionSummary.maxMessageTextChars} historyImageBlocks=${sessionSummary.totalImageBlocks} systemPromptChars=${systemLen} promptChars=${promptLen} promptImages=${imageResult.images.length} historyImageMessages=${imageResult.historyImagesByIndex.size} provider=${params.provider}/${params.modelId} sessionFile=${params.sessionFile}`);
77278
+ log$9.debug(`[context-diag] pre-prompt: sessionKey=${params.sessionKey ?? params.sessionId} messages=${msgCount} roleCounts=${sessionSummary.roleCounts} historyTextChars=${sessionSummary.totalTextChars} maxMessageTextChars=${sessionSummary.maxMessageTextChars} historyImageBlocks=${sessionSummary.totalImageBlocks} systemPromptChars=${systemLen} promptChars=${promptLen} promptImages=${imageResult.images.length} historyImageMessages=${imageResult.historyImagesByIndex.size} provider=${params.provider}/${params.modelId} sessionFile=${params.sessionFile}`);
77273
77279
  }
77274
77280
  if (hookRunner?.hasHooks("llm_input")) hookRunner.runLlmInput({
77275
77281
  runId: params.runId,
@@ -77287,7 +77293,7 @@ async function runEmbeddedAttempt(params) {
77287
77293
  workspaceDir: params.workspaceDir,
77288
77294
  messageProvider: params.messageProvider ?? void 0
77289
77295
  }).catch((err) => {
77290
- log$8.warn(`llm_input hook failed: ${String(err)}`);
77296
+ log$9.warn(`llm_input hook failed: ${String(err)}`);
77291
77297
  });
77292
77298
  if (imageResult.images.length > 0) await abortable(activeSession.prompt(effectivePrompt, { images: imageResult.images }));
77293
77299
  else await abortable(activeSession.prompt(effectivePrompt));
@@ -77295,7 +77301,7 @@ async function runEmbeddedAttempt(params) {
77295
77301
  promptError = err;
77296
77302
  promptErrorSource = "prompt";
77297
77303
  } finally {
77298
- log$8.debug(`embedded run prompt end: runId=${params.runId} sessionId=${params.sessionId} durationMs=${Date.now() - promptStartedAt}`);
77304
+ log$9.debug(`embedded run prompt end: runId=${params.runId} sessionId=${params.sessionId} durationMs=${Date.now() - promptStartedAt}`);
77299
77305
  }
77300
77306
  const wasCompactingBefore = activeSession.isCompacting;
77301
77307
  const snapshot = activeSession.messages.slice();
@@ -77310,7 +77316,7 @@ async function runEmbeddedAttempt(params) {
77310
77316
  promptError = err;
77311
77317
  promptErrorSource = "compaction";
77312
77318
  }
77313
- if (!isProbeSession) log$8.debug(`compaction wait aborted: runId=${params.runId} sessionId=${params.sessionId}`);
77319
+ if (!isProbeSession) log$9.debug(`compaction wait aborted: runId=${params.runId} sessionId=${params.sessionId}`);
77314
77320
  } else throw err;
77315
77321
  }
77316
77322
  if (!timedOutDuringCompaction) {
@@ -77328,7 +77334,7 @@ async function runEmbeddedAttempt(params) {
77328
77334
  currentSessionId: activeSession.sessionId
77329
77335
  });
77330
77336
  if (timedOutDuringCompaction) {
77331
- if (!isProbeSession) log$8.warn(`using ${snapshotSelection.source} snapshot: timed out during compaction runId=${params.runId} sessionId=${params.sessionId}`);
77337
+ if (!isProbeSession) log$9.warn(`using ${snapshotSelection.source} snapshot: timed out during compaction runId=${params.runId} sessionId=${params.sessionId}`);
77332
77338
  }
77333
77339
  messagesSnapshot = snapshotSelection.messagesSnapshot;
77334
77340
  sessionIdUsed = snapshotSelection.sessionIdUsed;
@@ -77343,7 +77349,7 @@ async function runEmbeddedAttempt(params) {
77343
77349
  error: describeUnknownError(promptError)
77344
77350
  });
77345
77351
  } catch (entryErr) {
77346
- log$8.warn(`failed to persist prompt error entry: ${String(entryErr)}`);
77352
+ log$9.warn(`failed to persist prompt error entry: ${String(entryErr)}`);
77347
77353
  }
77348
77354
  cacheTrace?.recordStage("session:after", {
77349
77355
  messages: messagesSnapshot,
@@ -77362,17 +77368,17 @@ async function runEmbeddedAttempt(params) {
77362
77368
  workspaceDir: params.workspaceDir,
77363
77369
  messageProvider: params.messageProvider ?? void 0
77364
77370
  }).catch((err) => {
77365
- log$8.warn(`agent_end hook failed: ${err}`);
77371
+ log$9.warn(`agent_end hook failed: ${err}`);
77366
77372
  });
77367
77373
  } finally {
77368
77374
  clearTimeout(abortTimer);
77369
77375
  clearSymipulseTimer();
77370
77376
  if (abortWarnTimer) clearTimeout(abortWarnTimer);
77371
- if (!isProbeSession && (aborted || timedOut) && !timedOutDuringCompaction) log$8.debug(`run cleanup: runId=${params.runId} sessionId=${params.sessionId} aborted=${aborted} timedOut=${timedOut}`);
77377
+ if (!isProbeSession && (aborted || timedOut) && !timedOutDuringCompaction) log$9.debug(`run cleanup: runId=${params.runId} sessionId=${params.sessionId} aborted=${aborted} timedOut=${timedOut}`);
77372
77378
  try {
77373
77379
  unsubscribe();
77374
77380
  } catch (err) {
77375
- log$8.error(`CRITICAL: unsubscribe failed, possible resource leak: runId=${params.runId} ${String(err)}`);
77381
+ log$9.error(`CRITICAL: unsubscribe failed, possible resource leak: runId=${params.runId} ${String(err)}`);
77376
77382
  }
77377
77383
  clearActiveEmbeddedRun(params.sessionId, queueHandle, params.sessionKey);
77378
77384
  params.abortSignal?.removeEventListener?.("abort", onAbort);
@@ -77397,7 +77403,7 @@ async function runEmbeddedAttempt(params) {
77397
77403
  workspaceDir: params.workspaceDir,
77398
77404
  messageProvider: params.messageProvider ?? void 0
77399
77405
  }).catch((err) => {
77400
- log$8.warn(`llm_output hook failed: ${String(err)}`);
77406
+ log$9.warn(`llm_output hook failed: ${String(err)}`);
77401
77407
  });
77402
77408
  return {
77403
77409
  aborted,
@@ -77658,7 +77664,7 @@ async function runEmbeddedPiAgent(params) {
77658
77664
  const redactedSessionId = redactRunIdentifier(params.sessionId);
77659
77665
  const redactedSessionKey = redactRunIdentifier(params.sessionKey);
77660
77666
  const redactedWorkspace = redactRunIdentifier(resolvedWorkspace);
77661
- if (workspaceResolution.usedFallback) log$8.warn(`[workspace-fallback] caller=runEmbeddedPiAgent reason=${workspaceResolution.fallbackReason} run=${params.runId} session=${redactedSessionId} sessionKey=${redactedSessionKey} agent=${workspaceResolution.agentId} workspace=${redactedWorkspace}`);
77667
+ if (workspaceResolution.usedFallback) log$9.warn(`[workspace-fallback] caller=runEmbeddedPiAgent reason=${workspaceResolution.fallbackReason} run=${params.runId} session=${redactedSessionId} sessionKey=${redactedSessionKey} agent=${workspaceResolution.agentId} workspace=${redactedWorkspace}`);
77662
77668
  const prevCwd = process.cwd();
77663
77669
  let provider = (params.provider ?? DEFAULT_PROVIDER).trim() || DEFAULT_PROVIDER;
77664
77670
  let modelId = (params.model ?? DEFAULT_MODEL).trim() || DEFAULT_MODEL;
@@ -77677,7 +77683,7 @@ async function runEmbeddedPiAgent(params) {
77677
77683
  if (hookRunner?.hasHooks("before_model_resolve")) try {
77678
77684
  modelResolveOverride = await hookRunner.runBeforeModelResolve({ prompt: params.prompt }, hookCtx);
77679
77685
  } catch (hookErr) {
77680
- log$8.warn(`before_model_resolve hook failed: ${String(hookErr)}`);
77686
+ log$9.warn(`before_model_resolve hook failed: ${String(hookErr)}`);
77681
77687
  }
77682
77688
  if (hookRunner?.hasHooks("before_agent_start")) try {
77683
77689
  const legacyResult = await hookRunner.runBeforeAgentStart({ prompt: params.prompt }, hookCtx);
@@ -77686,15 +77692,15 @@ async function runEmbeddedPiAgent(params) {
77686
77692
  modelOverride: modelResolveOverride?.modelOverride ?? legacyResult?.modelOverride
77687
77693
  };
77688
77694
  } catch (hookErr) {
77689
- log$8.warn(`before_agent_start hook (legacy model resolve path) failed: ${String(hookErr)}`);
77695
+ log$9.warn(`before_agent_start hook (legacy model resolve path) failed: ${String(hookErr)}`);
77690
77696
  }
77691
77697
  if (modelResolveOverride?.providerOverride) {
77692
77698
  provider = modelResolveOverride.providerOverride;
77693
- log$8.info(`[hooks] provider overridden to ${provider}`);
77699
+ log$9.info(`[hooks] provider overridden to ${provider}`);
77694
77700
  }
77695
77701
  if (modelResolveOverride?.modelOverride) {
77696
77702
  modelId = modelResolveOverride.modelOverride;
77697
- log$8.info(`[hooks] model overridden to ${modelId}`);
77703
+ log$9.info(`[hooks] model overridden to ${modelId}`);
77698
77704
  }
77699
77705
  const { model, error, authStorage, modelRegistry } = resolveModel(provider, modelId, agentDir, params.config);
77700
77706
  if (!model) throw new FailoverError(error ?? `Unknown model: ${provider}/${modelId}`, {
@@ -77714,9 +77720,9 @@ async function runEmbeddedPiAgent(params) {
77714
77720
  warnBelowTokens: CONTEXT_WINDOW_WARN_BELOW_TOKENS,
77715
77721
  hardMinTokens: CONTEXT_WINDOW_HARD_MIN_TOKENS
77716
77722
  });
77717
- if (ctxGuard.shouldWarn) log$8.warn(`low context window: ${provider}/${modelId} ctx=${ctxGuard.tokens} (warn<${CONTEXT_WINDOW_WARN_BELOW_TOKENS}) source=${ctxGuard.source}`);
77723
+ if (ctxGuard.shouldWarn) log$9.warn(`low context window: ${provider}/${modelId} ctx=${ctxGuard.tokens} (warn<${CONTEXT_WINDOW_WARN_BELOW_TOKENS}) source=${ctxGuard.source}`);
77718
77724
  if (ctxGuard.shouldBlock) {
77719
- log$8.error(`blocked model (context window too small): ${provider}/${modelId} ctx=${ctxGuard.tokens} (min=${CONTEXT_WINDOW_HARD_MIN_TOKENS}) source=${ctxGuard.source}`);
77725
+ log$9.error(`blocked model (context window too small): ${provider}/${modelId} ctx=${ctxGuard.tokens} (min=${CONTEXT_WINDOW_HARD_MIN_TOKENS}) source=${ctxGuard.source}`);
77720
77726
  throw new FailoverError(`Model context window too small (${ctxGuard.tokens} tokens). Minimum is ${CONTEXT_WINDOW_HARD_MIN_TOKENS}.`, {
77721
77727
  reason: "unknown",
77722
77728
  provider,
@@ -77846,7 +77852,7 @@ async function runEmbeddedPiAgent(params) {
77846
77852
  while (true) {
77847
77853
  if (runLoopIterations >= MAX_RUN_LOOP_ITERATIONS) {
77848
77854
  const message = `Exceeded retry limit after ${runLoopIterations} attempts (max=${MAX_RUN_LOOP_ITERATIONS}).`;
77849
- log$8.error(`[run-retry-limit] sessionKey=${params.sessionKey ?? params.sessionId} provider=${provider}/${modelId} attempts=${runLoopIterations} maxAttempts=${MAX_RUN_LOOP_ITERATIONS}`);
77855
+ log$9.error(`[run-retry-limit] sessionKey=${params.sessionKey ?? params.sessionId} provider=${provider}/${modelId} attempts=${runLoopIterations} maxAttempts=${MAX_RUN_LOOP_ITERATIONS}`);
77850
77856
  return {
77851
77857
  payloads: [{
77852
77858
  text: "Request failed after repeated internal retries. Please try again, or use /new to start a fresh session.",
@@ -77967,18 +77973,18 @@ async function runEmbeddedPiAgent(params) {
77967
77973
  const overflowDiagId = createCompactionDiagId();
77968
77974
  const errorText = contextOverflowError.text;
77969
77975
  const msgCount = attempt.messagesSnapshot?.length ?? 0;
77970
- log$8.warn(`[context-overflow-diag] sessionKey=${params.sessionKey ?? params.sessionId} provider=${provider}/${modelId} source=${contextOverflowError.source} messages=${msgCount} sessionFile=${params.sessionFile} diagId=${overflowDiagId} compactionAttempts=${overflowCompactionAttempts} error=${errorText.slice(0, 200)}`);
77976
+ log$9.warn(`[context-overflow-diag] sessionKey=${params.sessionKey ?? params.sessionId} provider=${provider}/${modelId} source=${contextOverflowError.source} messages=${msgCount} sessionFile=${params.sessionFile} diagId=${overflowDiagId} compactionAttempts=${overflowCompactionAttempts} error=${errorText.slice(0, 200)}`);
77971
77977
  const isCompactionFailure = isCompactionFailureError(errorText);
77972
77978
  const hadAttemptLevelCompaction = attemptCompactionCount > 0;
77973
77979
  if (!isCompactionFailure && hadAttemptLevelCompaction && overflowCompactionAttempts < MAX_OVERFLOW_COMPACTION_ATTEMPTS) {
77974
77980
  overflowCompactionAttempts++;
77975
- log$8.warn(`context overflow persisted after in-attempt compaction (attempt ${overflowCompactionAttempts}/${MAX_OVERFLOW_COMPACTION_ATTEMPTS}); retrying prompt without additional compaction for ${provider}/${modelId}`);
77981
+ log$9.warn(`context overflow persisted after in-attempt compaction (attempt ${overflowCompactionAttempts}/${MAX_OVERFLOW_COMPACTION_ATTEMPTS}); retrying prompt without additional compaction for ${provider}/${modelId}`);
77976
77982
  continue;
77977
77983
  }
77978
77984
  if (!isCompactionFailure && !hadAttemptLevelCompaction && overflowCompactionAttempts < MAX_OVERFLOW_COMPACTION_ATTEMPTS) {
77979
- if (log$8.isEnabled("debug")) log$8.debug(`[compaction-diag] decision diagId=${overflowDiagId} branch=compact isCompactionFailure=${isCompactionFailure} hasOversizedToolResults=unknown attempt=${overflowCompactionAttempts + 1} maxAttempts=${MAX_OVERFLOW_COMPACTION_ATTEMPTS}`);
77985
+ if (log$9.isEnabled("debug")) log$9.debug(`[compaction-diag] decision diagId=${overflowDiagId} branch=compact isCompactionFailure=${isCompactionFailure} hasOversizedToolResults=unknown attempt=${overflowCompactionAttempts + 1} maxAttempts=${MAX_OVERFLOW_COMPACTION_ATTEMPTS}`);
77980
77986
  overflowCompactionAttempts++;
77981
- log$8.warn(`context overflow detected (attempt ${overflowCompactionAttempts}/${MAX_OVERFLOW_COMPACTION_ATTEMPTS}); attempting auto-compaction for ${provider}/${modelId}`);
77987
+ log$9.warn(`context overflow detected (attempt ${overflowCompactionAttempts}/${MAX_OVERFLOW_COMPACTION_ATTEMPTS}); attempting auto-compaction for ${provider}/${modelId}`);
77982
77988
  const compactResult = await compactEmbeddedPiSessionDirect({
77983
77989
  sessionId: params.sessionId,
77984
77990
  sessionKey: params.sessionKey,
@@ -78007,10 +78013,10 @@ async function runEmbeddedPiAgent(params) {
78007
78013
  });
78008
78014
  if (compactResult.compacted) {
78009
78015
  autoCompactionCount += 1;
78010
- log$8.info(`auto-compaction succeeded for ${provider}/${modelId}; retrying prompt`);
78016
+ log$9.info(`auto-compaction succeeded for ${provider}/${modelId}; retrying prompt`);
78011
78017
  continue;
78012
78018
  }
78013
- log$8.warn(`auto-compaction failed for ${provider}/${modelId}: ${compactResult.reason ?? "nothing to compact"}`);
78019
+ log$9.warn(`auto-compaction failed for ${provider}/${modelId}: ${compactResult.reason ?? "nothing to compact"}`);
78014
78020
  }
78015
78021
  if (!toolResultTruncationAttempted) {
78016
78022
  const contextWindowTokens = ctxInfo.tokens;
@@ -78019,9 +78025,9 @@ async function runEmbeddedPiAgent(params) {
78019
78025
  contextWindowTokens
78020
78026
  }) : false;
78021
78027
  if (hasOversized) {
78022
- if (log$8.isEnabled("debug")) log$8.debug(`[compaction-diag] decision diagId=${overflowDiagId} branch=truncate_tool_results isCompactionFailure=${isCompactionFailure} hasOversizedToolResults=${hasOversized} attempt=${overflowCompactionAttempts} maxAttempts=${MAX_OVERFLOW_COMPACTION_ATTEMPTS}`);
78028
+ if (log$9.isEnabled("debug")) log$9.debug(`[compaction-diag] decision diagId=${overflowDiagId} branch=truncate_tool_results isCompactionFailure=${isCompactionFailure} hasOversizedToolResults=${hasOversized} attempt=${overflowCompactionAttempts} maxAttempts=${MAX_OVERFLOW_COMPACTION_ATTEMPTS}`);
78023
78029
  toolResultTruncationAttempted = true;
78024
- log$8.warn(`[context-overflow-recovery] Attempting tool result truncation for ${provider}/${modelId} (contextWindow=${contextWindowTokens} tokens)`);
78030
+ log$9.warn(`[context-overflow-recovery] Attempting tool result truncation for ${provider}/${modelId} (contextWindow=${contextWindowTokens} tokens)`);
78025
78031
  const truncResult = await truncateOversizedToolResultsInSession({
78026
78032
  sessionFile: params.sessionFile,
78027
78033
  contextWindowTokens,
@@ -78029,13 +78035,13 @@ async function runEmbeddedPiAgent(params) {
78029
78035
  sessionKey: params.sessionKey
78030
78036
  });
78031
78037
  if (truncResult.truncated) {
78032
- log$8.info(`[context-overflow-recovery] Truncated ${truncResult.truncatedCount} tool result(s); retrying prompt`);
78038
+ log$9.info(`[context-overflow-recovery] Truncated ${truncResult.truncatedCount} tool result(s); retrying prompt`);
78033
78039
  continue;
78034
78040
  }
78035
- log$8.warn(`[context-overflow-recovery] Tool result truncation did not help: ${truncResult.reason ?? "unknown"}`);
78036
- } else if (log$8.isEnabled("debug")) log$8.debug(`[compaction-diag] decision diagId=${overflowDiagId} branch=give_up isCompactionFailure=${isCompactionFailure} hasOversizedToolResults=${hasOversized} attempt=${overflowCompactionAttempts} maxAttempts=${MAX_OVERFLOW_COMPACTION_ATTEMPTS}`);
78041
+ log$9.warn(`[context-overflow-recovery] Tool result truncation did not help: ${truncResult.reason ?? "unknown"}`);
78042
+ } else if (log$9.isEnabled("debug")) log$9.debug(`[compaction-diag] decision diagId=${overflowDiagId} branch=give_up isCompactionFailure=${isCompactionFailure} hasOversizedToolResults=${hasOversized} attempt=${overflowCompactionAttempts} maxAttempts=${MAX_OVERFLOW_COMPACTION_ATTEMPTS}`);
78037
78043
  }
78038
- if ((isCompactionFailure || overflowCompactionAttempts >= MAX_OVERFLOW_COMPACTION_ATTEMPTS || toolResultTruncationAttempted) && log$8.isEnabled("debug")) log$8.debug(`[compaction-diag] decision diagId=${overflowDiagId} branch=give_up isCompactionFailure=${isCompactionFailure} hasOversizedToolResults=unknown attempt=${overflowCompactionAttempts} maxAttempts=${MAX_OVERFLOW_COMPACTION_ATTEMPTS}`);
78044
+ if ((isCompactionFailure || overflowCompactionAttempts >= MAX_OVERFLOW_COMPACTION_ATTEMPTS || toolResultTruncationAttempted) && log$9.isEnabled("debug")) log$9.debug(`[compaction-diag] decision diagId=${overflowDiagId} branch=give_up isCompactionFailure=${isCompactionFailure} hasOversizedToolResults=unknown attempt=${overflowCompactionAttempts} maxAttempts=${MAX_OVERFLOW_COMPACTION_ATTEMPTS}`);
78039
78045
  const kind = isCompactionFailure ? "compaction_failure" : "context_overflow";
78040
78046
  return {
78041
78047
  payloads: [{
@@ -78116,7 +78122,7 @@ async function runEmbeddedPiAgent(params) {
78116
78122
  attempted: attemptedThinking
78117
78123
  });
78118
78124
  if (fallbackThinking) {
78119
- log$8.warn(`unsupported thinking level for ${provider}/${modelId}; retrying with ${fallbackThinking}`);
78125
+ log$9.warn(`unsupported thinking level for ${provider}/${modelId}; retrying with ${fallbackThinking}`);
78120
78126
  thinkLevel = fallbackThinking;
78121
78127
  continue;
78122
78128
  }
@@ -78134,7 +78140,7 @@ async function runEmbeddedPiAgent(params) {
78134
78140
  attempted: attemptedThinking
78135
78141
  });
78136
78142
  if (fallbackThinking && !aborted) {
78137
- log$8.warn(`unsupported thinking level for ${provider}/${modelId}; retrying with ${fallbackThinking}`);
78143
+ log$9.warn(`unsupported thinking level for ${provider}/${modelId}; retrying with ${fallbackThinking}`);
78138
78144
  thinkLevel = fallbackThinking;
78139
78145
  continue;
78140
78146
  }
@@ -78151,7 +78157,7 @@ async function runEmbeddedPiAgent(params) {
78151
78157
  imageDimensionError.contentIndex !== void 0 ? `content=${imageDimensionError.contentIndex}` : null,
78152
78158
  imageDimensionError.maxDimensionPx !== void 0 ? `limit=${imageDimensionError.maxDimensionPx}px` : null
78153
78159
  ].filter(Boolean).join(" ");
78154
- log$8.warn(`Profile ${lastProfileId} rejected image payload${details ? ` (${details})` : ""}.`);
78160
+ log$9.warn(`Profile ${lastProfileId} rejected image payload${details ? ` (${details})` : ""}.`);
78155
78161
  }
78156
78162
  const isLocalOllamaTimeout = timedOut && model.api === "ollama";
78157
78163
  if (!aborted && failoverFailure || timedOut && !timedOutDuringCompaction && !isLocalOllamaTimeout) {
@@ -78163,8 +78169,8 @@ async function runEmbeddedPiAgent(params) {
78163
78169
  cfg: params.config,
78164
78170
  agentDir: params.agentDir
78165
78171
  });
78166
- if (timedOut && !isProbeSession) log$8.warn(`Profile ${lastProfileId} timed out (possible rate limit). Trying next account...`);
78167
- if (cloudCodeAssistFormatError) log$8.warn(`Profile ${lastProfileId} hit Cloud Code Assist format error. Tool calls will be sanitized on retry.`);
78172
+ if (timedOut && !isProbeSession) log$9.warn(`Profile ${lastProfileId} timed out (possible rate limit). Trying next account...`);
78173
+ if (cloudCodeAssistFormatError) log$9.warn(`Profile ${lastProfileId} hit Cloud Code Assist format error. Tool calls will be sanitized on retry.`);
78168
78174
  }
78169
78175
  if (await advanceAuthProfile()) continue;
78170
78176
  if (fallbackConfigured) {
@@ -78230,7 +78236,7 @@ async function runEmbeddedPiAgent(params) {
78230
78236
  const hasCodeBlocks = attempt.assistantTexts.some((text) => /```[\s\S]*?```/.test(text));
78231
78237
  if (hasCodeToolUsage || hasCodeBlocks) {
78232
78238
  verificationPassCompleted = true;
78233
- log$8.debug(`[verification] starting verification pass: runId=${params.runId} sessionId=${params.sessionId} trigger=${hasCodeToolUsage ? "tool_usage" : "code_blocks"}`);
78239
+ log$9.debug(`[verification] starting verification pass: runId=${params.runId} sessionId=${params.sessionId} trigger=${hasCodeToolUsage ? "tool_usage" : "code_blocks"}`);
78234
78240
  const verificationPrompt = "Review your response against the original user request. Check: (1) Did you address every requirement? (2) Did you include tests if requested? (3) Did you run and verify the code works? If you missed anything, fix it now. If everything looks correct, briefly confirm.";
78235
78241
  try {
78236
78242
  const verifyAttempt = await runEmbeddedAttempt({
@@ -78316,10 +78322,10 @@ async function runEmbeddedPiAgent(params) {
78316
78322
  payloads.length = 0;
78317
78323
  payloads.push(...verifyPayloads);
78318
78324
  }
78319
- log$8.debug(`[verification] verification produced corrections: runId=${params.runId} tools=${verifyAttempt.toolMetas.length} texts=${verifyAttempt.assistantTexts.length}`);
78320
- } else log$8.debug(`[verification] verification confirmed original response: runId=${params.runId}`);
78325
+ log$9.debug(`[verification] verification produced corrections: runId=${params.runId} tools=${verifyAttempt.toolMetas.length} texts=${verifyAttempt.assistantTexts.length}`);
78326
+ } else log$9.debug(`[verification] verification confirmed original response: runId=${params.runId}`);
78321
78327
  } catch (verifyErr) {
78322
- log$8.warn(`[verification] verification pass failed, keeping original response: runId=${params.runId} error=${String(verifyErr)}`);
78328
+ log$9.warn(`[verification] verification pass failed, keeping original response: runId=${params.runId} error=${String(verifyErr)}`);
78323
78329
  }
78324
78330
  }
78325
78331
  }
@@ -78340,7 +78346,7 @@ async function runEmbeddedPiAgent(params) {
78340
78346
  messagingToolSentTargets: attempt.messagingToolSentTargets,
78341
78347
  successfulCronAdds: attempt.successfulCronAdds
78342
78348
  };
78343
- log$8.debug(`embedded run done: runId=${params.runId} sessionId=${params.sessionId} durationMs=${Date.now() - started} aborted=${aborted}`);
78349
+ log$9.debug(`embedded run done: runId=${params.runId} sessionId=${params.sessionId} durationMs=${Date.now() - started} aborted=${aborted}`);
78344
78350
  if (lastProfileId) {
78345
78351
  await markAuthProfileGood({
78346
78352
  store: authStore,