@visorcraft/idlehands 4.0.11 → 4.0.13

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 (161) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/{agent-via-gateway-DFfeM1f8.js → agent-via-gateway-B7gDrTh2.js} +2 -2
  3. package/dist/{agent-via-gateway-8kOQMpw0.js → agent-via-gateway-C1akskt-.js} +1 -1
  4. package/dist/{agent-via-gateway-BmUiVvOs.js → agent-via-gateway-C9xTFnnb.js} +2 -2
  5. package/dist/{agent-via-gateway-CwNsKA2p.js → agent-via-gateway-Cq6YTkRw.js} +1 -1
  6. package/dist/{agents-FBXsuMx0.js → agents-BEWuTIwE.js} +4 -4
  7. package/dist/{agents.config-BeC7mTJ2.js → agents.config-cH3kcrKU.js} +1 -1
  8. package/dist/{agents.config-J5LaHyjZ.js → agents.config-s_1D920P.js} +1 -1
  9. package/dist/{anton-y_9cmetd.js → anton-Cs3aBMKq.js} +1 -1
  10. package/dist/{anton-_S2TvK6c.js → anton-DZGESeSl.js} +1 -1
  11. package/dist/{anton-BMJsNqqL.js → anton-bQ51g5Ec.js} +1 -1
  12. package/dist/{anton-CSPEUgVi.js → anton-gFIz387q.js} +1 -1
  13. package/dist/{auth-choice-Cxc76L50.js → auth-choice-CoDCd8IM.js} +1 -1
  14. package/dist/{auth-choice-DycYsq6V.js → auth-choice-Dunr1I8A.js} +1 -1
  15. package/dist/{banner--eQQx-18.js → banner-XXOWQkH8.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-DYzhL-Ra.js → channel-options-DcbnvkV8.js} +1 -1
  20. package/dist/{channel-options-E5FeI2sT.js → channel-options-JZ8UUgne.js} +1 -1
  21. package/dist/{channel-web-D1-7qqL3.js → channel-web-Dz8l9j3Z.js} +2 -2
  22. package/dist/{channel-web-d0g0MCG8.js → channel-web-Z-H-wjMO.js} +2 -2
  23. package/dist/{channels-cli-DYqCLYO8.js → channels-cli-DVTF8msL.js} +7 -7
  24. package/dist/{channels-cli-SHHAxfV7.js → channels-cli-F1TB2Ms2.js} +7 -7
  25. package/dist/{cli-Cg2smqR5.js → cli-CLfBho_N.js} +2 -2
  26. package/dist/{cli-CIJ_pp-W.js → cli-Cysh5mku.js} +2 -2
  27. package/dist/{command-registry-D_coG163.js → command-registry-BzM89IOr.js} +10 -10
  28. package/dist/{completion-cli-CAERO_KP.js → completion-cli-C5Y0omSs.js} +1 -1
  29. package/dist/{completion-cli-CTGLJrsU.js → completion-cli-CWl8tMGs.js} +2 -2
  30. package/dist/{config-cli-Ft-MoBA0.js → config-cli-DY7H5mxq.js} +1 -1
  31. package/dist/{config-cli-QKNRUury.js → config-cli-DrupHrLQ.js} +1 -1
  32. package/dist/{configure-Dp2SC2bd.js → configure-CEhvh4Tl.js} +83 -3
  33. package/dist/{configure-CSFuzRuG.js → configure-teHRuPU7.js} +83 -3
  34. package/dist/daemon-cli.js +6 -6
  35. package/dist/{deps-DMIwjElF.js → deps--Jd_1mvW.js} +1 -1
  36. package/dist/{deps-ruCIL6tu.js → deps-BuqRbUb-.js} +1 -1
  37. package/dist/{deps-CAYnlnre.js → deps-CEc0DzO7.js} +1 -1
  38. package/dist/{deps-DyhYyFzN.js → deps-DOKkEv5X.js} +1 -1
  39. package/dist/{doctor-completion-C4IaYTpf.js → doctor-completion-C47EWkPr.js} +1 -1
  40. package/dist/{doctor-completion-BTK69nw4.js → doctor-completion-jhxR4t3O.js} +1 -1
  41. package/dist/{emergency-stop-NRDPtN2X.js → emergency-stop-BDOqqnou.js} +2 -2
  42. package/dist/{emergency-stop-C4Nj0B8-.js → emergency-stop-C1Aq7hF2.js} +2 -2
  43. package/dist/{emergency-stop-BFA2JE99.js → emergency-stop-CC3HM3fX.js} +2 -2
  44. package/dist/{emergency-stop-7aCLPd3c.js → emergency-stop-DeVGttt7.js} +2 -2
  45. package/dist/entry.js +1 -1
  46. package/dist/extensionAPI.js +2 -2
  47. package/dist/{gateway-cli-DOdmF6H_.js → gateway-cli-Bg9EHlHZ.js} +9 -9
  48. package/dist/{gateway-cli-vdmjtTaI.js → gateway-cli-CwuxFfnq.js} +9 -9
  49. package/dist/{health-Ck3J3S9G.js → health-B5FcoZjN.js} +1 -1
  50. package/dist/{health-D0w6dKOf.js → health-D-LRUDN7.js} +1 -1
  51. package/dist/{hooks-cli-6IjNVfwU.js → hooks-cli-DrwJGeyQ.js} +3 -3
  52. package/dist/{hooks-cli-qfbN4qHo.js → hooks-cli-hH93rV1P.js} +3 -3
  53. package/dist/index.js +7 -7
  54. package/dist/llm-slug-generator.js +2 -2
  55. package/dist/{models-BN3btFZs.js → models-C7BxqYrW.js} +2 -2
  56. package/dist/{models-cli-D0f0UhCd.js → models-cli-CDDj0F5v.js} +4 -4
  57. package/dist/{models-cli-BXIQUriJ.js → models-cli-CqjmKMK2.js} +3 -3
  58. package/dist/{npm-resolution-DsNHuATZ.js → npm-resolution-BjPIvwHA.js} +1 -1
  59. package/dist/{npm-resolution-CRr1BFy6.js → npm-resolution-C_gT5wrI.js} +1 -1
  60. package/dist/{onboard-BGttnPtz.js → onboard-CAifMogc.js} +2 -2
  61. package/dist/{onboard-DmJrRFm6.js → onboard-DyZAtFGg.js} +2 -2
  62. package/dist/{onboard-channels-CDDDee0U.js → onboard-channels-Bk3dz_Jr.js} +1 -1
  63. package/dist/{onboard-channels-CPzMyGUw.js → onboard-channels-DAk60Ns1.js} +1 -1
  64. package/dist/{onboarding-BH14vh8u.js → onboarding-DxXFvGbr.js} +3 -3
  65. package/dist/{onboarding-CatctZfr.js → onboarding-kCJZ-hVf.js} +3 -3
  66. package/dist/{onboarding.finalize-B1xAj3zP.js → onboarding.finalize-CLyBIGRt.js} +7 -7
  67. package/dist/{onboarding.finalize-y4p-rW_B.js → onboarding.finalize-Dl63X819.js} +6 -6
  68. package/dist/{pi-embedded-BuvTuh5b.js → pi-embedded-B4tp4aBd.js} +12 -12
  69. package/dist/{pi-embedded-LzC2NbjE.js → pi-embedded-CNvCKXkm.js} +12 -12
  70. package/dist/{plugin-registry-ChPpKka-.js → plugin-registry-CVL1r-yd.js} +1 -1
  71. package/dist/{plugin-registry-DJWce7ki.js → plugin-registry-n---u7EU.js} +1 -1
  72. package/dist/plugin-sdk/{agent-via-gateway-CKHwp3jE.js → agent-via-gateway-nyxykUkn.js} +2 -2
  73. package/dist/plugin-sdk/{anton-BbSJqBoq.js → anton-BdO0Oxvp.js} +1 -1
  74. package/dist/plugin-sdk/{channel-web-BpsnbGKO.js → channel-web-CtnWXT6I.js} +2 -2
  75. package/dist/plugin-sdk/{deps-UrtR_PKP.js → deps-Be1yXgl3.js} +1 -1
  76. package/dist/plugin-sdk/{emergency-stop-CfIXvAZq.js → emergency-stop-qkFklwE3.js} +2 -2
  77. package/dist/plugin-sdk/index.js +3 -3
  78. package/dist/plugin-sdk/{reply-BTeuxXqB.js → reply-Csf1i8F8.js} +12 -12
  79. package/dist/plugin-sdk/{web-BkoZvzGE.js → web-Cs2SXpS-.js} +3 -3
  80. package/dist/{plugins-cli-D2fnJF9k.js → plugins-cli--xMWIg-4.js} +3 -3
  81. package/dist/{plugins-cli-CjrvJnpu.js → plugins-cli-D3VgmVpQ.js} +3 -3
  82. package/dist/{program-CA0hdsv9.js → program-C4UqPGzI.js} +8 -8
  83. package/dist/{program-context-C4ufrdyk.js → program-context-Dp52v2OQ.js} +18 -18
  84. package/dist/{prompt-select-styled-HOmODGGE.js → prompt-select-styled-CsGzk9Gq.js} +4 -4
  85. package/dist/{prompt-select-styled-CoVuIbC6.js → prompt-select-styled-DlX1LGGJ.js} +4 -4
  86. package/dist/{provider-auth-helpers-BcXvA132.js → provider-auth-helpers-Czzq_QPi.js} +1 -1
  87. package/dist/{provider-auth-helpers-CjC0J8wK.js → provider-auth-helpers-DOkJeW-i.js} +1 -1
  88. package/dist/{push-apns-3RpPSOWj.js → push-apns-BtFayED4.js} +1 -1
  89. package/dist/{push-apns-Bqdhr5u5.js → push-apns-RknfH2wN.js} +1 -1
  90. package/dist/{register.agent-C-ynT_r7.js → register.agent-BiHrmIpA.js} +8 -8
  91. package/dist/{register.agent-snJhCvJ4.js → register.agent-C35pTLnm.js} +9 -9
  92. package/dist/{register.configure-sCW4AYHX.js → register.configure-BPdGcoT-.js} +8 -8
  93. package/dist/{register.configure-oHPQgac2.js → register.configure-DCf6SaYp.js} +8 -8
  94. package/dist/{register.maintenance-BNuu5G8a.js → register.maintenance-DUdYmaQm.js} +9 -9
  95. package/dist/{register.maintenance-DBOmtQ_7.js → register.maintenance-DujCPOfC.js} +8 -8
  96. package/dist/{register.message-CviOQrxd.js → register.message-BHLa16p6.js} +3 -3
  97. package/dist/{register.message-aGnFopBN.js → register.message-BhzLKaq7.js} +3 -3
  98. package/dist/{register.onboard-5CNO_6MJ.js → register.onboard-DqRuNACj.js} +2 -2
  99. package/dist/{register.onboard-DldXC3xb.js → register.onboard-hOo1cBls.js} +2 -2
  100. package/dist/{register.orchestrator-anton-BdD-lYjq.js → register.orchestrator-anton-DDUP6r-1.js} +2 -2
  101. package/dist/{register.orchestrator-anton-Bh-a7hTU.js → register.orchestrator-anton-gJUfWbMJ.js} +2 -2
  102. package/dist/{register.setup-B5GQC9NR.js → register.setup-1kqsk9Nz.js} +2 -2
  103. package/dist/{register.setup-Dtbm5ocC.js → register.setup-Cg9pGGKa.js} +2 -2
  104. package/dist/{register.status-health-sessions-7LgfFm3K.js → register.status-health-sessions-DGVjxQ4x.js} +4 -4
  105. package/dist/{register.status-health-sessions-DO5z-I1G.js → register.status-health-sessions-DWCD-xxm.js} +4 -4
  106. package/dist/{register.subclis-WjFoTOYx.js → register.subclis-C39R-X4d.js} +9 -9
  107. package/dist/{reply-xob39FTF.js → reply-DuYN0-Pb.js} +12 -12
  108. package/dist/{run-main-BtJbp5Nx.js → run-main-DhnKFvJ8.js} +15 -15
  109. package/dist/{server-node-events-lrUnxVTz.js → server-node-events-CsvrVnbd.js} +3 -3
  110. package/dist/{server-node-events-BNL7ha1f.js → server-node-events-S-Ffj9aJ.js} +3 -3
  111. package/dist/{status-DvdVIssC.js → status-DtnoXYQp.js} +2 -2
  112. package/dist/{status-DLKGKWq_.js → status-OrfDNo6n.js} +2 -2
  113. package/dist/{subagent-registry-C1Xg6P75.js → subagent-registry-CV8jrQca.js} +12 -12
  114. package/dist/{update-cli-Dv_xfkAV.js → update-cli-DZfUy8hM.js} +9 -9
  115. package/dist/{update-cli-DBsT1H2C.js → update-cli-UpWfq3c5.js} +8 -8
  116. package/dist/{update-runner-k3nRoLXk.js → update-runner-DTzgmQYD.js} +1 -1
  117. package/dist/{update-runner-CYdqDxJL.js → update-runner-GJO5-g7n.js} +1 -1
  118. package/dist/{web-C1TtGYq7.js → web-BC36pno5.js} +3 -3
  119. package/dist/{web-BOZhcGzD.js → web-CwYkIq_A.js} +3 -3
  120. package/dist/{web-DqzOqUcK.js → web-DpyY5rK8.js} +3 -3
  121. package/dist/{web-B8L46t9i.js → web-y9QkD_tf.js} +3 -3
  122. package/extensions/acpx/package.json +1 -1
  123. package/extensions/bluebubbles/package.json +1 -1
  124. package/extensions/copilot-proxy/package.json +1 -1
  125. package/extensions/diagnostics-otel/package.json +1 -1
  126. package/extensions/discord/package.json +1 -1
  127. package/extensions/feishu/package.json +1 -1
  128. package/extensions/google-gemini-cli-auth/package.json +1 -1
  129. package/extensions/googlechat/package.json +1 -1
  130. package/extensions/hand/package.json +1 -1
  131. package/extensions/imessage/package.json +1 -1
  132. package/extensions/irc/package.json +1 -1
  133. package/extensions/line/package.json +1 -1
  134. package/extensions/llm-task/package.json +1 -1
  135. package/extensions/matrix/CHANGELOG.md +12 -0
  136. package/extensions/matrix/package.json +1 -1
  137. package/extensions/mattermost/package.json +1 -1
  138. package/extensions/memory-core/package.json +1 -1
  139. package/extensions/memory-lancedb/package.json +1 -1
  140. package/extensions/minimax-portal-auth/package.json +1 -1
  141. package/extensions/msteams/CHANGELOG.md +12 -0
  142. package/extensions/msteams/package.json +1 -1
  143. package/extensions/nextcloud-talk/package.json +1 -1
  144. package/extensions/nostr/CHANGELOG.md +12 -0
  145. package/extensions/nostr/package.json +1 -1
  146. package/extensions/open-prose/package.json +1 -1
  147. package/extensions/signal/package.json +1 -1
  148. package/extensions/slack/package.json +1 -1
  149. package/extensions/synology-chat/package.json +1 -1
  150. package/extensions/telegram/package.json +1 -1
  151. package/extensions/tlon/package.json +1 -1
  152. package/extensions/twitch/CHANGELOG.md +12 -0
  153. package/extensions/twitch/package.json +1 -1
  154. package/extensions/voice-call/CHANGELOG.md +12 -0
  155. package/extensions/voice-call/package.json +1 -1
  156. package/extensions/whatsapp/package.json +1 -1
  157. package/extensions/zalo/CHANGELOG.md +12 -0
  158. package/extensions/zalo/package.json +1 -1
  159. package/extensions/zalouser/CHANGELOG.md +12 -0
  160. package/extensions/zalouser/package.json +1 -1
  161. package/package.json +3 -3
@@ -11,15 +11,15 @@ import { n as stylePromptMessage, r as stylePromptTitle, t as stylePromptHint }
11
11
  import { t as note$1 } from "./note-C2HHth6G.js";
12
12
  import { t as WizardCancelledError } from "./prompts-D3HHe1ZZ.js";
13
13
  import { t as createClackPrompter } from "./clack-prompter-Bo7vS5xP.js";
14
- import { r as setupChannels, t as noteChannelStatus } from "./onboard-channels-CPzMyGUw.js";
14
+ import { r as setupChannels, t as noteChannelStatus } from "./onboard-channels-DAk60Ns1.js";
15
15
  import { n as gatewayInstallErrorHint, t as buildGatewayInstallPlan } from "./daemon-install-helpers-DUHqeg5Y.js";
16
16
  import { n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-CRT3STlu.js";
17
17
  import { t as resolveGatewayService } from "./service-BzgRt9im.js";
18
- import { r as healthCommand } from "./health-D0w6dKOf.js";
18
+ import { r as healthCommand } from "./health-D-LRUDN7.js";
19
19
  import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-B5haX6bT.js";
20
20
  import { n as logConfigUpdated } from "./logging-MF6Thoxk.js";
21
21
  import { n as promptAuthChoiceGrouped } from "./auth-choice-prompt-kycZqH8q.js";
22
- import { i as applyAuthChoice, n as resolvePreferredProviderForAuthChoice } from "./auth-choice-Cxc76L50.js";
22
+ import { i as applyAuthChoice, n as resolvePreferredProviderForAuthChoice } from "./auth-choice-CoDCd8IM.js";
23
23
  import { a as promptDefaultModel, n as applyModelFallbacksFromSelection, o as promptModelAllowlist, r as applyPrimaryModel, t as applyModelAllowlist } from "./model-picker-D_yngXMe.js";
24
24
  import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-Dx928sEF.js";
25
25
  import { a as promptCustomApiConfig } from "./onboard-custom-BjUK6yP5.js";
@@ -40,6 +40,7 @@ const CONFIGURE_WIZARD_SECTIONS = [
40
40
  "daemon",
41
41
  "channels",
42
42
  "skills",
43
+ "anton",
43
44
  "health"
44
45
  ];
45
46
  function parseConfigureWizardSections(raw) {
@@ -90,6 +91,11 @@ const CONFIGURE_SECTION_OPTIONS = [
90
91
  label: "Skills",
91
92
  hint: "Install/enable workspace skills"
92
93
  },
94
+ {
95
+ value: "anton",
96
+ label: "Anton",
97
+ hint: "Configure Anton task runner defaults"
98
+ },
93
99
  {
94
100
  value: "health",
95
101
  label: "Health check",
@@ -649,6 +655,75 @@ async function promptWebToolsConfig(nextConfig, runtime) {
649
655
  }
650
656
  };
651
657
  }
658
+ async function promptAntonConfig(nextConfig, runtime) {
659
+ const existing = nextConfig.anton ?? {};
660
+ const existingPreflight = existing.preflight ?? {};
661
+ const mode = guardCancel(await select$1({
662
+ message: "Anton mode",
663
+ options: [{
664
+ value: "direct",
665
+ label: "Direct",
666
+ hint: "Implement tasks immediately"
667
+ }, {
668
+ value: "preflight",
669
+ label: "Preflight",
670
+ hint: "Discovery → optional review → implementation"
671
+ }],
672
+ initialValue: existing.mode ?? "direct"
673
+ }), runtime);
674
+ const taskTimeoutInput = guardCancel(await text$1({
675
+ message: "Anton task timeout (seconds)",
676
+ initialValue: String(existing.taskTimeoutSec ?? 1200),
677
+ validate: (value) => {
678
+ const n = Number(value);
679
+ return Number.isInteger(n) && n > 0 ? void 0 : "Enter a positive integer";
680
+ }
681
+ }), runtime);
682
+ const approvalMode = guardCancel(await select$1({
683
+ message: "Anton approval mode",
684
+ options: [{
685
+ value: "auto",
686
+ label: "Auto",
687
+ hint: "Normal safety/approval flow"
688
+ }, {
689
+ value: "yolo",
690
+ label: "Yolo",
691
+ hint: "No confirmation mode"
692
+ }],
693
+ initialValue: existing.approvalMode ?? "auto"
694
+ }), runtime);
695
+ let preflight = existingPreflight;
696
+ if (mode === "preflight") {
697
+ const requirementsReview = guardCancel(await confirm$1({
698
+ message: "Enable requirements review stage?",
699
+ initialValue: existingPreflight.requirementsReview ?? false
700
+ }), runtime);
701
+ const preflightMaxRetriesInput = guardCancel(await text$1({
702
+ message: "Preflight max retries",
703
+ initialValue: String(existingPreflight.maxRetries ?? 2),
704
+ validate: (value) => {
705
+ const n = Number(value);
706
+ return Number.isInteger(n) && n >= 0 ? void 0 : "Enter an integer ≥ 0";
707
+ }
708
+ }), runtime);
709
+ preflight = {
710
+ ...existingPreflight,
711
+ enabled: true,
712
+ requirementsReview,
713
+ maxRetries: Number(preflightMaxRetriesInput)
714
+ };
715
+ }
716
+ return {
717
+ ...nextConfig,
718
+ anton: {
719
+ ...existing,
720
+ mode,
721
+ taskTimeoutSec: Number(taskTimeoutInput),
722
+ approvalMode,
723
+ preflight
724
+ }
725
+ };
726
+ }
652
727
  async function runConfigureWizard(opts, runtime = defaultRuntime) {
653
728
  try {
654
729
  printWizardHeader(runtime);
@@ -801,6 +876,7 @@ async function runConfigureWizard(opts, runtime = defaultRuntime) {
801
876
  const wsDir = resolveUserPath(workspaceDir);
802
877
  nextConfig = await setupSkills(nextConfig, wsDir, runtime, prompter);
803
878
  }
879
+ if (selected.includes("anton")) nextConfig = await promptAntonConfig(nextConfig, runtime);
804
880
  await persistConfig();
805
881
  if (selected.includes("daemon")) {
806
882
  if (!selected.includes("gateway")) await promptDaemonPort();
@@ -851,6 +927,10 @@ async function runConfigureWizard(opts, runtime = defaultRuntime) {
851
927
  nextConfig = await setupSkills(nextConfig, wsDir, runtime, prompter);
852
928
  await persistConfig();
853
929
  }
930
+ if (choice === "anton") {
931
+ nextConfig = await promptAntonConfig(nextConfig, runtime);
932
+ await persistConfig();
933
+ }
854
934
  if (choice === "daemon") {
855
935
  if (!didConfigureGateway) await promptDaemonPort();
856
936
  await maybeInstallDaemon({
@@ -12,15 +12,15 @@ import { n as stylePromptMessage, r as stylePromptTitle, t as stylePromptHint }
12
12
  import { t as note$1 } from "./note-69EfBEU-.js";
13
13
  import { t as WizardCancelledError } from "./prompts-9ZBCWbQB.js";
14
14
  import { t as createClackPrompter } from "./clack-prompter-CvbZsmjW.js";
15
- import { r as setupChannels, t as noteChannelStatus } from "./onboard-channels-CDDDee0U.js";
15
+ import { r as setupChannels, t as noteChannelStatus } from "./onboard-channels-Bk3dz_Jr.js";
16
16
  import { n as gatewayInstallErrorHint, t as buildGatewayInstallPlan } from "./daemon-install-helpers-BZY9-jNW.js";
17
17
  import { n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-BGXzfrm4.js";
18
18
  import { t as resolveGatewayService } from "./service-C8NMS3m_.js";
19
- import { r as healthCommand } from "./health-Ck3J3S9G.js";
19
+ import { r as healthCommand } from "./health-B5FcoZjN.js";
20
20
  import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-C7ZpN9hN.js";
21
21
  import { n as logConfigUpdated } from "./logging-B0-9lotb.js";
22
22
  import { n as promptAuthChoiceGrouped } from "./auth-choice-prompt-CiRp6avH.js";
23
- import { i as applyAuthChoice, n as resolvePreferredProviderForAuthChoice } from "./auth-choice-DycYsq6V.js";
23
+ import { i as applyAuthChoice, n as resolvePreferredProviderForAuthChoice } from "./auth-choice-Dunr1I8A.js";
24
24
  import { a as promptDefaultModel, n as applyModelFallbacksFromSelection, o as promptModelAllowlist, r as applyPrimaryModel, t as applyModelAllowlist } from "./model-picker-BkXoTOiA.js";
25
25
  import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-B7XlUHk_.js";
26
26
  import { a as promptCustomApiConfig } from "./onboard-custom-DUbzMMu7.js";
@@ -41,6 +41,7 @@ const CONFIGURE_WIZARD_SECTIONS = [
41
41
  "daemon",
42
42
  "channels",
43
43
  "skills",
44
+ "anton",
44
45
  "health"
45
46
  ];
46
47
  function parseConfigureWizardSections(raw) {
@@ -91,6 +92,11 @@ const CONFIGURE_SECTION_OPTIONS = [
91
92
  label: "Skills",
92
93
  hint: "Install/enable workspace skills"
93
94
  },
95
+ {
96
+ value: "anton",
97
+ label: "Anton",
98
+ hint: "Configure Anton task runner defaults"
99
+ },
94
100
  {
95
101
  value: "health",
96
102
  label: "Health check",
@@ -650,6 +656,75 @@ async function promptWebToolsConfig(nextConfig, runtime) {
650
656
  }
651
657
  };
652
658
  }
659
+ async function promptAntonConfig(nextConfig, runtime) {
660
+ const existing = nextConfig.anton ?? {};
661
+ const existingPreflight = existing.preflight ?? {};
662
+ const mode = guardCancel(await select$1({
663
+ message: "Anton mode",
664
+ options: [{
665
+ value: "direct",
666
+ label: "Direct",
667
+ hint: "Implement tasks immediately"
668
+ }, {
669
+ value: "preflight",
670
+ label: "Preflight",
671
+ hint: "Discovery → optional review → implementation"
672
+ }],
673
+ initialValue: existing.mode ?? "direct"
674
+ }), runtime);
675
+ const taskTimeoutInput = guardCancel(await text$1({
676
+ message: "Anton task timeout (seconds)",
677
+ initialValue: String(existing.taskTimeoutSec ?? 1200),
678
+ validate: (value) => {
679
+ const n = Number(value);
680
+ return Number.isInteger(n) && n > 0 ? void 0 : "Enter a positive integer";
681
+ }
682
+ }), runtime);
683
+ const approvalMode = guardCancel(await select$1({
684
+ message: "Anton approval mode",
685
+ options: [{
686
+ value: "auto",
687
+ label: "Auto",
688
+ hint: "Normal safety/approval flow"
689
+ }, {
690
+ value: "yolo",
691
+ label: "Yolo",
692
+ hint: "No confirmation mode"
693
+ }],
694
+ initialValue: existing.approvalMode ?? "auto"
695
+ }), runtime);
696
+ let preflight = existingPreflight;
697
+ if (mode === "preflight") {
698
+ const requirementsReview = guardCancel(await confirm$1({
699
+ message: "Enable requirements review stage?",
700
+ initialValue: existingPreflight.requirementsReview ?? false
701
+ }), runtime);
702
+ const preflightMaxRetriesInput = guardCancel(await text$1({
703
+ message: "Preflight max retries",
704
+ initialValue: String(existingPreflight.maxRetries ?? 2),
705
+ validate: (value) => {
706
+ const n = Number(value);
707
+ return Number.isInteger(n) && n >= 0 ? void 0 : "Enter an integer ≥ 0";
708
+ }
709
+ }), runtime);
710
+ preflight = {
711
+ ...existingPreflight,
712
+ enabled: true,
713
+ requirementsReview,
714
+ maxRetries: Number(preflightMaxRetriesInput)
715
+ };
716
+ }
717
+ return {
718
+ ...nextConfig,
719
+ anton: {
720
+ ...existing,
721
+ mode,
722
+ taskTimeoutSec: Number(taskTimeoutInput),
723
+ approvalMode,
724
+ preflight
725
+ }
726
+ };
727
+ }
653
728
  async function runConfigureWizard(opts, runtime = defaultRuntime) {
654
729
  try {
655
730
  printWizardHeader(runtime);
@@ -802,6 +877,7 @@ async function runConfigureWizard(opts, runtime = defaultRuntime) {
802
877
  const wsDir = resolveUserPath(workspaceDir);
803
878
  nextConfig = await setupSkills(nextConfig, wsDir, runtime, prompter);
804
879
  }
880
+ if (selected.includes("anton")) nextConfig = await promptAntonConfig(nextConfig, runtime);
805
881
  await persistConfig();
806
882
  if (selected.includes("daemon")) {
807
883
  if (!selected.includes("gateway")) await promptDaemonPort();
@@ -852,6 +928,10 @@ async function runConfigureWizard(opts, runtime = defaultRuntime) {
852
928
  nextConfig = await setupSkills(nextConfig, wsDir, runtime, prompter);
853
929
  await persistConfig();
854
930
  }
931
+ if (choice === "anton") {
932
+ nextConfig = await promptAntonConfig(nextConfig, runtime);
933
+ await persistConfig();
934
+ }
855
935
  if (choice === "daemon") {
856
936
  if (!didConfigureGateway) await promptDaemonPort();
857
937
  await maybeInstallDaemon({
@@ -3,7 +3,7 @@ import fs from "node:fs";
3
3
  import os from "node:os";
4
4
  import path from "node:path";
5
5
  import { Logger } from "tslog";
6
- import json5 from "json5";
6
+ import JSON5 from "json5";
7
7
  import chalk, { Chalk } from "chalk";
8
8
  import fs$1 from "node:fs/promises";
9
9
  import { execFile, execFileSync, spawn } from "node:child_process";
@@ -332,7 +332,7 @@ function readLoggingConfig() {
332
332
  try {
333
333
  if (!fs.existsSync(configPath)) return;
334
334
  const raw = fs.readFileSync(configPath, "utf-8");
335
- const logging = json5.parse(raw)?.logging;
335
+ const logging = JSON5.parse(raw)?.logging;
336
336
  if (!logging || typeof logging !== "object" || Array.isArray(logging)) return;
337
337
  return logging;
338
338
  } catch {
@@ -4019,7 +4019,7 @@ const defaultResolver = {
4019
4019
  resolvedPath,
4020
4020
  rootRealDir
4021
4021
  }),
4022
- parseJson: (raw) => json5.parse(raw)
4022
+ parseJson: (raw) => JSON5.parse(raw)
4023
4023
  };
4024
4024
  /**
4025
4025
  * Resolves all $include directives in a parsed config object.
@@ -10651,7 +10651,7 @@ function resolveConfigPathForDeps(deps) {
10651
10651
  function normalizeDeps(overrides = {}) {
10652
10652
  return {
10653
10653
  fs: overrides.fs ?? fs,
10654
- json5: overrides.json5 ?? json5,
10654
+ json5: overrides.json5 ?? JSON5,
10655
10655
  env: overrides.env ?? process.env,
10656
10656
  homedir: overrides.homedir ?? (() => resolveRequiredHomeDir(overrides.env ?? process.env, os.homedir)),
10657
10657
  configPath: overrides.configPath ?? "",
@@ -10662,11 +10662,11 @@ function maybeLoadDotEnvForConfig(env) {
10662
10662
  if (env !== process.env) return;
10663
10663
  loadDotEnv({ quiet: true });
10664
10664
  }
10665
- function parseConfigJson5(raw, json5$1 = json5) {
10665
+ function parseConfigJson5(raw, json5 = JSON5) {
10666
10666
  try {
10667
10667
  return {
10668
10668
  ok: true,
10669
- parsed: json5$1.parse(raw)
10669
+ parsed: json5.parse(raw)
10670
10670
  };
10671
10671
  } catch (err) {
10672
10672
  return {
@@ -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-C1TtGYq7.js");
21
+ const { sendMessageWhatsApp } = await import("./web-BC36pno5.js");
22
22
  return await sendMessageWhatsApp(...args);
23
23
  },
24
24
  sendMessageTelegram: async (...args) => {
@@ -21,7 +21,7 @@ var deps_exports = /* @__PURE__ */ __exportAll({
21
21
  function createDefaultDeps() {
22
22
  return {
23
23
  sendMessageWhatsApp: async (...args) => {
24
- const { sendMessageWhatsApp } = await import("./web-DqzOqUcK.js");
24
+ const { sendMessageWhatsApp } = await import("./web-DpyY5rK8.js");
25
25
  return await sendMessageWhatsApp(...args);
26
26
  },
27
27
  sendMessageTelegram: async (...args) => {
@@ -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-B8L46t9i.js");
21
+ const { sendMessageWhatsApp } = await import("./web-y9QkD_tf.js");
22
22
  return await sendMessageWhatsApp(...args);
23
23
  },
24
24
  sendMessageTelegram: async (...args) => {
@@ -21,7 +21,7 @@ var deps_exports = /* @__PURE__ */ __exportAll({
21
21
  function createDefaultDeps() {
22
22
  return {
23
23
  sendMessageWhatsApp: async (...args) => {
24
- const { sendMessageWhatsApp } = await import("./web-BOZhcGzD.js");
24
+ const { sendMessageWhatsApp } = await import("./web-CwYkIq_A.js");
25
25
  return await sendMessageWhatsApp(...args);
26
26
  },
27
27
  sendMessageTelegram: async (...args) => {
@@ -1,7 +1,7 @@
1
1
  import { t as resolveIdleHandsPackageRoot } from "./idlehands-root-B8cUs-5M.js";
2
2
  import { r as resolveCliName } from "./command-format-DInZLuZ8.js";
3
3
  import { t as note } from "./note-69EfBEU-.js";
4
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-CAERO_KP.js";
4
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-C5Y0omSs.js";
5
5
  import path from "node:path";
6
6
  import { spawnSync } from "node:child_process";
7
7
 
@@ -1,7 +1,7 @@
1
1
  import { r as resolveCliName } from "./command-format-CPa5ksO_.js";
2
2
  import { t as resolveIdleHandsPackageRoot } from "./idlehands-root-SOu5dQGI.js";
3
3
  import { t as note } from "./note-C2HHth6G.js";
4
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-CTGLJrsU.js";
4
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-CWl8tMGs.js";
5
5
  import { spawnSync } from "node:child_process";
6
6
  import path from "node:path";
7
7
 
@@ -25,7 +25,7 @@ import "./logging-Bgrm4o7g.js";
25
25
  import "./auth-store-D9BmR4S6.js";
26
26
  import "./send-m4lQkQcY.js";
27
27
  import "./send-CCiDIuX4.js";
28
- import { $n as stopSubagentsForRequester, Qn as isAbortRequestText, Zn as formatAbortReplyText, c as abortEmbeddedPiRun, o as clearSessionQueues } from "./subagent-registry-C1Xg6P75.js";
28
+ import { $n as stopSubagentsForRequester, Qn as isAbortRequestText, Zn as formatAbortReplyText, c as abortEmbeddedPiRun, o as clearSessionQueues } from "./subagent-registry-CV8jrQca.js";
29
29
  import { r as resolveDefaultSessionStorePath } from "./paths-CC17i2eK.js";
30
30
  import "./chat-envelope-Dedaetiq.js";
31
31
  import "./client-Brv1GCwX.js";
@@ -108,7 +108,7 @@ import "./cli-utils-BfsDuRZS.js";
108
108
  import "./help-format-CldHB7lS.js";
109
109
  import "./progress-B76RkFx7.js";
110
110
  import "./replies-DSfpze17.js";
111
- import "./deps-ruCIL6tu.js";
111
+ import "./deps-BuqRbUb-.js";
112
112
  import "./onboard-helpers-Dp6wXNs7.js";
113
113
  import "./prompt-style-XmK49QYK.js";
114
114
  import "./pairing-labels-D7xcHkxi.js";
@@ -9,7 +9,7 @@ import "./github-copilot-token-D50c466d.js";
9
9
  import "./env-BpvqFD5n.js";
10
10
  import "./dock-QcCdS4qA.js";
11
11
  import "./tokens-Cg4XNE3H.js";
12
- import { F as isAbortRequestText, I as stopSubagentsForRequester, P as formatAbortReplyText, V as clearSessionQueues, n as abortEmbeddedPiRun } from "./pi-embedded-LzC2NbjE.js";
12
+ import { F as isAbortRequestText, I as stopSubagentsForRequester, P as formatAbortReplyText, V as clearSessionQueues, n as abortEmbeddedPiRun } from "./pi-embedded-CNvCKXkm.js";
13
13
  import "./plugins-D-_jp4FO.js";
14
14
  import "./accounts-BwrguHMw.js";
15
15
  import "./bindings-hT7SPhiA.js";
@@ -62,7 +62,7 @@ import "./send-Cn2wvd3W.js";
62
62
  import "./resolve-route-BI3VjtwE.js";
63
63
  import "./proxy-CNZpb4NE.js";
64
64
  import "./replies-CqYEEgmA.js";
65
- import "./deps-CAYnlnre.js";
65
+ import "./deps-CEc0DzO7.js";
66
66
 
67
67
  //#region src/auto-reply/reply/emergency-stop.ts
68
68
  /**
@@ -10,7 +10,7 @@ import "./boolean-CE7i9tBR.js";
10
10
  import "./env-B5G1qwGc.js";
11
11
  import "./dock-BgOmHcbh.js";
12
12
  import "./tokens-BRLyURxW.js";
13
- import { B as clearSessionQueues, F as isAbortRequestText, I as stopSubagentsForRequester, P as formatAbortReplyText, n as abortEmbeddedPiRun } from "./pi-embedded-BuvTuh5b.js";
13
+ import { B as clearSessionQueues, F as isAbortRequestText, I as stopSubagentsForRequester, P as formatAbortReplyText, n as abortEmbeddedPiRun } from "./pi-embedded-B4tp4aBd.js";
14
14
  import "./plugins-CRB60mCJ.js";
15
15
  import "./accounts-Dk8mJIrQ.js";
16
16
  import "./bindings-D3b5Fmc9.js";
@@ -65,7 +65,7 @@ import "./send-D4bMycQu.js";
65
65
  import "./resolve-route-DuttYY7A.js";
66
66
  import "./proxy-CRB9oCP5.js";
67
67
  import "./replies-6_GxvQYe.js";
68
- import "./deps-DMIwjElF.js";
68
+ import "./deps--Jd_1mvW.js";
69
69
 
70
70
  //#region src/auto-reply/reply/emergency-stop.ts
71
71
  /**
@@ -1,7 +1,7 @@
1
1
  import "./paths-Cn44w-EB.js";
2
2
  import { M as logVerbose } from "./utils-CXzXXV2o.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import { An as formatAbortReplyText, Mn as stopSubagentsForRequester, Vn as clearSessionQueues, f as abortEmbeddedPiRun, jn as isAbortRequestText } from "./reply-xob39FTF.js";
4
+ import { An as formatAbortReplyText, Mn as stopSubagentsForRequester, Vn as clearSessionQueues, f as abortEmbeddedPiRun, jn as isAbortRequestText } from "./reply-DuYN0-Pb.js";
5
5
  import "./agent-scope-RA0zXRpu.js";
6
6
  import "./subsystem-CGZX2PBV.js";
7
7
  import "./runtime-44j_X4Y6.js";
@@ -102,7 +102,7 @@ import "./resolve-route-D_AbcmD6.js";
102
102
  import "./replies-hSFVxL4h.js";
103
103
  import "./skill-commands-BFzmZAfo.js";
104
104
  import "./workspace-dirs-SsExQ3Bz.js";
105
- import "./deps-DyhYyFzN.js";
105
+ import "./deps-DOKkEv5X.js";
106
106
  import "./plugin-auto-enable-7DUxMy6A.js";
107
107
  import "./channel-selection-ZxRkxpuF.js";
108
108
  import "./outbound-attachment-Bot3bRnK.js";
package/dist/entry.js CHANGED
@@ -2566,7 +2566,7 @@ if (!isMainModule({
2566
2566
  applyCliProfileEnv({ profile: parsed.profile });
2567
2567
  process$1.argv = parsed.argv;
2568
2568
  }
2569
- import("./run-main-BtJbp5Nx.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
2569
+ import("./run-main-DhnKFvJ8.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
2570
2570
  console.error("[idlehands] Failed to start CLI:", error instanceof Error ? error.stack ?? error.message : error);
2571
2571
  process$1.exitCode = 1;
2572
2572
  });
@@ -9,7 +9,7 @@ import "./github-copilot-token-D50c466d.js";
9
9
  import "./env-BpvqFD5n.js";
10
10
  import "./dock-QcCdS4qA.js";
11
11
  import "./tokens-Cg4XNE3H.js";
12
- import { B as resolveAgentTimeoutMs, t as runEmbeddedPiAgent } from "./pi-embedded-LzC2NbjE.js";
12
+ import { B as resolveAgentTimeoutMs, t as runEmbeddedPiAgent } from "./pi-embedded-CNvCKXkm.js";
13
13
  import "./plugins-D-_jp4FO.js";
14
14
  import "./accounts-BwrguHMw.js";
15
15
  import "./bindings-hT7SPhiA.js";
@@ -62,6 +62,6 @@ import "./send-Cn2wvd3W.js";
62
62
  import "./resolve-route-BI3VjtwE.js";
63
63
  import "./proxy-CNZpb4NE.js";
64
64
  import "./replies-CqYEEgmA.js";
65
- import "./deps-CAYnlnre.js";
65
+ import "./deps-CEc0DzO7.js";
66
66
 
67
67
  export { DEFAULT_MODEL, DEFAULT_PROVIDER, ensureAgentWorkspace, loadSessionStore, resolveAgentDir, resolveAgentIdentity, resolveAgentTimeoutMs, resolveAgentWorkspaceDir, resolveSessionFilePath, resolveStorePath, resolveThinkingDefault, runEmbeddedPiAgent, saveSessionStore };
@@ -28,7 +28,7 @@ import "./logging-Bgrm4o7g.js";
28
28
  import "./auth-store-D9BmR4S6.js";
29
29
  import "./send-m4lQkQcY.js";
30
30
  import "./send-CCiDIuX4.js";
31
- import { $n as stopSubagentsForRequester, A as createOutboundSendDeps, An as requestHeartbeatNow, Ar as clearAgentRunContext, At as normalizeHttpWebhookUrl, Bn as DEFAULT_INPUT_MAX_REDIRECTS, Bt as buildDeliveryFromLegacyPayload, C as computeBackoff, Cr as waitForActiveTasks, Ct as consumeRestartSentinel, Dn as isSystemEventContextChanged, Dt as summarizeRestartSentinel, E as agentCommand, En as enqueueSystemEvent, Fn as ACP_SESSION_IDENTITY_RENDERER_VERSION, Ft as normalizeOptionalSessionKey, Gn as resolveInputFileLimits, Gt as buildSafeExternalPrompt, Hn as extractFileContentFromSource, Ht as stripLegacyDeliveryFields, In as getAcpSessionManager, It as normalizeOptionalText, Jn as resolveSendPolicy, Jt as isExternalHookSession, Kn as resolveAgentTimeoutMs, Kt as detectSuspiciousPatterns, Ln as resolveAgentSessionDirs, Lt as normalizePayloadToSystemText, Mr as getAgentRunContext, Mt as normalizeCronJobPatch, Nr as onAgentEvent, Nt as inferLegacyName, O as resolveAgentDeliveryPlan, Pr as registerAgentRunContext, Pt as normalizeOptionalAgentId, Q as getTotalPendingReplies, Qn as isAbortRequestText, R as buildHistoryContextFromEntries, Rn as DEFAULT_INPUT_IMAGE_MAX_BYTES, Rt as normalizeRequiredName, S as requestBodyErrorToText, Sr as setCommandLaneConcurrency, Tr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, Tt as formatRestartSentinelMessage, Un as extractImageContentFromSource, Vn as DEFAULT_INPUT_TIMEOUT_MS, Vt as hasLegacyDeliveryHints, Wn as normalizeMimeList, X as dispatchInboundMessage, Xt as persistBrowserProxyFiles, Yt as applyBrowserProxyPaths, Z as createReplyDispatcher, Zt as resolveSessionAuthProfileOverride, _ as loadIdleHandsPlugins, _r as getActiveTaskCount, _t as resolveOutboundChannelPlugin, a as runSubagentAnnounceFlow, an as deferGatewayRestartUntilIdle, ar as isTtsEnabled, at as setCliSessionId, b as handleSlackHttpRequest, bn as buildOutboundSessionContext, br as markGatewayDraining, c as abortEmbeddedPiRun, cn as markGatewaySigusr1RestartHandled, cr as resolveTtsAutoMode, ct as readLatestAssistantReply, d as applyToolPolicyPipeline, dn as setPreRestartDeferralCheck, dr as resolveTtsProviderOrder, dt as ensureOutboundSessionEntry, f as buildDefaultToolPolicyPipelineSteps, fn as unbindThreadBindingsBySessionKey, fr as setTtsEnabled, ft as resolveOutboundSessionRoute, gr as OPENAI_TTS_VOICES, gt as resolveSessionDeliveryTarget, h as resolvePluginTools, hn as loadProviderUsageSummary, hr as OPENAI_TTS_MODELS, ht as resolveOutboundTarget, in as consumeGatewaySigusr1RestartAuthorization, ir as getTtsProvider, it as getCliSessionId, j as resolveAgentAvatar, jr as emitAgentEvent, jt as normalizeCronJobCreate, k as resolveAgentOutboundTarget, kr as stripHeartbeatToken, kt as writeRestartSentinel, l as getActiveEmbeddedRunCount, ln as scheduleGatewaySigusr1Restart, lr as resolveTtsConfig, lt as resolveAnnounceTargetFromKey, m as getPluginToolMeta, mr as textToSpeech, n as initSubagentRegistry, nn as applyVerboseOverride, nr as resolveUserTimezone, o as clearSessionQueues, on as emitGatewayRestart, or as isTtsProviderConfigured, ot as runCliAgent, pn as normalizeGroupActivation, pr as setTtsProvider, qn as normalizeSendPolicy, qt as getHookType, r as listDescendantRunsForRequester, rn as parseVerboseOverride, rr as clearBootstrapSnapshot, rt as resolveCronStyleNow, s as runEmbeddedPiAgent, sn as isGatewaySigusr1RestartExternallyAllowed, sr as resolveTtsApiKey, st as createIdleHandsTools, t as countActiveDescendantRuns, tn as applyModelOverrideToSessionEntry, tt as BARE_SESSION_RESET_PROMPT, u as waitForEmbeddedPiRunEnd, un as setGatewaySigusr1RestartPolicy, ur as resolveTtsPrefsPath, w as sleepWithAbort, wr as CommandLane, wt as formatDoctorNonInteractiveHint, x as readJsonBodyWithLimit, xn as formatZonedTimestamp, xr as resetAllLanes, xt as runWithModelFallback, yr as getTotalQueueSize, yt as resetDirectoryCache, zn as DEFAULT_INPUT_IMAGE_MIMES, zt as migrateLegacyCronPayload } from "./subagent-registry-C1Xg6P75.js";
31
+ import { $n as stopSubagentsForRequester, A as createOutboundSendDeps, An as requestHeartbeatNow, Ar as clearAgentRunContext, At as normalizeHttpWebhookUrl, Bn as DEFAULT_INPUT_MAX_REDIRECTS, Bt as buildDeliveryFromLegacyPayload, C as computeBackoff, Cr as waitForActiveTasks, Ct as consumeRestartSentinel, Dn as isSystemEventContextChanged, Dt as summarizeRestartSentinel, E as agentCommand, En as enqueueSystemEvent, Fn as ACP_SESSION_IDENTITY_RENDERER_VERSION, Ft as normalizeOptionalSessionKey, Gn as resolveInputFileLimits, Gt as buildSafeExternalPrompt, Hn as extractFileContentFromSource, Ht as stripLegacyDeliveryFields, In as getAcpSessionManager, It as normalizeOptionalText, Jn as resolveSendPolicy, Jt as isExternalHookSession, Kn as resolveAgentTimeoutMs, Kt as detectSuspiciousPatterns, Ln as resolveAgentSessionDirs, Lt as normalizePayloadToSystemText, Mr as getAgentRunContext, Mt as normalizeCronJobPatch, Nr as onAgentEvent, Nt as inferLegacyName, O as resolveAgentDeliveryPlan, Pr as registerAgentRunContext, Pt as normalizeOptionalAgentId, Q as getTotalPendingReplies, Qn as isAbortRequestText, R as buildHistoryContextFromEntries, Rn as DEFAULT_INPUT_IMAGE_MAX_BYTES, Rt as normalizeRequiredName, S as requestBodyErrorToText, Sr as setCommandLaneConcurrency, Tr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, Tt as formatRestartSentinelMessage, Un as extractImageContentFromSource, Vn as DEFAULT_INPUT_TIMEOUT_MS, Vt as hasLegacyDeliveryHints, Wn as normalizeMimeList, X as dispatchInboundMessage, Xt as persistBrowserProxyFiles, Yt as applyBrowserProxyPaths, Z as createReplyDispatcher, Zt as resolveSessionAuthProfileOverride, _ as loadIdleHandsPlugins, _r as getActiveTaskCount, _t as resolveOutboundChannelPlugin, a as runSubagentAnnounceFlow, an as deferGatewayRestartUntilIdle, ar as isTtsEnabled, at as setCliSessionId, b as handleSlackHttpRequest, bn as buildOutboundSessionContext, br as markGatewayDraining, c as abortEmbeddedPiRun, cn as markGatewaySigusr1RestartHandled, cr as resolveTtsAutoMode, ct as readLatestAssistantReply, d as applyToolPolicyPipeline, dn as setPreRestartDeferralCheck, dr as resolveTtsProviderOrder, dt as ensureOutboundSessionEntry, f as buildDefaultToolPolicyPipelineSteps, fn as unbindThreadBindingsBySessionKey, fr as setTtsEnabled, ft as resolveOutboundSessionRoute, gr as OPENAI_TTS_VOICES, gt as resolveSessionDeliveryTarget, h as resolvePluginTools, hn as loadProviderUsageSummary, hr as OPENAI_TTS_MODELS, ht as resolveOutboundTarget, in as consumeGatewaySigusr1RestartAuthorization, ir as getTtsProvider, it as getCliSessionId, j as resolveAgentAvatar, jr as emitAgentEvent, jt as normalizeCronJobCreate, k as resolveAgentOutboundTarget, kr as stripHeartbeatToken, kt as writeRestartSentinel, l as getActiveEmbeddedRunCount, ln as scheduleGatewaySigusr1Restart, lr as resolveTtsConfig, lt as resolveAnnounceTargetFromKey, m as getPluginToolMeta, mr as textToSpeech, n as initSubagentRegistry, nn as applyVerboseOverride, nr as resolveUserTimezone, o as clearSessionQueues, on as emitGatewayRestart, or as isTtsProviderConfigured, ot as runCliAgent, pn as normalizeGroupActivation, pr as setTtsProvider, qn as normalizeSendPolicy, qt as getHookType, r as listDescendantRunsForRequester, rn as parseVerboseOverride, rr as clearBootstrapSnapshot, rt as resolveCronStyleNow, s as runEmbeddedPiAgent, sn as isGatewaySigusr1RestartExternallyAllowed, sr as resolveTtsApiKey, st as createIdleHandsTools, t as countActiveDescendantRuns, tn as applyModelOverrideToSessionEntry, tt as BARE_SESSION_RESET_PROMPT, u as waitForEmbeddedPiRunEnd, un as setGatewaySigusr1RestartPolicy, ur as resolveTtsPrefsPath, w as sleepWithAbort, wr as CommandLane, wt as formatDoctorNonInteractiveHint, x as readJsonBodyWithLimit, xn as formatZonedTimestamp, xr as resetAllLanes, xt as runWithModelFallback, yr as getTotalQueueSize, yt as resetDirectoryCache, zn as DEFAULT_INPUT_IMAGE_MIMES, zt as migrateLegacyCronPayload } from "./subagent-registry-CV8jrQca.js";
32
32
  import { a as resolveSessionFilePathOptions, i as resolveSessionFilePath, l as resolveSessionTranscriptsDirForAgent, o as resolveSessionTranscriptPath, u as resolveStorePath } from "./paths-CC17i2eK.js";
33
33
  import { i as normalizeInputProvenance } from "./input-provenance-iBlnbS1d.js";
34
34
  import "./chat-envelope-Dedaetiq.js";
@@ -115,7 +115,7 @@ import { n as runCommandWithRuntime } from "./cli-utils-BfsDuRZS.js";
115
115
  import { t as formatHelpExamples } from "./help-format-CldHB7lS.js";
116
116
  import { n as withProgress } from "./progress-B76RkFx7.js";
117
117
  import "./replies-DSfpze17.js";
118
- import { n as createOutboundSendDeps$1, t as createDefaultDeps } from "./deps-ruCIL6tu.js";
118
+ import { n as createOutboundSendDeps$1, t as createDefaultDeps } from "./deps-BuqRbUb-.js";
119
119
  import { C as normalizeControlUiBasePath, S as buildControlUiAvatarUrl, c as handleReset, w as resolveAssistantAvatarUrl, x as CONTROL_UI_AVATAR_PREFIX } from "./onboard-helpers-Dp6wXNs7.js";
120
120
  import "./prompt-style-XmK49QYK.js";
121
121
  import "./pairing-labels-D7xcHkxi.js";
@@ -125,7 +125,7 @@ import { n as DEFAULT_GATEWAY_HTTP_TOOL_DENY } from "./dangerous-tools-B1XEiDxB.
125
125
  import { n as inheritOptionFromParent } from "./command-options-CK65DMbR.js";
126
126
  import { t as WizardCancelledError } from "./prompts-D3HHe1ZZ.js";
127
127
  import { t as resolveChannelDefaultAccountId } from "./helpers-CIyuenBU.js";
128
- import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-J5LaHyjZ.js";
128
+ import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-s_1D920P.js";
129
129
  import { t as isWithinDir } from "./path-safety-O-JjyFjj.js";
130
130
  import "./install-safe-path-C7y57-yb.js";
131
131
  import "./skill-scanner-CdLElD51.js";
@@ -146,19 +146,19 @@ import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } fr
146
146
  import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-KdaUmZfd.js";
147
147
  import { a as isNodeCommandAllowed, n as collectEnabledInsecureOrDangerousFlags, o as resolveNodeCommandAllowlist, s as probeGateway } from "./audit-Bkd4fvVb.js";
148
148
  import { t as discoverGatewayBeacons } from "./bonjour-discovery-xjvAm8hU.js";
149
- import { i as pickGatewaySelfPresence, r as getStatusSummary } from "./status-DLKGKWq_.js";
150
- import { a as styleHealthChannelLine, c as setHeartbeatsEnabled, l as startHeartbeatRunner, n as getHealthSnapshot, s as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-D0w6dKOf.js";
149
+ import { i as pickGatewaySelfPresence, r as getStatusSummary } from "./status-OrfDNo6n.js";
150
+ import { a as styleHealthChannelLine, c as setHeartbeatsEnabled, l as startHeartbeatRunner, n as getHealthSnapshot, s as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-D-LRUDN7.js";
151
151
  import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-B5haX6bT.js";
152
152
  import { h as normalizeUpdateChannel, l as DEFAULT_PACKAGE_CHANNEL, n as checkUpdateStatus, o as resolveNpmChannelTag, r as compareSemverStrings } from "./channel-account-context-ofowt_yq.js";
153
153
  import { i as prepareSecretsRuntimeSnapshot, n as clearSecretsRuntimeSnapshot, r as getActiveSecretsRuntimeSnapshot, t as activateSecretsRuntimeSnapshot } from "./runtime-BsH_IMcC.js";
154
- import { t as runOnboardingWizard } from "./onboarding-BH14vh8u.js";
155
- import { a as sendApnsAlert, c as parseMessageWithAttachments, d as shouldLogWs, f as summarizeAgentEventForWsLog, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, p as setGatewayWsLogStyle, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration, u as logWs } from "./push-apns-3RpPSOWj.js";
154
+ import { t as runOnboardingWizard } from "./onboarding-DxXFvGbr.js";
155
+ import { a as sendApnsAlert, c as parseMessageWithAttachments, d as shouldLogWs, f as summarizeAgentEventForWsLog, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, p as setGatewayWsLogStyle, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration, u as logWs } from "./push-apns-BtFayED4.js";
156
156
  import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-U10Ul2gc.js";
157
157
  import "./node-service-v7Nz7h4D.js";
158
158
  import "./status.update-BzUu2M5c.js";
159
159
  import { a as matchSystemRunApprovalBindingV1, i as buildSystemRunApprovalBindingV1, n as resolveSystemRunApprovalRequestContext, o as missingSystemRunApprovalBindingV1, r as resolveSystemRunApprovalRuntimeContext, s as toSystemRunApprovalMismatchError } from "./system-run-approval-context-DkX3cprL.js";
160
160
  import { t as installSkill } from "./skills-install-DkQ2ndc6.js";
161
- import { t as runGatewayUpdate } from "./update-runner-CYdqDxJL.js";
161
+ import { t as runGatewayUpdate } from "./update-runner-GJO5-g7n.js";
162
162
  import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-Dj1dL0rI.js";
163
163
  import { n as forceFreePortAndWait } from "./ports-CIJavqzS.js";
164
164
  import { spawn, spawnSync } from "node:child_process";
@@ -12688,7 +12688,7 @@ const nodeHandlers = {
12688
12688
  const p = params;
12689
12689
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
12690
12690
  await respondUnavailableOnThrow(respond, async () => {
12691
- const { handleNodeEvent } = await import("./server-node-events-BNL7ha1f.js");
12691
+ const { handleNodeEvent } = await import("./server-node-events-S-Ffj9aJ.js");
12692
12692
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
12693
12693
  await handleNodeEvent({
12694
12694
  deps: context.deps,