@visorcraft/idlehands 4.0.12 → 4.0.14

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 (174) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/{agent-via-gateway-8kOQMpw0.js → agent-via-gateway-B0077UOc.js} +1 -1
  3. package/dist/{agent-via-gateway-BmUiVvOs.js → agent-via-gateway-BCActbIf.js} +7 -7
  4. package/dist/{agent-via-gateway-DY9s7C5O.js → agent-via-gateway-D-FbIr6E.js} +7 -7
  5. package/dist/{agent-via-gateway-CwNsKA2p.js → agent-via-gateway-DFnFArbP.js} +1 -1
  6. package/dist/{agents-FBXsuMx0.js → agents-DBtNXoSW.js} +4 -4
  7. package/dist/{agents.config-J5LaHyjZ.js → agents.config-C48CGAxv.js} +1 -1
  8. package/dist/{agents.config-BeC7mTJ2.js → agents.config-a7WEBiP9.js} +1 -1
  9. package/dist/{anton-BMJsNqqL.js → anton-BiE961do.js} +137 -11
  10. package/dist/{anton-CSPEUgVi.js → anton-BzjiLD-a.js} +137 -11
  11. package/dist/{anton-_S2TvK6c.js → anton-GmxStpbM.js} +137 -11
  12. package/dist/{anton-CFb43gM1.js → anton-fsipCiB9.js} +137 -11
  13. package/dist/{audio-preflight-CW8IH1lU.js → audio-preflight-BSlR2jEq.js} +4 -4
  14. package/dist/{audio-preflight-vD3mDc6w.js → audio-preflight-CSSlgO89.js} +4 -4
  15. package/dist/{auth-choice-Cxc76L50.js → auth-choice-B9F26cWG.js} +1 -1
  16. package/dist/{auth-choice-DycYsq6V.js → auth-choice-DCHD89CG.js} +1 -1
  17. package/dist/{banner--eQQx-18.js → banner-DGxHi5f3.js} +1 -1
  18. package/dist/build-info.json +3 -3
  19. package/dist/bundled/boot-md/handler.js +7 -7
  20. package/dist/bundled/session-memory/handler.js +7 -7
  21. package/dist/{channel-options-E5FeI2sT.js → channel-options-BURifbbT.js} +1 -1
  22. package/dist/{channel-options-DYzhL-Ra.js → channel-options-DZ237bIi.js} +1 -1
  23. package/dist/{channel-web-d0g0MCG8.js → channel-web-Dx3LCcqS.js} +2 -2
  24. package/dist/{channel-web-D1-7qqL3.js → channel-web-Ylr-WudQ.js} +2 -2
  25. package/dist/{channels-cli-DYqCLYO8.js → channels-cli-BHyVWKE_.js} +7 -7
  26. package/dist/{channels-cli-SHHAxfV7.js → channels-cli-CntOyA1l.js} +7 -7
  27. package/dist/{chrome-BcJB6PcM.js → chrome-Do5potHV.js} +9 -9
  28. package/dist/{chrome-DEnkfZ9p.js → chrome-_2tzVjVl.js} +9 -9
  29. package/dist/{cli-CIJ_pp-W.js → cli-DnAZgvLv.js} +2 -2
  30. package/dist/{cli-Cg2smqR5.js → cli-DxFD9X-g.js} +2 -2
  31. package/dist/{command-registry-Ch1LX7dG.js → command-registry-BB2Vnuy4.js} +10 -10
  32. package/dist/{completion-cli-4GjUKmcp.js → completion-cli-Cd_zlB-2.js} +1 -1
  33. package/dist/{completion-cli-Dp2cBB7r.js → completion-cli-eFXXaRI-.js} +2 -2
  34. package/dist/{config-cli-DHOt2fiX.js → config-cli-C0kgcpE4.js} +1 -1
  35. package/dist/{config-cli-fEyZU_fS.js → config-cli-CNuPoVE4.js} +1 -1
  36. package/dist/{configure-UHNr2tF7.js → configure-BDO6l1oe.js} +3 -3
  37. package/dist/{configure-Dd1r8lCc.js → configure-DEyZZjPG.js} +3 -3
  38. package/dist/{deliver-BUiQ-9fE.js → deliver-CVTXl0Cv.js} +1 -1
  39. package/dist/{deliver-5FLCa6tB.js → deliver-whAbSPLk.js} +1 -1
  40. package/dist/{deps-LUq8tPGl.js → deps-7AsluBQV.js} +1 -1
  41. package/dist/{deps-ruCIL6tu.js → deps-8ieGS4Mv.js} +1 -1
  42. package/dist/{deps-CAYnlnre.js → deps-CIF1pkFi.js} +1 -1
  43. package/dist/{deps-DyhYyFzN.js → deps-CXtbmEWH.js} +1 -1
  44. package/dist/{doctor-completion-D4_Xz0GW.js → doctor-completion-BM1W0ErJ.js} +1 -1
  45. package/dist/{doctor-completion-k1NPhnSD.js → doctor-completion-DZ7EW_dp.js} +1 -1
  46. package/dist/{emergency-stop-7aCLPd3c.js → emergency-stop-BQVndluY.js} +2 -2
  47. package/dist/{emergency-stop-NRDPtN2X.js → emergency-stop-C5022igA.js} +2 -2
  48. package/dist/{emergency-stop-DvzTW9v2.js → emergency-stop-DdNkOB3t.js} +7 -7
  49. package/dist/{emergency-stop-C4Nj0B8-.js → emergency-stop-DpTSZhRz.js} +7 -7
  50. package/dist/entry.js +1 -1
  51. package/dist/extensionAPI.js +7 -7
  52. package/dist/{gateway-cli-BvfZQI4f.js → gateway-cli-CgCMdrYY.js} +9 -9
  53. package/dist/{gateway-cli-BzLinXVg.js → gateway-cli-DvDS1_s1.js} +9 -9
  54. package/dist/{health-Ck3J3S9G.js → health-Bs81nsdt.js} +1 -1
  55. package/dist/{health-D0w6dKOf.js → health-CPiopwcS.js} +1 -1
  56. package/dist/{hooks-cli-qfbN4qHo.js → hooks-cli-CNq30Huh.js} +3 -3
  57. package/dist/{hooks-cli-6IjNVfwU.js → hooks-cli-DXM6dTkU.js} +3 -3
  58. package/dist/{image-C_aN5P6-.js → image-BAsQlUqT.js} +1 -1
  59. package/dist/{image-D8b_rlQC.js → image-COw__ACq.js} +1 -1
  60. package/dist/index.js +7 -7
  61. package/dist/llm-slug-generator.js +7 -7
  62. package/dist/{models-BN3btFZs.js → models-CVGwjQpG.js} +2 -2
  63. package/dist/{models-cli-D0f0UhCd.js → models-cli-2QkLeKdt.js} +4 -4
  64. package/dist/{models-cli-BXIQUriJ.js → models-cli-bkbKnWld.js} +3 -3
  65. package/dist/{npm-resolution-DsNHuATZ.js → npm-resolution-CmAIOir0.js} +1 -1
  66. package/dist/{npm-resolution-CRr1BFy6.js → npm-resolution-DHetuEi8.js} +1 -1
  67. package/dist/{onboard-BbaM-mHQ.js → onboard-Du522rv9.js} +2 -2
  68. package/dist/{onboard-Co1aTajZ.js → onboard-IDM50Cwp.js} +2 -2
  69. package/dist/{onboard-channels-CDDDee0U.js → onboard-channels-5uQfEVIz.js} +1 -1
  70. package/dist/{onboard-channels-CPzMyGUw.js → onboard-channels-CHLOUR52.js} +1 -1
  71. package/dist/{onboarding-DJ5uRALX.js → onboarding-B73ADr9Y.js} +3 -3
  72. package/dist/{onboarding-GUp6F9pi.js → onboarding-Ct8sM6do.js} +3 -3
  73. package/dist/{onboarding.finalize-BF0WE60A.js → onboarding.finalize-DEVkNjj0.js} +6 -6
  74. package/dist/{onboarding.finalize-CCSwszBV.js → onboarding.finalize-mNlZG1KO.js} +7 -7
  75. package/dist/{pi-embedded-AgRG5Ssx.js → pi-embedded-ChimfAJ-.js} +27 -27
  76. package/dist/{pi-embedded-LzC2NbjE.js → pi-embedded-bwvtdswf.js} +27 -27
  77. package/dist/{pi-embedded-helpers-C2j0LfJC.js → pi-embedded-helpers-Ct2rwp-P.js} +4 -4
  78. package/dist/{pi-embedded-helpers-CghCLoPo.js → pi-embedded-helpers-CyTpDKo5.js} +4 -4
  79. package/dist/{plugin-registry-ChPpKka-.js → plugin-registry-BBx7owin.js} +1 -1
  80. package/dist/{plugin-registry-DJWce7ki.js → plugin-registry-CYh53OcU.js} +1 -1
  81. package/dist/plugin-sdk/{agent-via-gateway-CKHwp3jE.js → agent-via-gateway-C2tn6sON.js} +2 -2
  82. package/dist/plugin-sdk/{anton-BbSJqBoq.js → anton-_MnTuJJ-.js} +137 -11
  83. package/dist/plugin-sdk/{channel-web-BpsnbGKO.js → channel-web-DwtLzVOR.js} +2 -2
  84. package/dist/plugin-sdk/{deps-UrtR_PKP.js → deps-mdAvVF88.js} +1 -1
  85. package/dist/plugin-sdk/{emergency-stop-CfIXvAZq.js → emergency-stop-DYCGWJzN.js} +2 -2
  86. package/dist/plugin-sdk/index.js +3 -3
  87. package/dist/plugin-sdk/{reply-BTeuxXqB.js → reply-B-q4HnAx.js} +12 -12
  88. package/dist/plugin-sdk/{web-BkoZvzGE.js → web-P5eS5E4t.js} +3 -3
  89. package/dist/{plugins-cli-D2fnJF9k.js → plugins-cli-SxHWgGz6.js} +3 -3
  90. package/dist/{plugins-cli-CjrvJnpu.js → plugins-cli-TmKS47EG.js} +3 -3
  91. package/dist/{program-Bxd5OUE_.js → program-ZVWCD0Zm.js} +8 -8
  92. package/dist/{program-context-CeyrkmGJ.js → program-context-3VJmK0G6.js} +18 -18
  93. package/dist/{prompt-select-styled-QGoSGceD.js → prompt-select-styled-D7s-dTdd.js} +4 -4
  94. package/dist/{prompt-select-styled-Dxt7znW6.js → prompt-select-styled-DefgYXen.js} +4 -4
  95. package/dist/{provider-auth-helpers-BcXvA132.js → provider-auth-helpers-DZhIVPGv.js} +1 -1
  96. package/dist/{provider-auth-helpers-CjC0J8wK.js → provider-auth-helpers-ZH_-N5zd.js} +1 -1
  97. package/dist/{push-apns-Bqdhr5u5.js → push-apns-Do1ENlJt.js} +1 -1
  98. package/dist/{push-apns-3RpPSOWj.js → push-apns-xWUFiO5-.js} +1 -1
  99. package/dist/{pw-ai-CfYaR1K2.js → pw-ai-CowTfhOG.js} +1 -1
  100. package/dist/{pw-ai-DjmrIQle.js → pw-ai-yrIWfcWX.js} +1 -1
  101. package/dist/{register.agent-snJhCvJ4.js → register.agent-BQjgsbPA.js} +9 -9
  102. package/dist/{register.agent-C-ynT_r7.js → register.agent-oVyiMffI.js} +8 -8
  103. package/dist/{register.configure-WUqB9nea.js → register.configure-24YtUj4s.js} +8 -8
  104. package/dist/{register.configure-BFu6tHW9.js → register.configure-D_zfBA_E.js} +8 -8
  105. package/dist/{register.maintenance-D3gFMNHJ.js → register.maintenance-BccFDIZU.js} +9 -9
  106. package/dist/{register.maintenance-D_Xb1h9n.js → register.maintenance-CkYNqabD.js} +8 -8
  107. package/dist/{register.message-aGnFopBN.js → register.message-CPejF6cS.js} +3 -3
  108. package/dist/{register.message-CviOQrxd.js → register.message-CySQp5gA.js} +3 -3
  109. package/dist/{register.onboard-DFQubnz_.js → register.onboard-BddM-Tey.js} +2 -2
  110. package/dist/{register.onboard-DaU8z55G.js → register.onboard-Cg5R87xG.js} +2 -2
  111. package/dist/{register.orchestrator-anton-BdD-lYjq.js → register.orchestrator-anton-Dfd2g3y-.js} +2 -2
  112. package/dist/{register.orchestrator-anton-Bh-a7hTU.js → register.orchestrator-anton-uFQntDpJ.js} +2 -2
  113. package/dist/{register.setup-6T_0-gzK.js → register.setup-Bla4J47z.js} +2 -2
  114. package/dist/{register.setup-DeEMWLk1.js → register.setup-Cnil6_M-.js} +2 -2
  115. package/dist/{register.status-health-sessions-DO5z-I1G.js → register.status-health-sessions-CI6-RlLt.js} +4 -4
  116. package/dist/{register.status-health-sessions-7LgfFm3K.js → register.status-health-sessions-CiakJrlx.js} +4 -4
  117. package/dist/{register.subclis-Pcge2ZUD.js → register.subclis-9fhzxHCF.js} +9 -9
  118. package/dist/{reply-xob39FTF.js → reply-Cmj0wbnT.js} +12 -12
  119. package/dist/{run-main-FpL-RwcQ.js → run-main-DUtPECK6.js} +15 -15
  120. package/dist/{runner-CZW_eyf2.js → runner-Bv_BA3vd.js} +1 -1
  121. package/dist/{runner-PgRFPYUj.js → runner-BzNdfqDz.js} +1 -1
  122. package/dist/{server-node-events-lrUnxVTz.js → server-node-events--qmTbghp.js} +3 -3
  123. package/dist/{server-node-events-BNL7ha1f.js → server-node-events-DwUtqxW5.js} +3 -3
  124. package/dist/{status-DLKGKWq_.js → status-CMG5erwf.js} +2 -2
  125. package/dist/{status-DvdVIssC.js → status-CPCpSX9k.js} +2 -2
  126. package/dist/{subagent-registry-C1Xg6P75.js → subagent-registry-DHwrN9Oj.js} +12 -12
  127. package/dist/{update-cli-POnZaBSb.js → update-cli-CQhZlXlT.js} +8 -8
  128. package/dist/{update-cli-CdX0Fl_m.js → update-cli-DMjQ-pCl.js} +9 -9
  129. package/dist/{update-runner-CYdqDxJL.js → update-runner-BnTu_uJ4.js} +1 -1
  130. package/dist/{update-runner-k3nRoLXk.js → update-runner-CghbY9Ay.js} +1 -1
  131. package/dist/{web-B8L46t9i.js → web-BJk05p_4.js} +8 -8
  132. package/dist/{web-DqzOqUcK.js → web-J7TF5rpD.js} +3 -3
  133. package/dist/{web-BOZhcGzD.js → web-U5rtNi4Q.js} +3 -3
  134. package/dist/{web-DsPIUwWo.js → web-weF5X5MU.js} +8 -8
  135. package/extensions/acpx/package.json +1 -1
  136. package/extensions/bluebubbles/package.json +1 -1
  137. package/extensions/copilot-proxy/package.json +1 -1
  138. package/extensions/diagnostics-otel/package.json +1 -1
  139. package/extensions/discord/package.json +1 -1
  140. package/extensions/feishu/package.json +1 -1
  141. package/extensions/google-gemini-cli-auth/package.json +1 -1
  142. package/extensions/googlechat/package.json +1 -1
  143. package/extensions/hand/package.json +1 -1
  144. package/extensions/imessage/package.json +1 -1
  145. package/extensions/irc/package.json +1 -1
  146. package/extensions/line/package.json +1 -1
  147. package/extensions/llm-task/package.json +1 -1
  148. package/extensions/matrix/CHANGELOG.md +12 -0
  149. package/extensions/matrix/package.json +1 -1
  150. package/extensions/mattermost/package.json +1 -1
  151. package/extensions/memory-core/package.json +1 -1
  152. package/extensions/memory-lancedb/package.json +1 -1
  153. package/extensions/minimax-portal-auth/package.json +1 -1
  154. package/extensions/msteams/CHANGELOG.md +12 -0
  155. package/extensions/msteams/package.json +1 -1
  156. package/extensions/nextcloud-talk/package.json +1 -1
  157. package/extensions/nostr/CHANGELOG.md +12 -0
  158. package/extensions/nostr/package.json +1 -1
  159. package/extensions/open-prose/package.json +1 -1
  160. package/extensions/signal/package.json +1 -1
  161. package/extensions/slack/package.json +1 -1
  162. package/extensions/synology-chat/package.json +1 -1
  163. package/extensions/telegram/package.json +1 -1
  164. package/extensions/tlon/package.json +1 -1
  165. package/extensions/twitch/CHANGELOG.md +12 -0
  166. package/extensions/twitch/package.json +1 -1
  167. package/extensions/voice-call/CHANGELOG.md +12 -0
  168. package/extensions/voice-call/package.json +1 -1
  169. package/extensions/whatsapp/package.json +1 -1
  170. package/extensions/zalo/CHANGELOG.md +12 -0
  171. package/extensions/zalo/package.json +1 -1
  172. package/extensions/zalouser/CHANGELOG.md +12 -0
  173. package/extensions/zalouser/package.json +1 -1
  174. package/package.json +1 -1
@@ -22,7 +22,7 @@ import { a as logoutWeb, i as logWebSelfId, l as readWebSelfId, n as getWebAuthA
22
22
  import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-J10cQN4A.js";
23
23
  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-DLZt92Da.js";
24
24
  import { n as generateSecureUuid, t as generateSecureToken } from "./secure-random-BvP4jdcV.js";
25
- import { C as initializeGlobalHookRunner, S as getGlobalHookRunner, _ as createReplyToModeFilterForChannel, a as normalizeOutboundPayloadsForJson, b as normalizeChannelTargetInput, c as parseReplyDirectives, d as applyReplyThreading, f as filterMessagingToolDuplicates, g as shouldSuppressReasoningPayload, h as shouldSuppressMessagingToolReplies, i as normalizeOutboundPayloads, l as splitMediaFromOutput, m as isRenderablePayload, o as normalizeReplyPayloadsForDelivery, p as filterMessagingToolMediaDuplicates, r as formatOutboundPayloadLog, s as throwIfAborted, t as deliverOutboundPayloads, u as applyReplyTagsToPayload, v as resolveReplyToMode, x as normalizeTargetForProvider, y as buildTargetResolverSignature } from "./deliver-5FLCa6tB.js";
25
+ import { C as initializeGlobalHookRunner, S as getGlobalHookRunner, _ as createReplyToModeFilterForChannel, a as normalizeOutboundPayloadsForJson, b as normalizeChannelTargetInput, c as parseReplyDirectives, d as applyReplyThreading, f as filterMessagingToolDuplicates, g as shouldSuppressReasoningPayload, h as shouldSuppressMessagingToolReplies, i as normalizeOutboundPayloads, l as splitMediaFromOutput, m as isRenderablePayload, o as normalizeReplyPayloadsForDelivery, p as filterMessagingToolMediaDuplicates, r as formatOutboundPayloadLog, s as throwIfAborted, t as deliverOutboundPayloads, u as applyReplyTagsToPayload, v as resolveReplyToMode, x as normalizeTargetForProvider, y as buildTargetResolverSignature } from "./deliver-whAbSPLk.js";
26
26
  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-jHCdo9Am.js";
27
27
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-Bx2Le86J.js";
28
28
  import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-BRVjft5i.js";
@@ -30,8 +30,8 @@ import { $ as readJsonFileWithFallback, A as extractTelegramLocation, B as norma
30
30
  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-BDG-MYYV.js";
31
31
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-Dic-M5qw.js";
32
32
  import { a as isMarkdownCapableMessageChannel, c as resolveGatewayMessageChannel, d as GATEWAY_CLIENT_MODES, f as GATEWAY_CLIENT_NAMES, i as isInternalMessageChannel, l as resolveMessageChannel, n as isDeliverableMessageChannel, o as listDeliverableMessageChannels, r as isGatewayMessageChannel, s as normalizeMessageChannel, t as INTERNAL_MESSAGE_CHANNEL, u as GATEWAY_CLIENT_IDS } from "./message-channel-DqqfOIdx.js";
33
- import { $ as stripPluginOnlyAllowlist, A as isTimeoutErrorMessage, B as resolveBrowserConfig, C as isCompactionFailureError, D as isLikelyContextOverflowError, E as isFailoverErrorMessage, F as ensureSandboxWorkspaceForSession, G as resolveGatewayCredentialsFromConfig, H as getBridgeAuthForPort, I as resolveSandboxContext, J as applyOwnerOnlyToolPolicy, K as trimToUndefined$1, L as resolveSandboxRuntimeStatus, M as parseImageDimensionError, N as parseImageSizeError, O as isRateLimitAssistantError, P as sanitizeUserFacingText, Q as mergeAlsoAllowPolicy, R as createBrowserRouteContext, S as isCloudCodeAssistFormatError, T as isFailoverAssistantError, U as ensureBrowserControlAuth, V as resolveProfile, W as resolveBrowserControlAuth, X as collectExplicitAllowlist, Y as buildPluginToolGroups, Z as expandPolicyWithPluginGroups, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, at as buildBootstrapContextFiles, b as isAuthPermanentErrorMessage, c as extractToolCallsFromAssistant, ct as resolveBootstrapTotalMaxChars, d as downgradeOpenAIReasoningBlocks, et as expandToolGroups, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, it as matchesAnyGlobPattern, j as isTransientHttpError, k as isRawApiErrorPayload, l as extractToolResultId, lt as sanitizeGoogleTurnOrdering, m as classifyFailoverReason, n as validateGeminiTurns, nt as resolveToolProfilePolicy, o as normalizeTextForComparison, ot as ensureSessionHeader, p as BILLING_ERROR_USER_MESSAGE, q as resolveSandboxConfigForAgent, r as pickFallbackThinkingLevel, rt as compileGlobPatterns, s as sanitizeSessionMessagesImages, st as resolveBootstrapMaxChars, t as validateAnthropicTurns, tt as normalizeToolName, u as sanitizeToolCallIdsForCloudCodeAssist, v as getApiErrorPayloadFingerprint, w as isContextOverflowError, x as isBillingAssistantError, y as isAuthAssistantError, z as registerBrowserRoutes } from "./pi-embedded-helpers-C2j0LfJC.js";
34
- import { C as ensureChromeExtensionRelayServer, F as isSecureWebSocketUrl, O as DEFAULT_UPLOAD_DIR, P as isLoopbackHost, R as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as rawDataToString, k as resolveExistingPathsWithinRoot, s as resolveLsofCommandSync } from "./chrome-DEnkfZ9p.js";
33
+ import { $ as stripPluginOnlyAllowlist, A as isTimeoutErrorMessage, B as resolveBrowserConfig, C as isCompactionFailureError, D as isLikelyContextOverflowError, E as isFailoverErrorMessage, F as ensureSandboxWorkspaceForSession, G as resolveGatewayCredentialsFromConfig, H as getBridgeAuthForPort, I as resolveSandboxContext, J as applyOwnerOnlyToolPolicy, K as trimToUndefined$1, L as resolveSandboxRuntimeStatus, M as parseImageDimensionError, N as parseImageSizeError, O as isRateLimitAssistantError, P as sanitizeUserFacingText, Q as mergeAlsoAllowPolicy, R as createBrowserRouteContext, S as isCloudCodeAssistFormatError, T as isFailoverAssistantError, U as ensureBrowserControlAuth, V as resolveProfile, W as resolveBrowserControlAuth, X as collectExplicitAllowlist, Y as buildPluginToolGroups, Z as expandPolicyWithPluginGroups, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, at as buildBootstrapContextFiles, b as isAuthPermanentErrorMessage, c as extractToolCallsFromAssistant, ct as resolveBootstrapTotalMaxChars, d as downgradeOpenAIReasoningBlocks, et as expandToolGroups, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, it as matchesAnyGlobPattern, j as isTransientHttpError, k as isRawApiErrorPayload, l as extractToolResultId, lt as sanitizeGoogleTurnOrdering, m as classifyFailoverReason, n as validateGeminiTurns, nt as resolveToolProfilePolicy, o as normalizeTextForComparison, ot as ensureSessionHeader, p as BILLING_ERROR_USER_MESSAGE, q as resolveSandboxConfigForAgent, r as pickFallbackThinkingLevel, rt as compileGlobPatterns, s as sanitizeSessionMessagesImages, st as resolveBootstrapMaxChars, t as validateAnthropicTurns, tt as normalizeToolName, u as sanitizeToolCallIdsForCloudCodeAssist, v as getApiErrorPayloadFingerprint, w as isContextOverflowError, x as isBillingAssistantError, y as isAuthAssistantError, z as registerBrowserRoutes } from "./pi-embedded-helpers-Ct2rwp-P.js";
34
+ import { C as ensureChromeExtensionRelayServer, F as isSecureWebSocketUrl, O as DEFAULT_UPLOAD_DIR, P as isLoopbackHost, R as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as rawDataToString, k as resolveExistingPathsWithinRoot, s as resolveLsofCommandSync } from "./chrome-Do5potHV.js";
35
35
  import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-DappnhDp.js";
36
36
  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-nQcWk6Z6.js";
37
37
  import { t as PATH_ALIAS_POLICIES } from "./path-alias-guards-CGbCFqW8.js";
@@ -46,7 +46,7 @@ import { a as resolveSessionFilePathOptions, i as resolveSessionFilePath, l as r
46
46
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-BaUINxJH.js";
47
47
  import { a as canonicalizeBase64, i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, o as estimateBase64DecodedBytes, r as sanitizeToolResultImages } from "./tool-images-CpZSs-zE.js";
48
48
  import { a as normalizeReasoningLevel, c as normalizeVerboseLevel, i as normalizeElevatedLevel, l as resolveResponseUsageMode, n as formatXHighModelHint, o as normalizeThinkLevel, s as normalizeUsageDisplay, t as formatThinkingLevels, u as supportsXHighThinking } from "./thinking-BFsWfunr.js";
49
- import { C as extractTextFromChatContent, S as isInsideCode, _ 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, w as ensureIdleHandsModelsJson, x as findCodeRegions, y as resolveToolDisplay } from "./image-C_aN5P6-.js";
49
+ import { C as extractTextFromChatContent, S as isInsideCode, _ 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, w as ensureIdleHandsModelsJson, x as findCodeRegions, y as resolveToolDisplay } from "./image-BAsQlUqT.js";
50
50
  import { n as resolveMemorySearchConfig } from "./manager-DYOflU5p.js";
51
51
  import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-B7YMixjc.js";
52
52
  import { t as fetchWithSsrFGuard } from "./fetch-guard-BdCPmLBP.js";
@@ -60,7 +60,7 @@ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-BwkcXPZC.js";
60
60
  import { _ as isNativeCommandsExplicitlyDisabled, a as listChatCommands, b as resolveNativeSkillsEnabled, c as listNativeCommandSpecsForConfig, d as parseCommandArgs, f as resolveCommandArgChoices, g as isCommandFlagEnabled, h as shouldHandleTextCommands, i as isCommandEnabled, l as maybeResolveTextAlias, m as serializeCommandArgs, o as listChatCommandsForConfig, p as resolveCommandArgMenu, r as findCommandByNativeName, s as listNativeCommandSpecs, t as buildCommandTextFromArgs, u as normalizeCommandBody, v as isRestartEnabled, y as resolveNativeCommandsEnabled } from "./commands-registry-1-Rv2-IS.js";
61
61
  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-CHpRgsOw.js";
62
62
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-DZmR6jxY.js";
63
- import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$2, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-CZW_eyf2.js";
63
+ import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$2, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-Bv_BA3vd.js";
64
64
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-ChVgjTkv.js";
65
65
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-DTHhQmHb.js";
66
66
  import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-C3LJmSjf.js";
@@ -72,7 +72,7 @@ import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-rou
72
72
  import { i as redactIdentifier, t as getActiveWebListener } from "./active-listener-BnWIC6Jc.js";
73
73
  import { t as makeProxyFetch } from "./proxy-CNZpb4NE.js";
74
74
  import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-CqYEEgmA.js";
75
- import { r as createOutboundSendDepsFromCliSource, t as createDefaultDeps } from "./deps-CAYnlnre.js";
75
+ import { r as createOutboundSendDepsFromCliSource, t as createDefaultDeps } from "./deps-CIF1pkFi.js";
76
76
  import { createRequire } from "node:module";
77
77
  import * as path$1 from "node:path";
78
78
  import path, { isAbsolute } from "node:path";
@@ -91,7 +91,7 @@ import { CURRENT_SESSION_VERSION, DefaultResourceLoader, SessionManager, Setting
91
91
  import { EdgeTTS } from "node-edge-tts";
92
92
  import { createServer } from "node:http";
93
93
  import { ProxyAgent, fetch as fetch$1 } from "undici";
94
- import WebSocket, { WebSocket as WebSocket$1 } from "ws";
94
+ import WebSocket$1, { WebSocket } from "ws";
95
95
  import { Buffer as Buffer$1 } from "node:buffer";
96
96
  import { createJiti } from "jiti";
97
97
  import { Type } from "@sinclair/typebox";
@@ -6371,7 +6371,7 @@ var GatewayClient = class {
6371
6371
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
6372
6372
  });
6373
6373
  }
6374
- this.ws = new WebSocket$1(url, wsOptions);
6374
+ this.ws = new WebSocket(url, wsOptions);
6375
6375
  this.ws.on("open", () => {
6376
6376
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
6377
6377
  const tlsError = this.validateTlsFingerprint();
@@ -6567,7 +6567,7 @@ var GatewayClient = class {
6567
6567
  const connectChallengeTimeoutMs = typeof rawConnectDelayMs === "number" && Number.isFinite(rawConnectDelayMs) ? Math.max(250, Math.min(1e4, rawConnectDelayMs)) : 2e3;
6568
6568
  if (this.connectTimer) clearTimeout(this.connectTimer);
6569
6569
  this.connectTimer = setTimeout(() => {
6570
- if (this.connectSent || this.ws?.readyState !== WebSocket$1.OPEN) return;
6570
+ if (this.connectSent || this.ws?.readyState !== WebSocket.OPEN) return;
6571
6571
  this.opts.onConnectError?.(/* @__PURE__ */ new Error("gateway connect challenge timeout"));
6572
6572
  this.ws?.close(1008, "connect challenge timeout");
6573
6573
  }, connectChallengeTimeoutMs);
@@ -6609,7 +6609,7 @@ var GatewayClient = class {
6609
6609
  return null;
6610
6610
  }
6611
6611
  async request(method, params, opts) {
6612
- if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
6612
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
6613
6613
  const id = randomUUID();
6614
6614
  const frame = {
6615
6615
  type: "req",
@@ -7933,7 +7933,7 @@ async function routeReply(params) {
7933
7933
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
7934
7934
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
7935
7935
  try {
7936
- const { deliverOutboundPayloads } = await import("./deliver-5FLCa6tB.js").then((n) => n.n);
7936
+ const { deliverOutboundPayloads } = await import("./deliver-whAbSPLk.js").then((n) => n.n);
7937
7937
  const outboundSession = buildOutboundSessionContext({
7938
7938
  cfg,
7939
7939
  agentId: resolvedAgentId,
@@ -23058,7 +23058,7 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
23058
23058
  };
23059
23059
  const arg = body.slice(6).trim();
23060
23060
  if (arg === "status" || arg === "") {
23061
- const { antonStatus } = await import("./anton-CSPEUgVi.js");
23061
+ const { antonStatus } = await import("./anton-BzjiLD-a.js");
23062
23062
  const lines = [];
23063
23063
  await antonStatus({
23064
23064
  log: (msg) => lines.push(msg),
@@ -23074,7 +23074,7 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
23074
23074
  return { shouldContinue: false };
23075
23075
  }
23076
23076
  if (arg === "stop") {
23077
- const { antonStop } = await import("./anton-CSPEUgVi.js");
23077
+ const { antonStop } = await import("./anton-BzjiLD-a.js");
23078
23078
  const lines = [];
23079
23079
  await antonStop({
23080
23080
  log: (msg) => lines.push(msg),
@@ -23112,8 +23112,8 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
23112
23112
  await sendProgress(replyCtx, text);
23113
23113
  return { shouldContinue: false };
23114
23114
  }
23115
- const { runAnton, formatProgressMessage } = await import("./anton-CSPEUgVi.js");
23116
- const { createDefaultDeps } = await import("./deps-CAYnlnre.js").then((n) => n.n);
23115
+ const { runAnton, formatProgressMessage } = await import("./anton-BzjiLD-a.js");
23116
+ const { createDefaultDeps } = await import("./deps-CIF1pkFi.js").then((n) => n.n);
23117
23117
  const { createNonExitingRuntime } = await import("./runtime-8mi3mpYB.js").then((n) => n.r);
23118
23118
  const runtime = createNonExitingRuntime();
23119
23119
  const deps = createDefaultDeps();
@@ -47425,7 +47425,7 @@ async function deliverSessionMaintenanceWarning(params) {
47425
47425
  return;
47426
47426
  }
47427
47427
  try {
47428
- const { deliverOutboundPayloads } = await import("./deliver-5FLCa6tB.js").then((n) => n.n);
47428
+ const { deliverOutboundPayloads } = await import("./deliver-whAbSPLk.js").then((n) => n.n);
47429
47429
  const outboundSession = buildOutboundSessionContext({
47430
47430
  cfg: params.cfg,
47431
47431
  sessionKey: params.sessionKey
@@ -51861,7 +51861,7 @@ async function describeStickerImage(params) {
51861
51861
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
51862
51862
  try {
51863
51863
  const buffer = await fs.readFile(imagePath);
51864
- const { describeImageWithModel } = await import("./image-C_aN5P6-.js").then((n) => n.n);
51864
+ const { describeImageWithModel } = await import("./image-BAsQlUqT.js").then((n) => n.n);
51865
51865
  return (await describeImageWithModel({
51866
51866
  buffer,
51867
51867
  fileName: "sticker.webp",
@@ -54789,7 +54789,7 @@ async function preflightDiscordMessage(params) {
54789
54789
  let preflightTranscript;
54790
54790
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
54791
54791
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
54792
- const { transcribeFirstAudio } = await import("./audio-preflight-vD3mDc6w.js");
54792
+ const { transcribeFirstAudio } = await import("./audio-preflight-CSSlgO89.js");
54793
54793
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
54794
54794
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
54795
54795
  ctx: {
@@ -57266,7 +57266,7 @@ function createDiscordMessageHandler(params) {
57266
57266
  try {
57267
57267
  const messageText = resolveDiscordMessageText(data.message)?.trim();
57268
57268
  if (messageText) {
57269
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-C4Nj0B8-.js");
57269
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-DpTSZhRz.js");
57270
57270
  if (isAbortRequestText(messageText)) {
57271
57271
  const { resolveAgentRoute } = await import("./resolve-route-BI3VjtwE.js").then((n) => n.r);
57272
57272
  const channelId = resolveDiscordMessageChannelId({
@@ -59990,7 +59990,7 @@ async function agentCommand(opts, runtime = defaultRuntime, deps = createDefault
59990
59990
  agentId: sessionAgentId,
59991
59991
  sessionKey
59992
59992
  });
59993
- const workspaceDirRaw = resolveAgentWorkspaceDir(cfg, sessionAgentId);
59993
+ const workspaceDirRaw = resolvedSessionEntry?.workspaceDir?.trim() || resolveAgentWorkspaceDir(cfg, sessionAgentId);
59994
59994
  const agentDir = resolveAgentDir(cfg, sessionAgentId);
59995
59995
  const workspaceDir = (await ensureAgentWorkspace({
59996
59996
  dir: workspaceDirRaw,
@@ -62712,7 +62712,7 @@ function createDiscordGatewayPlugin(params) {
62712
62712
  return super.registerClient(client);
62713
62713
  }
62714
62714
  createWebSocket(url) {
62715
- return new WebSocket(url, { agent: wsAgent });
62715
+ return new WebSocket$1(url, { agent: wsAgent });
62716
62716
  }
62717
62717
  }
62718
62718
  return new ProxyGatewayPlugin();
@@ -64764,7 +64764,7 @@ async function monitorIMessageProvider(opts = {}) {
64764
64764
  }
64765
64765
  const msgText = (message.text ?? "").trim();
64766
64766
  if (msgText) {
64767
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-C4Nj0B8-.js");
64767
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-DpTSZhRz.js");
64768
64768
  if (isAbortRequestText(msgText)) {
64769
64769
  const { resolveAgentRoute } = await import("./resolve-route-BI3VjtwE.js").then((n) => n.r);
64770
64770
  const route = resolveAgentRoute({
@@ -67375,7 +67375,7 @@ function createSignalEventHandler(deps) {
67375
67375
  const senderName = envelope.sourceName ?? senderDisplay;
67376
67376
  const messageId = typeof envelope.timestamp === "number" ? String(envelope.timestamp) : void 0;
67377
67377
  if (bodyText) {
67378
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-C4Nj0B8-.js");
67378
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-DpTSZhRz.js");
67379
67379
  if (isAbortRequestText(bodyText)) {
67380
67380
  const { resolveAgentRoute } = await import("./resolve-route-BI3VjtwE.js").then((n) => n.r);
67381
67381
  const route = resolveAgentRoute({
@@ -70757,7 +70757,7 @@ function createSlackMessageHandler(params) {
70757
70757
  if (ctx.markMessageSeen(message.channel, message.ts)) return;
70758
70758
  const rawText = (message.text ?? "").trim();
70759
70759
  if (rawText) {
70760
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-C4Nj0B8-.js");
70760
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-DpTSZhRz.js");
70761
70761
  if (isAbortRequestText(rawText)) {
70762
70762
  const { resolveAgentRoute } = await import("./resolve-route-BI3VjtwE.js").then((n) => n.r);
70763
70763
  const route = resolveAgentRoute({
@@ -72951,7 +72951,7 @@ const registerTelegramHandlers = ({ cfg, accountId, bot, opts, runtime, mediaMax
72951
72951
  const { ctx, msg, chatId, resolvedThreadId, storeAllowFrom, sendOversizeWarning, oversizeLogMessage } = params;
72952
72952
  const text = typeof msg.text === "string" ? msg.text : void 0;
72953
72953
  if (text) {
72954
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-C4Nj0B8-.js");
72954
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-DpTSZhRz.js");
72955
72955
  if (isAbortRequestText(text)) {
72956
72956
  const senderId = msg.from?.id ? String(msg.from.id) : "";
72957
72957
  if (!senderId || !allowFrom?.length || allowFrom.includes(senderId)) {
@@ -73838,7 +73838,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, replyMedia =
73838
73838
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
73839
73839
  let preflightTranscript;
73840
73840
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
73841
- const { transcribeFirstAudio } = await import("./audio-preflight-vD3mDc6w.js");
73841
+ const { transcribeFirstAudio } = await import("./audio-preflight-CSSlgO89.js");
73842
73842
  preflightTranscript = await transcribeFirstAudio({
73843
73843
  ctx: {
73844
73844
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -76436,7 +76436,7 @@ function loadWebLoginQr() {
76436
76436
  return webLoginQrPromise;
76437
76437
  }
76438
76438
  function loadWebChannel() {
76439
- webChannelPromise ??= import("./web-B8L46t9i.js");
76439
+ webChannelPromise ??= import("./web-BJk05p_4.js");
76440
76440
  return webChannelPromise;
76441
76441
  }
76442
76442
  function loadWhatsAppActions() {
@@ -9,7 +9,7 @@ import { t as formatCliCommand } from "./command-format-BAxx4PW5.js";
9
9
  import { n as parseBooleanValue } from "./env-BpvqFD5n.js";
10
10
  import { t as generateSecureToken } from "./secure-random-BvP4jdcV.js";
11
11
  import { i as getImageMetadata, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-BDG-MYYV.js";
12
- import { B as DEFAULT_BROWSER_EVALUATE_ENABLED, C as ensureChromeExtensionRelayServer, D as DEFAULT_TRACE_DIR, E as DEFAULT_DOWNLOAD_DIR, H as DEFAULT_IDLEHANDS_BROWSER_ENABLED, I as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, L as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, N as normalizeBrowserFormField, O as DEFAULT_UPLOAD_DIR, P as isLoopbackHost, R as DEFAULT_AI_SNAPSHOT_MAX_CHARS, U as DEFAULT_IDLEHANDS_BROWSER_PROFILE_NAME, V as DEFAULT_IDLEHANDS_BROWSER_COLOR, _ as withBrowserNavigationPolicy, a as resolveIdleHandsUserDataDir, b as fetchOk, c as resolveBrowserExecutableForPlatform, f as normalizeCdpWsUrl, g as assertBrowserNavigationResultAllowed, h as assertBrowserNavigationAllowed, i as launchIdleHandsChrome, j as resolveWritablePathWithinRoot, k as resolveExistingPathsWithinRoot, l as captureScreenshot, m as InvalidBrowserNavigationUrlError, n as isChromeCdpReady, o as stopIdleHandsChrome, p as snapshotAria, r as isChromeReachable, u as createTargetViaCdp, v as appendCdpPath, w as stopChromeExtensionRelayServer, y as fetchJson, z as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME } from "./chrome-DEnkfZ9p.js";
12
+ import { B as DEFAULT_BROWSER_EVALUATE_ENABLED, C as ensureChromeExtensionRelayServer, D as DEFAULT_TRACE_DIR, E as DEFAULT_DOWNLOAD_DIR, H as DEFAULT_IDLEHANDS_BROWSER_ENABLED, I as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, L as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, N as normalizeBrowserFormField, O as DEFAULT_UPLOAD_DIR, P as isLoopbackHost, R as DEFAULT_AI_SNAPSHOT_MAX_CHARS, U as DEFAULT_IDLEHANDS_BROWSER_PROFILE_NAME, V as DEFAULT_IDLEHANDS_BROWSER_COLOR, _ as withBrowserNavigationPolicy, a as resolveIdleHandsUserDataDir, b as fetchOk, c as resolveBrowserExecutableForPlatform, f as normalizeCdpWsUrl, g as assertBrowserNavigationResultAllowed, h as assertBrowserNavigationAllowed, i as launchIdleHandsChrome, j as resolveWritablePathWithinRoot, k as resolveExistingPathsWithinRoot, l as captureScreenshot, m as InvalidBrowserNavigationUrlError, n as isChromeCdpReady, o as stopIdleHandsChrome, p as snapshotAria, r as isChromeReachable, u as createTargetViaCdp, v as appendCdpPath, w as stopChromeExtensionRelayServer, y as fetchJson, z as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME } from "./chrome-Do5potHV.js";
13
13
  import { t as SsrFBlockedError } from "./ssrf-DappnhDp.js";
14
14
  import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-nQcWk6Z6.js";
15
15
  import { t as PATH_ALIAS_POLICIES } from "./path-alias-guards-CGbCFqW8.js";
@@ -1181,7 +1181,7 @@ function isModuleNotFoundError(err) {
1181
1181
  }
1182
1182
  async function loadPwAiModule(mode) {
1183
1183
  try {
1184
- return await import("./pw-ai-DjmrIQle.js");
1184
+ return await import("./pw-ai-yrIWfcWX.js");
1185
1185
  } catch (err) {
1186
1186
  if (mode === "soft") return null;
1187
1187
  if (isModuleNotFoundError(err)) return null;
@@ -3716,11 +3716,11 @@ function createProfileContext(opts, profile) {
3716
3716
  const userDataDir = resolveIdleHandsUserDataDir(profile.name);
3717
3717
  const profileState = getProfileState();
3718
3718
  if (await isHttpReachable(300) && !profileState.running) try {
3719
- await (await import("./pw-ai-DjmrIQle.js")).closePlaywrightBrowserConnection();
3719
+ await (await import("./pw-ai-yrIWfcWX.js")).closePlaywrightBrowserConnection();
3720
3720
  } catch {}
3721
3721
  if (profileState.running) await stopRunningBrowser();
3722
3722
  try {
3723
- await (await import("./pw-ai-DjmrIQle.js")).closePlaywrightBrowserConnection();
3723
+ await (await import("./pw-ai-yrIWfcWX.js")).closePlaywrightBrowserConnection();
3724
3724
  } catch {}
3725
3725
  if (!syncFs.existsSync(userDataDir)) return {
3726
3726
  moved: false,
@@ -10,7 +10,7 @@ import { t as formatCliCommand } from "./command-format-BAxx4PW5.js";
10
10
  import { t as parseBooleanValue } from "./boolean-CE7i9tBR.js";
11
11
  import { t as generateSecureToken } from "./secure-random-B1N_MXT_.js";
12
12
  import { i as getImageMetadata, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-D1KtygWz.js";
13
- import { B as DEFAULT_BROWSER_EVALUATE_ENABLED, C as ensureChromeExtensionRelayServer, D as DEFAULT_TRACE_DIR, E as DEFAULT_DOWNLOAD_DIR, H as DEFAULT_IDLEHANDS_BROWSER_ENABLED, I as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, L as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, N as normalizeBrowserFormField, O as DEFAULT_UPLOAD_DIR, P as isLoopbackHost, R as DEFAULT_AI_SNAPSHOT_MAX_CHARS, U as DEFAULT_IDLEHANDS_BROWSER_PROFILE_NAME, V as DEFAULT_IDLEHANDS_BROWSER_COLOR, _ as withBrowserNavigationPolicy, a as resolveIdleHandsUserDataDir, b as fetchOk, c as resolveBrowserExecutableForPlatform, f as normalizeCdpWsUrl, g as assertBrowserNavigationResultAllowed, h as assertBrowserNavigationAllowed, i as launchIdleHandsChrome, j as resolveWritablePathWithinRoot, k as resolveExistingPathsWithinRoot, l as captureScreenshot, m as InvalidBrowserNavigationUrlError, n as isChromeCdpReady, o as stopIdleHandsChrome, p as snapshotAria, r as isChromeReachable, u as createTargetViaCdp, v as appendCdpPath, w as stopChromeExtensionRelayServer, y as fetchJson, z as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME } from "./chrome-BcJB6PcM.js";
13
+ import { B as DEFAULT_BROWSER_EVALUATE_ENABLED, C as ensureChromeExtensionRelayServer, D as DEFAULT_TRACE_DIR, E as DEFAULT_DOWNLOAD_DIR, H as DEFAULT_IDLEHANDS_BROWSER_ENABLED, I as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, L as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, N as normalizeBrowserFormField, O as DEFAULT_UPLOAD_DIR, P as isLoopbackHost, R as DEFAULT_AI_SNAPSHOT_MAX_CHARS, U as DEFAULT_IDLEHANDS_BROWSER_PROFILE_NAME, V as DEFAULT_IDLEHANDS_BROWSER_COLOR, _ as withBrowserNavigationPolicy, a as resolveIdleHandsUserDataDir, b as fetchOk, c as resolveBrowserExecutableForPlatform, f as normalizeCdpWsUrl, g as assertBrowserNavigationResultAllowed, h as assertBrowserNavigationAllowed, i as launchIdleHandsChrome, j as resolveWritablePathWithinRoot, k as resolveExistingPathsWithinRoot, l as captureScreenshot, m as InvalidBrowserNavigationUrlError, n as isChromeCdpReady, o as stopIdleHandsChrome, p as snapshotAria, r as isChromeReachable, u as createTargetViaCdp, v as appendCdpPath, w as stopChromeExtensionRelayServer, y as fetchJson, z as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME } from "./chrome-_2tzVjVl.js";
14
14
  import { t as SsrFBlockedError } from "./ssrf-CZeHDwVZ.js";
15
15
  import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-CnAPWfca.js";
16
16
  import { t as PATH_ALIAS_POLICIES } from "./path-alias-guards-Cu1nXNMM.js";
@@ -1182,7 +1182,7 @@ function isModuleNotFoundError(err) {
1182
1182
  }
1183
1183
  async function loadPwAiModule(mode) {
1184
1184
  try {
1185
- return await import("./pw-ai-CfYaR1K2.js");
1185
+ return await import("./pw-ai-CowTfhOG.js");
1186
1186
  } catch (err) {
1187
1187
  if (mode === "soft") return null;
1188
1188
  if (isModuleNotFoundError(err)) return null;
@@ -3717,11 +3717,11 @@ function createProfileContext(opts, profile) {
3717
3717
  const userDataDir = resolveIdleHandsUserDataDir(profile.name);
3718
3718
  const profileState = getProfileState();
3719
3719
  if (await isHttpReachable(300) && !profileState.running) try {
3720
- await (await import("./pw-ai-CfYaR1K2.js")).closePlaywrightBrowserConnection();
3720
+ await (await import("./pw-ai-CowTfhOG.js")).closePlaywrightBrowserConnection();
3721
3721
  } catch {}
3722
3722
  if (profileState.running) await stopRunningBrowser();
3723
3723
  try {
3724
- await (await import("./pw-ai-CfYaR1K2.js")).closePlaywrightBrowserConnection();
3724
+ await (await import("./pw-ai-CowTfhOG.js")).closePlaywrightBrowserConnection();
3725
3725
  } catch {}
3726
3726
  if (!syncFs.existsSync(userDataDir)) return {
3727
3727
  moved: false,
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { ht as loadIdleHandsPlugins } from "./reply-xob39FTF.js";
2
+ import { ht as loadIdleHandsPlugins } from "./reply-Cmj0wbnT.js";
3
3
  import { d as resolveDefaultAgentId, u as resolveAgentWorkspaceDir } from "./agent-scope-RA0zXRpu.js";
4
4
  import { b as getActivePluginRegistry, t as createSubsystemLogger } from "./subsystem-CGZX2PBV.js";
5
5
  import { It as loadConfig } from "./model-selection-0dGxYGp8.js";
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { E as getActivePluginRegistry, s as createSubsystemLogger } from "./entry.js";
3
3
  import { j as loadConfig } from "./auth-profiles-Baj5ImDJ.js";
4
4
  import { d as resolveDefaultAgentId, u as resolveAgentWorkspaceDir } from "./agent-scope-mLXQGQde.js";
5
- import { _ as loadIdleHandsPlugins } from "./subagent-registry-C1Xg6P75.js";
5
+ import { _ as loadIdleHandsPlugins } from "./subagent-registry-DHwrN9Oj.js";
6
6
 
7
7
  //#region src/cli/plugin-registry.ts
8
8
  var plugin_registry_exports = /* @__PURE__ */ __exportAll({ ensurePluginRegistryLoaded: () => ensurePluginRegistryLoaded });
@@ -1,6 +1,6 @@
1
1
  import { s as normalizeAgentId } from "./session-key-47BV2tLd.js";
2
2
  import "./accounts-BLYMokxV.js";
3
- import { F as callGateway, I as randomIdempotencyKey, d as agentCommand, f as resolveSessionKeyForRequest, p as withProgress } from "./reply-BTeuxXqB.js";
3
+ import { F as callGateway, I as randomIdempotencyKey, d as agentCommand, f as resolveSessionKeyForRequest, p as withProgress } from "./reply-B-q4HnAx.js";
4
4
  import "./paths-CtGV5i8O.js";
5
5
  import "./github-copilot-token-CY2euW0d.js";
6
6
  import { r as loadConfig } from "./config-CEgzwk0J.js";
@@ -63,7 +63,7 @@ import "./send-B26cNPqY.js";
63
63
  import "./proxy-C4ewPdlN.js";
64
64
  import "./resolve-route-BZABUE4J.js";
65
65
  import "./replies-ZovJp-3F.js";
66
- import "./deps-UrtR_PKP.js";
66
+ import "./deps-mdAvVF88.js";
67
67
  import "./outbound-attachment-BisU5Vji.js";
68
68
 
69
69
  //#region src/commands/agent-via-gateway.ts
@@ -216,18 +216,19 @@ async function loadAntonConfig() {
216
216
  }
217
217
  }
218
218
  async function runAgentTask(args) {
219
- const { agentCliCommand } = await import("./agent-via-gateway-CKHwp3jE.js");
219
+ const { agentCliCommand } = await import("./agent-via-gateway-C2tn6sON.js");
220
220
  const extraSystemPrompt = args.workspaceDir ? `Your working directory is: ${args.workspaceDir}\nAll file paths are relative to this directory. Use this as your cwd for all operations.` : void 0;
221
- await agentCliCommand({
221
+ const result = await agentCliCommand({
222
222
  message: args.message,
223
223
  agent: args.agent,
224
224
  to: args.to,
225
225
  sessionId: args.sessionId,
226
226
  timeout: args.timeout,
227
- json: false,
227
+ json: true,
228
228
  deliver: false,
229
229
  extraSystemPrompt
230
230
  }, args.runtime, args.deps);
231
+ return { text: (result && typeof result === "object" && "result" in result ? result.result?.payloads ?? [] : []).map((p) => typeof p?.text === "string" ? p.text.trim() : "").filter(Boolean).join("\n\n").trim() };
231
232
  }
232
233
  function makePlanFilePath(planDir, taskIndex) {
233
234
  return path.join(planDir, `task-${taskIndex}-${Date.now()}.md`);
@@ -243,6 +244,63 @@ async function isPlanFileValid(filePath) {
243
244
  return false;
244
245
  }
245
246
  }
247
+ function extractJsonObject(text) {
248
+ const trimmed = text.trim();
249
+ if (!trimmed) return null;
250
+ const tryParse = (candidate) => {
251
+ try {
252
+ const parsed = JSON.parse(candidate);
253
+ if (!parsed || typeof parsed !== "object") return null;
254
+ return parsed;
255
+ } catch {
256
+ return null;
257
+ }
258
+ };
259
+ const direct = tryParse(trimmed);
260
+ if (direct) return direct;
261
+ const fencedMatch = trimmed.match(/```(?:json)?\s*([\s\S]*?)```/i);
262
+ if (fencedMatch?.[1]) {
263
+ const fenced = tryParse(fencedMatch[1].trim());
264
+ if (fenced) return fenced;
265
+ }
266
+ const first = trimmed.indexOf("{");
267
+ const last = trimmed.lastIndexOf("}");
268
+ if (first >= 0 && last > first) {
269
+ const sliced = tryParse(trimmed.slice(first, last + 1));
270
+ if (sliced) return sliced;
271
+ }
272
+ return null;
273
+ }
274
+ function extractPlanMarkdownFromText(text) {
275
+ const candidate = text.match(/```(?:markdown|md)?\s*([\s\S]*?)```/i)?.[1]?.trim() ?? text.trim();
276
+ if (candidate.length < 60) return;
277
+ return candidate;
278
+ }
279
+ function normalizeDiscoveryFilename(filename, expectedPlanFile) {
280
+ const trimmed = filename?.trim();
281
+ if (!trimmed) return expectedPlanFile;
282
+ return path.resolve(trimmed);
283
+ }
284
+ function buildDiscoveryRepairPrompt(task, taskFile, planFilePath) {
285
+ return `RETRY: your previous preflight response did not produce a valid plan file.
286
+
287
+ You MUST complete these steps exactly:
288
+ 1) Write the implementation plan to: ${planFilePath}
289
+ 2) Verify the file exists and is non-empty
290
+ 3) Return ONLY strict JSON: {"status":"incomplete","filename":"${planFilePath}"}
291
+
292
+ If task is already complete, return ONLY: {"status":"complete","filename":""}
293
+
294
+ Do not include THOUGHT, markdown fences, or extra commentary.
295
+ Task file: ${taskFile}
296
+ Task: ${task}`;
297
+ }
298
+ async function tryPersistPlanFallback(params) {
299
+ const planText = (((typeof params.parsed?.planMarkdown === "string" ? params.parsed.planMarkdown : void 0) ?? (typeof params.parsed?.plan === "string" ? params.parsed.plan : void 0))?.trim() || extractPlanMarkdownFromText(params.rawText) || "").trim();
300
+ if (planText.length < 60) return false;
301
+ await fs.writeFile(params.planFile, `${planText}\n`, "utf8");
302
+ return await isPlanFileValid(params.planFile);
303
+ }
246
304
  async function runDiscoveryPhase(args) {
247
305
  const planFile = makePlanFilePath(args.planDir, args.taskNum);
248
306
  await ensurePlanDir(args.planDir);
@@ -262,7 +320,7 @@ async function runDiscoveryPhase(args) {
262
320
  task: `Discovery (attempt ${attempt + 1})`,
263
321
  sessionId
264
322
  });
265
- await runAgentTask({
323
+ const firstPass = await runAgentTask({
266
324
  message: buildDiscoveryPrompt(args.task.text, args.taskFile, planFile),
267
325
  sessionId,
268
326
  timeout: args.timeout,
@@ -272,23 +330,91 @@ async function runDiscoveryPhase(args) {
272
330
  deps: args.deps,
273
331
  workspaceDir: args.workspaceDir
274
332
  });
275
- if (await isPlanFileValid(planFile)) {
333
+ const firstParsed = extractJsonObject(firstPass.text);
334
+ if ((firstParsed?.status ?? "").toLowerCase() === "complete") return { status: "complete" };
335
+ const declaredPlanFile = normalizeDiscoveryFilename(firstParsed?.filename, planFile);
336
+ if (await isPlanFileValid(declaredPlanFile)) {
276
337
  await args.notify({
277
338
  phase: "discovery_complete",
278
339
  index: args.taskNum,
279
340
  total: args.total,
280
341
  task: args.task.text,
281
- planFile
342
+ planFile: declaredPlanFile
282
343
  });
283
344
  return {
284
345
  status: "plan_ready",
285
- planFile
346
+ planFile: declaredPlanFile
347
+ };
348
+ }
349
+ if ((firstParsed?.status ?? "").toLowerCase() === "incomplete" && await tryPersistPlanFallback({
350
+ planFile: declaredPlanFile,
351
+ parsed: firstParsed,
352
+ rawText: firstPass.text
353
+ })) {
354
+ await args.notify({
355
+ phase: "discovery_complete",
356
+ index: args.taskNum,
357
+ total: args.total,
358
+ task: args.task.text,
359
+ planFile: declaredPlanFile
360
+ });
361
+ return {
362
+ status: "plan_ready",
363
+ planFile: declaredPlanFile
364
+ };
365
+ }
366
+ const repairSessionId = `anton-discovery-repair-${Date.now()}-${args.taskNum}-${attempt}`;
367
+ await args.notify({
368
+ phase: "task_agent_spawned",
369
+ index: args.taskNum,
370
+ total: args.total,
371
+ task: `Discovery repair (attempt ${attempt + 1})`,
372
+ sessionId: repairSessionId
373
+ });
374
+ const repairPass = await runAgentTask({
375
+ message: buildDiscoveryRepairPrompt(args.task.text, args.taskFile, declaredPlanFile),
376
+ sessionId: repairSessionId,
377
+ timeout: args.timeout,
378
+ agent: args.agent,
379
+ to: args.to,
380
+ runtime: args.runtime,
381
+ deps: args.deps,
382
+ workspaceDir: args.workspaceDir
383
+ });
384
+ const repairParsed = extractJsonObject(repairPass.text);
385
+ if ((repairParsed?.status ?? "").toLowerCase() === "complete") return { status: "complete" };
386
+ const repairPlanFile = normalizeDiscoveryFilename(repairParsed?.filename, declaredPlanFile);
387
+ if (await isPlanFileValid(repairPlanFile) || await tryPersistPlanFallback({
388
+ planFile: repairPlanFile,
389
+ parsed: repairParsed,
390
+ rawText: repairPass.text
391
+ })) {
392
+ await args.notify({
393
+ phase: "discovery_complete",
394
+ index: args.taskNum,
395
+ total: args.total,
396
+ task: args.task.text,
397
+ planFile: repairPlanFile
398
+ });
399
+ return {
400
+ status: "plan_ready",
401
+ planFile: repairPlanFile
402
+ };
403
+ }
404
+ if (attempt === args.maxRetries) {
405
+ const reason = "Discovery did not produce a valid plan file after primary + repair passes";
406
+ await args.notify({
407
+ phase: "discovery_failed",
408
+ index: args.taskNum,
409
+ total: args.total,
410
+ task: args.task.text,
411
+ error: reason
412
+ });
413
+ return {
414
+ status: "failed",
415
+ error: reason
286
416
  };
287
417
  }
288
- if (attempt === args.maxRetries) return {
289
- status: "failed",
290
- error: "Discovery did not produce a valid plan file"
291
- };
292
418
  } catch (err) {
293
419
  const errorMsg = err instanceof Error ? err.message : String(err);
294
420
  if (attempt === args.maxRetries) {
@@ -1,6 +1,6 @@
1
1
  import { a as buildGroupHistoryKey, f as DEFAULT_ACCOUNT_ID, n as DEFAULT_MAIN_KEY, r as buildAgentMainSessionKey, s as normalizeAgentId } from "./session-key-47BV2tLd.js";
2
2
  import { i as resolveWhatsAppAccount } from "./accounts-BLYMokxV.js";
3
- import { A as formatDurationPrecise, Ct as formatInboundEnvelope, Gt as resolveOpenProviderRuntimeGroupPolicy, Lt as resolveDmGroupAccessWithCommandGate, Mt as buildPairingReply, Pt as readStoreAllowFromForDmPolicy, Rt as resolveDmGroupAccessWithLists, Tt as resolveEnvelopeFormatOptions, Wt as resolveDefaultGroupPolicy, X as shouldAckReactionForWhatsApp, Z as resolveMentionGating, _ as resolveInboundDebounceMs, ct as recordPendingHistoryEntryIfEnabled, g as createInboundDebouncer, i as parseActivationCommand, j as enqueueSystemEvent, l as computeBackoff, lt as buildMentionRegexes, m as dispatchReplyWithBufferedBlockDispatcher, nt as buildHistoryContextFromEntries, qt as warnMissingProviderGroupPolicyFallbackOnce, r as normalizeGroupActivation, t as getReplyFromConfig, tt as DEFAULT_GROUP_HISTORY_LIMIT, u as sleepWithAbort, ut as normalizeMentionText, v as hasControlCommand, y as shouldComputeCommandAuthorized, yt as createDedupeCache } from "./reply-BTeuxXqB.js";
3
+ import { A as formatDurationPrecise, Ct as formatInboundEnvelope, Gt as resolveOpenProviderRuntimeGroupPolicy, Lt as resolveDmGroupAccessWithCommandGate, Mt as buildPairingReply, Pt as readStoreAllowFromForDmPolicy, Rt as resolveDmGroupAccessWithLists, Tt as resolveEnvelopeFormatOptions, Wt as resolveDefaultGroupPolicy, X as shouldAckReactionForWhatsApp, Z as resolveMentionGating, _ as resolveInboundDebounceMs, ct as recordPendingHistoryEntryIfEnabled, g as createInboundDebouncer, i as parseActivationCommand, j as enqueueSystemEvent, l as computeBackoff, lt as buildMentionRegexes, m as dispatchReplyWithBufferedBlockDispatcher, nt as buildHistoryContextFromEntries, qt as warnMissingProviderGroupPolicyFallbackOnce, r as normalizeGroupActivation, t as getReplyFromConfig, tt as DEFAULT_GROUP_HISTORY_LIMIT, u as sleepWithAbort, ut as normalizeMentionText, v as hasControlCommand, y as shouldComputeCommandAuthorized, yt as createDedupeCache } from "./reply-B-q4HnAx.js";
4
4
  import { r as loadConfig } from "./config-CEgzwk0J.js";
5
5
  import { A as shouldLogVerbose, D as logVerbose, I as getChildLogger, d as normalizeE164, l as isSelfChatMode, m as resolveJidToE164, n as clamp, u as jidToE164, x as toWhatsappJid, y as sleep } from "./utils-Dyj2wV4e.js";
6
6
  import { l as normalizeChatChannelId, t as createSubsystemLogger } from "./subsystem-DWPzKeZ0.js";
@@ -878,7 +878,7 @@ async function monitorWebInbox(options) {
878
878
  };
879
879
  const stopText = (inboundMessage.body ?? "").trim();
880
880
  if (stopText) {
881
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-CfIXvAZq.js");
881
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-DYCGWJzN.js");
882
882
  if (isAbortRequestText(stopText)) {
883
883
  const { loadConfig: loadCfg } = await import("./config-CEgzwk0J.js").then((n) => n.t);
884
884
  const { resolveAgentRoute } = await import("./resolve-route-BZABUE4J.js").then((n) => n.r);
@@ -18,7 +18,7 @@ var deps_exports = /* @__PURE__ */ __exportAll({ createDefaultDeps: () => create
18
18
  function createDefaultDeps() {
19
19
  return {
20
20
  sendMessageWhatsApp: async (...args) => {
21
- const { sendMessageWhatsApp } = await import("./web-BkoZvzGE.js");
21
+ const { sendMessageWhatsApp } = await import("./web-P5eS5E4t.js");
22
22
  return await sendMessageWhatsApp(...args);
23
23
  },
24
24
  sendMessageTelegram: async (...args) => {
@@ -1,5 +1,5 @@
1
1
  import "./accounts-BLYMokxV.js";
2
- import { S as stopSubagentsForRequester, b as formatAbortReplyText, n as abortEmbeddedPiRun, w as clearSessionQueues, x as isAbortRequestText } from "./reply-BTeuxXqB.js";
2
+ import { S as stopSubagentsForRequester, b as formatAbortReplyText, n as abortEmbeddedPiRun, w as clearSessionQueues, x as isAbortRequestText } from "./reply-B-q4HnAx.js";
3
3
  import "./paths-CtGV5i8O.js";
4
4
  import "./github-copilot-token-CY2euW0d.js";
5
5
  import "./config-CEgzwk0J.js";
@@ -61,7 +61,7 @@ import "./send-B26cNPqY.js";
61
61
  import "./proxy-C4ewPdlN.js";
62
62
  import "./resolve-route-BZABUE4J.js";
63
63
  import "./replies-ZovJp-3F.js";
64
- import "./deps-UrtR_PKP.js";
64
+ import "./deps-mdAvVF88.js";
65
65
  import "./outbound-attachment-BisU5Vji.js";
66
66
 
67
67
  //#region src/auto-reply/reply/emergency-stop.ts
@@ -1,6 +1,6 @@
1
1
  import { f as DEFAULT_ACCOUNT_ID, p as normalizeAccountId, u as resolveThreadSessionKeys } from "./session-key-47BV2tLd.js";
2
2
  import { a as resolveWhatsAppAuthDir, i as resolveWhatsAppAccount, n as listWhatsAppAccountIds, o as createAccountListHelpers, r as resolveDefaultWhatsAppAccountId } from "./accounts-BLYMokxV.js";
3
- import { $ as mergeAllowlist, $t as unregisterAcpRuntimeBackend, At as extractToolSend, B as formatDocsLink, Bt as resolveControlCommandGate, D as stripMarkdown, Dt as formatZonedTimestamp, E as processLineMessage, Et as formatUtcTimestamp, Ft as resolveDmAllowState, G as logInboundDrop, Gt as resolveOpenProviderRuntimeGroupPolicy, H as stringEnum, Ht as resetMissingProviderGroupPolicyFallbackWarningsForTesting, It as resolveDmGroupAccessDecision, J as removeAckReactionAfterReply, Jt as isDangerousNameMatchingEnabled, K as logTypingFailure, Kt as resolveRuntimeGroupPolicy, L as resolveDiscordUserAllowlist, Lt as resolveDmGroupAccessWithCommandGate, M as resolveSlackUserAllowlist, N as resolveSlackChannelAllowlist, Nt as DM_GROUP_ACCESS_REASON, O as createReceiptCard, Ot as resolveTimezone, P as detectBinary, Pt as readStoreAllowFromForDmPolicy, Q as resolveMentionGatingWithBypass, Qt as requireAcpRuntimeBackend, R as resolveDiscordChannelAllowlist, Rt as resolveDmGroupAccessWithLists, St as rejectDevicePairing, T as hasMarkdownToConvert, U as recordInboundSession, Ut as resolveAllowlistProviderRuntimeGroupPolicy, V as optionalStringEnum, Vt as GROUP_POLICY_BLOCKED_LABEL, W as logAckFailure, Wt as resolveDefaultGroupPolicy, X as shouldAckReactionForWhatsApp, Xt as getAcpRuntimeBackend, Y as shouldAckReaction, Yt as registerPluginHttpRoute, Z as resolveMentionGating, Zt as registerAcpRuntimeBackend, _t as readRequestBodyWithLimit, a as listLineAccountIds, an as formatAllowlistMatchMeta, at as clearHistoryEntriesIfEnabled, bt as approveDevicePairing, c as resolveLineAccount, cn as BLUEBUBBLES_ACTION_NAMES, ct as recordPendingHistoryEntryIfEnabled, dt as DEFAULT_WEBHOOK_BODY_TIMEOUT_MS, en as ACP_ERROR_CODES, et as summarizeMapping, ft as DEFAULT_WEBHOOK_MAX_BODY_BYTES, gt as readJsonBodyWithLimit, ht as isRequestBodyLimitError, in as unbindThreadBindingsBySessionKey, it as clearHistoryEntries, jt as issuePairingChallenge, k as attachFooterText, kt as buildMediaPayload, ln as BLUEBUBBLES_GROUP_ACTIONS, mt as installRequestBodyLimitGuard, nn as autoBindSpawnedDiscordSubagent, o as normalizeAccountId$1, on as resolveAllowlistMatchSimple, ot as evictOldHistoryKeys, pt as RequestBodyLimitError, q as createTypingCallbacks, qt as warnMissingProviderGroupPolicyFallbackOnce, rn as listThreadBindingsBySessionKey, rt as buildPendingHistoryContextFromMap, s as resolveDefaultLineAccountId, sn as BLUEBUBBLES_ACTIONS, st as recordPendingHistoryEntry, tn as AcpRuntimeError, tt as DEFAULT_GROUP_HISTORY_LIMIT, un as CHANNEL_MESSAGE_ACTION_NAMES, vt as requestBodyErrorToText, wt as formatInboundFromLabel, xt as listDevicePairing, yt as createDedupeCache, z as collectDiscordAuditChannelIds, zt as resolveEffectiveAllowFromLists } from "./reply-BTeuxXqB.js";
3
+ import { $ as mergeAllowlist, $t as unregisterAcpRuntimeBackend, At as extractToolSend, B as formatDocsLink, Bt as resolveControlCommandGate, D as stripMarkdown, Dt as formatZonedTimestamp, E as processLineMessage, Et as formatUtcTimestamp, Ft as resolveDmAllowState, G as logInboundDrop, Gt as resolveOpenProviderRuntimeGroupPolicy, H as stringEnum, Ht as resetMissingProviderGroupPolicyFallbackWarningsForTesting, It as resolveDmGroupAccessDecision, J as removeAckReactionAfterReply, Jt as isDangerousNameMatchingEnabled, K as logTypingFailure, Kt as resolveRuntimeGroupPolicy, L as resolveDiscordUserAllowlist, Lt as resolveDmGroupAccessWithCommandGate, M as resolveSlackUserAllowlist, N as resolveSlackChannelAllowlist, Nt as DM_GROUP_ACCESS_REASON, O as createReceiptCard, Ot as resolveTimezone, P as detectBinary, Pt as readStoreAllowFromForDmPolicy, Q as resolveMentionGatingWithBypass, Qt as requireAcpRuntimeBackend, R as resolveDiscordChannelAllowlist, Rt as resolveDmGroupAccessWithLists, St as rejectDevicePairing, T as hasMarkdownToConvert, U as recordInboundSession, Ut as resolveAllowlistProviderRuntimeGroupPolicy, V as optionalStringEnum, Vt as GROUP_POLICY_BLOCKED_LABEL, W as logAckFailure, Wt as resolveDefaultGroupPolicy, X as shouldAckReactionForWhatsApp, Xt as getAcpRuntimeBackend, Y as shouldAckReaction, Yt as registerPluginHttpRoute, Z as resolveMentionGating, Zt as registerAcpRuntimeBackend, _t as readRequestBodyWithLimit, a as listLineAccountIds, an as formatAllowlistMatchMeta, at as clearHistoryEntriesIfEnabled, bt as approveDevicePairing, c as resolveLineAccount, cn as BLUEBUBBLES_ACTION_NAMES, ct as recordPendingHistoryEntryIfEnabled, dt as DEFAULT_WEBHOOK_BODY_TIMEOUT_MS, en as ACP_ERROR_CODES, et as summarizeMapping, ft as DEFAULT_WEBHOOK_MAX_BODY_BYTES, gt as readJsonBodyWithLimit, ht as isRequestBodyLimitError, in as unbindThreadBindingsBySessionKey, it as clearHistoryEntries, jt as issuePairingChallenge, k as attachFooterText, kt as buildMediaPayload, ln as BLUEBUBBLES_GROUP_ACTIONS, mt as installRequestBodyLimitGuard, nn as autoBindSpawnedDiscordSubagent, o as normalizeAccountId$1, on as resolveAllowlistMatchSimple, ot as evictOldHistoryKeys, pt as RequestBodyLimitError, q as createTypingCallbacks, qt as warnMissingProviderGroupPolicyFallbackOnce, rn as listThreadBindingsBySessionKey, rt as buildPendingHistoryContextFromMap, s as resolveDefaultLineAccountId, sn as BLUEBUBBLES_ACTIONS, st as recordPendingHistoryEntry, tn as AcpRuntimeError, tt as DEFAULT_GROUP_HISTORY_LIMIT, un as CHANNEL_MESSAGE_ACTION_NAMES, vt as requestBodyErrorToText, wt as formatInboundFromLabel, xt as listDevicePairing, yt as createDedupeCache, z as collectDiscordAuditChannelIds, zt as resolveEffectiveAllowFromLists } from "./reply-B-q4HnAx.js";
4
4
  import "./paths-CtGV5i8O.js";
5
5
  import "./github-copilot-token-CY2euW0d.js";
6
6
  import { A as GroupPolicySchema, An as acquireFileLock, D as BlockStreamingCoalesceSchema, E as ToolPolicySchema, F as TtsConfigSchema, I as TtsModeSchema, L as TtsProviderSchema, M as MarkdownTableModeSchema, N as ReplyRuntimeConfigSchemaShape, O as DmConfigSchema, P as TtsAutoSchema, R as normalizeAllowFrom, d as GoogleChatConfigSchema, f as IMessageConfigSchema, g as TelegramConfigSchema, h as SlackConfigSchema, j as MarkdownConfigSchema, jn as withFileLock, k as DmPolicySchema, l as WhatsAppConfigSchema, m as SignalConfigSchema, p as MSTeamsConfigSchema, u as DiscordConfigSchema, z as requireOpenAllowFrom } from "./config-CEgzwk0J.js";
@@ -52,7 +52,7 @@ import { h as onDiagnosticEvent, m as isDiagnosticsEnabled, p as emitDiagnosticE
52
52
  import { n as extractOriginalFilename } from "./store-CCCXwngh.js";
53
53
  import "./pi-embedded-helpers-B68z4sHq.js";
54
54
  import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-CnUtsDch.js";
55
- import { r as resolveWhatsAppHeartbeatRecipients } from "./channel-web-BpsnbGKO.js";
55
+ import { r as resolveWhatsAppHeartbeatRecipients } from "./channel-web-DwtLzVOR.js";
56
56
  import "./thinking-g4Rrlwu4.js";
57
57
  import "./image-C_1tftC8.js";
58
58
  import "./pi-model-discovery-Dt6899be.js";
@@ -65,7 +65,7 @@ import "./send-B26cNPqY.js";
65
65
  import "./proxy-C4ewPdlN.js";
66
66
  import "./resolve-route-BZABUE4J.js";
67
67
  import "./replies-ZovJp-3F.js";
68
- import "./deps-UrtR_PKP.js";
68
+ import "./deps-mdAvVF88.js";
69
69
  import "./outbound-attachment-BisU5Vji.js";
70
70
  import "./outbound-Dx_q6JAI.js";
71
71
  import "./session-DdJj6_DW.js";