@symerian/symi 2.6.7 → 2.6.9

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 (117) hide show
  1. package/dist/{agents-DPdRUY_O.js → agents-yeSooTtP.js} +4 -4
  2. package/dist/{agents.config-DIumfxnN.js → agents.config-DoTRueo1.js} +1 -1
  3. package/dist/{agents.config-Cr6DcdaD.js → agents.config-XOcM83Bx.js} +1 -1
  4. package/dist/{audio-preflight-CPBOQV4I.js → audio-preflight-C40mKAp7.js} +4 -4
  5. package/dist/{audio-preflight-BVaaZWkg.js → audio-preflight-DHTaS5U1.js} +4 -4
  6. package/dist/{auth-choice-z3-Baeyd.js → auth-choice-6h5vk1cG.js} +1 -1
  7. package/dist/{auth-choice-C5etRQcH.js → auth-choice-CSfG00oW.js} +1 -1
  8. package/dist/{banner-om7BRUIc.js → banner-C2tjwP2M.js} +1 -1
  9. package/dist/build-info.json +3 -3
  10. package/dist/bundled/boot-md/handler.js +6 -6
  11. package/dist/bundled/session-memory/handler.js +6 -6
  12. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  13. package/dist/{channel-options-BqnokE7_.js → channel-options-5wdTOBFJ.js} +1 -1
  14. package/dist/{channel-options-Cb1PgfNV.js → channel-options-CHyjRl0C.js} +1 -1
  15. package/dist/{channel-web-DztB2W6w.js → channel-web-VYYpZqcw.js} +1 -1
  16. package/dist/{channels-cli-R2PHQWVd.js → channels-cli-CNS4BcpR.js} +4 -4
  17. package/dist/{channels-cli-xlZ2mjBu.js → channels-cli-Dm1d93Oy.js} +4 -4
  18. package/dist/{chrome-DkaXoP36.js → chrome-CDJYxX5a.js} +5 -5
  19. package/dist/{chrome-D2SKJnR7.js → chrome-DYZwl5Gv.js} +5 -5
  20. package/dist/{cli-DNGrFH7L.js → cli-D4MEJZ7W.js} +1 -1
  21. package/dist/{cli-DLly6H0w.js → cli-DqQ3teJy.js} +1 -1
  22. package/dist/{command-registry-DJbyskBr.js → command-registry-yzABgrim.js} +9 -9
  23. package/dist/{completion-cli-Dfw9JhkN.js → completion-cli-DDCDJyTb.js} +2 -2
  24. package/dist/{completion-cli-DosOadUD.js → completion-cli-zI_h8pr3.js} +1 -1
  25. package/dist/{config-cli-BaH8OVQ-.js → config-cli-Bth4qEO1.js} +1 -1
  26. package/dist/{config-cli-CbdeNt0M.js → config-cli-vqQE9gkx.js} +1 -1
  27. package/dist/{configure-BmNOfGox.js → configure-DU1IcIoq.js} +3 -3
  28. package/dist/{configure-D5dSJprr.js → configure-DyeOg2hp.js} +3 -3
  29. package/dist/{deliver-C-37cZUe.js → deliver-BH0l3UKW.js} +1 -1
  30. package/dist/{deliver-C46-vyqg.js → deliver-dODxSv3b.js} +1 -1
  31. package/dist/{doctor-completion-Xx92Sz9s.js → doctor-completion-BbWijhz0.js} +1 -1
  32. package/dist/{doctor-completion-DRucwWSo.js → doctor-completion-R-1oda1v.js} +1 -1
  33. package/dist/entry.js +1 -1
  34. package/dist/extensionAPI.js +6 -6
  35. package/dist/{gateway-cli-SlbXm0f7.js → gateway-cli-BFWLsB3b.js} +9 -9
  36. package/dist/{gateway-cli-D3kGHw5M.js → gateway-cli-DGKFkUrv.js} +9 -9
  37. package/dist/{glass-ui-ws-Cj9wbO1L.js → glass-ui-ws-DDgLRQXa.js} +7 -7
  38. package/dist/{glass-ui-ws-B7V2wHEu.js → glass-ui-ws-DFRu8a15.js} +7 -7
  39. package/dist/{health-DUKLANXu.js → health-BxPSqsO6.js} +1 -1
  40. package/dist/{health-BPOuBmYt.js → health-CJ7Y6Rln.js} +1 -1
  41. package/dist/{hooks-cli-BF0mbqlZ.js → hooks-cli-BAVmPXDl.js} +2 -2
  42. package/dist/{hooks-cli-BpfIySkB.js → hooks-cli-elIqdnzb.js} +2 -2
  43. package/dist/{image-DcpMiprB.js → image-CHzdaNJ4.js} +1 -1
  44. package/dist/{image-CuzFLQWC.js → image-CXu8W39c.js} +1 -1
  45. package/dist/index.js +6 -6
  46. package/dist/llm-slug-generator.js +6 -6
  47. package/dist/{models-Bt8lm_nD.js → models-CIUYv1__.js} +2 -2
  48. package/dist/{models-cli-bHYoiL5x.js → models-cli-DmffFgOZ.js} +2 -2
  49. package/dist/{models-cli-BmBmBUgl.js → models-cli-ydxkD2B-.js} +3 -3
  50. package/dist/{onboard-DFkXqe5P.js → onboard-BBZMfGdo.js} +2 -2
  51. package/dist/{onboard-DlY7trcj.js → onboard-DhJBvsPB.js} +2 -2
  52. package/dist/{onboard-channels-D0RHtaJE.js → onboard-channels-0wtc-NTC.js} +1 -1
  53. package/dist/{onboard-channels-DEFF3Rjo.js → onboard-channels-LCDTtAGK.js} +1 -1
  54. package/dist/{onboarding-mXPGwLNG.js → onboarding-Bm11jSTl.js} +3 -3
  55. package/dist/{onboarding-BEDqTyYQ.js → onboarding-Bs7a2RIn.js} +3 -3
  56. package/dist/{onboarding.finalize-DmeEphAd.js → onboarding.finalize-DOpAnwny.js} +5 -5
  57. package/dist/{onboarding.finalize-Ca-aQ6eE.js → onboarding.finalize-fdahnZvf.js} +6 -6
  58. package/dist/{pi-embedded-DPXbVwW0.js → pi-embedded-BwQa2XMa.js} +69 -68
  59. package/dist/{pi-embedded-helpers-B8kqLWns.js → pi-embedded-helpers-lgx_U5KS.js} +4 -4
  60. package/dist/{pi-embedded-helpers-CfqDGQ9J.js → pi-embedded-helpers-pubKo8HQ.js} +4 -4
  61. package/dist/{plugin-registry-CDIOKK_i.js → plugin-registry-CQCjMWVC.js} +1 -1
  62. package/dist/{plugin-registry-C1ghjhOE.js → plugin-registry-D3CP_n5q.js} +1 -1
  63. package/dist/plugin-sdk/agents/pi-tools.validate-wrapper.d.ts +8 -8
  64. package/dist/plugin-sdk/{channel-web-CxwLjrWk.js → channel-web-B76ttiD9.js} +1 -1
  65. package/dist/plugin-sdk/index.js +2 -2
  66. package/dist/plugin-sdk/{reply-CyZfsjrl.js → reply-CQPVXorK.js} +55 -54
  67. package/dist/plugin-sdk/{web-C2OyRvIo.js → web-DtkJFFr4.js} +2 -2
  68. package/dist/{plugins-cli-jv-Bqq1t.js → plugins-cli-D_r2gFIY.js} +2 -2
  69. package/dist/{plugins-cli-BFCJyRBX.js → plugins-cli-FUQHZ6tU.js} +2 -2
  70. package/dist/{program-T144qFaw.js → program-DwrSPQU4.js} +7 -7
  71. package/dist/{program-context-xpDrT9eG.js → program-context-CN4mNmYa.js} +17 -17
  72. package/dist/{prompt-select-styled-Bn4zyJmn.js → prompt-select-styled-BQW1Ropv.js} +4 -4
  73. package/dist/{prompt-select-styled-BN0aOmtR.js → prompt-select-styled-CK3VsV2a.js} +4 -4
  74. package/dist/{provider-auth-helpers-CqDTEFnD.js → provider-auth-helpers-Bg07iIOF.js} +1 -1
  75. package/dist/{provider-auth-helpers-CfBPNN7J.js → provider-auth-helpers-CY8preuC.js} +1 -1
  76. package/dist/{push-apns-CVRC-O3Q.js → push-apns-6u2NUzOH.js} +1 -1
  77. package/dist/{push-apns-CHIVwHRD.js → push-apns-D2hExRgY.js} +1 -1
  78. package/dist/{pw-ai-m0mj2KWK.js → pw-ai-B5asscAD.js} +1 -1
  79. package/dist/{pw-ai-1htA-NnS.js → pw-ai-De-KR9_s.js} +1 -1
  80. package/dist/{register.agent-DD2QErXm.js → register.agent-BhM4QQqa.js} +5 -5
  81. package/dist/{register.agent-B0ExzmtM.js → register.agent-BqRVkePg.js} +6 -6
  82. package/dist/{register.configure-DpHCcS5d.js → register.configure-0qzVn1Z5.js} +6 -6
  83. package/dist/{register.configure-ByNKeAo7.js → register.configure-BtnhfP3M.js} +6 -6
  84. package/dist/{register.maintenance-C9K829tk.js → register.maintenance-BNqMCfLm.js} +7 -7
  85. package/dist/{register.maintenance-Ck1jwY_N.js → register.maintenance-DrijKQoQ.js} +8 -8
  86. package/dist/{register.message-DZ45n1GX.js → register.message-2iSjsSI-.js} +2 -2
  87. package/dist/{register.message-BveFb6IW.js → register.message-CGexab2Y.js} +2 -2
  88. package/dist/{register.onboard-Byt2S-D0.js → register.onboard-D1b3xhDD.js} +4 -4
  89. package/dist/{register.onboard-BHUh0Xk1.js → register.onboard-DIAkE9FI.js} +4 -4
  90. package/dist/{register.setup-DCG9bst7.js → register.setup-Bvv5sUpg.js} +4 -4
  91. package/dist/{register.setup-BvB9oNh3.js → register.setup-Clq3FwZo.js} +4 -4
  92. package/dist/{register.status-health-sessions-CMJ_l4rs.js → register.status-health-sessions-IPxdVhoD.js} +3 -3
  93. package/dist/{register.status-health-sessions-DgNzHYE-.js → register.status-health-sessions-JHfNAhk3.js} +3 -3
  94. package/dist/{register.subclis-DnWR9l5V.js → register.subclis-C5wTDVDa.js} +9 -9
  95. package/dist/{reply-DcyKvFor.js → reply-dzRBlsmK.js} +55 -54
  96. package/dist/{run-main-B1aB8I5W.js → run-main-jPbs3Gm5.js} +14 -14
  97. package/dist/{runner-BcQ0sF9T.js → runner-DUBExAb5.js} +1 -1
  98. package/dist/{runner-CU9l0uJh.js → runner-WAG0M5s9.js} +1 -1
  99. package/dist/{server-methods-BdXCfO_O.js → server-methods-CJbZTdch.js} +7 -7
  100. package/dist/{server-methods-D1W-tViM.js → server-methods-DuaVOb2k.js} +7 -7
  101. package/dist/{server-node-events-DqVmWjof.js → server-node-events-BgFWyVCV.js} +2 -2
  102. package/dist/{server-node-events-BwGehjys.js → server-node-events-DesNIafd.js} +2 -2
  103. package/dist/{status-BvnWSBQl.js → status-BV22IA25.js} +1 -1
  104. package/dist/{status-BY4CnB2O.js → status-BxfE61b4.js} +2 -2
  105. package/dist/{status-kPaSg3RB.js → status-Bxkdy4Dq.js} +1 -1
  106. package/dist/{status-CfLq5R5j.js → status-DOB2UmDg.js} +2 -2
  107. package/dist/{subagent-registry-CVQOC9Jw.js → subagent-registry-DEdqc42m.js} +55 -54
  108. package/dist/{unified-runner-CxscxYKm.js → unified-runner-BIj2b1Y-.js} +69 -68
  109. package/dist/{update-cli-Bgrhor0g.js → update-cli-CNlljdlx.js} +8 -8
  110. package/dist/{update-cli-D5QWigS0.js → update-cli-D4OgWd1l.js} +7 -7
  111. package/dist/{update-runner-DdPdhkw5.js → update-runner-CZd6ajL6.js} +1 -1
  112. package/dist/{update-runner-CPOm0f_6.js → update-runner-Dtay-1lf.js} +1 -1
  113. package/dist/{web-DGLeD0Lo.js → web-B-E-mzTK.js} +6 -6
  114. package/dist/{web-DShKO-0L.js → web-DP9s1zzp.js} +6 -6
  115. package/dist/{web-ZnFT5LP9.js → web-DUi3cu-p.js} +1 -1
  116. package/dist/{web-DqjNQqGK.js → web-qJRZWEaD.js} +2 -2
  117. 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";
@@ -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({
@@ -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-DShKO-0L.js");
53677
+ const { sendMessageWhatsApp } = await import("./web-DP9s1zzp.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-DShKO-0L.js");
68957
+ webChannelPromise ??= import("./web-DP9s1zzp.js");
68958
68958
  return webChannelPromise;
68959
68959
  }
68960
68960
  function loadWhatsAppActions() {
@@ -73594,13 +73594,19 @@ function normalizeEvent(event, normalizer) {
73594
73594
  const tc = event.toolCall;
73595
73595
  if (tc.arguments && typeof tc.arguments === "object") {
73596
73596
  const cleanedArgs = normalizer.normalizeToolArgs(tc.arguments);
73597
- return { event: {
73597
+ const patchedEvent = {
73598
73598
  ...event,
73599
73599
  toolCall: {
73600
73600
  ...tc,
73601
73601
  arguments: cleanedArgs
73602
73602
  }
73603
- } };
73603
+ };
73604
+ const partial = patchedEvent.partial;
73605
+ if (partial && typeof partial === "object" && Array.isArray(partial.content)) {
73606
+ const content = partial.content;
73607
+ for (const block of content) if (block.type === "toolCall" && block.id === tc.id) block.arguments = cleanedArgs;
73608
+ }
73609
+ return { event: patchedEvent };
73604
73610
  }
73605
73611
  return { event };
73606
73612
  }
@@ -75527,25 +75533,10 @@ function validateShellCommand(command) {
75527
75533
  //#region src/agents/pi-tools.validate-wrapper.ts
75528
75534
  const log = createSubsystemLogger("agents/tool-validate");
75529
75535
  const EXEC_TOOL_NAMES = new Set(["exec", "bash"]);
75530
- const FILE_TOOL_NAMES = new Set([
75531
- "write",
75532
- "read",
75533
- "edit",
75534
- "patch",
75535
- "file_write",
75536
- "file_edit",
75537
- "write_file",
75538
- "edit_file",
75539
- "create_file"
75540
- ]);
75541
- const FILE_PATH_KEYS = [
75542
- "file_path",
75543
- "path",
75544
- "filePath"
75545
- ];
75536
+ const GEMMA_MODEL_ID = "gemma";
75546
75537
  /**
75547
- * Wrap tools with argument validation. Exec/bash commands and file paths
75548
- * are validated. Other tools pass through unchanged.
75538
+ * Wrap ALL tools with universal string argument sanitization.
75539
+ * Exec/bash tools get additional structural command validation.
75549
75540
  *
75550
75541
  * Call this AFTER tools are created and the model profile is resolved.
75551
75542
  */
@@ -75555,44 +75546,64 @@ function wrapToolsWithArgValidation(tools, profile) {
75555
75546
  return tools;
75556
75547
  }
75557
75548
  const wrapped = tools.map((tool) => wrapToolWithArgValidation(tool));
75558
- const wrappedNames = wrapped.filter((t, i) => t !== tools[i]).map((t) => t.name);
75559
- log.debug(`[validate] applied to ${wrappedNames.length} tools: ${wrappedNames.join(",") || "(none matched)"}`);
75549
+ log.debug(`[validate] universal sanitizer applied to ${wrapped.length} tools`);
75560
75550
  return wrapped;
75561
75551
  }
75562
75552
  /**
75563
- * Clean a file path by stripping control token fragments.
75564
- * Returns null if the path is irreparably corrupted (empty after cleanup).
75553
+ * Sanitize a single string value: strip control tokens + residual fragments.
75554
+ * Returns the cleaned string, or the original if no changes needed.
75565
75555
  */
75566
- function cleanFilePath(filePath) {
75567
- let cleaned = filePath.replace(/<\|[^|>]*(?:\|>)?/g, "");
75568
- cleaned = cleanResidualTokenFragments(cleaned);
75569
- cleaned = cleaned.trim();
75570
- if (!cleaned || !/[a-zA-Z0-9/._~-]/.test(cleaned)) return {
75571
- valid: false,
75572
- cleaned
75573
- };
75556
+ function sanitizeString(value) {
75557
+ return cleanResidualTokenFragments(stripModelTokensAggressive(value, GEMMA_MODEL_ID));
75558
+ }
75559
+ /**
75560
+ * Check if a string contains control token patterns that need sanitization.
75561
+ * Fast check to avoid unnecessary work on clean strings.
75562
+ */
75563
+ function needsSanitization(value) {
75564
+ return value.includes("<|") || value.includes("|>") || /^[<"|]/.test(value);
75565
+ }
75566
+ /**
75567
+ * Recursively sanitize all string values in a params object.
75568
+ * Returns a new object if any values were changed, or the original if clean.
75569
+ */
75570
+ function sanitizeParams(params) {
75571
+ let changed = false;
75572
+ const cleaned = {};
75573
+ for (const [key, value] of Object.entries(params)) {
75574
+ if (typeof value === "string" && needsSanitization(value)) {
75575
+ const sanitized = sanitizeString(value);
75576
+ if (sanitized !== value) {
75577
+ cleaned[key] = sanitized;
75578
+ changed = true;
75579
+ continue;
75580
+ }
75581
+ }
75582
+ cleaned[key] = value;
75583
+ }
75574
75584
  return {
75575
- valid: true,
75576
- cleaned
75585
+ cleaned,
75586
+ changed
75577
75587
  };
75578
75588
  }
75579
75589
  /**
75580
- * Wrap a single tool with argument validation.
75590
+ * Wrap a single tool with universal argument sanitization.
75581
75591
  */
75582
75592
  function wrapToolWithArgValidation(tool) {
75583
75593
  const toolName = (tool.name ?? "").toLowerCase().trim();
75584
75594
  const isExecTool = EXEC_TOOL_NAMES.has(toolName);
75585
- const isFileTool = FILE_TOOL_NAMES.has(toolName);
75586
- if (!isExecTool && !isFileTool) return tool;
75587
75595
  const originalExecute = tool.execute;
75588
75596
  return {
75589
75597
  ...tool,
75590
75598
  execute(toolCallId, params, ...rest) {
75599
+ const { cleaned, changed } = sanitizeParams(params);
75600
+ if (changed) log.debug(`[validate] sanitized args for ${toolName}: ${Object.keys(params).filter((k) => cleaned[k] !== params[k]).join(",")}`);
75601
+ const effectiveParams = changed ? cleaned : params;
75591
75602
  if (isExecTool) {
75592
- const command = params.command ?? params.cmd;
75603
+ const command = effectiveParams.command ?? effectiveParams.cmd;
75593
75604
  if (typeof command !== "string") {
75594
- log.debug(`[validate] exec called without string command: keys=${Object.keys(params).join(",")}`);
75595
- return originalExecute.call(tool, toolCallId, params, ...rest);
75605
+ log.debug(`[validate] exec called without string command: keys=${Object.keys(effectiveParams).join(",")}`);
75606
+ return originalExecute.call(tool, toolCallId, effectiveParams, ...rest);
75596
75607
  }
75597
75608
  const result = validateShellCommand(command);
75598
75609
  if (!result.valid) {
@@ -75602,22 +75613,12 @@ function wrapToolWithArgValidation(tool) {
75602
75613
  if (result.cleaned !== command) {
75603
75614
  log.debug(`[validate] exec command cleaned: raw=${command.slice(0, 80)} → cleaned=${result.cleaned.slice(0, 80)}`);
75604
75615
  return originalExecute.call(tool, toolCallId, {
75605
- ...params,
75616
+ ...effectiveParams,
75606
75617
  command: result.cleaned
75607
75618
  }, ...rest);
75608
75619
  }
75609
- return originalExecute.call(tool, toolCallId, params, ...rest);
75610
75620
  }
75611
- const pathKey = FILE_PATH_KEYS.find((k) => typeof params[k] === "string");
75612
- if (!pathKey) return originalExecute.call(tool, toolCallId, params, ...rest);
75613
- const rawPath = params[pathKey];
75614
- if (!rawPath.includes("<|") && !rawPath.includes("|>") && !/^[<"|]/.test(rawPath)) return originalExecute.call(tool, toolCallId, params, ...rest);
75615
- const pathResult = cleanFilePath(rawPath);
75616
- if (!pathResult.valid) return Promise.resolve({ output: `Error: file path "${rawPath}" contains model control tokens and could not be cleaned. Please provide a clean file path without any <|, |>, or XML-like tags.` });
75617
- return originalExecute.call(tool, toolCallId, {
75618
- ...params,
75619
- [pathKey]: pathResult.cleaned
75620
- }, ...rest);
75621
+ return originalExecute.call(tool, toolCallId, effectiveParams, ...rest);
75621
75622
  }
75622
75623
  };
75623
75624
  }
@@ -16,7 +16,7 @@ import "./client-DMBZpU6X.js";
16
16
  import "./call-BcE47FtD.js";
17
17
  import "./message-channel-C9dERklz.js";
18
18
  import "./pairing-token-Byh6drgn.js";
19
- import { Ct as trimLogTail } from "./subagent-registry-CVQOC9Jw.js";
19
+ import { Ct as trimLogTail } from "./subagent-registry-DEdqc42m.js";
20
20
  import "./sessions-CJXnZVjR.js";
21
21
  import "./tokens-Csntmwwn.js";
22
22
  import "./plugins-CwSlLxM8.js";
@@ -111,10 +111,10 @@ import "./npm-registry-spec-DkaZNHAW.js";
111
111
  import "./skill-scanner-BGWOBqLY.js";
112
112
  import "./installs-CgQpVncj.js";
113
113
  import "./channels-status-issues-c7qZbYG5.js";
114
- import "./register.subclis-DnWR9l5V.js";
115
- import "./command-registry-DJbyskBr.js";
114
+ import "./register.subclis-C5wTDVDa.js";
115
+ import "./command-registry-yzABgrim.js";
116
116
  import "./program-context-CqzR_m-7.js";
117
- import { r as installCompletion } from "./completion-cli-Dfw9JhkN.js";
117
+ import { r as installCompletion } from "./completion-cli-DDCDJyTb.js";
118
118
  import "./daemon-runtime-CfRwa6qh.js";
119
119
  import { r as parseSemver } from "./runtime-guard-D7waq_Ho.js";
120
120
  import "./systemd-DlMdyFDY.js";
@@ -124,19 +124,19 @@ import "./systemd-hints-sQipWGd1.js";
124
124
  import { i as runDaemonInstall, r as runDaemonRestart } from "./daemon-cli-wWnBIQtk.js";
125
125
  import "./diagnostics-CS1ov_hH.js";
126
126
  import { t as renderTable } from "./table-D01d2GuY.js";
127
- import "./health-DUKLANXu.js";
127
+ import "./health-BxPSqsO6.js";
128
128
  import "./control-ui-assets-BseSWee1.js";
129
129
  import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, d as formatUpdateChannelLabel, g as resolveUpdateChannelDisplay, h as resolveEffectiveUpdateChannel, m as normalizeUpdateChannel, n as compareSemverStrings, r as fetchNpmTagVersion, s as DEFAULT_GIT_CHANNEL, t as checkUpdateStatus, u as channelToNpmTag } from "./update-check-ZdimP1aU.js";
130
130
  import "./dm-policy-shared-DJ-61hCT.js";
131
131
  import { i as resolveUpdateAvailability, n as formatUpdateOneLiner, t as formatUpdateAvailableHint } from "./status.update-DbmZz0Aq.js";
132
- import { a as globalInstallArgs, c as readPackageVersion, i as detectGlobalInstallManagerForRoot, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, r as detectGlobalInstallManagerByPresence, s as readPackageName, t as runGatewayUpdate } from "./update-runner-DdPdhkw5.js";
132
+ import { a as globalInstallArgs, c as readPackageVersion, i as detectGlobalInstallManagerForRoot, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, r as detectGlobalInstallManagerByPresence, s as readPackageName, t as runGatewayUpdate } from "./update-runner-CZd6ajL6.js";
133
133
  import "./logging-BGewRZy0.js";
134
134
  import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-DEMKx4eC.js";
135
135
  import "./doctor-config-flow-CA3eiKhd.js";
136
136
  import "./systemd-linger-DA_LW52P.js";
137
137
  import "./health-format-CzgUHmmX.js";
138
- import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-Bn4zyJmn.js";
139
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-Xx92Sz9s.js";
138
+ import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-BQW1Ropv.js";
139
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-BbWijhz0.js";
140
140
  import { spawn, spawnSync } from "node:child_process";
141
141
  import os from "node:os";
142
142
  import path from "node:path";
@@ -1,7 +1,7 @@
1
1
  import { g as resolveStateDir } from "./paths-Cqn-zk3M.js";
2
2
  import { B as theme, h as pathExists } from "./utils-B-0b9bGM.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import { V as trimLogTail } from "./reply-DcyKvFor.js";
4
+ import { V as trimLogTail } from "./reply-dzRBlsmK.js";
5
5
  import { t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
6
6
  import "./registry-Cja8eT7G.js";
7
7
  import { f as defaultRuntime } from "./subsystem-D9vIQve0.js";
@@ -106,7 +106,7 @@ import "./stagger-BUClb97_.js";
106
106
  import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName } from "./constants-C8_BLnaW.js";
107
107
  import "./channel-selection-DuWs0Aak.js";
108
108
  import { r as parseSemver } from "./runtime-guard-B37eizu-.js";
109
- import "./program-context-xpDrT9eG.js";
109
+ import "./program-context-CN4mNmYa.js";
110
110
  import "./catalog-RiADx7MA.js";
111
111
  import "./skills-status-CURJKnyY.js";
112
112
  import { n as inheritOptionFromParent } from "./command-options-BtDai3oC.js";
@@ -117,7 +117,7 @@ import "./npm-registry-spec-C2JDdSZS.js";
117
117
  import "./skill-scanner-CLs8u6vQ.js";
118
118
  import "./installs-C1Cebk97.js";
119
119
  import "./channels-status-issues-B_kBkl_u.js";
120
- import { r as installCompletion } from "./completion-cli-DosOadUD.js";
120
+ import { r as installCompletion } from "./completion-cli-zI_h8pr3.js";
121
121
  import "./daemon-runtime-2mwX-jqj.js";
122
122
  import "./systemd-riq8uNJQ.js";
123
123
  import { t as resolveGatewayService } from "./service-Cl74hx8J.js";
@@ -126,19 +126,19 @@ import "./systemd-hints-BR6gChwm.js";
126
126
  import { i as runDaemonInstall, r as runDaemonRestart } from "./daemon-cli-DscwlsKW.js";
127
127
  import "./diagnostics-BAMlsVVX.js";
128
128
  import { t as renderTable } from "./table-BTgkRafz.js";
129
- import "./health-BPOuBmYt.js";
129
+ import "./health-CJ7Y6Rln.js";
130
130
  import "./control-ui-assets-Z947tKLt.js";
131
131
  import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, d as formatUpdateChannelLabel, g as resolveUpdateChannelDisplay, h as resolveEffectiveUpdateChannel, m as normalizeUpdateChannel, n as compareSemverStrings, r as fetchNpmTagVersion, s as DEFAULT_GIT_CHANNEL, t as checkUpdateStatus, u as channelToNpmTag } from "./update-check-CtckACbb.js";
132
132
  import "./dm-policy-shared-Bh3TbexU.js";
133
133
  import { i as resolveUpdateAvailability, n as formatUpdateOneLiner, t as formatUpdateAvailableHint } from "./status.update-DtwCUTf-.js";
134
- import { a as globalInstallArgs, c as readPackageVersion, i as detectGlobalInstallManagerForRoot, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, r as detectGlobalInstallManagerByPresence, s as readPackageName, t as runGatewayUpdate } from "./update-runner-CPOm0f_6.js";
134
+ import { a as globalInstallArgs, c as readPackageVersion, i as detectGlobalInstallManagerForRoot, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, r as detectGlobalInstallManagerByPresence, s as readPackageName, t as runGatewayUpdate } from "./update-runner-Dtay-1lf.js";
135
135
  import "./logging-BzzwiKjv.js";
136
136
  import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-rw7wJwHd.js";
137
137
  import "./doctor-config-flow-QnaBd8kL.js";
138
138
  import "./systemd-linger-aQ75ZlXY.js";
139
139
  import "./health-format-DSwnXZPU.js";
140
- import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-BN0aOmtR.js";
141
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-DRucwWSo.js";
140
+ import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-CK3VsV2a.js";
141
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-R-1oda1v.js";
142
142
  import os from "node:os";
143
143
  import path from "node:path";
144
144
  import fs from "node:fs/promises";
@@ -1,6 +1,6 @@
1
1
  import { nt as pathExists } from "./entry.js";
2
2
  import { t as runCommandWithTimeout } from "./exec-CBKBIMpA.js";
3
- import { Ct as trimLogTail } from "./subagent-registry-CVQOC9Jw.js";
3
+ import { Ct as trimLogTail } from "./subagent-registry-DEdqc42m.js";
4
4
  import { n as resolveControlUiDistIndexHealth, r as resolveControlUiDistIndexPathForRoot } from "./control-ui-assets-BseSWee1.js";
5
5
  import { c as DEFAULT_PACKAGE_CHANNEL, f as isBetaTag, l as DEV_BRANCH, n as compareSemverStrings, o as detectPackageManager$1, p as isStableTag, u as channelToNpmTag } from "./update-check-ZdimP1aU.js";
6
6
  import os from "node:os";
@@ -1,5 +1,5 @@
1
1
  import { h as pathExists } from "./utils-B-0b9bGM.js";
2
- import { V as trimLogTail } from "./reply-DcyKvFor.js";
2
+ import { V as trimLogTail } from "./reply-dzRBlsmK.js";
3
3
  import { t as runCommandWithTimeout } from "./exec-CWkblSrI.js";
4
4
  import { n as resolveControlUiDistIndexHealth, r as resolveControlUiDistIndexPathForRoot } from "./control-ui-assets-Z947tKLt.js";
5
5
  import { c as DEFAULT_PACKAGE_CHANNEL, f as isBetaTag, l as DEV_BRANCH, n as compareSemverStrings, o as detectPackageManager$1, p as isStableTag, u as channelToNpmTag } from "./update-check-CtckACbb.js";
@@ -8,13 +8,13 @@ import { c as resolveIdentityNamePrefix, l as resolveMessagePrefix, t as createR
8
8
  import "./github-copilot-token-BbsJ0Qbo.js";
9
9
  import { r as formatCliCommand } from "./env-CQ_DQOwT.js";
10
10
  import "./tokens-Cn6drXx2.js";
11
- import { C as shouldComputeCommandAuthorized, S as hasControlCommand, T as normalizeMentionText, _ as enqueueSystemEvent, a as DEFAULT_GROUP_HISTORY_LIMIT, b as formatInboundEnvelope, c as shouldAckReactionForWhatsApp, d as createDedupeCache, f as getReplyFromConfig, g as formatDurationPrecise, h as parseActivationCommand, i as resolveMentionGating, l as dispatchReplyWithBufferedBlockDispatcher, m as normalizeGroupActivation, n as sleepWithAbort, o as buildHistoryContextFromEntries, r as buildPairingReply, s as recordPendingHistoryEntryIfEnabled, t as computeBackoff, v as createInboundDebouncer, w as buildMentionRegexes, x as resolveEnvelopeFormatOptions, y as resolveInboundDebounceMs } from "./pi-embedded-DPXbVwW0.js";
11
+ import { C as shouldComputeCommandAuthorized, S as hasControlCommand, T as normalizeMentionText, _ as enqueueSystemEvent, a as DEFAULT_GROUP_HISTORY_LIMIT, b as formatInboundEnvelope, c as shouldAckReactionForWhatsApp, d as createDedupeCache, f as getReplyFromConfig, g as formatDurationPrecise, h as parseActivationCommand, i as resolveMentionGating, l as dispatchReplyWithBufferedBlockDispatcher, m as normalizeGroupActivation, n as sleepWithAbort, o as buildHistoryContextFromEntries, r as buildPairingReply, s as recordPendingHistoryEntryIfEnabled, t as computeBackoff, v as createInboundDebouncer, w as buildMentionRegexes, x as resolveEnvelopeFormatOptions, y as resolveInboundDebounceMs } from "./pi-embedded-BwQa2XMa.js";
12
12
  import "./plugins-71oIavrF.js";
13
13
  import { i as logWebSelfId, l as readWebSelfId, n as WA_WEB_AUTH_DIR, p as webAuthExists, r as getWebAuthAgeMs, s as pickWebChannel, t as resolveWhatsAppAccount } from "./accounts-DDEyGwby.js";
14
14
  import "./bindings-DYVakimr.js";
15
15
  import "./send-D-hWrHoH.js";
16
16
  import "./send-C1IYd3g7.js";
17
- import "./deliver-C-37cZUe.js";
17
+ import "./deliver-BH0l3UKW.js";
18
18
  import "./diagnostic-D0xmLpej.js";
19
19
  import "./diagnostic-session-state-C1vRJs5w.js";
20
20
  import "./accounts-8zZqL37v.js";
@@ -22,10 +22,10 @@ import { G as formatLocationText, J as readChannelAllowFromStore, K as toLocatio
22
22
  import "./image-ops-ByaQt43P.js";
23
23
  import "./pi-model-discovery-j5tVLINv.js";
24
24
  import "./message-channel-BQINJQIT.js";
25
- import { Ct as resolveGroupSessionKey, H as loadSessionStore, K as updateLastRoute, U as readSessionUpdatedAt, W as recordSessionMetaFromInbound } from "./pi-embedded-helpers-B8kqLWns.js";
25
+ import { Ct as resolveGroupSessionKey, H as loadSessionStore, K as updateLastRoute, U as readSessionUpdatedAt, W as recordSessionMetaFromInbound } from "./pi-embedded-helpers-lgx_U5KS.js";
26
26
  import { n as loadConfig } from "./config-BmV60pPT.js";
27
27
  import "./manifest-registry-D-mTF1cj.js";
28
- import "./chrome-D2SKJnR7.js";
28
+ import "./chrome-CDJYxX5a.js";
29
29
  import "./skills-BNpGMnp-.js";
30
30
  import "./redact-1NGYV_8p.js";
31
31
  import "./errors-CPfngF0S.js";
@@ -35,7 +35,7 @@ import { h as resolveChannelGroupRequireMention, m as resolveChannelGroupPolicy
35
35
  import "./accounts-DImOt9jX.js";
36
36
  import { s as resolveStorePath } from "./paths-DkMamAQ-.js";
37
37
  import "./tool-images-ChC2CXaN.js";
38
- import "./image-DcpMiprB.js";
38
+ import "./image-CHzdaNJ4.js";
39
39
  import "./manager-jpn5vRTY.js";
40
40
  import "./gemini-auth-CSlZZ1Pw.js";
41
41
  import "./sqlite-BNh23mUR.js";
@@ -49,7 +49,7 @@ import "./render-B1VqYyvo.js";
49
49
  import "./commands-registry-C_aYUwpl.js";
50
50
  import "./skill-commands-DklY7Cj7.js";
51
51
  import { t as finalizeInboundContext } from "./inbound-context-QOi5vzUt.js";
52
- import { p as registerUnhandledRejectionHandler } from "./runner-BcQ0sF9T.js";
52
+ import { p as registerUnhandledRejectionHandler } from "./runner-DUBExAb5.js";
53
53
  import "./fetch-DtLn7YU3.js";
54
54
  import { n as recordChannelActivity } from "./channel-activity-D9q-fIPB.js";
55
55
  import { t as convertMarkdownTables } from "./tables-COnZ169v.js";
@@ -4,16 +4,16 @@ import { A as isSelfChatMode, B as sleep, C as clamp, F as resolveJidToE164, H a
4
4
  import "./agent-scope-CpEJ0B88.js";
5
5
  import { r as defaultRuntime, t as createSubsystemLogger } from "./subsystem-BjyjJF-d.js";
6
6
  import "./workspace-DscDraUb.js";
7
- import { C as resolveEnvelopeFormatOptions, D as normalizeMentionText, E as buildMentionRegexes, S as formatInboundEnvelope, T as shouldComputeCommandAuthorized, _ as parseActivationCommand, b as createInboundDebouncer, c as DEFAULT_GROUP_HISTORY_LIMIT, d as shouldAckReactionForWhatsApp, f as dispatchReplyWithBufferedBlockDispatcher, g as normalizeGroupActivation, h as getReplyFromConfig, l as buildHistoryContextFromEntries, m as createDedupeCache, n as computeBackoff, o as buildPairingReply, r as sleepWithAbort, s as resolveMentionGating, u as recordPendingHistoryEntryIfEnabled, v as formatDurationPrecise, w as hasControlCommand, x as resolveInboundDebounceMs, y as enqueueSystemEvent } from "./unified-runner-CxscxYKm.js";
7
+ import { C as resolveEnvelopeFormatOptions, D as normalizeMentionText, E as buildMentionRegexes, S as formatInboundEnvelope, T as shouldComputeCommandAuthorized, _ as parseActivationCommand, b as createInboundDebouncer, c as DEFAULT_GROUP_HISTORY_LIMIT, d as shouldAckReactionForWhatsApp, f as dispatchReplyWithBufferedBlockDispatcher, g as normalizeGroupActivation, h as getReplyFromConfig, l as buildHistoryContextFromEntries, m as createDedupeCache, n as computeBackoff, o as buildPairingReply, r as sleepWithAbort, s as resolveMentionGating, u as recordPendingHistoryEntryIfEnabled, v as formatDurationPrecise, w as hasControlCommand, x as resolveInboundDebounceMs, y as enqueueSystemEvent } from "./unified-runner-BIj2b1Y-.js";
8
8
  import { s as resolveStorePath } from "./paths-CbQV9WEg.js";
9
9
  import "./auth-profiles-DdK1Hxaa.js";
10
10
  import { n as formatCliCommand } from "./env-BDXYbTKj.js";
11
11
  import "./github-copilot-token-cCYzSU9h.js";
12
12
  import "./boolean-CE7i9tBR.js";
13
- import { Ct as resolveGroupSessionKey, G as updateLastRoute, H as loadSessionStore, U as readSessionUpdatedAt, W as recordSessionMetaFromInbound } from "./pi-embedded-helpers-CfqDGQ9J.js";
13
+ import { Ct as resolveGroupSessionKey, G as updateLastRoute, H as loadSessionStore, U as readSessionUpdatedAt, W as recordSessionMetaFromInbound } from "./pi-embedded-helpers-pubKo8HQ.js";
14
14
  import { n as loadConfig } from "./config-5SdHIcHU.js";
15
15
  import "./manifest-registry-yb7sAlu4.js";
16
- import "./chrome-DkaXoP36.js";
16
+ import "./chrome-DYZwl5Gv.js";
17
17
  import "./frontmatter-CTR5f_Ez.js";
18
18
  import "./skills-Bs0AW1g3.js";
19
19
  import "./redact-BDMXB06K.js";
@@ -31,10 +31,10 @@ import "./bindings-BsHoBLIE.js";
31
31
  import "./send-CVMyYPQw.js";
32
32
  import "./send-CvhXrdgS.js";
33
33
  import "./tool-images-SqqWIT22.js";
34
- import "./deliver-C46-vyqg.js";
34
+ import "./deliver-dODxSv3b.js";
35
35
  import "./diagnostic-rPhsBoZz.js";
36
36
  import "./diagnostic-session-state-Zw87xFym.js";
37
- import "./image-CuzFLQWC.js";
37
+ import "./image-CXu8W39c.js";
38
38
  import "./tokens-Bux9Y_xD.js";
39
39
  import { G as formatLocationText, J as readChannelAllowFromStore, K as toLocationContext, X as upsertChannelPairingRequest } from "./send-DYj_o4_F.js";
40
40
  import "./pi-model-discovery-Bv5YDJc8.js";
@@ -50,7 +50,7 @@ import { t as getAgentScopedMediaLocalRoots } from "./local-roots-DhZz0Ybs.js";
50
50
  import { a as loadWebMedia } from "./ir-CTiz95Vb.js";
51
51
  import "./render-CDCvpfhh.js";
52
52
  import "./commands-registry-Bfc7Uz0o.js";
53
- import { y as registerUnhandledRejectionHandler } from "./runner-CU9l0uJh.js";
53
+ import { y as registerUnhandledRejectionHandler } from "./runner-WAG0M5s9.js";
54
54
  import "./skill-commands-DcVwOafC.js";
55
55
  import { t as finalizeInboundContext } from "./inbound-context-DSDTl6Kj.js";
56
56
  import "./fetch-Bso4i15F.js";
@@ -15,7 +15,7 @@ import "./client-DMBZpU6X.js";
15
15
  import "./call-BcE47FtD.js";
16
16
  import "./message-channel-C9dERklz.js";
17
17
  import "./pairing-token-Byh6drgn.js";
18
- import { Bn as resolveEnvelopeFormatOptions, Cn as enqueueSystemEvent, F as buildHistoryContextFromEntries, Hn as hasControlCommand, I as recordPendingHistoryEntryIfEnabled, Kn as buildMentionRegexes, L as shouldAckReactionForWhatsApp, Ln as createInboundDebouncer, M as buildPairingReply, N as resolveMentionGating, P as DEFAULT_GROUP_HISTORY_LIMIT, R as dispatchReplyWithBufferedBlockDispatcher, Rn as resolveInboundDebounceMs, U as createDedupeCache, Un as shouldComputeCommandAuthorized, W as getReplyFromConfig, b as sleepWithAbort, nn as parseActivationCommand, qn as normalizeMentionText, tn as normalizeGroupActivation, y as computeBackoff, zn as formatInboundEnvelope } from "./subagent-registry-CVQOC9Jw.js";
18
+ import { Bn as resolveEnvelopeFormatOptions, Cn as enqueueSystemEvent, F as buildHistoryContextFromEntries, Hn as hasControlCommand, I as recordPendingHistoryEntryIfEnabled, Kn as buildMentionRegexes, L as shouldAckReactionForWhatsApp, Ln as createInboundDebouncer, M as buildPairingReply, N as resolveMentionGating, P as DEFAULT_GROUP_HISTORY_LIMIT, R as dispatchReplyWithBufferedBlockDispatcher, Rn as resolveInboundDebounceMs, U as createDedupeCache, Un as shouldComputeCommandAuthorized, W as getReplyFromConfig, b as sleepWithAbort, nn as parseActivationCommand, qn as normalizeMentionText, tn as normalizeGroupActivation, y as computeBackoff, zn as formatInboundEnvelope } from "./subagent-registry-DEdqc42m.js";
19
19
  import { B as resolveGroupSessionKey, c as recordSessionMetaFromInbound, o as loadSessionStore, s as readSessionUpdatedAt, u as updateLastRoute } from "./sessions-CJXnZVjR.js";
20
20
  import "./tokens-Csntmwwn.js";
21
21
  import "./plugins-CwSlLxM8.js";
@@ -1,7 +1,7 @@
1
1
  import "./paths-Cqn-zk3M.js";
2
2
  import "./utils-B-0b9bGM.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import "./reply-DcyKvFor.js";
4
+ import "./reply-dzRBlsmK.js";
5
5
  import "./registry-Cja8eT7G.js";
6
6
  import "./subsystem-D9vIQve0.js";
7
7
  import "./exec-CWkblSrI.js";
@@ -101,7 +101,7 @@ import "./pi-tools.policy-CIDBbw6x.js";
101
101
  import "./control-service-Bz7rxLWq.js";
102
102
  import "./stagger-BUClb97_.js";
103
103
  import "./channel-selection-DuWs0Aak.js";
104
- import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-DztB2W6w.js";
104
+ import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-VYYpZqcw.js";
105
105
  import { n as sendMessageWhatsApp } from "./outbound-DB5Zus0-.js";
106
106
  import { i as waitForWaConnection, t as createWaSocket } from "./session-DIBTkyvE.js";
107
107
  import { t as loginWeb } from "./login-dIlDkG4X.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symerian/symi",
3
- "version": "2.6.7",
3
+ "version": "2.6.9",
4
4
  "description": "Multi-channel AI gateway with extensible messaging integrations",
5
5
  "keywords": [],
6
6
  "homepage": "https://github.com/jaysteelmind/symi#readme",