@visorcraft/idlehands 4.0.14 → 4.0.16

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 (165) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/{agent-via-gateway-D-FbIr6E.js → agent-via-gateway-7SDhvcBa.js} +2 -2
  3. package/dist/{agent-via-gateway-BCActbIf.js → agent-via-gateway-Ceb_VeXS.js} +2 -2
  4. package/dist/{agent-via-gateway-B0077UOc.js → agent-via-gateway-DIfwOe7Y.js} +1 -1
  5. package/dist/{agent-via-gateway-DFnFArbP.js → agent-via-gateway-F1Zu0slF.js} +1 -1
  6. package/dist/{agents-DBtNXoSW.js → agents-idaLog48.js} +4 -4
  7. package/dist/{agents.config-C48CGAxv.js → agents.config-DP_bqTwg.js} +1 -1
  8. package/dist/{agents.config-a7WEBiP9.js → agents.config-w0ZcfpyW.js} +1 -1
  9. package/dist/{anton-GmxStpbM.js → anton-B7VZSQo-.js} +19 -2
  10. package/dist/{anton-BzjiLD-a.js → anton-BomwkDBv.js} +19 -2
  11. package/dist/{anton-BiE961do.js → anton-Cs1JPzv4.js} +19 -2
  12. package/dist/{anton-fsipCiB9.js → anton-CzWIEEiT.js} +19 -2
  13. package/dist/{auth-choice-DCHD89CG.js → auth-choice-C49o8owq.js} +1 -1
  14. package/dist/{auth-choice-B9F26cWG.js → auth-choice-D-TtZtMR.js} +1 -1
  15. package/dist/{banner-DGxHi5f3.js → banner-DmFqQvFd.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-BURifbbT.js → channel-options-1Dqo0zkg.js} +1 -1
  20. package/dist/{channel-options-DZ237bIi.js → channel-options-CsEgIwgu.js} +1 -1
  21. package/dist/{channel-web-Dx3LCcqS.js → channel-web-BicbbO9_.js} +2 -2
  22. package/dist/{channel-web-Ylr-WudQ.js → channel-web-C7s5QLXL.js} +2 -2
  23. package/dist/{channels-cli-CntOyA1l.js → channels-cli-CWb-B8BT.js} +7 -7
  24. package/dist/{channels-cli-BHyVWKE_.js → channels-cli-REwO9h_a.js} +7 -7
  25. package/dist/{cli-DxFD9X-g.js → cli-B4rP4MXJ.js} +2 -2
  26. package/dist/{cli-DnAZgvLv.js → cli-B9ARC6CF.js} +2 -2
  27. package/dist/{command-registry-BB2Vnuy4.js → command-registry-0e5VHciB.js} +10 -10
  28. package/dist/{completion-cli-eFXXaRI-.js → completion-cli-BTtvgatl.js} +2 -2
  29. package/dist/{completion-cli-Cd_zlB-2.js → completion-cli-C1StqVUs.js} +1 -1
  30. package/dist/{config-cli-C0kgcpE4.js → config-cli-B-yirt2T.js} +1 -1
  31. package/dist/{config-cli-CNuPoVE4.js → config-cli-C3As38Z_.js} +1 -1
  32. package/dist/{configure-DEyZZjPG.js → configure-BEd8nUOe.js} +3 -3
  33. package/dist/{configure-BDO6l1oe.js → configure-Cw6aeqBy.js} +3 -3
  34. package/dist/{deps-CIF1pkFi.js → deps-C28cWNmF.js} +1 -1
  35. package/dist/{deps-7AsluBQV.js → deps-CVb-kfIX.js} +1 -1
  36. package/dist/{deps-CXtbmEWH.js → deps-CYAKIzhf.js} +1 -1
  37. package/dist/{deps-8ieGS4Mv.js → deps-Cn32rOjf.js} +1 -1
  38. package/dist/{doctor-completion-BM1W0ErJ.js → doctor-completion-T5sq7t8L.js} +1 -1
  39. package/dist/{doctor-completion-DZ7EW_dp.js → doctor-completion-o6QBkVYG.js} +1 -1
  40. package/dist/{emergency-stop-BQVndluY.js → emergency-stop-CMeSxuEg.js} +2 -2
  41. package/dist/{emergency-stop-C5022igA.js → emergency-stop-D-dp9zCO.js} +2 -2
  42. package/dist/{emergency-stop-DpTSZhRz.js → emergency-stop-h5_WOPZT.js} +2 -2
  43. package/dist/{emergency-stop-DdNkOB3t.js → emergency-stop-w0AyIMs7.js} +2 -2
  44. package/dist/entry.js +1 -1
  45. package/dist/extensionAPI.js +2 -2
  46. package/dist/{gateway-cli-DvDS1_s1.js → gateway-cli-Dxoh3sSC.js} +9 -9
  47. package/dist/{gateway-cli-CgCMdrYY.js → gateway-cli-bZXsaQkU.js} +9 -9
  48. package/dist/{health-Bs81nsdt.js → health-OvNY74XL.js} +1 -1
  49. package/dist/{health-CPiopwcS.js → health-dLZas7f8.js} +1 -1
  50. package/dist/{hooks-cli-CNq30Huh.js → hooks-cli-DOH-i33b.js} +3 -3
  51. package/dist/{hooks-cli-DXM6dTkU.js → hooks-cli-DZr1MB1B.js} +3 -3
  52. package/dist/index.js +7 -7
  53. package/dist/llm-slug-generator.js +2 -2
  54. package/dist/{models-CVGwjQpG.js → models-Dvyot3-o.js} +2 -2
  55. package/dist/{models-cli-bkbKnWld.js → models-cli-CKRL4j3x.js} +3 -3
  56. package/dist/{models-cli-2QkLeKdt.js → models-cli-Dtzht0md.js} +4 -4
  57. package/dist/{npm-resolution-CmAIOir0.js → npm-resolution-BpruvRIr.js} +1 -1
  58. package/dist/{npm-resolution-DHetuEi8.js → npm-resolution-iEXmU1Ol.js} +1 -1
  59. package/dist/{onboard-Du522rv9.js → onboard-CS6IQorr.js} +2 -2
  60. package/dist/{onboard-IDM50Cwp.js → onboard-Ck4SwhZB.js} +2 -2
  61. package/dist/{onboard-channels-CHLOUR52.js → onboard-channels-CM4puuWQ.js} +1 -1
  62. package/dist/{onboard-channels-5uQfEVIz.js → onboard-channels-DzNjXM6f.js} +1 -1
  63. package/dist/{onboarding-B73ADr9Y.js → onboarding-0Pop0Cex.js} +3 -3
  64. package/dist/{onboarding-Ct8sM6do.js → onboarding-DMEJRAg4.js} +3 -3
  65. package/dist/{onboarding.finalize-mNlZG1KO.js → onboarding.finalize-BZW1kZw7.js} +7 -7
  66. package/dist/{onboarding.finalize-DEVkNjj0.js → onboarding.finalize-f2qChM_N.js} +6 -6
  67. package/dist/{pi-embedded-bwvtdswf.js → pi-embedded-BKTKQn_9.js} +12 -12
  68. package/dist/{pi-embedded-ChimfAJ-.js → pi-embedded-Oto02Ard.js} +12 -12
  69. package/dist/{plugin-registry-CYh53OcU.js → plugin-registry-BfNJBiAr.js} +1 -1
  70. package/dist/{plugin-registry-BBx7owin.js → plugin-registry-PcN7mK-d.js} +1 -1
  71. package/dist/plugin-sdk/{agent-via-gateway-C2tn6sON.js → agent-via-gateway-l3LvRB7r.js} +2 -2
  72. package/dist/plugin-sdk/{anton-_MnTuJJ-.js → anton-DJn2RPpW.js} +19 -2
  73. package/dist/plugin-sdk/{channel-web-DwtLzVOR.js → channel-web-DvztgyXI.js} +2 -2
  74. package/dist/plugin-sdk/{deps-mdAvVF88.js → deps-B1DxdYuU.js} +1 -1
  75. package/dist/plugin-sdk/{emergency-stop-DYCGWJzN.js → emergency-stop-CVZuzTM7.js} +2 -2
  76. package/dist/plugin-sdk/index.js +3 -3
  77. package/dist/plugin-sdk/{reply-B-q4HnAx.js → reply-BhGucE6k.js} +12 -12
  78. package/dist/plugin-sdk/{upgrade-command-DKUGbn8D.js → upgrade-command-y1YvsJbf.js} +12 -2
  79. package/dist/plugin-sdk/{web-P5eS5E4t.js → web-BzmXmmAo.js} +3 -3
  80. package/dist/{plugins-cli-SxHWgGz6.js → plugins-cli-DOTZBHc7.js} +3 -3
  81. package/dist/{plugins-cli-TmKS47EG.js → plugins-cli-s1bEnfMn.js} +3 -3
  82. package/dist/{program-ZVWCD0Zm.js → program-Blak4A0H.js} +8 -8
  83. package/dist/{program-context-3VJmK0G6.js → program-context-DtHO30yM.js} +19 -19
  84. package/dist/{prompt-select-styled-D7s-dTdd.js → prompt-select-styled-D8vDTRY8.js} +4 -4
  85. package/dist/{prompt-select-styled-DefgYXen.js → prompt-select-styled-DuHE5c_O.js} +4 -4
  86. package/dist/{provider-auth-helpers-ZH_-N5zd.js → provider-auth-helpers-CnqcE5__.js} +1 -1
  87. package/dist/{provider-auth-helpers-DZhIVPGv.js → provider-auth-helpers-PdlgGx1Z.js} +1 -1
  88. package/dist/{push-apns-Do1ENlJt.js → push-apns-CNVtKEbW.js} +1 -1
  89. package/dist/{push-apns-xWUFiO5-.js → push-apns-DkGS3lmo.js} +1 -1
  90. package/dist/{register.agent-BQjgsbPA.js → register.agent-BGs6wEo-.js} +9 -9
  91. package/dist/{register.agent-oVyiMffI.js → register.agent-DliuXWG0.js} +8 -8
  92. package/dist/{register.configure-24YtUj4s.js → register.configure-D9bNPRml.js} +8 -8
  93. package/dist/{register.configure-D_zfBA_E.js → register.configure-DJsShg2l.js} +8 -8
  94. package/dist/{register.maintenance-CkYNqabD.js → register.maintenance-B-36Avrl.js} +8 -8
  95. package/dist/{register.maintenance-BccFDIZU.js → register.maintenance-B7ZM7NqF.js} +9 -9
  96. package/dist/{register.message-CPejF6cS.js → register.message-Cm5P_dls.js} +3 -3
  97. package/dist/{register.message-CySQp5gA.js → register.message-CmEzaYEw.js} +3 -3
  98. package/dist/{register.onboard-BddM-Tey.js → register.onboard-ByUSn1hy.js} +2 -2
  99. package/dist/{register.onboard-Cg5R87xG.js → register.onboard-cB-UkXhL.js} +2 -2
  100. package/dist/{register.orchestrator-anton-uFQntDpJ.js → register.orchestrator-anton-CADua5Nr.js} +2 -2
  101. package/dist/{register.orchestrator-anton-Dfd2g3y-.js → register.orchestrator-anton-D_mAceTk.js} +2 -2
  102. package/dist/{register.setup-Bla4J47z.js → register.setup-CA3WwC1V.js} +2 -2
  103. package/dist/{register.setup-Cnil6_M-.js → register.setup-DOnWysTP.js} +2 -2
  104. package/dist/{register.status-health-sessions-CI6-RlLt.js → register.status-health-sessions-DgR30NBl.js} +4 -4
  105. package/dist/{register.status-health-sessions-CiakJrlx.js → register.status-health-sessions-Dsvbkrhh.js} +4 -4
  106. package/dist/{register.subclis-9fhzxHCF.js → register.subclis-CvN5J3oh.js} +10 -10
  107. package/dist/{reply-Cmj0wbnT.js → reply-D6y5faqD.js} +12 -12
  108. package/dist/{run-main-DUtPECK6.js → run-main-BBYeikWD.js} +15 -15
  109. package/dist/{server-node-events--qmTbghp.js → server-node-events-CcAiA2an.js} +3 -3
  110. package/dist/{server-node-events-DwUtqxW5.js → server-node-events-DeBYOK05.js} +3 -3
  111. package/dist/{status-CPCpSX9k.js → status-BW8aF7xu.js} +2 -2
  112. package/dist/{status-CMG5erwf.js → status-Dd0rJBTD.js} +2 -2
  113. package/dist/{subagent-registry-DHwrN9Oj.js → subagent-registry-DeXWDNty.js} +12 -12
  114. package/dist/{update-cli-DMjQ-pCl.js → update-cli-C97163Ne.js} +9 -9
  115. package/dist/{update-cli-CQhZlXlT.js → update-cli-DLWAR9u6.js} +8 -8
  116. package/dist/{update-runner-BnTu_uJ4.js → update-runner-BV9LWTCG.js} +1 -1
  117. package/dist/{update-runner-CghbY9Ay.js → update-runner-Cft2lh5r.js} +1 -1
  118. package/dist/{upgrade-command-L9y3xbza.js → upgrade-command-909a7QUc.js} +14 -4
  119. package/dist/{upgrade-command-Bvrv4iDU.js → upgrade-command-BOG7TpIq.js} +14 -4
  120. package/dist/{upgrade-command-CvbcPPIF.js → upgrade-command-CWP8S_lt.js} +14 -4
  121. package/dist/{upgrade-command-Bh61DpzA.js → upgrade-command-eqla-KnV.js} +14 -4
  122. package/dist/{web-weF5X5MU.js → web-BwZ1OGaX.js} +3 -3
  123. package/dist/{web-U5rtNi4Q.js → web-D8zB-Qkg.js} +3 -3
  124. package/dist/{web-BJk05p_4.js → web-DGPTqAhk.js} +3 -3
  125. package/dist/{web-J7TF5rpD.js → web-Da_aB4Vm.js} +3 -3
  126. package/extensions/acpx/package.json +1 -1
  127. package/extensions/bluebubbles/package.json +1 -1
  128. package/extensions/copilot-proxy/package.json +1 -1
  129. package/extensions/diagnostics-otel/package.json +1 -1
  130. package/extensions/discord/package.json +1 -1
  131. package/extensions/feishu/package.json +1 -1
  132. package/extensions/google-gemini-cli-auth/package.json +1 -1
  133. package/extensions/googlechat/package.json +1 -1
  134. package/extensions/hand/package.json +1 -1
  135. package/extensions/imessage/package.json +1 -1
  136. package/extensions/irc/package.json +1 -1
  137. package/extensions/line/package.json +1 -1
  138. package/extensions/llm-task/package.json +1 -1
  139. package/extensions/matrix/CHANGELOG.md +12 -0
  140. package/extensions/matrix/package.json +1 -1
  141. package/extensions/mattermost/package.json +1 -1
  142. package/extensions/memory-core/package.json +1 -1
  143. package/extensions/memory-lancedb/package.json +1 -1
  144. package/extensions/minimax-portal-auth/package.json +1 -1
  145. package/extensions/msteams/CHANGELOG.md +12 -0
  146. package/extensions/msteams/package.json +1 -1
  147. package/extensions/nextcloud-talk/package.json +1 -1
  148. package/extensions/nostr/CHANGELOG.md +12 -0
  149. package/extensions/nostr/package.json +1 -1
  150. package/extensions/open-prose/package.json +1 -1
  151. package/extensions/signal/package.json +1 -1
  152. package/extensions/slack/package.json +1 -1
  153. package/extensions/synology-chat/package.json +1 -1
  154. package/extensions/telegram/package.json +1 -1
  155. package/extensions/tlon/package.json +1 -1
  156. package/extensions/twitch/CHANGELOG.md +12 -0
  157. package/extensions/twitch/package.json +1 -1
  158. package/extensions/voice-call/CHANGELOG.md +12 -0
  159. package/extensions/voice-call/package.json +1 -1
  160. package/extensions/whatsapp/package.json +1 -1
  161. package/extensions/zalo/CHANGELOG.md +12 -0
  162. package/extensions/zalo/package.json +1 -1
  163. package/extensions/zalouser/CHANGELOG.md +12 -0
  164. package/extensions/zalouser/package.json +1 -1
  165. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,19 @@
2
2
 
3
3
  Docs: https://docs.idlehands.ai
4
4
 
5
+ ## 4.0.16
6
+
7
+ ### Fixes
8
+
9
+ - Upgrade/NPM source: force self-upgrade installs to use the official npmjs registry (`https://registry.npmjs.org`) to avoid `ETARGET` failures caused by misconfigured or lagging alternate registries under elevated (`sudo`) installs.
10
+
11
+ ## 4.0.15
12
+
13
+ ### Fixes
14
+
15
+ - Anton preflight correctness: remove unsafe fallback that previously allowed direct implementation when discovery failed to produce a verified plan file.
16
+ - Anton completion integrity: in preflight mode, Anton now verifies repository change count before marking a task complete, preventing false positives when implementation returns success without making code changes.
17
+
5
18
  ## 4.0.14
6
19
 
7
20
  ### Fixes
@@ -12,7 +12,7 @@ import "./boolean-CE7i9tBR.js";
12
12
  import "./env-B5G1qwGc.js";
13
13
  import "./dock-BgOmHcbh.js";
14
14
  import "./tokens-BRLyURxW.js";
15
- import { H as randomIdempotencyKey, V as callGateway, a as agentCommand, o as resolveSessionKeyForRequest, v as withProgress } from "./pi-embedded-ChimfAJ-.js";
15
+ import { H as randomIdempotencyKey, V as callGateway, a as agentCommand, o as resolveSessionKeyForRequest, v as withProgress } from "./pi-embedded-Oto02Ard.js";
16
16
  import "./plugins-CRB60mCJ.js";
17
17
  import "./accounts-Dk8mJIrQ.js";
18
18
  import "./bindings-D3b5Fmc9.js";
@@ -67,7 +67,7 @@ import "./send-D4bMycQu.js";
67
67
  import "./resolve-route-DuttYY7A.js";
68
68
  import "./proxy-CRB9oCP5.js";
69
69
  import "./replies-6_GxvQYe.js";
70
- import "./deps-7AsluBQV.js";
70
+ import "./deps-CVb-kfIX.js";
71
71
 
72
72
  //#region src/commands/agent-via-gateway.ts
73
73
  const NO_GATEWAY_TIMEOUT_MS = 2147e6;
@@ -11,7 +11,7 @@ import { t as formatCliCommand } from "./command-format-BAxx4PW5.js";
11
11
  import "./env-BpvqFD5n.js";
12
12
  import "./dock-QcCdS4qA.js";
13
13
  import "./tokens-Cg4XNE3H.js";
14
- import { H as callGateway, U as randomIdempotencyKey, a as agentCommand, o as resolveSessionKeyForRequest, v as withProgress } from "./pi-embedded-bwvtdswf.js";
14
+ import { H as callGateway, U as randomIdempotencyKey, a as agentCommand, o as resolveSessionKeyForRequest, v as withProgress } from "./pi-embedded-BKTKQn_9.js";
15
15
  import "./plugins-D-_jp4FO.js";
16
16
  import "./accounts-BwrguHMw.js";
17
17
  import "./bindings-hT7SPhiA.js";
@@ -64,7 +64,7 @@ import "./send-Cn2wvd3W.js";
64
64
  import "./resolve-route-BI3VjtwE.js";
65
65
  import "./proxy-CNZpb4NE.js";
66
66
  import "./replies-CqYEEgmA.js";
67
- import "./deps-CIF1pkFi.js";
67
+ import "./deps-C28cWNmF.js";
68
68
 
69
69
  //#region src/commands/agent-via-gateway.ts
70
70
  const NO_GATEWAY_TIMEOUT_MS = 2147e6;
@@ -4,7 +4,7 @@ import { t as formatCliCommand } from "./command-format-CPa5ksO_.js";
4
4
  import { r as listAgentIds } from "./agent-scope-mLXQGQde.js";
5
5
  import { s as normalizeAgentId } from "./session-key-B9ePuoPx.js";
6
6
  import { h as GATEWAY_CLIENT_NAMES, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES } from "./message-channel-Qpj4ExtQ.js";
7
- import { D as resolveSessionKeyForRequest, E as agentCommand } from "./subagent-registry-DHwrN9Oj.js";
7
+ import { D as resolveSessionKeyForRequest, E as agentCommand } from "./subagent-registry-DeXWDNty.js";
8
8
  import { a as randomIdempotencyKey, n as callGateway } from "./call-DuNslqj2.js";
9
9
  import { n as withProgress } from "./progress-B76RkFx7.js";
10
10
 
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { Mt as resolveSessionKeyForRequest, jt as agentCommand } from "./reply-Cmj0wbnT.js";
2
+ import { Mt as resolveSessionKeyForRequest, jt as agentCommand } from "./reply-D6y5faqD.js";
3
3
  import { r as listAgentIds } from "./agent-scope-RA0zXRpu.js";
4
4
  import { s as normalizeAgentId } from "./session-key-Cuihcz_O.js";
5
5
  import { It as loadConfig } from "./model-selection-0dGxYGp8.js";
@@ -6,18 +6,18 @@ import { t as formatCliCommand } from "./command-format-CPa5ksO_.js";
6
6
  import { a as resolveAgentDir, b as DEFAULT_IDENTITY_FILENAME, d as resolveDefaultAgentId, n as listAgentEntries, u as resolveAgentWorkspaceDir } from "./agent-scope-mLXQGQde.js";
7
7
  import { m as DEFAULT_ACCOUNT_ID, s as normalizeAgentId, t as DEFAULT_AGENT_ID } from "./session-key-B9ePuoPx.js";
8
8
  import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-CCrfZ49T.js";
9
- import { M as identityHasValues, P as parseIdentityMarkdown } from "./subagent-registry-DHwrN9Oj.js";
9
+ import { M as identityHasValues, P as parseIdentityMarkdown } from "./subagent-registry-DeXWDNty.js";
10
10
  import { l as resolveSessionTranscriptsDirForAgent } from "./paths-CC17i2eK.js";
11
11
  import { a as ensureWorkspaceAndSessions, l as moveToTrash } from "./onboard-helpers-Dp6wXNs7.js";
12
12
  import { t as WizardCancelledError } from "./prompts-D3HHe1ZZ.js";
13
13
  import { t as createClackPrompter } from "./clack-prompter-Bo7vS5xP.js";
14
14
  import { t as resolveChannelDefaultAccountId } from "./helpers-CIyuenBU.js";
15
15
  import { a as parseBindingSpecs, i as describeBinding, n as applyAgentBindings, o as removeAgentBindings, r as buildChannelBindings, t as requireValidConfigSnapshot } from "./config-validation-BgKexeQb.js";
16
- import { a as pruneAgentConfig, i as loadAgentIdentity, n as buildAgentSummaries, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-C48CGAxv.js";
17
- import { r as setupChannels } from "./onboard-channels-CHLOUR52.js";
16
+ import { a as pruneAgentConfig, i as loadAgentIdentity, n as buildAgentSummaries, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-DP_bqTwg.js";
17
+ import { r as setupChannels } from "./onboard-channels-CM4puuWQ.js";
18
18
  import { n as logConfigUpdated } from "./logging-MF6Thoxk.js";
19
19
  import { n as promptAuthChoiceGrouped } from "./auth-choice-prompt-kycZqH8q.js";
20
- import { i as applyAuthChoice, r as warnIfModelConfigLooksOff } from "./auth-choice-B9F26cWG.js";
20
+ import { i as applyAuthChoice, r as warnIfModelConfigLooksOff } from "./auth-choice-D-TtZtMR.js";
21
21
  import path from "node:path";
22
22
  import fs from "node:fs/promises";
23
23
 
@@ -1,6 +1,6 @@
1
1
  import { a as resolveAgentDir, d as resolveDefaultAgentId, n as listAgentEntries, u as resolveAgentWorkspaceDir } from "./agent-scope-mLXQGQde.js";
2
2
  import { s as normalizeAgentId } from "./session-key-B9ePuoPx.js";
3
- import { M as identityHasValues, N as loadAgentIdentityFromWorkspace } from "./subagent-registry-DHwrN9Oj.js";
3
+ import { M as identityHasValues, N as loadAgentIdentityFromWorkspace } from "./subagent-registry-DeXWDNty.js";
4
4
 
5
5
  //#region src/commands/agents.config.ts
6
6
  function findAgentEntryIndex(list, agentId) {
@@ -1,4 +1,4 @@
1
- import { en as identityHasValues, tn as loadAgentIdentityFromWorkspace } from "./reply-Cmj0wbnT.js";
1
+ import { en as identityHasValues, tn as loadAgentIdentityFromWorkspace } from "./reply-D6y5faqD.js";
2
2
  import { a as resolveAgentDir, d as resolveDefaultAgentId, n as listAgentEntries, u as resolveAgentWorkspaceDir } from "./agent-scope-RA0zXRpu.js";
3
3
  import { s as normalizeAgentId } from "./session-key-Cuihcz_O.js";
4
4
 
@@ -1,6 +1,8 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { R as CONFIG_DIR } from "./entry.js";
3
+ import { execFile } from "node:child_process";
3
4
  import path from "node:path";
5
+ import { promisify } from "node:util";
4
6
  import fs from "node:fs/promises";
5
7
 
6
8
  //#region src/commands/anton.ts
@@ -12,6 +14,7 @@ var anton_exports = /* @__PURE__ */ __exportAll({
12
14
  });
13
15
  const ANTON_STATE_PATH = path.join(CONFIG_DIR, "anton.state.json");
14
16
  const ANTON_LOCK_PATH = path.join(CONFIG_DIR, "anton.lock");
17
+ const execFile$1 = promisify(execFile);
15
18
  async function ensureStateDir() {
16
19
  await fs.mkdir(CONFIG_DIR, { recursive: true });
17
20
  }
@@ -222,7 +225,7 @@ async function loadAntonConfig() {
222
225
  }
223
226
  }
224
227
  async function runAgentTask(args) {
225
- const { agentCliCommand } = await import("./agent-via-gateway-B0077UOc.js").then((n) => n.n);
228
+ const { agentCliCommand } = await import("./agent-via-gateway-DIfwOe7Y.js").then((n) => n.n);
226
229
  const extraSystemPrompt = args.workspaceDir ? `Your working directory is: ${args.workspaceDir}\nAll file paths are relative to this directory. Use this as your cwd for all operations.` : void 0;
227
230
  const result = await agentCliCommand({
228
231
  message: args.message,
@@ -250,6 +253,14 @@ async function isPlanFileValid(filePath) {
250
253
  return false;
251
254
  }
252
255
  }
256
+ async function getGitChangedFileCount(cwd) {
257
+ try {
258
+ const { stdout } = await execFile$1("git", ["status", "--porcelain"], { cwd });
259
+ return stdout.split(/\r?\n/).map((line) => line.trim()).filter(Boolean).length;
260
+ } catch {
261
+ return null;
262
+ }
263
+ }
253
264
  function extractJsonObject(text) {
254
265
  const trimmed = text.trim();
255
266
  if (!trimmed) return null;
@@ -627,6 +638,7 @@ async function runAnton(args) {
627
638
  workspaceDir: args.workspaceDir
628
639
  });
629
640
  }
641
+ if (!planFile) throw new Error("Preflight discovery did not produce a verified plan file; refusing direct implementation fallback");
630
642
  }
631
643
  await notify({
632
644
  phase: "implementation_start",
@@ -643,8 +655,11 @@ async function runAnton(args) {
643
655
  task: task.text,
644
656
  sessionId: implSessionId
645
657
  });
658
+ const implPrompt = planFile ? buildImplementationPrompt(task.text, planFile) : buildDirectTaskPrompt(task.text);
659
+ const gitCwd = args.workspaceDir ? path.resolve(args.workspaceDir) : path.dirname(filePath);
660
+ const changedBefore = await getGitChangedFileCount(gitCwd);
646
661
  await runAgentTask({
647
- message: planFile ? buildImplementationPrompt(task.text, planFile) : buildDirectTaskPrompt(task.text),
662
+ message: implPrompt,
648
663
  sessionId: implSessionId,
649
664
  timeout: defaultTimeout,
650
665
  agent: args.agent,
@@ -653,6 +668,8 @@ async function runAnton(args) {
653
668
  deps: args.deps,
654
669
  workspaceDir: args.workspaceDir
655
670
  });
671
+ const changedAfter = await getGitChangedFileCount(gitCwd);
672
+ if (mode === "preflight" && changedBefore !== null && changedAfter !== null && changedAfter <= changedBefore) throw new Error("Implementation made no repository changes; refusing to mark task complete");
656
673
  const updated = markTaskDone(await fs.readFile(filePath, "utf8"), task.line);
657
674
  await fs.writeFile(filePath, updated, "utf8");
658
675
  completed += 1;
@@ -1,11 +1,14 @@
1
1
  import "./paths-BQL7-SbN.js";
2
2
  import { t as CONFIG_DIR } from "./utils-DWJR1fcE.js";
3
3
  import path from "node:path";
4
+ import { promisify } from "node:util";
4
5
  import fs from "node:fs/promises";
6
+ import { execFile } from "node:child_process";
5
7
 
6
8
  //#region src/commands/anton.ts
7
9
  const ANTON_STATE_PATH = path.join(CONFIG_DIR, "anton.state.json");
8
10
  const ANTON_LOCK_PATH = path.join(CONFIG_DIR, "anton.lock");
11
+ const execFile$1 = promisify(execFile);
9
12
  async function ensureStateDir() {
10
13
  await fs.mkdir(CONFIG_DIR, { recursive: true });
11
14
  }
@@ -216,7 +219,7 @@ async function loadAntonConfig() {
216
219
  }
217
220
  }
218
221
  async function runAgentTask(args) {
219
- const { agentCliCommand } = await import("./agent-via-gateway-BCActbIf.js");
222
+ const { agentCliCommand } = await import("./agent-via-gateway-Ceb_VeXS.js");
220
223
  const extraSystemPrompt = args.workspaceDir ? `Your working directory is: ${args.workspaceDir}\nAll file paths are relative to this directory. Use this as your cwd for all operations.` : void 0;
221
224
  const result = await agentCliCommand({
222
225
  message: args.message,
@@ -244,6 +247,14 @@ async function isPlanFileValid(filePath) {
244
247
  return false;
245
248
  }
246
249
  }
250
+ async function getGitChangedFileCount(cwd) {
251
+ try {
252
+ const { stdout } = await execFile$1("git", ["status", "--porcelain"], { cwd });
253
+ return stdout.split(/\r?\n/).map((line) => line.trim()).filter(Boolean).length;
254
+ } catch {
255
+ return null;
256
+ }
257
+ }
247
258
  function extractJsonObject(text) {
248
259
  const trimmed = text.trim();
249
260
  if (!trimmed) return null;
@@ -621,6 +632,7 @@ async function runAnton(args) {
621
632
  workspaceDir: args.workspaceDir
622
633
  });
623
634
  }
635
+ if (!planFile) throw new Error("Preflight discovery did not produce a verified plan file; refusing direct implementation fallback");
624
636
  }
625
637
  await notify({
626
638
  phase: "implementation_start",
@@ -637,8 +649,11 @@ async function runAnton(args) {
637
649
  task: task.text,
638
650
  sessionId: implSessionId
639
651
  });
652
+ const implPrompt = planFile ? buildImplementationPrompt(task.text, planFile) : buildDirectTaskPrompt(task.text);
653
+ const gitCwd = args.workspaceDir ? path.resolve(args.workspaceDir) : path.dirname(filePath);
654
+ const changedBefore = await getGitChangedFileCount(gitCwd);
640
655
  await runAgentTask({
641
- message: planFile ? buildImplementationPrompt(task.text, planFile) : buildDirectTaskPrompt(task.text),
656
+ message: implPrompt,
642
657
  sessionId: implSessionId,
643
658
  timeout: defaultTimeout,
644
659
  agent: args.agent,
@@ -647,6 +662,8 @@ async function runAnton(args) {
647
662
  deps: args.deps,
648
663
  workspaceDir: args.workspaceDir
649
664
  });
665
+ const changedAfter = await getGitChangedFileCount(gitCwd);
666
+ if (mode === "preflight" && changedBefore !== null && changedAfter !== null && changedAfter <= changedBefore) throw new Error("Implementation made no repository changes; refusing to mark task complete");
650
667
  const updated = markTaskDone(await fs.readFile(filePath, "utf8"), task.line);
651
668
  await fs.writeFile(filePath, updated, "utf8");
652
669
  completed += 1;
@@ -1,7 +1,9 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { t as CONFIG_DIR } from "./utils-CXzXXV2o.js";
3
3
  import path from "node:path";
4
+ import { promisify } from "node:util";
4
5
  import fs from "node:fs/promises";
6
+ import { execFile } from "node:child_process";
5
7
 
6
8
  //#region src/commands/anton.ts
7
9
  var anton_exports = /* @__PURE__ */ __exportAll({
@@ -12,6 +14,7 @@ var anton_exports = /* @__PURE__ */ __exportAll({
12
14
  });
13
15
  const ANTON_STATE_PATH = path.join(CONFIG_DIR, "anton.state.json");
14
16
  const ANTON_LOCK_PATH = path.join(CONFIG_DIR, "anton.lock");
17
+ const execFile$1 = promisify(execFile);
15
18
  async function ensureStateDir() {
16
19
  await fs.mkdir(CONFIG_DIR, { recursive: true });
17
20
  }
@@ -222,7 +225,7 @@ async function loadAntonConfig() {
222
225
  }
223
226
  }
224
227
  async function runAgentTask(args) {
225
- const { agentCliCommand } = await import("./agent-via-gateway-DFnFArbP.js").then((n) => n.n);
228
+ const { agentCliCommand } = await import("./agent-via-gateway-F1Zu0slF.js").then((n) => n.n);
226
229
  const extraSystemPrompt = args.workspaceDir ? `Your working directory is: ${args.workspaceDir}\nAll file paths are relative to this directory. Use this as your cwd for all operations.` : void 0;
227
230
  const result = await agentCliCommand({
228
231
  message: args.message,
@@ -250,6 +253,14 @@ async function isPlanFileValid(filePath) {
250
253
  return false;
251
254
  }
252
255
  }
256
+ async function getGitChangedFileCount(cwd) {
257
+ try {
258
+ const { stdout } = await execFile$1("git", ["status", "--porcelain"], { cwd });
259
+ return stdout.split(/\r?\n/).map((line) => line.trim()).filter(Boolean).length;
260
+ } catch {
261
+ return null;
262
+ }
263
+ }
253
264
  function extractJsonObject(text) {
254
265
  const trimmed = text.trim();
255
266
  if (!trimmed) return null;
@@ -627,6 +638,7 @@ async function runAnton(args) {
627
638
  workspaceDir: args.workspaceDir
628
639
  });
629
640
  }
641
+ if (!planFile) throw new Error("Preflight discovery did not produce a verified plan file; refusing direct implementation fallback");
630
642
  }
631
643
  await notify({
632
644
  phase: "implementation_start",
@@ -643,8 +655,11 @@ async function runAnton(args) {
643
655
  task: task.text,
644
656
  sessionId: implSessionId
645
657
  });
658
+ const implPrompt = planFile ? buildImplementationPrompt(task.text, planFile) : buildDirectTaskPrompt(task.text);
659
+ const gitCwd = args.workspaceDir ? path.resolve(args.workspaceDir) : path.dirname(filePath);
660
+ const changedBefore = await getGitChangedFileCount(gitCwd);
646
661
  await runAgentTask({
647
- message: planFile ? buildImplementationPrompt(task.text, planFile) : buildDirectTaskPrompt(task.text),
662
+ message: implPrompt,
648
663
  sessionId: implSessionId,
649
664
  timeout: defaultTimeout,
650
665
  agent: args.agent,
@@ -653,6 +668,8 @@ async function runAnton(args) {
653
668
  deps: args.deps,
654
669
  workspaceDir: args.workspaceDir
655
670
  });
671
+ const changedAfter = await getGitChangedFileCount(gitCwd);
672
+ if (mode === "preflight" && changedBefore !== null && changedAfter !== null && changedAfter <= changedBefore) throw new Error("Implementation made no repository changes; refusing to mark task complete");
656
673
  const updated = markTaskDone(await fs.readFile(filePath, "utf8"), task.line);
657
674
  await fs.writeFile(filePath, updated, "utf8");
658
675
  completed += 1;
@@ -2,10 +2,13 @@ import "./paths-BYNVLNi_.js";
2
2
  import { t as CONFIG_DIR } from "./utils-CTFLl_ji.js";
3
3
  import fs from "node:fs/promises";
4
4
  import path from "node:path";
5
+ import { promisify } from "node:util";
6
+ import { execFile } from "node:child_process";
5
7
 
6
8
  //#region src/commands/anton.ts
7
9
  const ANTON_STATE_PATH = path.join(CONFIG_DIR, "anton.state.json");
8
10
  const ANTON_LOCK_PATH = path.join(CONFIG_DIR, "anton.lock");
11
+ const execFile$1 = promisify(execFile);
9
12
  async function ensureStateDir() {
10
13
  await fs.mkdir(CONFIG_DIR, { recursive: true });
11
14
  }
@@ -216,7 +219,7 @@ async function loadAntonConfig() {
216
219
  }
217
220
  }
218
221
  async function runAgentTask(args) {
219
- const { agentCliCommand } = await import("./agent-via-gateway-D-FbIr6E.js");
222
+ const { agentCliCommand } = await import("./agent-via-gateway-7SDhvcBa.js");
220
223
  const extraSystemPrompt = args.workspaceDir ? `Your working directory is: ${args.workspaceDir}\nAll file paths are relative to this directory. Use this as your cwd for all operations.` : void 0;
221
224
  const result = await agentCliCommand({
222
225
  message: args.message,
@@ -244,6 +247,14 @@ async function isPlanFileValid(filePath) {
244
247
  return false;
245
248
  }
246
249
  }
250
+ async function getGitChangedFileCount(cwd) {
251
+ try {
252
+ const { stdout } = await execFile$1("git", ["status", "--porcelain"], { cwd });
253
+ return stdout.split(/\r?\n/).map((line) => line.trim()).filter(Boolean).length;
254
+ } catch {
255
+ return null;
256
+ }
257
+ }
247
258
  function extractJsonObject(text) {
248
259
  const trimmed = text.trim();
249
260
  if (!trimmed) return null;
@@ -621,6 +632,7 @@ async function runAnton(args) {
621
632
  workspaceDir: args.workspaceDir
622
633
  });
623
634
  }
635
+ if (!planFile) throw new Error("Preflight discovery did not produce a verified plan file; refusing direct implementation fallback");
624
636
  }
625
637
  await notify({
626
638
  phase: "implementation_start",
@@ -637,8 +649,11 @@ async function runAnton(args) {
637
649
  task: task.text,
638
650
  sessionId: implSessionId
639
651
  });
652
+ const implPrompt = planFile ? buildImplementationPrompt(task.text, planFile) : buildDirectTaskPrompt(task.text);
653
+ const gitCwd = args.workspaceDir ? path.resolve(args.workspaceDir) : path.dirname(filePath);
654
+ const changedBefore = await getGitChangedFileCount(gitCwd);
640
655
  await runAgentTask({
641
- message: planFile ? buildImplementationPrompt(task.text, planFile) : buildDirectTaskPrompt(task.text),
656
+ message: implPrompt,
642
657
  sessionId: implSessionId,
643
658
  timeout: defaultTimeout,
644
659
  agent: args.agent,
@@ -647,6 +662,8 @@ async function runAnton(args) {
647
662
  deps: args.deps,
648
663
  workspaceDir: args.workspaceDir
649
664
  });
665
+ const changedAfter = await getGitChangedFileCount(gitCwd);
666
+ if (mode === "preflight" && changedBefore !== null && changedAfter !== null && changedAfter <= changedBefore) throw new Error("Implementation made no repository changes; refusing to mark task complete");
650
667
  const updated = markTaskDone(await fs.readFile(filePath, "utf8"), task.line);
651
668
  await fs.writeFile(filePath, updated, "utf8");
652
669
  completed += 1;
@@ -6,7 +6,7 @@ import { n as loadModelCatalog } from "./model-catalog-D9no0CH2.js";
6
6
  import { f as openUrl } from "./onboard-helpers-BQmbMJxJ.js";
7
7
  import { t as enablePluginInConfig } from "./enable-o_s6PBsC.js";
8
8
  import { $ as ZAI_DEFAULT_MODEL_REF, A as applyTogetherConfig, B as applyLitellmConfig, C as applyMoonshotProviderConfigCn, Ct as writeOAuthCredentials, D as applyQianfanProviderConfig, Dt as QIANFAN_DEFAULT_MODEL_REF, E as applyQianfanConfig, Et as MOONSHOT_DEFAULT_MODEL_REF, F as applyXaiProviderConfig, G as applyVercelAiGatewayProviderConfig, H as applyCloudflareAiGatewayConfig, I as applyXiaomiConfig, J as LITELLM_DEFAULT_MODEL_REF, K as applyAgentDefaultModelPrimary, L as applyXiaomiProviderConfig, M as applyVeniceConfig, N as applyVeniceProviderConfig, O as applySyntheticConfig, Ot as XAI_DEFAULT_MODEL_REF, P as applyXaiConfig, Q as XIAOMI_DEFAULT_MODEL_REF, R as applyZaiConfig, S as applyMoonshotProviderConfig, St as setZaiApiKey, T as applyOpenrouterProviderConfig, Tt as MISTRAL_DEFAULT_MODEL_REF, U as applyCloudflareAiGatewayProviderConfig, V as applyLitellmProviderConfig, W as applyVercelAiGatewayConfig, X as TOGETHER_DEFAULT_MODEL_REF, Y as OPENROUTER_DEFAULT_MODEL_REF, Z as VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF, _ as applyKimiCodeProviderConfig, _t as setVeniceApiKey, a as applyMinimaxApiConfig, at as setKilocodeApiKey, b as applyMoonshotConfig, bt as setXaiApiKey, c as applyMinimaxApiProviderConfigCn, ct as setMinimaxApiKey, d as applyAuthProfileConfig, dt as setOpenaiApiKey, et as setAnthropicApiKey, ft as setOpencodeZenApiKey, g as applyKimiCodeConfig, gt as setTogetherApiKey, h as applyKilocodeProviderConfig, ht as setSyntheticApiKey, i as applyOpencodeZenProviderConfig, it as setHuggingfaceApiKey, j as applyTogetherProviderConfig, k as applySyntheticProviderConfig, l as applyMinimaxConfig, lt as setMistralApiKey, m as applyKilocodeConfig, mt as setQianfanApiKey, n as validateAnthropicSetupToken, nt as setCloudflareAiGatewayConfig, o as applyMinimaxApiConfigCn, ot as setKimiCodingApiKey, p as applyHuggingfaceProviderConfig, pt as setOpenrouterApiKey, q as HUGGINGFACE_DEFAULT_MODEL_REF, r as applyOpencodeZenConfig, rt as setGeminiApiKey, s as applyMinimaxApiProviderConfig, st as setLitellmApiKey, t as buildTokenProfileId, tt as setByteplusApiKey, u as applyMinimaxProviderConfig, ut as setMoonshotApiKey, v as applyMistralConfig, vt as setVercelAiGatewayApiKey, w as applyOpenrouterConfig, wt as KIMI_CODING_MODEL_REF, x as applyMoonshotConfigCn, xt as setXiaomiApiKey, y as applyMistralProviderConfig, yt as setVolcengineApiKey, z as applyZaiProviderConfig } from "./auth-token-BJq87X3o.js";
9
- import { a as createVpsAwareOAuthHandlers, c as githubCopilotLoginCommand, i as resolveProviderMatch, n as mergeConfigPatch, o as isRemoteEnvironment, r as pickAuthMethod, s as resolvePluginProviders, t as applyDefaultModel } from "./provider-auth-helpers-DZhIVPGv.js";
9
+ import { a as createVpsAwareOAuthHandlers, c as githubCopilotLoginCommand, i as resolveProviderMatch, n as mergeConfigPatch, o as isRemoteEnvironment, r as pickAuthMethod, s as resolvePluginProviders, t as applyDefaultModel } from "./provider-auth-helpers-PdlgGx1Z.js";
10
10
  import { a as ensureApiKeyFromOptionEnvOrPrompt, c as applyDefaultModelChoice, d as validateApiKeyInput, l as ensureModelAllowlistEntry, n as createAuthChoiceDefaultModelApplier, o as normalizeSecretInputModeInput, r as createAuthChoiceModelStateBridge, s as normalizeTokenProviderInput, t as createAuthChoiceAgentModelNoter, u as normalizeApiKeyInput } from "./auth-choice.apply-helpers-CGcniL1T.js";
11
11
  import { a as GOOGLE_GEMINI_DEFAULT_MODEL, i as detectZaiEndpoint, n as applyOpenAIConfig, o as applyGoogleGeminiModelDefault, r as applyOpenAIProviderConfig, t as OPENAI_DEFAULT_MODEL } from "./openai-model-default-7J6cw1rA.js";
12
12
  import { c as OPENAI_CODEX_DEFAULT_MODEL, l as applyOpenAICodexModelDefault, r as applyPrimaryModel, s as promptAndConfigureVllm } from "./model-picker-BkXoTOiA.js";
@@ -6,7 +6,7 @@ import { n as loadModelCatalog } from "./model-catalog-DYWymzg_.js";
6
6
  import { f as openUrl } from "./onboard-helpers-Dp6wXNs7.js";
7
7
  import { t as enablePluginInConfig } from "./enable-CMXupNXl.js";
8
8
  import { $ as ZAI_DEFAULT_MODEL_REF, A as applyTogetherConfig, B as applyLitellmConfig, C as applyMoonshotProviderConfigCn, Ct as writeOAuthCredentials, D as applyQianfanProviderConfig, Dt as QIANFAN_DEFAULT_MODEL_REF, E as applyQianfanConfig, Et as MOONSHOT_DEFAULT_MODEL_REF, F as applyXaiProviderConfig, G as applyVercelAiGatewayProviderConfig, H as applyCloudflareAiGatewayConfig, I as applyXiaomiConfig, J as LITELLM_DEFAULT_MODEL_REF, K as applyAgentDefaultModelPrimary, L as applyXiaomiProviderConfig, M as applyVeniceConfig, N as applyVeniceProviderConfig, O as applySyntheticConfig, Ot as XAI_DEFAULT_MODEL_REF, P as applyXaiConfig, Q as XIAOMI_DEFAULT_MODEL_REF, R as applyZaiConfig, S as applyMoonshotProviderConfig, St as setZaiApiKey, T as applyOpenrouterProviderConfig, Tt as MISTRAL_DEFAULT_MODEL_REF, U as applyCloudflareAiGatewayProviderConfig, V as applyLitellmProviderConfig, W as applyVercelAiGatewayConfig, X as TOGETHER_DEFAULT_MODEL_REF, Y as OPENROUTER_DEFAULT_MODEL_REF, Z as VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF, _ as applyKimiCodeProviderConfig, _t as setVeniceApiKey, a as applyMinimaxApiConfig, at as setKilocodeApiKey, b as applyMoonshotConfig, bt as setXaiApiKey, c as applyMinimaxApiProviderConfigCn, ct as setMinimaxApiKey, d as applyAuthProfileConfig, dt as setOpenaiApiKey, et as setAnthropicApiKey, ft as setOpencodeZenApiKey, g as applyKimiCodeConfig, gt as setTogetherApiKey, h as applyKilocodeProviderConfig, ht as setSyntheticApiKey, i as applyOpencodeZenProviderConfig, it as setHuggingfaceApiKey, j as applyTogetherProviderConfig, k as applySyntheticProviderConfig, l as applyMinimaxConfig, lt as setMistralApiKey, m as applyKilocodeConfig, mt as setQianfanApiKey, n as validateAnthropicSetupToken, nt as setCloudflareAiGatewayConfig, o as applyMinimaxApiConfigCn, ot as setKimiCodingApiKey, p as applyHuggingfaceProviderConfig, pt as setOpenrouterApiKey, q as HUGGINGFACE_DEFAULT_MODEL_REF, r as applyOpencodeZenConfig, rt as setGeminiApiKey, s as applyMinimaxApiProviderConfig, st as setLitellmApiKey, t as buildTokenProfileId, tt as setByteplusApiKey, u as applyMinimaxProviderConfig, ut as setMoonshotApiKey, v as applyMistralConfig, vt as setVercelAiGatewayApiKey, w as applyOpenrouterConfig, wt as KIMI_CODING_MODEL_REF, x as applyMoonshotConfigCn, xt as setXiaomiApiKey, y as applyMistralProviderConfig, yt as setVolcengineApiKey, z as applyZaiProviderConfig } from "./auth-token-BQ_ECwH7.js";
9
- import { a as createVpsAwareOAuthHandlers, c as githubCopilotLoginCommand, i as resolveProviderMatch, n as mergeConfigPatch, o as isRemoteEnvironment, r as pickAuthMethod, s as resolvePluginProviders, t as applyDefaultModel } from "./provider-auth-helpers-ZH_-N5zd.js";
9
+ import { a as createVpsAwareOAuthHandlers, c as githubCopilotLoginCommand, i as resolveProviderMatch, n as mergeConfigPatch, o as isRemoteEnvironment, r as pickAuthMethod, s as resolvePluginProviders, t as applyDefaultModel } from "./provider-auth-helpers-CnqcE5__.js";
10
10
  import { a as ensureApiKeyFromOptionEnvOrPrompt, c as applyDefaultModelChoice, d as validateApiKeyInput, l as ensureModelAllowlistEntry, n as createAuthChoiceDefaultModelApplier, o as normalizeSecretInputModeInput, r as createAuthChoiceModelStateBridge, s as normalizeTokenProviderInput, t as createAuthChoiceAgentModelNoter, u as normalizeApiKeyInput } from "./auth-choice.apply-helpers-Bj-Y-Sar.js";
11
11
  import { a as GOOGLE_GEMINI_DEFAULT_MODEL, i as detectZaiEndpoint, n as applyOpenAIConfig, o as applyGoogleGeminiModelDefault, r as applyOpenAIProviderConfig, t as OPENAI_DEFAULT_MODEL } from "./openai-model-default-DTIibBxa.js";
12
12
  import { c as OPENAI_CODEX_DEFAULT_MODEL, l as applyOpenAICodexModelDefault, r as applyPrimaryModel, s as promptAndConfigureVllm } from "./model-picker-D_yngXMe.js";
@@ -1,5 +1,5 @@
1
1
  import { St as theme, g as visibleWidth, sn as hasRootVersionAlias, xt as isRich } from "./entry.js";
2
- import { Tn as resolveCommitHash } from "./subagent-registry-DHwrN9Oj.js";
2
+ import { Tn as resolveCommitHash } from "./subagent-registry-DeXWDNty.js";
3
3
 
4
4
  //#region src/cli/tagline.ts
5
5
  const DEFAULT_TAGLINE = "All your chats, one IdleHands.";
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.0.14",
3
- "commit": "cd69d743fcf3dd982f1ed349092813bfbf451283",
4
- "builtAt": "2026-03-01T21:10:11.789Z"
2
+ "version": "4.0.16",
3
+ "commit": "0c953c25b8be576afe93df1929513c8239c078a1",
4
+ "builtAt": "2026-03-01T21:22:45.610Z"
5
5
  }
@@ -11,7 +11,7 @@ import "../../boolean-CE7i9tBR.js";
11
11
  import "../../env-B5G1qwGc.js";
12
12
  import "../../dock-BgOmHcbh.js";
13
13
  import { n as SILENT_REPLY_TOKEN } from "../../tokens-BRLyURxW.js";
14
- import { a as agentCommand } from "../../pi-embedded-ChimfAJ-.js";
14
+ import { a as agentCommand } from "../../pi-embedded-Oto02Ard.js";
15
15
  import "../../plugins-CRB60mCJ.js";
16
16
  import "../../accounts-Dk8mJIrQ.js";
17
17
  import "../../bindings-D3b5Fmc9.js";
@@ -66,7 +66,7 @@ import "../../send-D4bMycQu.js";
66
66
  import "../../resolve-route-DuttYY7A.js";
67
67
  import "../../proxy-CRB9oCP5.js";
68
68
  import "../../replies-6_GxvQYe.js";
69
- import { t as createDefaultDeps } from "../../deps-7AsluBQV.js";
69
+ import { t as createDefaultDeps } from "../../deps-CVb-kfIX.js";
70
70
  import fs from "node:fs/promises";
71
71
  import path from "node:path";
72
72
  import crypto from "node:crypto";
@@ -11,7 +11,7 @@ import "../../boolean-CE7i9tBR.js";
11
11
  import "../../env-B5G1qwGc.js";
12
12
  import "../../dock-BgOmHcbh.js";
13
13
  import "../../tokens-BRLyURxW.js";
14
- import "../../pi-embedded-ChimfAJ-.js";
14
+ import "../../pi-embedded-Oto02Ard.js";
15
15
  import "../../plugins-CRB60mCJ.js";
16
16
  import "../../accounts-Dk8mJIrQ.js";
17
17
  import "../../bindings-D3b5Fmc9.js";
@@ -66,7 +66,7 @@ import "../../send-D4bMycQu.js";
66
66
  import "../../resolve-route-DuttYY7A.js";
67
67
  import "../../proxy-CRB9oCP5.js";
68
68
  import "../../replies-6_GxvQYe.js";
69
- import "../../deps-7AsluBQV.js";
69
+ import "../../deps-CVb-kfIX.js";
70
70
  import { generateSlugViaLLM } from "../../llm-slug-generator.js";
71
71
  import { t as resolveHookConfig } from "../../config-BsP4lHEP.js";
72
72
  import fs from "node:fs/promises";
@@ -2,7 +2,7 @@ import { f as CHAT_CHANNEL_ORDER } from "./subsystem-CGZX2PBV.js";
2
2
  import { t as isTruthyEnvValue } from "./env-Bx-F45X5.js";
3
3
  import { n as listChannelPlugins } from "./plugins-D46VZh7u.js";
4
4
  import { a as listChannelPluginCatalogEntries } from "./plugin-auto-enable-7DUxMy6A.js";
5
- import { t as ensurePluginRegistryLoaded } from "./plugin-registry-BBx7owin.js";
5
+ import { t as ensurePluginRegistryLoaded } from "./plugin-registry-PcN7mK-d.js";
6
6
 
7
7
  //#region src/cli/channel-options.ts
8
8
  function dedupe(values) {
@@ -1,7 +1,7 @@
1
1
  import { r as isTruthyEnvValue, v as CHAT_CHANNEL_ORDER } from "./entry.js";
2
2
  import { n as listChannelPlugins } from "./plugins-CCrfZ49T.js";
3
3
  import { a as listChannelPluginCatalogEntries } from "./plugin-auto-enable-dpNitoNd.js";
4
- import { t as ensurePluginRegistryLoaded } from "./plugin-registry-CYh53OcU.js";
4
+ import { t as ensurePluginRegistryLoaded } from "./plugin-registry-BfNJBiAr.js";
5
5
 
6
6
  //#region src/cli/channel-options.ts
7
7
  function dedupe(values) {
@@ -1,5 +1,5 @@
1
1
  import { C as sleep, F as shouldLogVerbose, M as logVerbose, T as toWhatsappJid, V as getChildLogger, f as isSelfChatMode, m as normalizeE164, p as jidToE164, r as clamp, v as resolveJidToE164 } from "./utils-CXzXXV2o.js";
2
- import { Cr as enqueueSystemEvent, Dn as createDedupeCache, On as hasControlCommand, Ot as computeBackoff, Sn as resolveEnvelopeFormatOptions, Sr as normalizeMentionText, _n as dispatchReplyWithBufferedBlockDispatcher, _t as normalizeGroupActivation, bn as resolveInboundDebounceMs, cn as buildPairingReply, dn as buildHistoryContextFromEntries, fn as recordPendingHistoryEntryIfEnabled, gn as shouldAckReactionForWhatsApp, hn as warnMissingProviderGroupPolicyFallbackOnce, kn as shouldComputeCommandAuthorized, kt as sleepWithAbort, ln as resolveMentionGating, mn as resolveOpenProviderRuntimeGroupPolicy, pn as resolveDefaultGroupPolicy, t as getReplyFromConfig, un as DEFAULT_GROUP_HISTORY_LIMIT, vt as parseActivationCommand, xn as formatInboundEnvelope, xr as buildMentionRegexes, yn as createInboundDebouncer } from "./reply-Cmj0wbnT.js";
2
+ import { Cr as enqueueSystemEvent, Dn as createDedupeCache, On as hasControlCommand, Ot as computeBackoff, Sn as resolveEnvelopeFormatOptions, Sr as normalizeMentionText, _n as dispatchReplyWithBufferedBlockDispatcher, _t as normalizeGroupActivation, bn as resolveInboundDebounceMs, cn as buildPairingReply, dn as buildHistoryContextFromEntries, fn as recordPendingHistoryEntryIfEnabled, gn as shouldAckReactionForWhatsApp, hn as warnMissingProviderGroupPolicyFallbackOnce, kn as shouldComputeCommandAuthorized, kt as sleepWithAbort, ln as resolveMentionGating, mn as resolveOpenProviderRuntimeGroupPolicy, pn as resolveDefaultGroupPolicy, t as getReplyFromConfig, un as DEFAULT_GROUP_HISTORY_LIMIT, vt as parseActivationCommand, xn as formatInboundEnvelope, xr as buildMentionRegexes, yn as createInboundDebouncer } from "./reply-D6y5faqD.js";
3
3
  import { t as createSubsystemLogger } from "./subsystem-CGZX2PBV.js";
4
4
  import { n as defaultRuntime } from "./runtime-44j_X4Y6.js";
5
5
  import { a as buildGroupHistoryKey, n as DEFAULT_MAIN_KEY, r as buildAgentMainSessionKey, s as normalizeAgentId } from "./session-key-Cuihcz_O.js";
@@ -819,7 +819,7 @@ async function monitorWebInbox(options) {
819
819
  };
820
820
  const stopText = (inboundMessage.body ?? "").trim();
821
821
  if (stopText) {
822
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-BQVndluY.js");
822
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-CMeSxuEg.js");
823
823
  if (isAbortRequestText(stopText)) {
824
824
  const { loadConfig: loadCfg } = await import("./model-selection-0dGxYGp8.js").then((n) => n.Mt);
825
825
  const { resolveAgentRoute } = await import("./resolve-route-D_AbcmD6.js").then((n) => n.r);
@@ -7,7 +7,7 @@ import { a as resolveChannelGroupRequireMention, i as resolveChannelGroupPolicy
7
7
  import { c as loadSessionStore, d as recordSessionMetaFromInbound, h as updateLastRoute, lt as resolveGroupSessionKey, u as readSessionUpdatedAt } from "./sessions-BoqJKVEs.js";
8
8
  import { i as resolveWhatsAppAccount } from "./accounts-nuNP3OfB.js";
9
9
  import { l as readWebSelfId, n as getWebAuthAgeMs } from "./auth-store-D9BmR4S6.js";
10
- import { $ as createDedupeCache, B as resolveDefaultGroupPolicy, C as computeBackoff, En as enqueueSystemEvent, F as buildPairingReply, H as warnMissingProviderGroupPolicyFallbackOnce, I as resolveMentionGating, J as formatInboundEnvelope, K as createInboundDebouncer, L as DEFAULT_GROUP_HISTORY_LIMIT, R as buildHistoryContextFromEntries, U as shouldAckReactionForWhatsApp, V as resolveOpenProviderRuntimeGroupPolicy, W as dispatchReplyWithBufferedBlockDispatcher, Xn as shouldComputeCommandAuthorized, Y as resolveEnvelopeFormatOptions, Yn as hasControlCommand, er as buildMentionRegexes, et as getReplyFromConfig, mn as parseActivationCommand, pn as normalizeGroupActivation, q as resolveInboundDebounceMs, tr as normalizeMentionText, w as sleepWithAbort, z as recordPendingHistoryEntryIfEnabled } from "./subagent-registry-DHwrN9Oj.js";
10
+ import { $ as createDedupeCache, B as resolveDefaultGroupPolicy, C as computeBackoff, En as enqueueSystemEvent, F as buildPairingReply, H as warnMissingProviderGroupPolicyFallbackOnce, I as resolveMentionGating, J as formatInboundEnvelope, K as createInboundDebouncer, L as DEFAULT_GROUP_HISTORY_LIMIT, R as buildHistoryContextFromEntries, U as shouldAckReactionForWhatsApp, V as resolveOpenProviderRuntimeGroupPolicy, W as dispatchReplyWithBufferedBlockDispatcher, Xn as shouldComputeCommandAuthorized, Y as resolveEnvelopeFormatOptions, Yn as hasControlCommand, er as buildMentionRegexes, et as getReplyFromConfig, mn as parseActivationCommand, pn as normalizeGroupActivation, q as resolveInboundDebounceMs, tr as normalizeMentionText, w as sleepWithAbort, z as recordPendingHistoryEntryIfEnabled } from "./subagent-registry-DeXWDNty.js";
11
11
  import { u as resolveStorePath } from "./paths-CC17i2eK.js";
12
12
  import { K as formatLocationText, q as toLocationContext } from "./send-PtDa6Pf-.js";
13
13
  import { r as saveMediaBuffer } from "./store-a6R4X6WX.js";
@@ -818,7 +818,7 @@ async function monitorWebInbox(options) {
818
818
  };
819
819
  const stopText = (inboundMessage.body ?? "").trim();
820
820
  if (stopText) {
821
- const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-C5022igA.js");
821
+ const { isAbortRequestText, emergencyStop, resolveSessionForEmergencyStop } = await import("./emergency-stop-D-dp9zCO.js");
822
822
  if (isAbortRequestText(stopText)) {
823
823
  const { loadConfig: loadCfg } = await import("./auth-profiles-Baj5ImDJ.js").then((n) => n.D);
824
824
  const { resolveAgentRoute } = await import("./resolve-route-VUTvr63H.js").then((n) => n.r);
@@ -27,7 +27,7 @@ import "./logging-Bgrm4o7g.js";
27
27
  import "./auth-store-D9BmR4S6.js";
28
28
  import { i as createSlackWebClient } from "./send-m4lQkQcY.js";
29
29
  import { $ as fetchChannelPermissionsDiscord, it as parseDiscordTarget } from "./send-CCiDIuX4.js";
30
- import { gn as formatUsageReportLines, hn as loadProviderUsageSummary, v as deleteTelegramUpdateOffset } from "./subagent-registry-DHwrN9Oj.js";
30
+ import { gn as formatUsageReportLines, hn as loadProviderUsageSummary, v as deleteTelegramUpdateOffset } from "./subagent-registry-DeXWDNty.js";
31
31
  import "./paths-CC17i2eK.js";
32
32
  import "./chat-envelope-Dedaetiq.js";
33
33
  import "./client-Brv1GCwX.js";
@@ -111,12 +111,12 @@ import { n as runCommandWithRuntime } from "./cli-utils-BfsDuRZS.js";
111
111
  import { t as formatHelpExamples } from "./help-format-CldHB7lS.js";
112
112
  import { n as withProgress } from "./progress-B76RkFx7.js";
113
113
  import "./replies-DSfpze17.js";
114
- import "./deps-8ieGS4Mv.js";
114
+ import "./deps-Cn32rOjf.js";
115
115
  import "./onboard-helpers-Dp6wXNs7.js";
116
116
  import "./prompt-style-XmK49QYK.js";
117
117
  import "./pairing-labels-D7xcHkxi.js";
118
118
  import "./outbound-B8NhUGIW.js";
119
- import "./channel-web-Ylr-WudQ.js";
119
+ import "./channel-web-C7s5QLXL.js";
120
120
  import "./session-BVsrroox.js";
121
121
  import "./login-BaXwiEpr.js";
122
122
  import { t as hasExplicitOptions } from "./command-options-CK65DMbR.js";
@@ -125,18 +125,18 @@ import "./note-C2HHth6G.js";
125
125
  import { t as createClackPrompter } from "./clack-prompter-Bo7vS5xP.js";
126
126
  import { t as resolveChannelDefaultAccountId } from "./helpers-CIyuenBU.js";
127
127
  import { i as describeBinding, n as applyAgentBindings, t as requireValidConfigSnapshot } from "./config-validation-BgKexeQb.js";
128
- import { n as buildAgentSummaries } from "./agents.config-C48CGAxv.js";
128
+ import { n as buildAgentSummaries } from "./agents.config-DP_bqTwg.js";
129
129
  import "./enable-CMXupNXl.js";
130
130
  import "./install-safe-path-C7y57-yb.js";
131
131
  import "./npm-registry-spec-BlFqJFsA.js";
132
132
  import "./skill-scanner-CdLElD51.js";
133
133
  import "./installs-8aQVDSI0.js";
134
- import { a as reloadOnboardingPluginRegistry, i as ensureOnboardingPluginInstalled, r as setupChannels } from "./onboard-channels-CHLOUR52.js";
134
+ import { a as reloadOnboardingPluginRegistry, i as ensureOnboardingPluginInstalled, r as setupChannels } from "./onboard-channels-CM4puuWQ.js";
135
135
  import { t as buildChannelAccountSnapshot } from "./status-CzZ2Nnqd.js";
136
136
  import { t as parseLogLine } from "./parse-log-line-yhomxGjM.js";
137
137
  import { t as collectChannelStatusIssues } from "./channels-status-issues-Bi00z1aP.js";
138
- import "./plugin-registry-CYh53OcU.js";
139
- import { t as formatCliChannelOptions } from "./channel-options-DZ237bIi.js";
138
+ import "./plugin-registry-BfNJBiAr.js";
139
+ import { t as formatCliChannelOptions } from "./channel-options-CsEgIwgu.js";
140
140
  import fs from "node:fs/promises";
141
141
 
142
142
  //#region src/commands/channels/add-mutators.ts