@visorcraft/idlehands 4.4.0 → 4.4.1

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 (127) hide show
  1. package/dist/{agent-via-gateway-CPvgY5VA.js → agent-via-gateway-6jGL9ZRb.js} +1 -1
  2. package/dist/{agent-via-gateway-DvLTdMBj.js → agent-via-gateway-B7VYaDwI.js} +1 -1
  3. package/dist/{agent-via-gateway-OzQZlQpB.js → agent-via-gateway-D6SBbSiq.js} +7 -7
  4. package/dist/{agent-via-gateway-CTti0dK7.js → agent-via-gateway-hbF-h9TM.js} +2 -2
  5. package/dist/{agents-BEuHL8Zr.js → agents-BVYgk2uc.js} +4 -4
  6. package/dist/{agents.config-BDQ4Bu0B.js → agents.config-CKj37-g5.js} +1 -1
  7. package/dist/{agents.config-BjMP6yqX.js → agents.config-CcZ8kSaj.js} +1 -1
  8. package/dist/{anton-Dwp3KlQs.js → anton-B4KXAf54.js} +1 -1
  9. package/dist/{anton-C8SARtai.js → anton-BNzNY6Vh.js} +1 -1
  10. package/dist/{anton-F-OwKPyb.js → anton-C8M2UhOH.js} +1 -1
  11. package/dist/{anton-DCJl8crN.js → anton-DnEx8ryb.js} +1 -1
  12. package/dist/{audio-preflight-Dl_bdO0l.js → audio-preflight-CdQj55ox.js} +4 -4
  13. package/dist/{auth-choice-BHISFUGz.js → auth-choice-BAioGgge.js} +1 -1
  14. package/dist/{auth-choice-Dam79K-y.js → auth-choice-CWa45O0-.js} +1 -1
  15. package/dist/{banner-ascZEgmt.js → banner-BxyoIRj1.js} +1 -1
  16. package/dist/build-info.json +3 -3
  17. package/dist/bundled/boot-md/handler.js +2 -2
  18. package/dist/bundled/session-memory/handler.js +2 -2
  19. package/dist/{channel-options-CAfv1NVr.js → channel-options-Bo-oY1lo.js} +1 -1
  20. package/dist/{channel-options-BdjtX9_O.js → channel-options-D4Abu9ss.js} +1 -1
  21. package/dist/{channel-web-B23k1s4A.js → channel-web-CUcTJTDU.js} +2 -2
  22. package/dist/{channel-web-BZe8v7Di.js → channel-web-aUJWpYzV.js} +2 -2
  23. package/dist/{channels-cli-v8qMY1yM.js → channels-cli-B3mz1uK6.js} +7 -7
  24. package/dist/{channels-cli-Bfz9P0IR.js → channels-cli-CxSH3i2W.js} +7 -7
  25. package/dist/{chrome-Bip_1c2e.js → chrome-CfoCzQ7O.js} +9 -9
  26. package/dist/{cli-DyId4irC.js → cli-Bv7W1rAQ.js} +2 -2
  27. package/dist/{cli-HkluaDt1.js → cli-Lk-tSEzq.js} +2 -2
  28. package/dist/{command-registry-Bs5y1F2v.js → command-registry-Ct2rGje_.js} +10 -10
  29. package/dist/{completion-cli-BmHAqqY4.js → completion-cli-BVkper4z.js} +2 -2
  30. package/dist/{completion-cli-CGXtQf6t.js → completion-cli-D1Y9BqD8.js} +1 -1
  31. package/dist/{config-cli-CEehCZa0.js → config-cli-Cunf6ZG_.js} +1 -1
  32. package/dist/{config-cli-BdJDJv0a.js → config-cli-DhIGl8u2.js} +1 -1
  33. package/dist/{configure-C5087mSP.js → configure-BMuZGX8O.js} +3 -3
  34. package/dist/{configure-C44gmCt3.js → configure-CjZDdguE.js} +3 -3
  35. package/dist/{deliver-CO1v69YA.js → deliver-Dsgo26ZO.js} +1 -1
  36. package/dist/{deps-CchkM1ea.js → deps-B7PzlVAo.js} +1 -1
  37. package/dist/{deps-CfQJK6WP.js → deps-Bq61L28a.js} +1 -1
  38. package/dist/{deps-SgroTRjf.js → deps-BrSKLsz0.js} +1 -1
  39. package/dist/{deps-UTcCCmJ6.js → deps-DvFgwh2J.js} +1 -1
  40. package/dist/{doctor-completion-Cgl5S3K0.js → doctor-completion-CYeuHpzs.js} +1 -1
  41. package/dist/{doctor-completion-DsaJMlSu.js → doctor-completion-_mAeHEgR.js} +1 -1
  42. package/dist/{emergency-stop-B2KUQyt8.js → emergency-stop-CksdLPai.js} +7 -7
  43. package/dist/{emergency-stop-BCRW03p2.js → emergency-stop-Cl_1fWgA.js} +2 -2
  44. package/dist/{emergency-stop-DjURYr3Z.js → emergency-stop-DkALIxNO.js} +2 -2
  45. package/dist/{emergency-stop-CjVqAFw-.js → emergency-stop-Sq-9tUol.js} +2 -2
  46. package/dist/entry.js +1 -1
  47. package/dist/extensionAPI.js +7 -7
  48. package/dist/{gateway-cli-Cx3sGYvO.js → gateway-cli-BACWzti6.js} +9 -9
  49. package/dist/{gateway-cli-BmwR5tHy.js → gateway-cli-C-tj9UP3.js} +9 -9
  50. package/dist/{health-F0lUmHT3.js → health-BV8l2AT8.js} +1 -1
  51. package/dist/{health-DXbufVL-.js → health-CErhWLEK.js} +1 -1
  52. package/dist/{hooks-cli-6t3DpWin.js → hooks-cli-BHve1IFH.js} +3 -3
  53. package/dist/{hooks-cli-CsWYWkar.js → hooks-cli-CdUSadGW.js} +3 -3
  54. package/dist/{image-Cu288YpA.js → image-JsjsSvBI.js} +1 -1
  55. package/dist/index.js +7 -7
  56. package/dist/llm-slug-generator.js +2 -2
  57. package/dist/{models-awPyoUpk.js → models-CbuRFugK.js} +2 -2
  58. package/dist/{models-cli-CsA9GN5G.js → models-cli-BXFbPL8U.js} +3 -3
  59. package/dist/{models-cli-D_PfTekq.js → models-cli-DzuBGnWF.js} +4 -4
  60. package/dist/{npm-resolution-BKPKKKLt.js → npm-resolution-BJWOQq_k.js} +1 -1
  61. package/dist/{npm-resolution-BpQ2o-Eh.js → npm-resolution-BO02ImLM.js} +1 -1
  62. package/dist/{onboard-BiT3YReS.js → onboard-BafFvA78.js} +2 -2
  63. package/dist/{onboard-C9KRYbrH.js → onboard-DFxvWMZm.js} +2 -2
  64. package/dist/{onboard-channels-C6b-o1TK.js → onboard-channels-52aYyjLX.js} +1 -1
  65. package/dist/{onboard-channels-_XLjSBKm.js → onboard-channels-Dy6UoU78.js} +1 -1
  66. package/dist/{onboarding-BfAhtIYl.js → onboarding-BK5EH5Rn.js} +3 -3
  67. package/dist/{onboarding-By12Oyni.js → onboarding-CqPkGVMr.js} +3 -3
  68. package/dist/{onboarding.finalize-yL217Gdr.js → onboarding.finalize-B58yHwhW.js} +6 -6
  69. package/dist/{onboarding.finalize-CAgcobAs.js → onboarding.finalize-BMRt8s2a.js} +7 -7
  70. package/dist/{pi-embedded-BfPWx2YM.js → pi-embedded-DQpyqnA8.js} +47 -32
  71. package/dist/{pi-embedded-tWfE4dVB.js → pi-embedded-Dn4hfyZ7.js} +32 -17
  72. package/dist/{pi-embedded-helpers-Ts8Hdurw.js → pi-embedded-helpers-i5nHSWCq.js} +4 -4
  73. package/dist/{plugin-registry-7DC8-ZZJ.js → plugin-registry-BIerZvsa.js} +1 -1
  74. package/dist/{plugin-registry-ZgC7HA0z.js → plugin-registry-C_B5M53b.js} +1 -1
  75. package/dist/plugin-sdk/{agent-via-gateway-C9v2r0O2.js → agent-via-gateway-VUne26H_.js} +2 -2
  76. package/dist/plugin-sdk/{anton-7I_gkw4v.js → anton-Dc7P4F4R.js} +1 -1
  77. package/dist/plugin-sdk/{channel-web-B7qyJbrs.js → channel-web-ineTToqd.js} +2 -2
  78. package/dist/plugin-sdk/{deps-Gj9jRY77.js → deps-D39VXTRX.js} +1 -1
  79. package/dist/plugin-sdk/{emergency-stop-B7_VgSkO.js → emergency-stop-CY_hnUVd.js} +2 -2
  80. package/dist/plugin-sdk/index.js +3 -3
  81. package/dist/plugin-sdk/{reply-nvcQV3Q_.js → reply-RRDB8Hr7.js} +32 -17
  82. package/dist/plugin-sdk/{web-BzOC1x6m.js → web-Bxlapohg.js} +3 -3
  83. package/dist/{plugins-cli-kePQvJ9L.js → plugins-cli-BM3apx3Z.js} +3 -3
  84. package/dist/{plugins-cli-DACLE21S.js → plugins-cli-CD34Zewk.js} +3 -3
  85. package/dist/{program-context-j94K3IXR.js → program-context-Bl64JzxU.js} +18 -18
  86. package/dist/{program-VV9u5uPU.js → program-hlrBo5Ce.js} +8 -8
  87. package/dist/{prompt-select-styled-BH51ROGD.js → prompt-select-styled-BAYe1OqG.js} +4 -4
  88. package/dist/{prompt-select-styled-BSqCn36X.js → prompt-select-styled-f40iKGOp.js} +4 -4
  89. package/dist/{provider-auth-helpers-BAB3PaaB.js → provider-auth-helpers-51CT-Q-Q.js} +1 -1
  90. package/dist/{provider-auth-helpers-DMSF8Mhq.js → provider-auth-helpers-BIbY8IHT.js} +1 -1
  91. package/dist/{push-apns-Cou7KeCj.js → push-apns-DGYpjf9d.js} +1 -1
  92. package/dist/{push-apns-CGUwMKT-.js → push-apns-fdjNrWTc.js} +1 -1
  93. package/dist/{pw-ai-YklTVbF6.js → pw-ai-CX1qce0j.js} +1 -1
  94. package/dist/{register.agent-ColbJEk3.js → register.agent-DM9zMka2.js} +8 -8
  95. package/dist/{register.agent-YCGBKv-d.js → register.agent-QXLalAr7.js} +9 -9
  96. package/dist/{register.configure-CfUo6nvs.js → register.configure-C6yu81ji.js} +8 -8
  97. package/dist/{register.configure-C5g7670Q.js → register.configure-DYbl1myH.js} +8 -8
  98. package/dist/{register.maintenance-CBNoQia-.js → register.maintenance-B5s6APwg.js} +9 -9
  99. package/dist/{register.maintenance-53FGiO0K.js → register.maintenance-BmKpPkIS.js} +8 -8
  100. package/dist/{register.message-CaFp4DAP.js → register.message-DVc5XVAt.js} +3 -3
  101. package/dist/{register.message-0nKlUSrH.js → register.message-DonrN0cy.js} +3 -3
  102. package/dist/{register.onboard-B9IJ3wUe.js → register.onboard-BE31mSHh.js} +2 -2
  103. package/dist/{register.onboard-B3NgvEwe.js → register.onboard-lHuw_CER.js} +2 -2
  104. package/dist/{register.orchestrator-anton-Cxnh52UP.js → register.orchestrator-anton-CVNuKUWS.js} +2 -2
  105. package/dist/{register.orchestrator-anton-HIi6nBvo.js → register.orchestrator-anton-Dgbr0yM1.js} +2 -2
  106. package/dist/{register.setup-y7C2w79N.js → register.setup-BudIJsJc.js} +2 -2
  107. package/dist/{register.setup-DyxAeyO2.js → register.setup-DNlkNa0X.js} +2 -2
  108. package/dist/{register.status-health-sessions-5wREP3Tq.js → register.status-health-sessions-DuMxtV8K.js} +4 -4
  109. package/dist/{register.status-health-sessions-DbzCxLhd.js → register.status-health-sessions-nhSLVQw7.js} +4 -4
  110. package/dist/{register.subclis-BEDdoF6M.js → register.subclis-Bnq9Bi9p.js} +9 -9
  111. package/dist/{reply-vDM22Gez.js → reply-DUE8raq5.js} +32 -17
  112. package/dist/{run-main-BKjpcqq8.js → run-main-D7FJSKGA.js} +15 -15
  113. package/dist/{runner-upvvkv9R.js → runner-DG_xf5vi.js} +1 -1
  114. package/dist/{server-node-events-CraqSZJR.js → server-node-events-CLq5E5Db.js} +3 -3
  115. package/dist/{server-node-events-B7IQ1nzZ.js → server-node-events-DhFplzWZ.js} +3 -3
  116. package/dist/{status-ZUnD4Pgf.js → status-CsNXMHzO.js} +2 -2
  117. package/dist/{status-D9fTji6b.js → status-CyzO0TGy.js} +2 -2
  118. package/dist/{subagent-registry-l7V3IoLe.js → subagent-registry-DW1LK5cG.js} +32 -17
  119. package/dist/{update-cli-D02DhEE9.js → update-cli-CtsLbpQq.js} +9 -9
  120. package/dist/{update-cli-CMn89gww.js → update-cli-DEMtHXm1.js} +8 -8
  121. package/dist/{update-runner-C44em-38.js → update-runner-DpD5VBHi.js} +1 -1
  122. package/dist/{update-runner-BSsZSlwa.js → update-runner-ybEXKv6M.js} +1 -1
  123. package/dist/{web-CiVRDtta.js → web-C-13ua3w.js} +3 -3
  124. package/dist/{web-bCfwH31U.js → web-CI1Ye0j8.js} +3 -3
  125. package/dist/{web-Dkl33QN0.js → web-Da5eWC4p.js} +3 -3
  126. package/dist/{web-DLIXLq_L.js → web-SvfucU2_.js} +8 -8
  127. package/package.json +1 -1
@@ -103,7 +103,7 @@ import { n as isDangerousNameMatchingEnabled } from "./dangerous-name-matching-c
103
103
  import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-Bt95GAew.js";
104
104
  import { b as ensureSkillsWatcher, i as resolveSkillCommandInvocation, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, r as listSkillCommandsForWorkspace, t as listReservedChatSlashCommandNames, x as getSkillsSnapshotVersion } from "./skill-commands-23SP2OFQ.js";
105
105
  import { i as redactIdentifier, t as getActiveWebListener } from "./active-listener-30JxwI-t.js";
106
- import { i as createOutboundSendDepsFromCliSource, t as createDefaultDeps } from "./deps-SgroTRjf.js";
106
+ import { i as createOutboundSendDepsFromCliSource, t as createDefaultDeps } from "./deps-BrSKLsz0.js";
107
107
  import { t as applyPluginAutoEnable } from "./plugin-auto-enable-DyNeRjEL.js";
108
108
  import { n as resolveMessageChannelSelection, t as listConfiguredMessageChannels } from "./channel-selection-ZxRkxpuF.js";
109
109
  import { c as hasNonzeroUsage, l as makeZeroUsageSnapshot, n as loadCostUsageSummary, o as derivePromptTokens, r as loadSessionCostSummary, s as deriveSessionTotalTokens, u as normalizeUsage } from "./session-cost-usage-DS1rjzML.js";
@@ -27507,7 +27507,7 @@ function createDiscordMessageHandler(params) {
27507
27507
  try {
27508
27508
  const messageText = resolveDiscordMessageText(data.message)?.trim();
27509
27509
  if (messageText) {
27510
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-DjURYr3Z.js");
27510
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-DkALIxNO.js");
27511
27511
  if (isAbortRequestText(messageText)) {
27512
27512
  const { resolveAgentRoute } = await import("./resolve-route-D_AbcmD6.js").then((n) => n.r);
27513
27513
  const channelId = resolveDiscordMessageChannelId({
@@ -38175,7 +38175,7 @@ async function monitorIMessageProvider(opts = {}) {
38175
38175
  }
38176
38176
  const msgText = (message.text ?? "").trim();
38177
38177
  if (msgText) {
38178
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-DjURYr3Z.js");
38178
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-DkALIxNO.js");
38179
38179
  if (isAbortRequestText(msgText)) {
38180
38180
  const { resolveAgentRoute } = await import("./resolve-route-D_AbcmD6.js").then((n) => n.r);
38181
38181
  const route = resolveAgentRoute({
@@ -40856,7 +40856,7 @@ function createSignalEventHandler(deps) {
40856
40856
  const senderName = envelope.sourceName ?? senderDisplay;
40857
40857
  const messageId = typeof envelope.timestamp === "number" ? String(envelope.timestamp) : void 0;
40858
40858
  if (bodyText) {
40859
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-DjURYr3Z.js");
40859
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-DkALIxNO.js");
40860
40860
  if (isAbortRequestText(bodyText)) {
40861
40861
  const { resolveAgentRoute } = await import("./resolve-route-D_AbcmD6.js").then((n) => n.r);
40862
40862
  const route = resolveAgentRoute({
@@ -44319,7 +44319,7 @@ function createSlackMessageHandler(params) {
44319
44319
  if (ctx.markMessageSeen(message.channel, message.ts)) return;
44320
44320
  const rawText = (message.text ?? "").trim();
44321
44321
  if (rawText) {
44322
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-DjURYr3Z.js");
44322
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-DkALIxNO.js");
44323
44323
  if (isAbortRequestText(rawText)) {
44324
44324
  const { resolveAgentRoute } = await import("./resolve-route-D_AbcmD6.js").then((n) => n.r);
44325
44325
  const route = resolveAgentRoute({
@@ -48930,7 +48930,7 @@ const registerTelegramHandlers = ({ cfg, accountId, bot, opts, runtime, mediaMax
48930
48930
  const { ctx, msg, chatId, resolvedThreadId, storeAllowFrom, sendOversizeWarning, oversizeLogMessage } = params;
48931
48931
  const text = typeof msg.text === "string" ? msg.text : void 0;
48932
48932
  if (text) {
48933
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-DjURYr3Z.js");
48933
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-DkALIxNO.js");
48934
48934
  if (isAbortRequestText(text)) {
48935
48935
  const senderId = msg.from?.id ? String(msg.from.id) : "";
48936
48936
  if (!senderId || !allowFrom?.length || allowFrom.includes(senderId)) {
@@ -52424,7 +52424,7 @@ function loadWebLoginQr() {
52424
52424
  return webLoginQrPromise;
52425
52425
  }
52426
52426
  function loadWebChannel() {
52427
- webChannelPromise ??= import("./web-CiVRDtta.js");
52427
+ webChannelPromise ??= import("./web-C-13ua3w.js");
52428
52428
  return webChannelPromise;
52429
52429
  }
52430
52430
  function loadWhatsAppActions() {
@@ -70325,6 +70325,20 @@ function resolveSilentReplyFallbackText(params) {
70325
70325
  if (!fallback) return params.text;
70326
70326
  return fallback;
70327
70327
  }
70328
+ function hasAssistantToolCallBlock(message) {
70329
+ const content = message.content;
70330
+ if (!Array.isArray(content)) return false;
70331
+ return content.some((block) => {
70332
+ if (!block || typeof block !== "object") return false;
70333
+ const type = block.type;
70334
+ return type === "toolCall" || type === "tool_call";
70335
+ });
70336
+ }
70337
+ function isAssistantToolPlanningMessage(message) {
70338
+ const stopReason = message.stopReason;
70339
+ if (stopReason === "toolUse" || stopReason === "tool_use") return true;
70340
+ return hasAssistantToolCallBlock(message);
70341
+ }
70328
70342
  function handleMessageStart(ctx, evt) {
70329
70343
  if (evt.message?.role !== "assistant") return;
70330
70344
  ctx.resetAssistantMessageState(ctx.state.assistantTexts.length);
@@ -70478,6 +70492,7 @@ function handleMessageEnd(ctx, evt) {
70478
70492
  }),
70479
70493
  messagingToolSentTexts: ctx.state.messagingToolSentTexts
70480
70494
  });
70495
+ const suppressToolPlanningOutput = isAssistantToolPlanningMessage(assistantMessage);
70481
70496
  const rawThinking = ctx.state.includeReasoning || ctx.state.streamReasoning ? extractAssistantThinking(assistantMessage) || extractThinkingFromTaggedText(rawText) : "";
70482
70497
  const formattedReasoning = rawThinking ? formatReasoningMessage(rawThinking) : "";
70483
70498
  const trimmedText = text.trim();
@@ -70495,7 +70510,7 @@ function handleMessageEnd(ctx, evt) {
70495
70510
  hasMedia = Boolean(mediaUrls && mediaUrls.length > 0);
70496
70511
  }
70497
70512
  }
70498
- if (!ctx.state.emittedAssistantUpdate && (cleanedText || hasMedia)) {
70513
+ if (!ctx.state.emittedAssistantUpdate && !suppressToolPlanningOutput && (cleanedText || hasMedia)) {
70499
70514
  emitAgentEvent({
70500
70515
  runId: ctx.params.runId,
70501
70516
  stream: "assistant",
@@ -70518,12 +70533,12 @@ function handleMessageEnd(ctx, evt) {
70518
70533
  const addedDuringMessage = ctx.state.assistantTexts.length > ctx.state.assistantTextBaseline;
70519
70534
  const chunkerHasBuffered = ctx.blockChunker?.hasBuffered() ?? false;
70520
70535
  ctx.finalizeAssistantTexts({
70521
- text,
70536
+ text: suppressToolPlanningOutput ? "" : text,
70522
70537
  addedDuringMessage,
70523
70538
  chunkerHasBuffered
70524
70539
  });
70525
70540
  const onBlockReply = ctx.params.onBlockReply;
70526
- const shouldEmitReasoning = Boolean(ctx.state.includeReasoning && formattedReasoning && onBlockReply && formattedReasoning !== ctx.state.lastReasoningSent);
70541
+ const shouldEmitReasoning = Boolean(!suppressToolPlanningOutput && ctx.state.includeReasoning && formattedReasoning && onBlockReply && formattedReasoning !== ctx.state.lastReasoningSent);
70527
70542
  const shouldEmitReasoningBeforeAnswer = shouldEmitReasoning && ctx.state.blockReplyBreak === "message_end" && !addedDuringMessage;
70528
70543
  const maybeEmitReasoning = () => {
70529
70544
  if (!shouldEmitReasoning || !formattedReasoning) return;
@@ -70534,7 +70549,7 @@ function handleMessageEnd(ctx, evt) {
70534
70549
  });
70535
70550
  };
70536
70551
  if (shouldEmitReasoningBeforeAnswer) maybeEmitReasoning();
70537
- if ((ctx.state.blockReplyBreak === "message_end" || (ctx.blockChunker ? ctx.blockChunker.hasBuffered() : ctx.state.blockBuffer.length > 0)) && text && onBlockReply) {
70552
+ if ((ctx.state.blockReplyBreak === "message_end" || (ctx.blockChunker ? ctx.blockChunker.hasBuffered() : ctx.state.blockBuffer.length > 0)) && !suppressToolPlanningOutput && text && onBlockReply) {
70538
70553
  if (ctx.blockChunker?.hasBuffered()) {
70539
70554
  ctx.blockChunker.drain({
70540
70555
  force: true,
@@ -70559,8 +70574,8 @@ function handleMessageEnd(ctx, evt) {
70559
70574
  }
70560
70575
  }
70561
70576
  if (!shouldEmitReasoningBeforeAnswer) maybeEmitReasoning();
70562
- if (ctx.state.streamReasoning && rawThinking) ctx.emitReasoningStream(rawThinking);
70563
- if (ctx.state.blockReplyBreak === "text_end" && onBlockReply) {
70577
+ if (!suppressToolPlanningOutput && ctx.state.streamReasoning && rawThinking) ctx.emitReasoningStream(rawThinking);
70578
+ if (!suppressToolPlanningOutput && ctx.state.blockReplyBreak === "text_end" && onBlockReply) {
70564
70579
  const tailResult = ctx.consumeReplyDirectives("", { final: true });
70565
70580
  if (tailResult) {
70566
70581
  const { text: cleanedText, mediaUrls, audioAsVoice, replyToId, replyToTag, replyToCurrent } = tailResult;
@@ -75163,7 +75178,7 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
75163
75178
  };
75164
75179
  const arg = body.slice(6).trim();
75165
75180
  if (arg === "status" || arg === "") {
75166
- const { antonStatus } = await import("./anton-Dwp3KlQs.js").then((n) => n.r);
75181
+ const { antonStatus } = await import("./anton-B4KXAf54.js").then((n) => n.r);
75167
75182
  const lines = [];
75168
75183
  await antonStatus({
75169
75184
  log: (msg) => lines.push(msg),
@@ -75179,7 +75194,7 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
75179
75194
  return { shouldContinue: false };
75180
75195
  }
75181
75196
  if (arg === "stop") {
75182
- const { antonStop } = await import("./anton-Dwp3KlQs.js").then((n) => n.r);
75197
+ const { antonStop } = await import("./anton-B4KXAf54.js").then((n) => n.r);
75183
75198
  const lines = [];
75184
75199
  await antonStop({
75185
75200
  log: (msg) => lines.push(msg),
@@ -75217,8 +75232,8 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
75217
75232
  await sendProgress(replyCtx, text);
75218
75233
  return { shouldContinue: false };
75219
75234
  }
75220
- const { runAnton, formatProgressMessage } = await import("./anton-Dwp3KlQs.js").then((n) => n.r);
75221
- const { createDefaultDeps } = await import("./deps-SgroTRjf.js").then((n) => n.r);
75235
+ const { runAnton, formatProgressMessage } = await import("./anton-B4KXAf54.js").then((n) => n.r);
75236
+ const { createDefaultDeps } = await import("./deps-BrSKLsz0.js").then((n) => n.r);
75222
75237
  const { createNonExitingRuntime } = await import("./runtime-44j_X4Y6.js").then((n) => n.r);
75223
75238
  const runtime = createNonExitingRuntime();
75224
75239
  const deps = createDefaultDeps();
@@ -25,7 +25,7 @@ import "./logging-Bgrm4o7g.js";
25
25
  import "./auth-store-D9BmR4S6.js";
26
26
  import "./send-CuXAB8LA.js";
27
27
  import "./send-lf9ld4To.js";
28
- import "./subagent-registry-l7V3IoLe.js";
28
+ import "./subagent-registry-DW1LK5cG.js";
29
29
  import "./paths-CC17i2eK.js";
30
30
  import "./chat-envelope-Dedaetiq.js";
31
31
  import "./client-udFMSDes.js";
@@ -108,15 +108,15 @@ import "./cli-utils-BfsDuRZS.js";
108
108
  import "./help-format-CldHB7lS.js";
109
109
  import "./progress-B76RkFx7.js";
110
110
  import "./replies-CmTF3tWU.js";
111
- import "./deps-CfQJK6WP.js";
111
+ import "./deps-Bq61L28a.js";
112
112
  import "./onboard-helpers-_Uk9P3FF.js";
113
113
  import "./prompt-style-XmK49QYK.js";
114
114
  import "./pairing-labels-CLdV_RlM.js";
115
115
  import { t as ensureIdleHandsCliOnPath } from "./path-env-cPX3lugV.js";
116
116
  import "./note-C2HHth6G.js";
117
- import { t as ensurePluginRegistryLoaded } from "./plugin-registry-7DC8-ZZJ.js";
117
+ import { t as ensurePluginRegistryLoaded } from "./plugin-registry-BIerZvsa.js";
118
118
  import { t as assertSupportedRuntime } from "./runtime-guard-DTSD0F6o.js";
119
- import { t as emitCliBanner } from "./banner-ascZEgmt.js";
119
+ import { t as emitCliBanner } from "./banner-BxyoIRj1.js";
120
120
  import "./doctor-config-flow-PE4yVE_b.js";
121
121
  import { n as ensureConfigReady } from "./config-guard-CWaCycDU.js";
122
122
  import process$1 from "node:process";
@@ -131,7 +131,7 @@ const routeHealth = {
131
131
  const verbose = getVerboseFlag(argv, { includeDebug: true });
132
132
  const timeoutMs = getPositiveIntFlagValue(argv, "--timeout");
133
133
  if (timeoutMs === null) return false;
134
- const { healthCommand } = await import("./health-F0lUmHT3.js").then((n) => n.i);
134
+ const { healthCommand } = await import("./health-BV8l2AT8.js").then((n) => n.i);
135
135
  await healthCommand({
136
136
  json,
137
137
  timeoutMs,
@@ -151,7 +151,7 @@ const routeStatus = {
151
151
  const verbose = getVerboseFlag(argv, { includeDebug: true });
152
152
  const timeoutMs = getPositiveIntFlagValue(argv, "--timeout");
153
153
  if (timeoutMs === null) return false;
154
- const { statusCommand } = await import("./status-D9fTji6b.js").then((n) => n.t);
154
+ const { statusCommand } = await import("./status-CyzO0TGy.js").then((n) => n.t);
155
155
  await statusCommand({
156
156
  json,
157
157
  deep,
@@ -190,7 +190,7 @@ const routeAgentsList = {
190
190
  run: async (argv) => {
191
191
  const json = hasFlag(argv, "--json");
192
192
  const bindings = hasFlag(argv, "--bindings");
193
- const { agentsListCommand } = await import("./agents-BEuHL8Zr.js").then((n) => n.t);
193
+ const { agentsListCommand } = await import("./agents-BVYgk2uc.js").then((n) => n.t);
194
194
  await agentsListCommand({
195
195
  json,
196
196
  bindings
@@ -261,7 +261,7 @@ const routes = [
261
261
  const pathArg = getCommandPositionals(argv)[2];
262
262
  if (!pathArg) return false;
263
263
  const json = hasFlag(argv, "--json");
264
- const { runConfigGet } = await import("./config-cli-CEehCZa0.js");
264
+ const { runConfigGet } = await import("./config-cli-Cunf6ZG_.js");
265
265
  await runConfigGet({
266
266
  path: pathArg,
267
267
  json
@@ -274,7 +274,7 @@ const routes = [
274
274
  run: async (argv) => {
275
275
  const pathArg = getCommandPositionals(argv)[2];
276
276
  if (!pathArg) return false;
277
- const { runConfigUnset } = await import("./config-cli-CEehCZa0.js");
277
+ const { runConfigUnset } = await import("./config-cli-Cunf6ZG_.js");
278
278
  await runConfigUnset({ path: pathArg });
279
279
  return true;
280
280
  }
@@ -288,7 +288,7 @@ const routes = [
288
288
  const local = hasFlag(argv, "--local");
289
289
  const json = hasFlag(argv, "--json");
290
290
  const plain = hasFlag(argv, "--plain");
291
- const { modelsListCommand } = await import("./models-awPyoUpk.js").then((n) => n.t);
291
+ const { modelsListCommand } = await import("./models-CbuRFugK.js").then((n) => n.t);
292
292
  await modelsListCommand({
293
293
  all,
294
294
  local,
@@ -319,7 +319,7 @@ const routes = [
319
319
  const plain = hasFlag(argv, "--plain");
320
320
  const check = hasFlag(argv, "--check");
321
321
  const probe = hasFlag(argv, "--probe");
322
- const { modelsStatusCommand } = await import("./models-awPyoUpk.js").then((n) => n.t);
322
+ const { modelsStatusCommand } = await import("./models-CbuRFugK.js").then((n) => n.t);
323
323
  await modelsStatusCommand({
324
324
  json,
325
325
  plain,
@@ -397,7 +397,7 @@ async function runCli(argv = process$1.argv) {
397
397
  assertSupportedRuntime();
398
398
  if (await tryRouteCli(normalizedArgv)) return;
399
399
  enableConsoleCapture();
400
- const { buildProgram } = await import("./program-VV9u5uPU.js");
400
+ const { buildProgram } = await import("./program-hlrBo5Ce.js");
401
401
  const program = buildProgram();
402
402
  installUnhandledRejectionHandler();
403
403
  process$1.on("uncaughtException", (error) => {
@@ -410,10 +410,10 @@ async function runCli(argv = process$1.argv) {
410
410
  const { getProgramContext } = await import("./program-context-BrqeiWcA.js").then((n) => n.n);
411
411
  const ctx = getProgramContext(program);
412
412
  if (ctx) {
413
- const { registerCoreCliByName } = await import("./command-registry-Bs5y1F2v.js").then((n) => n.t);
413
+ const { registerCoreCliByName } = await import("./command-registry-Ct2rGje_.js").then((n) => n.t);
414
414
  await registerCoreCliByName(program, ctx, primary, parseArgv);
415
415
  }
416
- const { registerSubCliByName } = await import("./register.subclis-BEDdoF6M.js").then((n) => n.a);
416
+ const { registerSubCliByName } = await import("./register.subclis-Bnq9Bi9p.js").then((n) => n.a);
417
417
  await registerSubCliByName(program, primary);
418
418
  }
419
419
  if (!shouldSkipPluginCommandRegistration({
@@ -421,7 +421,7 @@ async function runCli(argv = process$1.argv) {
421
421
  primary,
422
422
  hasBuiltinPrimary: primary !== null && program.commands.some((command) => command.name() === primary)
423
423
  })) {
424
- const { registerPluginCliCommands } = await import("./cli-HkluaDt1.js");
424
+ const { registerPluginCliCommands } = await import("./cli-Lk-tSEzq.js");
425
425
  const { loadConfig } = await import("./auth-profiles-02PVCKaE.js").then((n) => n.D);
426
426
  registerPluginCliCommands(program, loadConfig());
427
427
  }
@@ -4,7 +4,7 @@ import { A as shouldLogVerbose, D as logVerbose, K as resolvePreferredIdleHandsT
4
4
  import { C as requireApiKey, J as mergeInboundPathRoots, K as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, L as loadConfig, Y as resolveIMessageAttachmentRoots, c as normalizeProviderId, fn as resolveIdleHandsAgentDir, h as normalizeGoogleModelId, q as isInboundPathAllowed, w as resolveApiKeyForProvider } from "./model-selection-BCfCq125.js";
5
5
  import { t as normalizeChatType } from "./chat-type-DLInEbxd.js";
6
6
  import { c as detectMime, f as isAudioFileName, m as kindFromMime, u as getFileExtension } from "./image-ops-BDG-MYYV.js";
7
- import { t as describeImageWithModel, w as ensureIdleHandsModelsJson } from "./image-Cu288YpA.js";
7
+ import { t as describeImageWithModel, w as ensureIdleHandsModelsJson } from "./image-JsjsSvBI.js";
8
8
  import { n as collectProviderApiKeysForExecution, r as executeWithApiKeyRotation, t as parseGeminiAuth } from "./gemini-auth-G-whJIrc.js";
9
9
  import { n as fetchWithTimeout } from "./fetch-timeout-B7YMixjc.js";
10
10
  import { t as fetchWithSsrFGuard } from "./fetch-guard-BdCPmLBP.js";
@@ -1,7 +1,7 @@
1
1
  import "./paths-Cn44w-EB.js";
2
2
  import "./utils-CXzXXV2o.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import { Bn as buildOutboundSessionContext, Bt as createOutboundSendDeps, Cr as enqueueSystemEvent, Dr as requestHeartbeatNow, E as resolveGatewaySessionStoreTarget, Lt as resolveOutboundTarget, T as pruneLegacyStoreKeys, jt as agentCommand, w as loadSessionEntry } from "./reply-vDM22Gez.js";
4
+ import { Bn as buildOutboundSessionContext, Bt as createOutboundSendDeps, Cr as enqueueSystemEvent, Dr as requestHeartbeatNow, E as resolveGatewaySessionStoreTarget, Lt as resolveOutboundTarget, T as pruneLegacyStoreKeys, jt as agentCommand, w as loadSessionEntry } from "./reply-DUE8raq5.js";
5
5
  import "./agent-scope-RA0zXRpu.js";
6
6
  import "./subsystem-CGZX2PBV.js";
7
7
  import { n as defaultRuntime } from "./runtime-44j_X4Y6.js";
@@ -103,7 +103,7 @@ import "./resolve-route-D_AbcmD6.js";
103
103
  import "./replies-Bt95GAew.js";
104
104
  import "./skill-commands-23SP2OFQ.js";
105
105
  import "./workspace-dirs-SsExQ3Bz.js";
106
- import "./deps-SgroTRjf.js";
106
+ import "./deps-BrSKLsz0.js";
107
107
  import "./plugin-auto-enable-DyNeRjEL.js";
108
108
  import "./channel-selection-ZxRkxpuF.js";
109
109
  import "./outbound-attachment-Bot3bRnK.js";
@@ -116,7 +116,7 @@ import "./pairing-labels-DWdqhnXA.js";
116
116
  import "./server-lifecycle-DMOhxIYC.js";
117
117
  import "./stagger-rQoQSWkz.js";
118
118
  import "./system-run-command-P86Xjnl8.js";
119
- import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-Cou7KeCj.js";
119
+ import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-DGYpjf9d.js";
120
120
  import { randomUUID } from "node:crypto";
121
121
 
122
122
  //#region src/gateway/server-node-events.ts
@@ -25,7 +25,7 @@ import "./logging-Bgrm4o7g.js";
25
25
  import "./auth-store-D9BmR4S6.js";
26
26
  import "./send-CuXAB8LA.js";
27
27
  import "./send-lf9ld4To.js";
28
- import { A as createOutboundSendDeps, An as requestHeartbeatNow, E as agentCommand, En as enqueueSystemEvent, bn as buildOutboundSessionContext, ht as resolveOutboundTarget } from "./subagent-registry-l7V3IoLe.js";
28
+ import { A as createOutboundSendDeps, An as requestHeartbeatNow, E as agentCommand, En as enqueueSystemEvent, bn as buildOutboundSessionContext, ht as resolveOutboundTarget } from "./subagent-registry-DW1LK5cG.js";
29
29
  import "./paths-CC17i2eK.js";
30
30
  import "./chat-envelope-Dedaetiq.js";
31
31
  import "./client-udFMSDes.js";
@@ -108,11 +108,11 @@ import "./cli-utils-BfsDuRZS.js";
108
108
  import "./help-format-CldHB7lS.js";
109
109
  import "./progress-B76RkFx7.js";
110
110
  import "./replies-CmTF3tWU.js";
111
- import "./deps-CfQJK6WP.js";
111
+ import "./deps-Bq61L28a.js";
112
112
  import "./onboard-helpers-_Uk9P3FF.js";
113
113
  import "./prompt-style-XmK49QYK.js";
114
114
  import "./pairing-labels-CLdV_RlM.js";
115
- import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-CGUwMKT-.js";
115
+ import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-fdjNrWTc.js";
116
116
  import { randomUUID } from "node:crypto";
117
117
 
118
118
  //#region src/gateway/server-node-events.ts
@@ -1,6 +1,6 @@
1
1
  import { u as resolveGatewayPort } from "./paths-Cn44w-EB.js";
2
2
  import { B as theme, k as info, z as isRich } from "./utils-CXzXXV2o.js";
3
- import { D as resolveSessionModelRef, Er as peekSystemEvents, G as readRestartSentinel, K as summarizeRestartSentinel, Zt as resolveContextTokensForModel, b as classifySessionKey, bt as formatUsageReportLines, c as buildChannelSummary, l as buildChannelAccountSnapshot, u as formatChannelAllowFrom, x as listAgentsForGateway, yt as loadProviderUsageSummary } from "./reply-vDM22Gez.js";
3
+ import { D as resolveSessionModelRef, Er as peekSystemEvents, G as readRestartSentinel, K as summarizeRestartSentinel, Zt as resolveContextTokensForModel, b as classifySessionKey, bt as formatUsageReportLines, c as buildChannelSummary, l as buildChannelAccountSnapshot, u as formatChannelAllowFrom, x as listAgentsForGateway, yt as loadProviderUsageSummary } from "./reply-DUE8raq5.js";
4
4
  import { u as resolveAgentWorkspaceDir } from "./agent-scope-RA0zXRpu.js";
5
5
  import { w as parseAgentSessionKey } from "./session-key-Cuihcz_O.js";
6
6
  import { t as resolveIdleHandsPackageRoot } from "./idlehands-root-B8cUs-5M.js";
@@ -29,7 +29,7 @@ import { t as formatRuntimeStatusWithDetails } from "./runtime-status-D7pLXkNs.j
29
29
  import { t as readLastGatewayErrorLine } from "./diagnostics-DmZbQ8Nc.js";
30
30
  import { t as renderTable } from "./table-B9AmL3M1.js";
31
31
  import { i as resolveGatewayProbeAuth$1, s as probeGateway, t as runSecurityAudit } from "./audit-k9xjNToB.js";
32
- import { o as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-DXbufVL-.js";
32
+ import { o as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-CErhWLEK.js";
33
33
  import { _ as resolveUpdateChannelDisplay, a as formatGitInstallLabel, h as normalizeUpdateChannel, n as checkUpdateStatus, t as resolveDefaultChannelAccountContext } from "./channel-account-context-CDbY5AIr.js";
34
34
  import { t as resolveNodeService } from "./node-service-C3vyxHLA.js";
35
35
  import { n as redactSecrets, t as formatGatewayAuthUsed } from "./format-BK5XIv_A.js";
@@ -10,7 +10,7 @@ import { r as VERSION } from "./env-vars-I4LX5XSX.js";
10
10
  import { t as buildWorkspaceSkillStatus } from "./skills-status-DEWCCZdI.js";
11
11
  import { Z as resolveFreshSessionTotalTokens, c as loadSessionStore, nt as resolveMainSessionKey } from "./sessions-C1PbgPkg.js";
12
12
  import { n as listChannelPlugins } from "./plugins-CCrfZ49T.js";
13
- import { Cn as buildChannelAccountSnapshot, Dt as summarizeRestartSentinel, Et as readRestartSentinel, Sn as buildChannelSummary, gn as formatUsageReportLines, hn as loadProviderUsageSummary, kn as peekSystemEvents, wn as formatChannelAllowFrom } from "./subagent-registry-l7V3IoLe.js";
13
+ import { Cn as buildChannelAccountSnapshot, Dt as summarizeRestartSentinel, Et as readRestartSentinel, Sn as buildChannelSummary, gn as formatUsageReportLines, hn as loadProviderUsageSummary, kn as peekSystemEvents, wn as formatChannelAllowFrom } from "./subagent-registry-DW1LK5cG.js";
14
14
  import { u as resolveStorePath } from "./paths-CC17i2eK.js";
15
15
  import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-B9uIa0hd.js";
16
16
  import { o as getTailnetHostname, s as readTailscaleStatusJson } from "./tailscale-CQwGqfET.js";
@@ -30,7 +30,7 @@ import { t as formatRuntimeStatusWithDetails } from "./runtime-status-Om381vyM.j
30
30
  import { t as readLastGatewayErrorLine } from "./diagnostics-BzCL1AMI.js";
31
31
  import { t as renderTable } from "./table-aJzHv5Oe.js";
32
32
  import { i as resolveGatewayProbeAuth$1, s as probeGateway, t as runSecurityAudit } from "./audit-CdwW3NUX.js";
33
- import { o as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-F0lUmHT3.js";
33
+ import { o as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-BV8l2AT8.js";
34
34
  import { _ as resolveUpdateChannelDisplay, a as formatGitInstallLabel, h as normalizeUpdateChannel, n as checkUpdateStatus, t as resolveDefaultChannelAccountContext } from "./channel-account-context-ofowt_yq.js";
35
35
  import { t as resolveNodeService } from "./node-service-v7Nz7h4D.js";
36
36
  import { n as redactSecrets, t as formatGatewayAuthUsed } from "./format-oh9Nicqr.js";
@@ -109,7 +109,7 @@ import { a as resolveSubagentToolPolicy, c as readStoreAllowFromForDmPolicy, d a
109
109
  import { t as makeProxyFetch } from "./proxy-GJkoUC6V.js";
110
110
  import { n as isDangerousNameMatchingEnabled } from "./dangerous-name-matching-DhuP2lHs.js";
111
111
  import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-CmTF3tWU.js";
112
- import { i as createOutboundSendDepsFromCliSource, t as createDefaultDeps } from "./deps-CfQJK6WP.js";
112
+ import { i as createOutboundSendDepsFromCliSource, t as createDefaultDeps } from "./deps-Bq61L28a.js";
113
113
  import { r as detectBinary } from "./onboard-helpers-_Uk9P3FF.js";
114
114
  import { t as resolvePairingIdLabel } from "./pairing-labels-CLdV_RlM.js";
115
115
  import { createRequire } from "node:module";
@@ -16870,7 +16870,7 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
16870
16870
  };
16871
16871
  const arg = body.slice(6).trim();
16872
16872
  if (arg === "status" || arg === "") {
16873
- const { antonStatus } = await import("./anton-F-OwKPyb.js").then((n) => n.r);
16873
+ const { antonStatus } = await import("./anton-C8M2UhOH.js").then((n) => n.r);
16874
16874
  const lines = [];
16875
16875
  await antonStatus({
16876
16876
  log: (msg) => lines.push(msg),
@@ -16886,7 +16886,7 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
16886
16886
  return { shouldContinue: false };
16887
16887
  }
16888
16888
  if (arg === "stop") {
16889
- const { antonStop } = await import("./anton-F-OwKPyb.js").then((n) => n.r);
16889
+ const { antonStop } = await import("./anton-C8M2UhOH.js").then((n) => n.r);
16890
16890
  const lines = [];
16891
16891
  await antonStop({
16892
16892
  log: (msg) => lines.push(msg),
@@ -16924,8 +16924,8 @@ const handleAntonCommand = async (params, _allowTextCommands) => {
16924
16924
  await sendProgress(replyCtx, text);
16925
16925
  return { shouldContinue: false };
16926
16926
  }
16927
- const { runAnton, formatProgressMessage } = await import("./anton-F-OwKPyb.js").then((n) => n.r);
16928
- const { createDefaultDeps } = await import("./deps-CfQJK6WP.js").then((n) => n.r);
16927
+ const { runAnton, formatProgressMessage } = await import("./anton-C8M2UhOH.js").then((n) => n.r);
16928
+ const { createDefaultDeps } = await import("./deps-Bq61L28a.js").then((n) => n.r);
16929
16929
  const { createNonExitingRuntime } = await import("./runtime-CgcH_FLo.js").then((n) => n.r);
16930
16930
  const runtime = createNonExitingRuntime();
16931
16931
  const deps = createDefaultDeps();
@@ -49595,7 +49595,7 @@ function createDiscordMessageHandler(params) {
49595
49595
  try {
49596
49596
  const messageText = resolveDiscordMessageText(data.message)?.trim();
49597
49597
  if (messageText) {
49598
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-BCRW03p2.js");
49598
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-Cl_1fWgA.js");
49599
49599
  if (isAbortRequestText(messageText)) {
49600
49600
  const { resolveAgentRoute } = await import("./resolve-route-VUTvr63H.js").then((n) => n.r);
49601
49601
  const channelId = resolveDiscordMessageChannelId({
@@ -57068,7 +57068,7 @@ async function monitorIMessageProvider(opts = {}) {
57068
57068
  }
57069
57069
  const msgText = (message.text ?? "").trim();
57070
57070
  if (msgText) {
57071
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-BCRW03p2.js");
57071
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-Cl_1fWgA.js");
57072
57072
  if (isAbortRequestText(msgText)) {
57073
57073
  const { resolveAgentRoute } = await import("./resolve-route-VUTvr63H.js").then((n) => n.r);
57074
57074
  const route = resolveAgentRoute({
@@ -59673,7 +59673,7 @@ function createSignalEventHandler(deps) {
59673
59673
  const senderName = envelope.sourceName ?? senderDisplay;
59674
59674
  const messageId = typeof envelope.timestamp === "number" ? String(envelope.timestamp) : void 0;
59675
59675
  if (bodyText) {
59676
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-BCRW03p2.js");
59676
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-Cl_1fWgA.js");
59677
59677
  if (isAbortRequestText(bodyText)) {
59678
59678
  const { resolveAgentRoute } = await import("./resolve-route-VUTvr63H.js").then((n) => n.r);
59679
59679
  const route = resolveAgentRoute({
@@ -63062,7 +63062,7 @@ function createSlackMessageHandler(params) {
63062
63062
  if (ctx.markMessageSeen(message.channel, message.ts)) return;
63063
63063
  const rawText = (message.text ?? "").trim();
63064
63064
  if (rawText) {
63065
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-BCRW03p2.js");
63065
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-Cl_1fWgA.js");
63066
63066
  if (isAbortRequestText(rawText)) {
63067
63067
  const { resolveAgentRoute } = await import("./resolve-route-VUTvr63H.js").then((n) => n.r);
63068
63068
  const route = resolveAgentRoute({
@@ -65256,7 +65256,7 @@ const registerTelegramHandlers = ({ cfg, accountId, bot, opts, runtime, mediaMax
65256
65256
  const { ctx, msg, chatId, resolvedThreadId, storeAllowFrom, sendOversizeWarning, oversizeLogMessage } = params;
65257
65257
  const text = typeof msg.text === "string" ? msg.text : void 0;
65258
65258
  if (text) {
65259
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-BCRW03p2.js");
65259
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-Cl_1fWgA.js");
65260
65260
  if (isAbortRequestText(text)) {
65261
65261
  const senderId = msg.from?.id ? String(msg.from.id) : "";
65262
65262
  if (!senderId || !allowFrom?.length || allowFrom.includes(senderId)) {
@@ -68750,7 +68750,7 @@ function loadWebLoginQr() {
68750
68750
  return webLoginQrPromise;
68751
68751
  }
68752
68752
  function loadWebChannel() {
68753
- webChannelPromise ??= import("./web-bCfwH31U.js");
68753
+ webChannelPromise ??= import("./web-CI1Ye0j8.js");
68754
68754
  return webChannelPromise;
68755
68755
  }
68756
68756
  function loadWhatsAppActions() {
@@ -75512,6 +75512,20 @@ function resolveSilentReplyFallbackText(params) {
75512
75512
  if (!fallback) return params.text;
75513
75513
  return fallback;
75514
75514
  }
75515
+ function hasAssistantToolCallBlock(message) {
75516
+ const content = message.content;
75517
+ if (!Array.isArray(content)) return false;
75518
+ return content.some((block) => {
75519
+ if (!block || typeof block !== "object") return false;
75520
+ const type = block.type;
75521
+ return type === "toolCall" || type === "tool_call";
75522
+ });
75523
+ }
75524
+ function isAssistantToolPlanningMessage(message) {
75525
+ const stopReason = message.stopReason;
75526
+ if (stopReason === "toolUse" || stopReason === "tool_use") return true;
75527
+ return hasAssistantToolCallBlock(message);
75528
+ }
75515
75529
  function handleMessageStart(ctx, evt) {
75516
75530
  if (evt.message?.role !== "assistant") return;
75517
75531
  ctx.resetAssistantMessageState(ctx.state.assistantTexts.length);
@@ -75665,6 +75679,7 @@ function handleMessageEnd(ctx, evt) {
75665
75679
  }),
75666
75680
  messagingToolSentTexts: ctx.state.messagingToolSentTexts
75667
75681
  });
75682
+ const suppressToolPlanningOutput = isAssistantToolPlanningMessage(assistantMessage);
75668
75683
  const rawThinking = ctx.state.includeReasoning || ctx.state.streamReasoning ? extractAssistantThinking(assistantMessage) || extractThinkingFromTaggedText(rawText) : "";
75669
75684
  const formattedReasoning = rawThinking ? formatReasoningMessage(rawThinking) : "";
75670
75685
  const trimmedText = text.trim();
@@ -75682,7 +75697,7 @@ function handleMessageEnd(ctx, evt) {
75682
75697
  hasMedia = Boolean(mediaUrls && mediaUrls.length > 0);
75683
75698
  }
75684
75699
  }
75685
- if (!ctx.state.emittedAssistantUpdate && (cleanedText || hasMedia)) {
75700
+ if (!ctx.state.emittedAssistantUpdate && !suppressToolPlanningOutput && (cleanedText || hasMedia)) {
75686
75701
  emitAgentEvent({
75687
75702
  runId: ctx.params.runId,
75688
75703
  stream: "assistant",
@@ -75705,12 +75720,12 @@ function handleMessageEnd(ctx, evt) {
75705
75720
  const addedDuringMessage = ctx.state.assistantTexts.length > ctx.state.assistantTextBaseline;
75706
75721
  const chunkerHasBuffered = ctx.blockChunker?.hasBuffered() ?? false;
75707
75722
  ctx.finalizeAssistantTexts({
75708
- text,
75723
+ text: suppressToolPlanningOutput ? "" : text,
75709
75724
  addedDuringMessage,
75710
75725
  chunkerHasBuffered
75711
75726
  });
75712
75727
  const onBlockReply = ctx.params.onBlockReply;
75713
- const shouldEmitReasoning = Boolean(ctx.state.includeReasoning && formattedReasoning && onBlockReply && formattedReasoning !== ctx.state.lastReasoningSent);
75728
+ const shouldEmitReasoning = Boolean(!suppressToolPlanningOutput && ctx.state.includeReasoning && formattedReasoning && onBlockReply && formattedReasoning !== ctx.state.lastReasoningSent);
75714
75729
  const shouldEmitReasoningBeforeAnswer = shouldEmitReasoning && ctx.state.blockReplyBreak === "message_end" && !addedDuringMessage;
75715
75730
  const maybeEmitReasoning = () => {
75716
75731
  if (!shouldEmitReasoning || !formattedReasoning) return;
@@ -75721,7 +75736,7 @@ function handleMessageEnd(ctx, evt) {
75721
75736
  });
75722
75737
  };
75723
75738
  if (shouldEmitReasoningBeforeAnswer) maybeEmitReasoning();
75724
- if ((ctx.state.blockReplyBreak === "message_end" || (ctx.blockChunker ? ctx.blockChunker.hasBuffered() : ctx.state.blockBuffer.length > 0)) && text && onBlockReply) {
75739
+ if ((ctx.state.blockReplyBreak === "message_end" || (ctx.blockChunker ? ctx.blockChunker.hasBuffered() : ctx.state.blockBuffer.length > 0)) && !suppressToolPlanningOutput && text && onBlockReply) {
75725
75740
  if (ctx.blockChunker?.hasBuffered()) {
75726
75741
  ctx.blockChunker.drain({
75727
75742
  force: true,
@@ -75746,8 +75761,8 @@ function handleMessageEnd(ctx, evt) {
75746
75761
  }
75747
75762
  }
75748
75763
  if (!shouldEmitReasoningBeforeAnswer) maybeEmitReasoning();
75749
- if (ctx.state.streamReasoning && rawThinking) ctx.emitReasoningStream(rawThinking);
75750
- if (ctx.state.blockReplyBreak === "text_end" && onBlockReply) {
75764
+ if (!suppressToolPlanningOutput && ctx.state.streamReasoning && rawThinking) ctx.emitReasoningStream(rawThinking);
75765
+ if (!suppressToolPlanningOutput && ctx.state.blockReplyBreak === "text_end" && onBlockReply) {
75751
75766
  const tailResult = ctx.consumeReplyDirectives("", { final: true });
75752
75767
  if (tailResult) {
75753
75768
  const { text: cleanedText, mediaUrls, audioAsVoice, replyToId, replyToTag, replyToCurrent } = tailResult;
@@ -27,7 +27,7 @@ import "./logging-Bgrm4o7g.js";
27
27
  import "./auth-store-D9BmR4S6.js";
28
28
  import "./send-CuXAB8LA.js";
29
29
  import "./send-lf9ld4To.js";
30
- import { Ot as trimLogTail } from "./subagent-registry-l7V3IoLe.js";
30
+ import { Ot as trimLogTail } from "./subagent-registry-DW1LK5cG.js";
31
31
  import "./paths-CC17i2eK.js";
32
32
  import "./chat-envelope-Dedaetiq.js";
33
33
  import "./client-udFMSDes.js";
@@ -112,7 +112,7 @@ import "./cli-utils-BfsDuRZS.js";
112
112
  import { t as formatHelpExamples } from "./help-format-CldHB7lS.js";
113
113
  import "./progress-B76RkFx7.js";
114
114
  import "./replies-CmTF3tWU.js";
115
- import "./deps-CfQJK6WP.js";
115
+ import "./deps-Bq61L28a.js";
116
116
  import "./onboard-helpers-_Uk9P3FF.js";
117
117
  import { n as stylePromptMessage } from "./prompt-style-XmK49QYK.js";
118
118
  import "./pairing-labels-CLdV_RlM.js";
@@ -123,9 +123,9 @@ import "./npm-registry-spec-BlFqJFsA.js";
123
123
  import "./skill-scanner-CdLElD51.js";
124
124
  import "./installs-8aQVDSI0.js";
125
125
  import "./channels-status-issues-Bi00z1aP.js";
126
- import { r as installCompletion } from "./completion-cli-BmHAqqY4.js";
127
- import "./register.subclis-BEDdoF6M.js";
128
- import "./command-registry-Bs5y1F2v.js";
126
+ import { r as installCompletion } from "./completion-cli-BVkper4z.js";
127
+ import "./register.subclis-Bnq9Bi9p.js";
128
+ import "./command-registry-Ct2rGje_.js";
129
129
  import "./program-context-BrqeiWcA.js";
130
130
  import "./daemon-install-helpers-DUHqeg5Y.js";
131
131
  import { r as parseSemver } from "./runtime-guard-DTSD0F6o.js";
@@ -136,18 +136,18 @@ import "./systemd-hints-D7r4FWhK.js";
136
136
  import { a as terminateStaleGatewayPids, i as renderRestartDiagnostics, o as waitForGatewayHealthyRestart, r as runDaemonRestart, s as runDaemonInstall } from "./daemon-cli-D-vzzB6U.js";
137
137
  import "./diagnostics-BzCL1AMI.js";
138
138
  import { t as renderTable } from "./table-aJzHv5Oe.js";
139
- import "./health-F0lUmHT3.js";
139
+ import "./health-BV8l2AT8.js";
140
140
  import "./control-ui-assets-B5haX6bT.js";
141
141
  import { _ as resolveUpdateChannelDisplay, c as DEFAULT_GIT_CHANNEL, d as channelToNpmTag, f as formatUpdateChannelLabel, g as resolveEffectiveUpdateChannel, h as normalizeUpdateChannel, i as fetchNpmTagVersion, l as DEFAULT_PACKAGE_CHANNEL, n as checkUpdateStatus, o as resolveNpmChannelTag, r as compareSemverStrings } from "./channel-account-context-ofowt_yq.js";
142
142
  import { i as resolveUpdateAvailability, n as formatUpdateOneLiner, t as formatUpdateAvailableHint } from "./status.update-BzUu2M5c.js";
143
- import { a as globalInstallArgs, c as readPackageVersion, i as detectGlobalInstallManagerForRoot, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, r as detectGlobalInstallManagerByPresence, s as readPackageName, t as runGatewayUpdate } from "./update-runner-BSsZSlwa.js";
143
+ import { a as globalInstallArgs, c as readPackageVersion, i as detectGlobalInstallManagerForRoot, n as cleanupGlobalRenameDirs, o as resolveGlobalPackageRoot, r as detectGlobalInstallManagerByPresence, s as readPackageName, t as runGatewayUpdate } from "./update-runner-ybEXKv6M.js";
144
144
  import "./logging-MF6Thoxk.js";
145
145
  import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from "./update-If9iCjgB.js";
146
146
  import "./doctor-config-flow-PE4yVE_b.js";
147
147
  import "./systemd-linger-Dx928sEF.js";
148
148
  import "./health-format-wax5NzZB.js";
149
- import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-BSqCn36X.js";
150
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-Cgl5S3K0.js";
149
+ import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-f40iKGOp.js";
150
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-CYeuHpzs.js";
151
151
  import { spawn, spawnSync } from "node:child_process";
152
152
  import os from "node:os";
153
153
  import path from "node:path";