@visorcraft/idlehands 4.0.6 → 4.0.8

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 (131) hide show
  1. package/dist/{agent-via-gateway-C1oU9h3s.js → agent-via-gateway-BNqWa2KY.js} +1 -1
  2. package/dist/{agent-via-gateway-CZ9i0g6_.js → agent-via-gateway-DAWRXgBZ.js} +2 -2
  3. package/dist/{agent-via-gateway-DbJ4VMCl.js → agent-via-gateway-DnukWgYg.js} +1 -1
  4. package/dist/{agent-via-gateway-iOxURXfD.js → agent-via-gateway-ot70omgC.js} +2 -2
  5. package/dist/{agents-A2yDgnqQ.js → agents-etUqQ3vM.js} +5 -5
  6. package/dist/{agents.config-Cj_x7yWQ.js → agents.config-DGaSmPdW.js} +1 -1
  7. package/dist/{agents.config-Dha06jbo.js → agents.config-FFOmEBpp.js} +1 -1
  8. package/dist/{anton-KSisnjZZ.js → anton-B7cGl-93.js} +1 -1
  9. package/dist/{anton-BzBaDHs_.js → anton-BV_xSUQi.js} +1 -1
  10. package/dist/{anton-Cec4qfxV.js → anton-CZliSAOv.js} +1 -1
  11. package/dist/{anton-BAc6lLhA.js → anton-CdYcHDXy.js} +1 -1
  12. package/dist/{auth-choice-rlwqipdV.js → auth-choice-CdEVNS6t.js} +2 -2
  13. package/dist/{auth-choice-c31g3E7e.js → auth-choice-qQO5MWz8.js} +2 -2
  14. package/dist/{banner-B7GWUHuF.js → banner-DKPFtm9j.js} +1 -1
  15. package/dist/build-info.json +3 -3
  16. package/dist/bundled/boot-md/handler.js +2 -2
  17. package/dist/bundled/session-memory/handler.js +2 -2
  18. package/dist/{channel-options-DXhAdMSp.js → channel-options-BNcsrd0d.js} +1 -1
  19. package/dist/{channel-options-BlWLEOqB.js → channel-options-CSurZCfX.js} +1 -1
  20. package/dist/{channel-web-zsCiOUKL.js → channel-web-COYnY8sZ.js} +2 -2
  21. package/dist/{channel-web-BHb38KRe.js → channel-web-DfBOK5if.js} +2 -2
  22. package/dist/{channels-cli-CUX6YOuf.js → channels-cli-BTIg3DJP.js} +8 -8
  23. package/dist/{channels-cli-DbGUpBdY.js → channels-cli-GZ16c99F.js} +8 -8
  24. package/dist/cli/daemon-cli.js +1 -1
  25. package/dist/{cli-ldDnZPxZ.js → cli-CBXoKbJn.js} +3 -3
  26. package/dist/{cli-CE_9epWz.js → cli-CnjJnIx0.js} +3 -3
  27. package/dist/{command-registry-kWr6njq5.js → command-registry-D3iSv7Of.js} +10 -10
  28. package/dist/{completion-cli-BbVWdP38.js → completion-cli-Dkh-Zrqo.js} +2 -2
  29. package/dist/{completion-cli-DynWWkBp.js → completion-cli-Zaylny55.js} +1 -1
  30. package/dist/{config-cli-CO4X1bLk.js → config-cli-B8R8eDUm.js} +1 -1
  31. package/dist/{config-cli-q_k9h_dy.js → config-cli-DOf-CodQ.js} +1 -1
  32. package/dist/{configure-uH1c6xFf.js → configure-3o91R4Qd.js} +6 -6
  33. package/dist/{configure-DX9PRpEj.js → configure-Wh7ZMjiP.js} +6 -6
  34. package/dist/{daemon-cli-C6nJQWdR.js → daemon-cli-B1Ti51bt.js} +1 -1
  35. package/dist/{daemon-cli-CuIfti01.js → daemon-cli-yC6gq-yv.js} +1 -1
  36. package/dist/{deps-984qcpt2.js → deps-0GRTVtgy.js} +1 -1
  37. package/dist/{deps-DGHlGKcG.js → deps-Bdrf7UsT.js} +1 -1
  38. package/dist/{deps-CcZ0VtSz.js → deps-Ci76e_07.js} +1 -1
  39. package/dist/{deps-D-R85-_U.js → deps-DB6dI42Y.js} +1 -1
  40. package/dist/{doctor-completion-B6siF0IK.js → doctor-completion-BeqR17ft.js} +1 -1
  41. package/dist/{doctor-completion-snvvOxaf.js → doctor-completion-CeD_GwXj.js} +1 -1
  42. package/dist/{emergency-stop--xlBYCby.js → emergency-stop-B1ycCthl.js} +2 -2
  43. package/dist/{emergency-stop-EXYMl2Ho.js → emergency-stop-BpudAT0i.js} +2 -2
  44. package/dist/{emergency-stop-BZLDQaYe.js → emergency-stop-D8XCYE8L.js} +3 -3
  45. package/dist/{emergency-stop-BC_KUVeL.js → emergency-stop-fApFDnLR.js} +3 -3
  46. package/dist/entry.js +1 -1
  47. package/dist/extensionAPI.js +2 -2
  48. package/dist/{gateway-cli-CfbN2Xbe.js → gateway-cli-D3b05F0y.js} +11 -11
  49. package/dist/{gateway-cli-DM0ooWQQ.js → gateway-cli-D9wmLKfn.js} +11 -11
  50. package/dist/{health-OCL-usM5.js → health-D6PJPflH.js} +1 -1
  51. package/dist/{health-BDvy-dA9.js → health-cUQV1hzf.js} +1 -1
  52. package/dist/{hooks-cli-CUIYCmOS.js → hooks-cli-Cg5joAHH.js} +4 -4
  53. package/dist/{hooks-cli-5KuPo6bD.js → hooks-cli-Cs51IGnr.js} +4 -4
  54. package/dist/index.js +8 -8
  55. package/dist/llm-slug-generator.js +2 -2
  56. package/dist/{models-cli-C875vRWq.js → models-cli-D6CVD4Jl.js} +4 -4
  57. package/dist/{models-cli-CibiImfr.js → models-cli-Va0ILYmK.js} +5 -5
  58. package/dist/{models-inlOYmCX.js → models-tqBGSD-X.js} +3 -3
  59. package/dist/{npm-resolution-tDRQud66.js → npm-resolution-CCdELgCy.js} +1 -1
  60. package/dist/{npm-resolution-BXHiLMfy.js → npm-resolution-DgW-oSJa.js} +1 -1
  61. package/dist/{onboard-BCwy-W51.js → onboard-Bfd4q7HR.js} +3 -3
  62. package/dist/{onboard-ZUYeDNCj.js → onboard-Br7oW1Sf.js} +3 -3
  63. package/dist/{onboard-channels-CeCDoXNW.js → onboard-channels-BpCQ5nQX.js} +2 -2
  64. package/dist/{onboard-channels-D9UK8Czg.js → onboard-channels-wDbxIOXH.js} +2 -2
  65. package/dist/{onboard-helpers-BSy20uKb.js → onboard-helpers-BQmbMJxJ.js} +8 -9
  66. package/dist/{onboard-helpers-Cdddkdhv.js → onboard-helpers-Dp6wXNs7.js} +8 -9
  67. package/dist/{onboard-remote-0wlFUWfX.js → onboard-remote-1ZZd5lcX.js} +1 -1
  68. package/dist/{onboard-remote-Cj7cz8ns.js → onboard-remote-CIjhaP2W.js} +1 -1
  69. package/dist/{onboard-skills-DBPNAx3R.js → onboard-skills-BD_AS1Iy.js} +1 -1
  70. package/dist/{onboard-skills-B8402Ifd.js → onboard-skills-BsaUIuq6.js} +1 -1
  71. package/dist/{onboarding-BEh5hLef.js → onboarding-CegT14jj.js} +7 -7
  72. package/dist/{onboarding-BEgQKvqk.js → onboarding-rD-jdAK3.js} +7 -7
  73. package/dist/{onboarding.finalize-DwqJoeKV.js → onboarding.finalize-C50Cd_QG.js} +7 -7
  74. package/dist/{onboarding.finalize-BlP8lhLC.js → onboarding.finalize-CHq5hQxh.js} +8 -8
  75. package/dist/{onboarding.gateway-config-DdbTCDFQ.js → onboarding.gateway-config-CEQMyj8l.js} +1 -1
  76. package/dist/{onboarding.gateway-config-BD4jhrPV.js → onboarding.gateway-config-Czn7jKsq.js} +1 -1
  77. package/dist/{pi-embedded-CMLNiqQq.js → pi-embedded-2EqYdroP.js} +81 -27
  78. package/dist/{pi-embedded-CxYEstRZ.js → pi-embedded-znVFwmix.js} +81 -27
  79. package/dist/{plugin-registry-DPKJHNR_.js → plugin-registry-CYXCwXDq.js} +1 -1
  80. package/dist/{plugin-registry-DH5gOl_u.js → plugin-registry-DAtKgBy3.js} +1 -1
  81. package/dist/plugin-sdk/{agent-via-gateway-B4ZhKrSY.js → agent-via-gateway-BeEBACUq.js} +2 -2
  82. package/dist/plugin-sdk/{anton-i1YeE2Ju.js → anton-DXocufH_.js} +1 -1
  83. package/dist/plugin-sdk/{channel-web-MWHDHhG_.js → channel-web-DOG4rb7e.js} +2 -2
  84. package/dist/plugin-sdk/{deps-Cm-ahw03.js → deps--J_OAyWa.js} +1 -1
  85. package/dist/plugin-sdk/{emergency-stop-B0UyCqt2.js → emergency-stop-CAC-_dk-.js} +2 -2
  86. package/dist/plugin-sdk/index.js +3 -3
  87. package/dist/plugin-sdk/{reply-FeJkvBTh.js → reply-5pZsGmq0.js} +81 -27
  88. package/dist/plugin-sdk/{web-CSrqwl06.js → web-B-T8tUvc.js} +3 -3
  89. package/dist/{plugins-cli-3arRp6gc.js → plugins-cli-CAbzpQdE.js} +4 -4
  90. package/dist/{plugins-cli-DranMED6.js → plugins-cli-Di1X-utw.js} +4 -4
  91. package/dist/{program-DY_Rkd8D.js → program-DCfsqP_8.js} +9 -9
  92. package/dist/{program-context-9CaHm5SI.js → program-context-Dhec-fGX.js} +19 -19
  93. package/dist/{prompt-select-styled-DvMmAvyn.js → prompt-select-styled-C1aw6YAJ.js} +5 -5
  94. package/dist/{prompt-select-styled-CElbRg_a.js → prompt-select-styled-CJ2ux4O0.js} +5 -5
  95. package/dist/{provider-auth-helpers-BPCg8qMf.js → provider-auth-helpers-BPsTPi3e.js} +1 -1
  96. package/dist/{provider-auth-helpers-BaZhGGjD.js → provider-auth-helpers-aWibl0HT.js} +1 -1
  97. package/dist/{push-apns-a0wNNljR.js → push-apns-BracxehR.js} +1 -1
  98. package/dist/{push-apns-CuguN4fn.js → push-apns-By39WpiH.js} +1 -1
  99. package/dist/{register.agent-DyykxslK.js → register.agent-BaVrC6Ay.js} +10 -10
  100. package/dist/{register.agent-ymF22qxN.js → register.agent-CyZyt49k.js} +9 -9
  101. package/dist/{register.configure-BKQteoMw.js → register.configure-CqmHvWcB.js} +11 -11
  102. package/dist/{register.configure-CPZIddJn.js → register.configure-DmjP2LTb.js} +11 -11
  103. package/dist/{register.maintenance-DT7W26RY.js → register.maintenance-DYYx-jCe.js} +10 -10
  104. package/dist/{register.maintenance-p-8kL3Pz.js → register.maintenance-DfWWglhS.js} +9 -9
  105. package/dist/{register.message-hOKynGzt.js → register.message-C3tFRLbl.js} +4 -4
  106. package/dist/{register.message-BBEFC660.js → register.message-Cke7XTrc.js} +4 -4
  107. package/dist/{register.onboard-5z2i2-V5.js → register.onboard-BXK-V33E.js} +3 -3
  108. package/dist/{register.onboard-DdJ-EgL1.js → register.onboard-DLZNgT0T.js} +3 -3
  109. package/dist/{register.orchestrator-anton-DeJEVI3c.js → register.orchestrator-anton-D2g_KbgY.js} +2 -2
  110. package/dist/{register.orchestrator-anton-CxWBZjBX.js → register.orchestrator-anton-rvqNZKP1.js} +2 -2
  111. package/dist/{register.setup-DBQu6Xk7.js → register.setup-DBL7rrRW.js} +3 -3
  112. package/dist/{register.setup-CPqwZAdx.js → register.setup-Dr-v5BSC.js} +3 -3
  113. package/dist/{register.status-health-sessions-DHb1QZxy.js → register.status-health-sessions-BDG_QnIw.js} +5 -5
  114. package/dist/{register.status-health-sessions-CDaM5Qx2.js → register.status-health-sessions-BrnK4KEW.js} +5 -5
  115. package/dist/{register.subclis-DgWtjP5g.js → register.subclis-SGnxsMrq.js} +10 -10
  116. package/dist/{reply-CsQQGCNB.js → reply-tuqCy_5s.js} +82 -28
  117. package/dist/{run-main-DAK3Rydh.js → run-main-KfdXYi7n.js} +16 -16
  118. package/dist/{server-node-events-DBdK-iF8.js → server-node-events-BLSMmXyp.js} +4 -4
  119. package/dist/{server-node-events-C32rthAw.js → server-node-events-Brm38g1H.js} +4 -4
  120. package/dist/{status-CI9kOoYW.js → status-CLNSJORR.js} +3 -3
  121. package/dist/{status-velMOawa.js → status-CmG_xHAm.js} +3 -3
  122. package/dist/{subagent-registry-B5MdaonE.js → subagent-registry-B-ciR-Ya.js} +82 -28
  123. package/dist/{update-cli-C7y4ymGs.js → update-cli-B-RzWiVk.js} +10 -10
  124. package/dist/{update-cli-CDGqZduV.js → update-cli-ButEdTeQ.js} +11 -11
  125. package/dist/{update-runner-Crqt-f5z.js → update-runner-Cxg4n1sn.js} +1 -1
  126. package/dist/{update-runner-xP0EJfLP.js → update-runner-DizoiA2w.js} +1 -1
  127. package/dist/{web-C67ozQHC.js → web-C4Q6twkC.js} +4 -4
  128. package/dist/{web-CZCgCfEk.js → web-D5dDa5kC.js} +3 -3
  129. package/dist/{web-BcMY4ar0.js → web-DWhjgVIf.js} +3 -3
  130. package/dist/{web-BuuP6YsH.js → web-DtCFqhdb.js} +4 -4
  131. package/package.json +1 -1
@@ -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-CcZ0VtSz.js";
75
+ import { r as createOutboundSendDepsFromCliSource, t as createDefaultDeps } from "./deps-Ci76e_07.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";
@@ -23045,9 +23045,12 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
23045
23045
  const body = params.command.commandBodyNormalized;
23046
23046
  if (!body.startsWith("/anton")) return null;
23047
23047
  if (!params.command.isAuthorizedSender) return { shouldContinue: false };
23048
+ const channel = params.ctx.OriginatingChannel ?? params.command.channel;
23049
+ const to = params.ctx.OriginatingTo ?? params.command.from ?? params.command.to ?? "";
23050
+ const canRoute = isRoutableChannel(channel);
23048
23051
  const replyCtx = {
23049
- channel: params.ctx.OriginatingChannel ?? params.command.channel,
23050
- to: params.ctx.OriginatingTo ?? params.command.from ?? params.command.to ?? "",
23052
+ channel,
23053
+ to,
23051
23054
  sessionKey: params.sessionKey,
23052
23055
  accountId: params.ctx.AccountId,
23053
23056
  threadId: params.ctx.MessageThreadId,
@@ -23055,25 +23058,35 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
23055
23058
  };
23056
23059
  const arg = body.slice(6).trim();
23057
23060
  if (arg === "status" || arg === "") {
23058
- const { antonStatus } = await import("./anton-BzBaDHs_.js");
23061
+ const { antonStatus } = await import("./anton-BV_xSUQi.js");
23059
23062
  const lines = [];
23060
23063
  await antonStatus({
23061
23064
  log: (msg) => lines.push(msg),
23062
23065
  error: (msg) => lines.push(msg),
23063
23066
  exit: () => {}
23064
23067
  });
23065
- await sendProgress(replyCtx, lines.join("\n") || "Anton is idle.");
23068
+ const text = lines.join("\n") || "Anton is idle.";
23069
+ if (!canRoute) return {
23070
+ shouldContinue: false,
23071
+ reply: { text }
23072
+ };
23073
+ await sendProgress(replyCtx, text);
23066
23074
  return { shouldContinue: false };
23067
23075
  }
23068
23076
  if (arg === "stop") {
23069
- const { antonStop } = await import("./anton-BzBaDHs_.js");
23077
+ const { antonStop } = await import("./anton-BV_xSUQi.js");
23070
23078
  const lines = [];
23071
23079
  await antonStop({
23072
23080
  log: (msg) => lines.push(msg),
23073
23081
  error: (msg) => lines.push(msg),
23074
23082
  exit: () => {}
23075
23083
  });
23076
- await sendProgress(replyCtx, lines.join("\n") || "Stop requested.");
23084
+ const text = lines.join("\n") || "Stop requested.";
23085
+ if (!canRoute) return {
23086
+ shouldContinue: false,
23087
+ reply: { text }
23088
+ };
23089
+ await sendProgress(replyCtx, text);
23077
23090
  return { shouldContinue: false };
23078
23091
  }
23079
23092
  const taskFile = arg;
@@ -23082,19 +23095,30 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
23082
23095
  const resolvedPath = pathMod.resolve(params.workspaceDir || process.cwd(), taskFile);
23083
23096
  try {
23084
23097
  if (!(await fs.stat(resolvedPath)).isFile()) {
23085
- await sendProgress(replyCtx, `❌ Not a file: \`${resolvedPath}\``);
23098
+ const text = `❌ Not a file: \`${resolvedPath}\``;
23099
+ if (!canRoute) return {
23100
+ shouldContinue: false,
23101
+ reply: { text }
23102
+ };
23103
+ await sendProgress(replyCtx, text);
23086
23104
  return { shouldContinue: false };
23087
23105
  }
23088
23106
  } catch {
23089
- await sendProgress(replyCtx, `❌ File not found: \`${resolvedPath}\``);
23107
+ const text = `❌ File not found: \`${resolvedPath}\``;
23108
+ if (!canRoute) return {
23109
+ shouldContinue: false,
23110
+ reply: { text }
23111
+ };
23112
+ await sendProgress(replyCtx, text);
23090
23113
  return { shouldContinue: false };
23091
23114
  }
23092
- const { runAnton, formatProgressMessage } = await import("./anton-BzBaDHs_.js");
23093
- const { createDefaultDeps } = await import("./deps-CcZ0VtSz.js").then((n) => n.n);
23115
+ const { runAnton, formatProgressMessage } = await import("./anton-BV_xSUQi.js");
23116
+ const { createDefaultDeps } = await import("./deps-Ci76e_07.js").then((n) => n.n);
23094
23117
  const { createNonExitingRuntime } = await import("./runtime-8mi3mpYB.js").then((n) => n.r);
23095
23118
  const runtime = createNonExitingRuntime();
23096
23119
  const deps = createDefaultDeps();
23097
- await sendProgress(replyCtx, `🤚 **/anton** invoked on \`${pathMod.basename(resolvedPath)}\`\nStarting orchestrator...`);
23120
+ const startText = `🤚 **/anton** invoked on \`${pathMod.basename(resolvedPath)}\`\nStarting orchestrator...`;
23121
+ if (canRoute) await sendProgress(replyCtx, startText);
23098
23122
  (async () => {
23099
23123
  try {
23100
23124
  await runAnton({
@@ -23104,15 +23128,19 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
23104
23128
  force: false,
23105
23129
  dryRun: false,
23106
23130
  workspaceDir: params.workspaceDir || void 0,
23107
- onProgress: async (event) => {
23131
+ ...canRoute ? { onProgress: async (event) => {
23108
23132
  await sendProgress(replyCtx, formatProgressMessage(event));
23109
- }
23133
+ } } : {}
23110
23134
  });
23111
23135
  } catch (err) {
23112
- await sendProgress(replyCtx, `❌ **Anton crashed**: ${err instanceof Error ? err.message : String(err)}`);
23136
+ const msg = err instanceof Error ? err.message : String(err);
23137
+ if (canRoute) await sendProgress(replyCtx, `❌ **Anton crashed**: ${msg}`);
23113
23138
  }
23114
23139
  })();
23115
- return { shouldContinue: false };
23140
+ return canRoute ? { shouldContinue: false } : {
23141
+ shouldContinue: false,
23142
+ reply: { text: startText }
23143
+ };
23116
23144
  };
23117
23145
 
23118
23146
  //#endregion
@@ -23124,9 +23152,15 @@ const handleDirCommand = async (params, _allowTextCommands) => {
23124
23152
  const channel = params.ctx.OriginatingChannel ?? params.command.channel;
23125
23153
  const to = params.ctx.OriginatingTo ?? params.command.from ?? params.command.to ?? "";
23126
23154
  const arg = body.slice(4).trim();
23155
+ const canRoute = isRoutableChannel(channel);
23127
23156
  if (!arg) {
23157
+ const text = `📂 Current workspace: \`${params.workspaceDir || "(not set)"}\``;
23158
+ if (!canRoute) return {
23159
+ shouldContinue: false,
23160
+ reply: { text }
23161
+ };
23128
23162
  await routeReply({
23129
- payload: { text: `📂 Current workspace: \`${params.workspaceDir || "(not set)"}\`` },
23163
+ payload: { text },
23130
23164
  channel,
23131
23165
  to,
23132
23166
  sessionKey: params.sessionKey,
@@ -23141,8 +23175,13 @@ const handleDirCommand = async (params, _allowTextCommands) => {
23141
23175
  const resolved = (await import("node:path")).resolve(newPath);
23142
23176
  try {
23143
23177
  if (!(await fs.stat(resolved)).isDirectory()) {
23178
+ const text = `❌ Path exists but is not a directory: \`${resolved}\``;
23179
+ if (!canRoute) return {
23180
+ shouldContinue: false,
23181
+ reply: { text }
23182
+ };
23144
23183
  await routeReply({
23145
- payload: { text: `❌ Path exists but is not a directory: \`${resolved}\`` },
23184
+ payload: { text },
23146
23185
  channel,
23147
23186
  to,
23148
23187
  sessionKey: params.sessionKey,
@@ -23153,8 +23192,13 @@ const handleDirCommand = async (params, _allowTextCommands) => {
23153
23192
  return { shouldContinue: false };
23154
23193
  }
23155
23194
  } catch {
23195
+ const text = `❌ Directory not found: \`${resolved}\``;
23196
+ if (!canRoute) return {
23197
+ shouldContinue: false,
23198
+ reply: { text }
23199
+ };
23156
23200
  await routeReply({
23157
- payload: { text: `❌ Directory not found: \`${resolved}\`` },
23201
+ payload: { text },
23158
23202
  channel,
23159
23203
  to,
23160
23204
  sessionKey: params.sessionKey,
@@ -23175,8 +23219,13 @@ const handleDirCommand = async (params, _allowTextCommands) => {
23175
23219
  });
23176
23220
  }
23177
23221
  params.workspaceDir = resolved;
23222
+ const text = `✅ Workspace set to: \`${resolved}\`\nActive for this session only.`;
23223
+ if (!canRoute) return {
23224
+ shouldContinue: false,
23225
+ reply: { text }
23226
+ };
23178
23227
  await routeReply({
23179
- payload: { text: `✅ Workspace set to: \`${resolved}\`\nActive for this session only.` },
23228
+ payload: { text },
23180
23229
  channel,
23181
23230
  to,
23182
23231
  sessionKey: params.sessionKey,
@@ -23185,8 +23234,13 @@ const handleDirCommand = async (params, _allowTextCommands) => {
23185
23234
  cfg: params.cfg
23186
23235
  });
23187
23236
  } catch (err) {
23237
+ const text = `❌ Failed to update workspace: ${err instanceof Error ? err.message : String(err)}`;
23238
+ if (!canRoute) return {
23239
+ shouldContinue: false,
23240
+ reply: { text }
23241
+ };
23188
23242
  await routeReply({
23189
- payload: { text: `❌ Failed to update workspace: ${err instanceof Error ? err.message : String(err)}` },
23243
+ payload: { text },
23190
23244
  channel,
23191
23245
  to,
23192
23246
  sessionKey: params.sessionKey,
@@ -57191,7 +57245,7 @@ function createDiscordMessageHandler(params) {
57191
57245
  try {
57192
57246
  const messageText = resolveDiscordMessageText(data.message)?.trim();
57193
57247
  if (messageText) {
57194
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop--xlBYCby.js");
57248
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-B1ycCthl.js");
57195
57249
  if (isAbortRequestText(messageText)) {
57196
57250
  const { resolveAgentRoute } = await import("./resolve-route-BI3VjtwE.js").then((n) => n.r);
57197
57251
  const channelId = resolveDiscordMessageChannelId({
@@ -64689,7 +64743,7 @@ async function monitorIMessageProvider(opts = {}) {
64689
64743
  }
64690
64744
  const msgText = (message.text ?? "").trim();
64691
64745
  if (msgText) {
64692
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop--xlBYCby.js");
64746
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-B1ycCthl.js");
64693
64747
  if (isAbortRequestText(msgText)) {
64694
64748
  const { resolveAgentRoute } = await import("./resolve-route-BI3VjtwE.js").then((n) => n.r);
64695
64749
  const route = resolveAgentRoute({
@@ -67300,7 +67354,7 @@ function createSignalEventHandler(deps) {
67300
67354
  const senderName = envelope.sourceName ?? senderDisplay;
67301
67355
  const messageId = typeof envelope.timestamp === "number" ? String(envelope.timestamp) : void 0;
67302
67356
  if (bodyText) {
67303
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop--xlBYCby.js");
67357
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-B1ycCthl.js");
67304
67358
  if (isAbortRequestText(bodyText)) {
67305
67359
  const { resolveAgentRoute } = await import("./resolve-route-BI3VjtwE.js").then((n) => n.r);
67306
67360
  const route = resolveAgentRoute({
@@ -70682,7 +70736,7 @@ function createSlackMessageHandler(params) {
70682
70736
  if (ctx.markMessageSeen(message.channel, message.ts)) return;
70683
70737
  const rawText = (message.text ?? "").trim();
70684
70738
  if (rawText) {
70685
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop--xlBYCby.js");
70739
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-B1ycCthl.js");
70686
70740
  if (isAbortRequestText(rawText)) {
70687
70741
  const { resolveAgentRoute } = await import("./resolve-route-BI3VjtwE.js").then((n) => n.r);
70688
70742
  const route = resolveAgentRoute({
@@ -72876,7 +72930,7 @@ const registerTelegramHandlers = ({ cfg, accountId, bot, opts, runtime, mediaMax
72876
72930
  const { ctx, msg, chatId, resolvedThreadId, storeAllowFrom, sendOversizeWarning, oversizeLogMessage } = params;
72877
72931
  const text = typeof msg.text === "string" ? msg.text : void 0;
72878
72932
  if (text) {
72879
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop--xlBYCby.js");
72933
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-B1ycCthl.js");
72880
72934
  if (isAbortRequestText(text)) {
72881
72935
  const senderId = msg.from?.id ? String(msg.from.id) : "";
72882
72936
  if (!senderId || !allowFrom?.length || allowFrom.includes(senderId)) {
@@ -76361,7 +76415,7 @@ function loadWebLoginQr() {
76361
76415
  return webLoginQrPromise;
76362
76416
  }
76363
76417
  function loadWebChannel() {
76364
- webChannelPromise ??= import("./web-BcMY4ar0.js");
76418
+ webChannelPromise ??= import("./web-DWhjgVIf.js");
76365
76419
  return webChannelPromise;
76366
76420
  }
76367
76421
  function loadWhatsAppActions() {
@@ -75,7 +75,7 @@ import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-rou
75
75
  import { i as redactIdentifier, t as getActiveWebListener } from "./active-listener-jilCMH1M.js";
76
76
  import { t as makeProxyFetch } from "./proxy-CRB9oCP5.js";
77
77
  import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-6_GxvQYe.js";
78
- import { r as createOutboundSendDepsFromCliSource, t as createDefaultDeps } from "./deps-DGHlGKcG.js";
78
+ import { r as createOutboundSendDepsFromCliSource, t as createDefaultDeps } from "./deps-Bdrf7UsT.js";
79
79
  import { createRequire } from "node:module";
80
80
  import * as fs$1 from "node:fs/promises";
81
81
  import fs from "node:fs/promises";
@@ -23048,9 +23048,12 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
23048
23048
  const body = params.command.commandBodyNormalized;
23049
23049
  if (!body.startsWith("/anton")) return null;
23050
23050
  if (!params.command.isAuthorizedSender) return { shouldContinue: false };
23051
+ const channel = params.ctx.OriginatingChannel ?? params.command.channel;
23052
+ const to = params.ctx.OriginatingTo ?? params.command.from ?? params.command.to ?? "";
23053
+ const canRoute = isRoutableChannel(channel);
23051
23054
  const replyCtx = {
23052
- channel: params.ctx.OriginatingChannel ?? params.command.channel,
23053
- to: params.ctx.OriginatingTo ?? params.command.from ?? params.command.to ?? "",
23055
+ channel,
23056
+ to,
23054
23057
  sessionKey: params.sessionKey,
23055
23058
  accountId: params.ctx.AccountId,
23056
23059
  threadId: params.ctx.MessageThreadId,
@@ -23058,25 +23061,35 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
23058
23061
  };
23059
23062
  const arg = body.slice(6).trim();
23060
23063
  if (arg === "status" || arg === "") {
23061
- const { antonStatus } = await import("./anton-BAc6lLhA.js");
23064
+ const { antonStatus } = await import("./anton-CdYcHDXy.js");
23062
23065
  const lines = [];
23063
23066
  await antonStatus({
23064
23067
  log: (msg) => lines.push(msg),
23065
23068
  error: (msg) => lines.push(msg),
23066
23069
  exit: () => {}
23067
23070
  });
23068
- await sendProgress(replyCtx, lines.join("\n") || "Anton is idle.");
23071
+ const text = lines.join("\n") || "Anton is idle.";
23072
+ if (!canRoute) return {
23073
+ shouldContinue: false,
23074
+ reply: { text }
23075
+ };
23076
+ await sendProgress(replyCtx, text);
23069
23077
  return { shouldContinue: false };
23070
23078
  }
23071
23079
  if (arg === "stop") {
23072
- const { antonStop } = await import("./anton-BAc6lLhA.js");
23080
+ const { antonStop } = await import("./anton-CdYcHDXy.js");
23073
23081
  const lines = [];
23074
23082
  await antonStop({
23075
23083
  log: (msg) => lines.push(msg),
23076
23084
  error: (msg) => lines.push(msg),
23077
23085
  exit: () => {}
23078
23086
  });
23079
- await sendProgress(replyCtx, lines.join("\n") || "Stop requested.");
23087
+ const text = lines.join("\n") || "Stop requested.";
23088
+ if (!canRoute) return {
23089
+ shouldContinue: false,
23090
+ reply: { text }
23091
+ };
23092
+ await sendProgress(replyCtx, text);
23080
23093
  return { shouldContinue: false };
23081
23094
  }
23082
23095
  const taskFile = arg;
@@ -23085,19 +23098,30 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
23085
23098
  const resolvedPath = pathMod.resolve(params.workspaceDir || process.cwd(), taskFile);
23086
23099
  try {
23087
23100
  if (!(await fs.stat(resolvedPath)).isFile()) {
23088
- await sendProgress(replyCtx, `❌ Not a file: \`${resolvedPath}\``);
23101
+ const text = `❌ Not a file: \`${resolvedPath}\``;
23102
+ if (!canRoute) return {
23103
+ shouldContinue: false,
23104
+ reply: { text }
23105
+ };
23106
+ await sendProgress(replyCtx, text);
23089
23107
  return { shouldContinue: false };
23090
23108
  }
23091
23109
  } catch {
23092
- await sendProgress(replyCtx, `❌ File not found: \`${resolvedPath}\``);
23110
+ const text = `❌ File not found: \`${resolvedPath}\``;
23111
+ if (!canRoute) return {
23112
+ shouldContinue: false,
23113
+ reply: { text }
23114
+ };
23115
+ await sendProgress(replyCtx, text);
23093
23116
  return { shouldContinue: false };
23094
23117
  }
23095
- const { runAnton, formatProgressMessage } = await import("./anton-BAc6lLhA.js");
23096
- const { createDefaultDeps } = await import("./deps-DGHlGKcG.js").then((n) => n.n);
23118
+ const { runAnton, formatProgressMessage } = await import("./anton-CdYcHDXy.js");
23119
+ const { createDefaultDeps } = await import("./deps-Bdrf7UsT.js").then((n) => n.n);
23097
23120
  const { createNonExitingRuntime } = await import("./runtime-8mi3mpYB.js").then((n) => n.r);
23098
23121
  const runtime = createNonExitingRuntime();
23099
23122
  const deps = createDefaultDeps();
23100
- await sendProgress(replyCtx, `🤚 **/anton** invoked on \`${pathMod.basename(resolvedPath)}\`\nStarting orchestrator...`);
23123
+ const startText = `🤚 **/anton** invoked on \`${pathMod.basename(resolvedPath)}\`\nStarting orchestrator...`;
23124
+ if (canRoute) await sendProgress(replyCtx, startText);
23101
23125
  (async () => {
23102
23126
  try {
23103
23127
  await runAnton({
@@ -23107,15 +23131,19 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
23107
23131
  force: false,
23108
23132
  dryRun: false,
23109
23133
  workspaceDir: params.workspaceDir || void 0,
23110
- onProgress: async (event) => {
23134
+ ...canRoute ? { onProgress: async (event) => {
23111
23135
  await sendProgress(replyCtx, formatProgressMessage(event));
23112
- }
23136
+ } } : {}
23113
23137
  });
23114
23138
  } catch (err) {
23115
- await sendProgress(replyCtx, `❌ **Anton crashed**: ${err instanceof Error ? err.message : String(err)}`);
23139
+ const msg = err instanceof Error ? err.message : String(err);
23140
+ if (canRoute) await sendProgress(replyCtx, `❌ **Anton crashed**: ${msg}`);
23116
23141
  }
23117
23142
  })();
23118
- return { shouldContinue: false };
23143
+ return canRoute ? { shouldContinue: false } : {
23144
+ shouldContinue: false,
23145
+ reply: { text: startText }
23146
+ };
23119
23147
  };
23120
23148
 
23121
23149
  //#endregion
@@ -23127,9 +23155,15 @@ const handleDirCommand = async (params, _allowTextCommands) => {
23127
23155
  const channel = params.ctx.OriginatingChannel ?? params.command.channel;
23128
23156
  const to = params.ctx.OriginatingTo ?? params.command.from ?? params.command.to ?? "";
23129
23157
  const arg = body.slice(4).trim();
23158
+ const canRoute = isRoutableChannel(channel);
23130
23159
  if (!arg) {
23160
+ const text = `📂 Current workspace: \`${params.workspaceDir || "(not set)"}\``;
23161
+ if (!canRoute) return {
23162
+ shouldContinue: false,
23163
+ reply: { text }
23164
+ };
23131
23165
  await routeReply({
23132
- payload: { text: `📂 Current workspace: \`${params.workspaceDir || "(not set)"}\`` },
23166
+ payload: { text },
23133
23167
  channel,
23134
23168
  to,
23135
23169
  sessionKey: params.sessionKey,
@@ -23144,8 +23178,13 @@ const handleDirCommand = async (params, _allowTextCommands) => {
23144
23178
  const resolved = (await import("node:path")).resolve(newPath);
23145
23179
  try {
23146
23180
  if (!(await fs.stat(resolved)).isDirectory()) {
23181
+ const text = `❌ Path exists but is not a directory: \`${resolved}\``;
23182
+ if (!canRoute) return {
23183
+ shouldContinue: false,
23184
+ reply: { text }
23185
+ };
23147
23186
  await routeReply({
23148
- payload: { text: `❌ Path exists but is not a directory: \`${resolved}\`` },
23187
+ payload: { text },
23149
23188
  channel,
23150
23189
  to,
23151
23190
  sessionKey: params.sessionKey,
@@ -23156,8 +23195,13 @@ const handleDirCommand = async (params, _allowTextCommands) => {
23156
23195
  return { shouldContinue: false };
23157
23196
  }
23158
23197
  } catch {
23198
+ const text = `❌ Directory not found: \`${resolved}\``;
23199
+ if (!canRoute) return {
23200
+ shouldContinue: false,
23201
+ reply: { text }
23202
+ };
23159
23203
  await routeReply({
23160
- payload: { text: `❌ Directory not found: \`${resolved}\`` },
23204
+ payload: { text },
23161
23205
  channel,
23162
23206
  to,
23163
23207
  sessionKey: params.sessionKey,
@@ -23178,8 +23222,13 @@ const handleDirCommand = async (params, _allowTextCommands) => {
23178
23222
  });
23179
23223
  }
23180
23224
  params.workspaceDir = resolved;
23225
+ const text = `✅ Workspace set to: \`${resolved}\`\nActive for this session only.`;
23226
+ if (!canRoute) return {
23227
+ shouldContinue: false,
23228
+ reply: { text }
23229
+ };
23181
23230
  await routeReply({
23182
- payload: { text: `✅ Workspace set to: \`${resolved}\`\nActive for this session only.` },
23231
+ payload: { text },
23183
23232
  channel,
23184
23233
  to,
23185
23234
  sessionKey: params.sessionKey,
@@ -23188,8 +23237,13 @@ const handleDirCommand = async (params, _allowTextCommands) => {
23188
23237
  cfg: params.cfg
23189
23238
  });
23190
23239
  } catch (err) {
23240
+ const text = `❌ Failed to update workspace: ${err instanceof Error ? err.message : String(err)}`;
23241
+ if (!canRoute) return {
23242
+ shouldContinue: false,
23243
+ reply: { text }
23244
+ };
23191
23245
  await routeReply({
23192
- payload: { text: `❌ Failed to update workspace: ${err instanceof Error ? err.message : String(err)}` },
23246
+ payload: { text },
23193
23247
  channel,
23194
23248
  to,
23195
23249
  sessionKey: params.sessionKey,
@@ -57194,7 +57248,7 @@ function createDiscordMessageHandler(params) {
57194
57248
  try {
57195
57249
  const messageText = resolveDiscordMessageText(data.message)?.trim();
57196
57250
  if (messageText) {
57197
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-EXYMl2Ho.js");
57251
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-BpudAT0i.js");
57198
57252
  if (isAbortRequestText(messageText)) {
57199
57253
  const { resolveAgentRoute } = await import("./resolve-route-DuttYY7A.js").then((n) => n.r);
57200
57254
  const channelId = resolveDiscordMessageChannelId({
@@ -64692,7 +64746,7 @@ async function monitorIMessageProvider(opts = {}) {
64692
64746
  }
64693
64747
  const msgText = (message.text ?? "").trim();
64694
64748
  if (msgText) {
64695
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-EXYMl2Ho.js");
64749
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-BpudAT0i.js");
64696
64750
  if (isAbortRequestText(msgText)) {
64697
64751
  const { resolveAgentRoute } = await import("./resolve-route-DuttYY7A.js").then((n) => n.r);
64698
64752
  const route = resolveAgentRoute({
@@ -67303,7 +67357,7 @@ function createSignalEventHandler(deps) {
67303
67357
  const senderName = envelope.sourceName ?? senderDisplay;
67304
67358
  const messageId = typeof envelope.timestamp === "number" ? String(envelope.timestamp) : void 0;
67305
67359
  if (bodyText) {
67306
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-EXYMl2Ho.js");
67360
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-BpudAT0i.js");
67307
67361
  if (isAbortRequestText(bodyText)) {
67308
67362
  const { resolveAgentRoute } = await import("./resolve-route-DuttYY7A.js").then((n) => n.r);
67309
67363
  const route = resolveAgentRoute({
@@ -70685,7 +70739,7 @@ function createSlackMessageHandler(params) {
70685
70739
  if (ctx.markMessageSeen(message.channel, message.ts)) return;
70686
70740
  const rawText = (message.text ?? "").trim();
70687
70741
  if (rawText) {
70688
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-EXYMl2Ho.js");
70742
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-BpudAT0i.js");
70689
70743
  if (isAbortRequestText(rawText)) {
70690
70744
  const { resolveAgentRoute } = await import("./resolve-route-DuttYY7A.js").then((n) => n.r);
70691
70745
  const route = resolveAgentRoute({
@@ -72879,7 +72933,7 @@ const registerTelegramHandlers = ({ cfg, accountId, bot, opts, runtime, mediaMax
72879
72933
  const { ctx, msg, chatId, resolvedThreadId, storeAllowFrom, sendOversizeWarning, oversizeLogMessage } = params;
72880
72934
  const text = typeof msg.text === "string" ? msg.text : void 0;
72881
72935
  if (text) {
72882
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-EXYMl2Ho.js");
72936
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-BpudAT0i.js");
72883
72937
  if (isAbortRequestText(text)) {
72884
72938
  const senderId = msg.from?.id ? String(msg.from.id) : "";
72885
72939
  if (!senderId || !allowFrom?.length || allowFrom.includes(senderId)) {
@@ -76364,7 +76418,7 @@ function loadWebLoginQr() {
76364
76418
  return webLoginQrPromise;
76365
76419
  }
76366
76420
  function loadWebChannel() {
76367
- webChannelPromise ??= import("./web-CZCgCfEk.js");
76421
+ webChannelPromise ??= import("./web-D5dDa5kC.js");
76368
76422
  return webChannelPromise;
76369
76423
  }
76370
76424
  function loadWhatsAppActions() {
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { ht as loadIdleHandsPlugins } from "./reply-CsQQGCNB.js";
2
+ import { ht as loadIdleHandsPlugins } from "./reply-tuqCy_5s.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-B5MdaonE.js";
5
+ import { _ as loadIdleHandsPlugins } from "./subagent-registry-B-ciR-Ya.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-FeJkvBTh.js";
3
+ import { F as callGateway, I as randomIdempotencyKey, d as agentCommand, f as resolveSessionKeyForRequest, p as withProgress } from "./reply-5pZsGmq0.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-Cm-ahw03.js";
66
+ import "./deps--J_OAyWa.js";
67
67
  import "./outbound-attachment-BisU5Vji.js";
68
68
 
69
69
  //#region src/commands/agent-via-gateway.ts
@@ -216,7 +216,7 @@ async function loadAntonConfig() {
216
216
  }
217
217
  }
218
218
  async function runAgentTask(args) {
219
- const { agentCliCommand } = await import("./agent-via-gateway-B4ZhKrSY.js");
219
+ const { agentCliCommand } = await import("./agent-via-gateway-BeEBACUq.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
221
  await agentCliCommand({
222
222
  message: args.message,
@@ -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-FeJkvBTh.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-5pZsGmq0.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-B0UyCqt2.js");
881
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-CAC-_dk-.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-CSrqwl06.js");
21
+ const { sendMessageWhatsApp } = await import("./web-B-T8tUvc.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-FeJkvBTh.js";
2
+ import { S as stopSubagentsForRequester, b as formatAbortReplyText, n as abortEmbeddedPiRun, w as clearSessionQueues, x as isAbortRequestText } from "./reply-5pZsGmq0.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-Cm-ahw03.js";
64
+ import "./deps--J_OAyWa.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-FeJkvBTh.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-5pZsGmq0.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-MWHDHhG_.js";
55
+ import { r as resolveWhatsAppHeartbeatRecipients } from "./channel-web-DOG4rb7e.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-Cm-ahw03.js";
68
+ import "./deps--J_OAyWa.js";
69
69
  import "./outbound-attachment-BisU5Vji.js";
70
70
  import "./outbound-Dx_q6JAI.js";
71
71
  import "./session-DdJj6_DW.js";