@visorcraft/idlehands 4.0.16 → 4.0.18

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 (231) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/{accounts-Dk8mJIrQ.js → accounts-CRDMZUcg.js} +6 -6
  3. package/dist/{accounts-BDVs8LTu.js → accounts-upx5iuke.js} +1 -1
  4. package/dist/{accounts-CIvVRRHb.js → accounts-yD5yI-jP.js} +1 -1
  5. package/dist/{agent-scope-DyP_tr7s.js → agent-scope-BVeQuh5x.js} +4 -4
  6. package/dist/{agent-via-gateway-Ceb_VeXS.js → agent-via-gateway-CC37LlPd.js} +3 -2
  7. package/dist/{agent-via-gateway-DIfwOe7Y.js → agent-via-gateway-Cl2YwlXJ.js} +2 -1
  8. package/dist/{agent-via-gateway-F1Zu0slF.js → agent-via-gateway-ClQrLbgo.js} +2 -1
  9. package/dist/{agent-via-gateway-7SDhvcBa.js → agent-via-gateway-pMCfUzW-.js} +61 -60
  10. package/dist/{agents-idaLog48.js → agents-DrnGQroU.js} +4 -4
  11. package/dist/{agents.config-w0ZcfpyW.js → agents.config-BZPnYIMF.js} +1 -1
  12. package/dist/{agents.config-DP_bqTwg.js → agents.config-DfWZrbXn.js} +1 -1
  13. package/dist/{anton-CzWIEEiT.js → anton-B-I7rEtn.js} +44 -15
  14. package/dist/{anton-B7VZSQo-.js → anton-BfrX2FMd.js} +40 -11
  15. package/dist/{anton-Cs1JPzv4.js → anton-BgKjig3B.js} +40 -11
  16. package/dist/{anton-BomwkDBv.js → anton-BrY-bWgq.js} +40 -11
  17. package/dist/{audio-preflight-BSlR2jEq.js → audio-preflight-aBtF0cRI.js} +35 -35
  18. package/dist/{auth-choice-D-TtZtMR.js → auth-choice-DtvI4epn.js} +1 -1
  19. package/dist/{auth-choice-C49o8owq.js → auth-choice-_C22dz9o.js} +1 -1
  20. package/dist/{auth-store-DXT-l7fO.js → auth-store-DQAd4LSE.js} +12 -12
  21. package/dist/{banner-DmFqQvFd.js → banner-B-UYZG8d.js} +1 -1
  22. package/dist/{bindings-D3b5Fmc9.js → bindings-B9L4cqmm.js} +2 -2
  23. package/dist/build-info.json +3 -3
  24. package/dist/bundled/boot-md/handler.js +60 -60
  25. package/dist/bundled/bootstrap-extra-files/handler.js +5 -5
  26. package/dist/bundled/command-logger/handler.js +3 -3
  27. package/dist/bundled/session-memory/handler.js +60 -60
  28. package/dist/{channel-activity-D_TMOGQ0.js → channel-activity-DOLX-uK1.js} +3 -3
  29. package/dist/{channel-options-CsEgIwgu.js → channel-options-BbwNg4q_.js} +1 -1
  30. package/dist/{channel-options-1Dqo0zkg.js → channel-options-C0iwLcfC.js} +1 -1
  31. package/dist/{channel-web-BicbbO9_.js → channel-web-BLxKeCXF.js} +2 -2
  32. package/dist/{channel-web-C7s5QLXL.js → channel-web-q6Ugfiks.js} +2 -2
  33. package/dist/{channels-cli-CWb-B8BT.js → channels-cli-BtL1XuuK.js} +7 -7
  34. package/dist/{channels-cli-REwO9h_a.js → channels-cli-DaRR8vAs.js} +7 -7
  35. package/dist/{chrome-_2tzVjVl.js → chrome-D_SXDetO.js} +17 -17
  36. package/dist/{chunk-CMpX7Jaz.js → chunk-BgScV6uo.js} +1 -1
  37. package/dist/{cli-B9ARC6CF.js → cli-BjhrdeVd.js} +2 -2
  38. package/dist/{cli-B4rP4MXJ.js → cli-CrUoGRuS.js} +2 -2
  39. package/dist/{command-registry-0e5VHciB.js → command-registry-BZNlvfaM.js} +10 -10
  40. package/dist/{commands-registry-j4vAzcF2.js → commands-registry-CK7aj_ri.js} +5 -5
  41. package/dist/{completion-cli-C1StqVUs.js → completion-cli-BIabgt7h.js} +1 -1
  42. package/dist/{completion-cli-BTtvgatl.js → completion-cli-p9W-g1Pe.js} +2 -2
  43. package/dist/{config-cli-C3As38Z_.js → config-cli-B4nNEjK9.js} +1 -1
  44. package/dist/{config-cli-B-yirt2T.js → config-cli-u4zbdm-e.js} +1 -1
  45. package/dist/{configure-Cw6aeqBy.js → configure-BbDbMd5G.js} +3 -3
  46. package/dist/{configure-BEd8nUOe.js → configure-Dj1JdeEI.js} +3 -3
  47. package/dist/{deliver-CVTXl0Cv.js → deliver-CJaM2zRY.js} +20 -20
  48. package/dist/{deps-C28cWNmF.js → deps-BMWq0kjy.js} +1 -1
  49. package/dist/{deps-Cn32rOjf.js → deps-BuRud-p8.js} +1 -1
  50. package/dist/{deps-CVb-kfIX.js → deps-CQzDLqTz.js} +6 -6
  51. package/dist/{deps-CYAKIzhf.js → deps-Dr9GpASq.js} +1 -1
  52. package/dist/{diagnostic-4owMk4vH.js → diagnostic-lz5wKsEe.js} +1 -1
  53. package/dist/{dock-BgOmHcbh.js → dock-6MgvdSqu.js} +6 -6
  54. package/dist/{doctor-completion-o6QBkVYG.js → doctor-completion-BLRGmusD.js} +1 -1
  55. package/dist/{doctor-completion-T5sq7t8L.js → doctor-completion-BeZMlZPb.js} +1 -1
  56. package/dist/{emergency-stop-CMeSxuEg.js → emergency-stop-BEsjWvQL.js} +2 -2
  57. package/dist/{emergency-stop-h5_WOPZT.js → emergency-stop-BU-Vbk3V.js} +2 -2
  58. package/dist/{emergency-stop-D-dp9zCO.js → emergency-stop-CSSPAKHr.js} +2 -2
  59. package/dist/emergency-stop-JXB5jZyK.js +113 -0
  60. package/dist/entry.js +1 -1
  61. package/dist/{env-B5G1qwGc.js → env-B7b7MKfk.js} +1 -1
  62. package/dist/{errors-C_0nm4TJ.js → errors--Eb33_ji.js} +1 -1
  63. package/dist/extensionAPI.js +2 -2
  64. package/dist/{fetch-guard-iuQsIjqN.js → fetch-guard-OZ_PCUyr.js} +1 -1
  65. package/dist/{frontmatter-BOudmHMS.js → frontmatter-p8nPDprK.js} +2 -2
  66. package/dist/{fs-safe-CYUaAFO9.js → fs-safe-BEl8T_Vc.js} +2 -2
  67. package/dist/{gateway-cli-Dxoh3sSC.js → gateway-cli-BCHdAJHS.js} +9 -9
  68. package/dist/{gateway-cli-bZXsaQkU.js → gateway-cli-Dumy2IVU.js} +9 -9
  69. package/dist/{gemini-auth-CIyaa44H.js → gemini-auth-CA0K3QXj.js} +2 -2
  70. package/dist/{github-copilot-token-Dgt6cnsM.js → github-copilot-token-DCg9Q9Ll.js} +7 -7
  71. package/dist/{health-dLZas7f8.js → health-B3kk7l82.js} +1 -1
  72. package/dist/{health-OvNY74XL.js → health-CqdQAURH.js} +1 -1
  73. package/dist/{hooks-cli-DZr1MB1B.js → hooks-cli-Ba4woLl0.js} +3 -3
  74. package/dist/{hooks-cli-DOH-i33b.js → hooks-cli-jMG5GST1.js} +3 -3
  75. package/dist/{image-COw__ACq.js → image-BQ3RQWD8.js} +6 -6
  76. package/dist/{image-ops-D1KtygWz.js → image-ops-ZNtLhD4c.js} +1 -1
  77. package/dist/index.js +7 -7
  78. package/dist/{ir-B7IBoKLy.js → ir-DnyYtX4H.js} +5 -5
  79. package/dist/llm-slug-generator.js +60 -60
  80. package/dist/{local-roots-KN4Hp1yZ.js → local-roots-C9CA2f0R.js} +5 -5
  81. package/dist/{login-CFr5vJmR.js → login-Cn1vc1bn.js} +6 -6
  82. package/dist/{login-qr-CFFFOjOl.js → login-qr-Dj0NmRdg.js} +11 -11
  83. package/dist/{manager-BE_76jWB.js → manager-DBd_2F6j.js} +15 -15
  84. package/dist/{markdown-tables-CzsockiZ.js → markdown-tables-CsrsXS80.js} +1 -1
  85. package/dist/{message-channel-C8QtrwEU.js → message-channel-Cg9KtLfy.js} +1 -1
  86. package/dist/{model-selection-1MMYqY6M.js → model-selection-Vtu6d5Um.js} +41 -41
  87. package/dist/{models-Dvyot3-o.js → models-C6GypzZ1.js} +2 -2
  88. package/dist/{models-cli-Dtzht0md.js → models-cli-BaR1RccY.js} +4 -4
  89. package/dist/{models-cli-CKRL4j3x.js → models-cli-iLP9BnPA.js} +3 -3
  90. package/dist/{npm-resolution-BpruvRIr.js → npm-resolution-CWxaTTrT.js} +1 -1
  91. package/dist/{npm-resolution-iEXmU1Ol.js → npm-resolution-DYUWHUe5.js} +1 -1
  92. package/dist/{onboard-CS6IQorr.js → onboard-CinZ4CuY.js} +2 -2
  93. package/dist/{onboard-Ck4SwhZB.js → onboard-DdBsJgzg.js} +2 -2
  94. package/dist/{onboard-channels-CM4puuWQ.js → onboard-channels-9XAEsgO-.js} +1 -1
  95. package/dist/{onboard-channels-DzNjXM6f.js → onboard-channels-Bnwwq6TK.js} +1 -1
  96. package/dist/{onboarding-DMEJRAg4.js → onboarding-C4oujn63.js} +3 -3
  97. package/dist/{onboarding-0Pop0Cex.js → onboarding-DFvHWFqL.js} +3 -3
  98. package/dist/{onboarding.finalize-f2qChM_N.js → onboarding.finalize-BDWHPpyn.js} +6 -6
  99. package/dist/{onboarding.finalize-BZW1kZw7.js → onboarding.finalize-DMhdDTvo.js} +7 -7
  100. package/dist/{outbound-BNh6PpQb.js → outbound-BYm4JJli.js} +6 -6
  101. package/dist/{outbound-attachment-3I6GzwDe.js → outbound-attachment-DwaqvYNG.js} +2 -2
  102. package/dist/{path-alias-guards-Cu1nXNMM.js → path-alias-guards-BnjbJzIQ.js} +1 -1
  103. package/dist/{paths-D_qUel1T.js → paths-0fcEvxu4.js} +3 -3
  104. package/dist/{paths-BYNVLNi_.js → paths-CkTEyLTV.js} +5 -5
  105. package/dist/{pi-embedded-Oto02Ard.js → pi-embedded-BDp9JsrM.js} +175 -175
  106. package/dist/{pi-embedded-BKTKQn_9.js → pi-embedded-Dap1HAGA.js} +11 -11
  107. package/dist/{pi-embedded-helpers-CyTpDKo5.js → pi-embedded-helpers-B1CKQ81Y.js} +24 -24
  108. package/dist/{pi-model-discovery-Bb__OY-j.js → pi-model-discovery-DBHbwKOo.js} +7 -7
  109. package/dist/{plugin-registry-BfNJBiAr.js → plugin-registry-CGFy1ugt.js} +1 -1
  110. package/dist/{plugin-registry-PcN7mK-d.js → plugin-registry-LYzfPk35.js} +1 -1
  111. package/dist/plugin-sdk/{agent-via-gateway-l3LvRB7r.js → agent-via-gateway-De4e2_-W.js} +3 -2
  112. package/dist/plugin-sdk/{anton-DJn2RPpW.js → anton-BO16dWNw.js} +40 -11
  113. package/dist/plugin-sdk/{channel-web-DvztgyXI.js → channel-web-Cd-eamYe.js} +2 -2
  114. package/dist/plugin-sdk/commands/agent-via-gateway.d.ts +1 -0
  115. package/dist/plugin-sdk/{deps-B1DxdYuU.js → deps-D6VWIdk7.js} +1 -1
  116. package/dist/plugin-sdk/{emergency-stop-CVZuzTM7.js → emergency-stop-w-HD2bz4.js} +2 -2
  117. package/dist/plugin-sdk/index.js +3 -3
  118. package/dist/plugin-sdk/{reply-BhGucE6k.js → reply-BqAPyIsz.js} +11 -11
  119. package/dist/plugin-sdk/{web-BzmXmmAo.js → web-Dj_tThNQ.js} +3 -3
  120. package/dist/{plugins-CRB60mCJ.js → plugins-Bb6_uisJ.js} +10 -10
  121. package/dist/{plugins-cli-DOTZBHc7.js → plugins-cli-BCAcCeRZ.js} +3 -3
  122. package/dist/{plugins-cli-s1bEnfMn.js → plugins-cli-BQKfJ9aF.js} +3 -3
  123. package/dist/{program-Blak4A0H.js → program-Df-zk5RB.js} +8 -8
  124. package/dist/{program-context-DtHO30yM.js → program-context-DBOEyhi4.js} +18 -18
  125. package/dist/{prompt-select-styled-DuHE5c_O.js → prompt-select-styled-B0FsbRWb.js} +4 -4
  126. package/dist/{prompt-select-styled-D8vDTRY8.js → prompt-select-styled-DJVZSK4X.js} +4 -4
  127. package/dist/{provider-auth-helpers-PdlgGx1Z.js → provider-auth-helpers-Aojd4jNn.js} +1 -1
  128. package/dist/{provider-auth-helpers-CnqcE5__.js → provider-auth-helpers-D0cQmJkF.js} +1 -1
  129. package/dist/{push-apns-DkGS3lmo.js → push-apns-BtI9tV7C.js} +1 -1
  130. package/dist/{push-apns-CNVtKEbW.js → push-apns-qzriU6TC.js} +1 -1
  131. package/dist/{pw-ai-CowTfhOG.js → pw-ai-BKPa5DlF.js} +13 -13
  132. package/dist/{qmd-manager-B_GgyQQ0.js → qmd-manager-DEJVRLvM.js} +8 -8
  133. package/dist/{query-expansion-DEq020GG.js → query-expansion-CW7PqIXL.js} +5 -5
  134. package/dist/{redact-Bvpf-ATQ.js → redact-D1Ebz_iR.js} +1 -1
  135. package/dist/{register.agent-BGs6wEo-.js → register.agent-ButiRGeg.js} +9 -9
  136. package/dist/{register.agent-DliuXWG0.js → register.agent-Xdy9Gu3H.js} +8 -8
  137. package/dist/{register.configure-D9bNPRml.js → register.configure-f4xr9iKB.js} +8 -8
  138. package/dist/{register.configure-DJsShg2l.js → register.configure-m5qhbCOO.js} +8 -8
  139. package/dist/{register.maintenance-B-36Avrl.js → register.maintenance-BA4e0HDc.js} +8 -8
  140. package/dist/{register.maintenance-B7ZM7NqF.js → register.maintenance-N55abUee.js} +9 -9
  141. package/dist/{register.message-CmEzaYEw.js → register.message-DaVB6EYW.js} +3 -3
  142. package/dist/{register.message-Cm5P_dls.js → register.message-Zta0bYh0.js} +3 -3
  143. package/dist/{register.onboard-ByUSn1hy.js → register.onboard-BHKf5Emm.js} +2 -2
  144. package/dist/{register.onboard-cB-UkXhL.js → register.onboard-BikBO9Gs.js} +2 -2
  145. package/dist/{register.orchestrator-anton-D_mAceTk.js → register.orchestrator-anton-DtPFOV9F.js} +2 -2
  146. package/dist/{register.orchestrator-anton-CADua5Nr.js → register.orchestrator-anton-x3yGok7b.js} +2 -2
  147. package/dist/{register.setup-CA3WwC1V.js → register.setup-BeRMjZaz.js} +2 -2
  148. package/dist/{register.setup-DOnWysTP.js → register.setup-DCIPrpG0.js} +2 -2
  149. package/dist/{register.status-health-sessions-DgR30NBl.js → register.status-health-sessions-CA5wMwpi.js} +4 -4
  150. package/dist/{register.status-health-sessions-Dsvbkrhh.js → register.status-health-sessions-I0YSjY_V.js} +4 -4
  151. package/dist/{register.subclis-CvN5J3oh.js → register.subclis-DZkq_g35.js} +9 -9
  152. package/dist/{replies-6_GxvQYe.js → replies-CXcxPRWk.js} +3 -3
  153. package/dist/{reply-D6y5faqD.js → reply-DlS9HBVo.js} +11 -11
  154. package/dist/{reply-prefix-BUgeSN2R.js → reply-prefix-49q2WQ2B.js} +1 -1
  155. package/dist/{resolve-route-DuttYY7A.js → resolve-route-Dr-fqH39.js} +4 -4
  156. package/dist/{retry-BeB9WenR.js → retry-DWN-e4ja.js} +1 -1
  157. package/dist/{run-main-BBYeikWD.js → run-main-B75ak_hb.js} +15 -15
  158. package/dist/{runner-BzNdfqDz.js → runner-DO528Ump.js} +11 -11
  159. package/dist/{send-BeIZJuy4.js → send-BspIjWIY.js} +7 -7
  160. package/dist/{send-DmLC7aEF.js → send-BypmtKl1.js} +10 -10
  161. package/dist/{send-D4bMycQu.js → send-CRnMBrJ2.js} +7 -7
  162. package/dist/{send-Dfa3sn6r.js → send-De8xTUIV.js} +24 -24
  163. package/dist/{send-C1hvd3bt.js → send-szC_vYk_.js} +6 -6
  164. package/dist/{server-node-events-CcAiA2an.js → server-node-events-B1RPoseF.js} +3 -3
  165. package/dist/{server-node-events-DeBYOK05.js → server-node-events-CufCnFp4.js} +3 -3
  166. package/dist/{session-F_YDS_1V.js → session-CKiIT4OY.js} +7 -7
  167. package/dist/{sessions-3ioSeOA1.js → sessions-BgxmLQuf.js} +41 -41
  168. package/dist/{skill-commands-Ck3flWX7.js → skill-commands-BOUMR5De.js} +9 -9
  169. package/dist/{skills-CnAPWfca.js → skills-OsjsCf_S.js} +22 -22
  170. package/dist/{status-Dd0rJBTD.js → status-ERmEJYw1.js} +2 -2
  171. package/dist/{status-BW8aF7xu.js → status-hXjECVBh.js} +2 -2
  172. package/dist/{store-CvMgrKWx.js → store-B4rHJvSg.js} +2 -2
  173. package/dist/{subagent-registry-DeXWDNty.js → subagent-registry-CcxZYIwL.js} +11 -11
  174. package/dist/{subsystem-tzu-rIAJ.js → subsystem-B98oWbbO.js} +1 -1
  175. package/dist/{tables-5k-zOZ-s.js → tables-DuOExt0S.js} +1 -1
  176. package/dist/{target-errors-BPfQrPim.js → target-errors-CWZr3RMI.js} +2 -2
  177. package/dist/{tokens-BRLyURxW.js → tokens-B9ArFCMX.js} +1 -1
  178. package/dist/{tool-images-CcGZpzmq.js → tool-images-DLiBUCZb.js} +2 -2
  179. package/dist/{tool-loop-detection-BNGetx3Z.js → tool-loop-detection-j48jLTrr.js} +3 -3
  180. package/dist/{update-cli-C97163Ne.js → update-cli-DROtjWg7.js} +9 -9
  181. package/dist/{update-cli-DLWAR9u6.js → update-cli-Rnv68OR6.js} +8 -8
  182. package/dist/{update-runner-Cft2lh5r.js → update-runner-BWxBVG9j.js} +1 -1
  183. package/dist/{update-runner-BV9LWTCG.js → update-runner-CqeNDbPD.js} +1 -1
  184. package/dist/{utils-CTFLl_ji.js → utils-ChNzRVsg.js} +18 -18
  185. package/dist/{web-BwZ1OGaX.js → web-5ddwA0bs.js} +66 -66
  186. package/dist/{web-D8zB-Qkg.js → web-BMSzFWiF.js} +3 -3
  187. package/dist/{web-DGPTqAhk.js → web-BQLIquZA.js} +3 -3
  188. package/dist/{web-Da_aB4Vm.js → web-CnzKMZK0.js} +3 -3
  189. package/dist/{whatsapp-actions-DbPcN6JQ.js → whatsapp-actions-CYraflBZ.js} +25 -25
  190. package/dist/{workspace-DBFSzT6O.js → workspace-AM44PzIs.js} +18 -18
  191. package/extensions/acpx/package.json +1 -1
  192. package/extensions/bluebubbles/package.json +1 -1
  193. package/extensions/copilot-proxy/package.json +1 -1
  194. package/extensions/diagnostics-otel/package.json +1 -1
  195. package/extensions/discord/package.json +1 -1
  196. package/extensions/feishu/package.json +1 -1
  197. package/extensions/google-gemini-cli-auth/package.json +1 -1
  198. package/extensions/googlechat/package.json +1 -1
  199. package/extensions/hand/package.json +1 -1
  200. package/extensions/imessage/package.json +1 -1
  201. package/extensions/irc/package.json +1 -1
  202. package/extensions/line/package.json +1 -1
  203. package/extensions/llm-task/package.json +1 -1
  204. package/extensions/matrix/CHANGELOG.md +12 -0
  205. package/extensions/matrix/package.json +1 -1
  206. package/extensions/mattermost/package.json +1 -1
  207. package/extensions/memory-core/package.json +1 -1
  208. package/extensions/memory-lancedb/package.json +1 -1
  209. package/extensions/minimax-portal-auth/package.json +1 -1
  210. package/extensions/msteams/CHANGELOG.md +12 -0
  211. package/extensions/msteams/package.json +1 -1
  212. package/extensions/nextcloud-talk/package.json +1 -1
  213. package/extensions/nostr/CHANGELOG.md +12 -0
  214. package/extensions/nostr/package.json +1 -1
  215. package/extensions/open-prose/package.json +1 -1
  216. package/extensions/signal/package.json +1 -1
  217. package/extensions/slack/package.json +1 -1
  218. package/extensions/synology-chat/package.json +1 -1
  219. package/extensions/telegram/package.json +1 -1
  220. package/extensions/tlon/package.json +1 -1
  221. package/extensions/twitch/CHANGELOG.md +12 -0
  222. package/extensions/twitch/package.json +1 -1
  223. package/extensions/voice-call/CHANGELOG.md +12 -0
  224. package/extensions/voice-call/package.json +1 -1
  225. package/extensions/whatsapp/package.json +1 -1
  226. package/extensions/zalo/CHANGELOG.md +12 -0
  227. package/extensions/zalo/package.json +1 -1
  228. package/extensions/zalouser/CHANGELOG.md +12 -0
  229. package/extensions/zalouser/package.json +1 -1
  230. package/package.json +1 -1
  231. package/dist/emergency-stop-w0AyIMs7.js +0 -113
@@ -225,7 +225,7 @@ async function loadAntonConfig() {
225
225
  }
226
226
  }
227
227
  async function runAgentTask(args) {
228
- const { agentCliCommand } = await import("./agent-via-gateway-F1Zu0slF.js").then((n) => n.n);
228
+ const { agentCliCommand } = await import("./agent-via-gateway-ClQrLbgo.js").then((n) => n.n);
229
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;
230
230
  const result = await agentCliCommand({
231
231
  message: args.message,
@@ -235,7 +235,8 @@ async function runAgentTask(args) {
235
235
  timeout: args.timeout,
236
236
  json: true,
237
237
  deliver: false,
238
- extraSystemPrompt
238
+ extraSystemPrompt,
239
+ workspaceDir: args.workspaceDir
239
240
  }, args.runtime, args.deps);
240
241
  return { text: (result && typeof result === "object" && "result" in result ? result.result?.payloads ?? [] : []).map((p) => typeof p?.text === "string" ? p.text.trim() : "").filter(Boolean).join("\n\n").trim() };
241
242
  }
@@ -245,18 +246,44 @@ function makePlanFilePath(planDir, taskIndex) {
245
246
  async function ensurePlanDir(planDir) {
246
247
  await fs.mkdir(planDir, { recursive: true });
247
248
  }
249
+ function looksLikeStatusJsonOnly(text) {
250
+ const trimmed = text.trim();
251
+ if (!trimmed.startsWith("{") || !trimmed.endsWith("}")) return false;
252
+ try {
253
+ const parsed = JSON.parse(trimmed);
254
+ const keys = Object.keys(parsed).toSorted();
255
+ return keys.length <= 3 && keys.includes("status") && keys.includes("filename");
256
+ } catch {
257
+ return false;
258
+ }
259
+ }
260
+ function isUsefulPlanText(text) {
261
+ const trimmed = text.trim();
262
+ if (trimmed.length < 120) return false;
263
+ if (looksLikeStatusJsonOnly(trimmed)) return false;
264
+ return /^#\s+/m.test(trimmed) || /\b(Implementation approach|What needs to change|Files to modify|How to verify)\b/i.test(trimmed);
265
+ }
248
266
  async function isPlanFileValid(filePath) {
249
267
  try {
250
268
  const stat = await fs.stat(filePath);
251
- return stat.isFile() && stat.size > 10;
269
+ if (!stat.isFile() || stat.size < 20) return false;
270
+ return isUsefulPlanText(await fs.readFile(filePath, "utf8"));
252
271
  } catch {
253
272
  return false;
254
273
  }
255
274
  }
256
- async function getGitChangedFileCount(cwd) {
275
+ async function getGitChangedFileCount(cwd, ignorePaths = []) {
257
276
  try {
258
277
  const { stdout } = await execFile$1("git", ["status", "--porcelain"], { cwd });
259
- return stdout.split(/\r?\n/).map((line) => line.trim()).filter(Boolean).length;
278
+ const ignores = ignorePaths.map((p) => p.replace(/\\/g, "/").replace(/^\.\//, "")).filter(Boolean);
279
+ return stdout.split(/\r?\n/).map((line) => line.trimEnd()).filter(Boolean).map((line) => {
280
+ const raw = line.slice(3).trim();
281
+ return (raw.includes(" -> ") ? raw.split(" -> ").at(-1) ?? raw : raw).replace(/\\/g, "/").replace(/^\.\//, "");
282
+ }).filter((file) => {
283
+ if (!file) return false;
284
+ if (file.startsWith(".agents/tasks/")) return false;
285
+ return !ignores.some((ignore) => file === ignore || file.startsWith(`${ignore}/`));
286
+ }).length;
260
287
  } catch {
261
288
  return null;
262
289
  }
@@ -290,7 +317,7 @@ function extractJsonObject(text) {
290
317
  }
291
318
  function extractPlanMarkdownFromText(text) {
292
319
  const candidate = text.match(/```(?:markdown|md)?\s*([\s\S]*?)```/i)?.[1]?.trim() ?? text.trim();
293
- if (candidate.length < 60) return;
320
+ if (!isUsefulPlanText(candidate)) return;
294
321
  return candidate;
295
322
  }
296
323
  function normalizeDiscoveryFilename(filename, expectedPlanFile) {
@@ -314,7 +341,7 @@ Task: ${task}`;
314
341
  }
315
342
  async function tryPersistPlanFallback(params) {
316
343
  const planText = (((typeof params.parsed?.planMarkdown === "string" ? params.parsed.planMarkdown : void 0) ?? (typeof params.parsed?.plan === "string" ? params.parsed.plan : void 0))?.trim() || extractPlanMarkdownFromText(params.rawText) || "").trim();
317
- if (planText.length < 60) return false;
344
+ if (!isUsefulPlanText(planText)) return false;
318
345
  await fs.writeFile(params.planFile, `${planText}\n`, "utf8");
319
346
  return await isPlanFileValid(params.planFile);
320
347
  }
@@ -348,7 +375,7 @@ async function runDiscoveryPhase(args) {
348
375
  workspaceDir: args.workspaceDir
349
376
  });
350
377
  const firstParsed = extractJsonObject(firstPass.text);
351
- if ((firstParsed?.status ?? "").toLowerCase() === "complete") return { status: "complete" };
378
+ if ((firstParsed?.status ?? "").toLowerCase() === "complete") throw new Error("Discovery claimed task already complete without a verifiable plan artifact; refusing auto-complete");
352
379
  const declaredPlanFile = normalizeDiscoveryFilename(firstParsed?.filename, planFile);
353
380
  if (await isPlanFileValid(declaredPlanFile)) {
354
381
  await args.notify({
@@ -399,7 +426,7 @@ async function runDiscoveryPhase(args) {
399
426
  workspaceDir: args.workspaceDir
400
427
  });
401
428
  const repairParsed = extractJsonObject(repairPass.text);
402
- if ((repairParsed?.status ?? "").toLowerCase() === "complete") return { status: "complete" };
429
+ if ((repairParsed?.status ?? "").toLowerCase() === "complete") throw new Error("Discovery repair claimed task complete without a verifiable plan artifact; refusing auto-complete");
403
430
  const repairPlanFile = normalizeDiscoveryFilename(repairParsed?.filename, declaredPlanFile);
404
431
  if (await isPlanFileValid(repairPlanFile) || await tryPersistPlanFallback({
405
432
  planFile: repairPlanFile,
@@ -657,7 +684,9 @@ async function runAnton(args) {
657
684
  });
658
685
  const implPrompt = planFile ? buildImplementationPrompt(task.text, planFile) : buildDirectTaskPrompt(task.text);
659
686
  const gitCwd = args.workspaceDir ? path.resolve(args.workspaceDir) : path.dirname(filePath);
660
- const changedBefore = await getGitChangedFileCount(gitCwd);
687
+ const taskFileRel = path.relative(gitCwd, filePath).replace(/\\/g, "/");
688
+ const changeIgnores = taskFileRel.startsWith("..") ? [] : [taskFileRel];
689
+ const changedBefore = await getGitChangedFileCount(gitCwd, changeIgnores);
661
690
  await runAgentTask({
662
691
  message: implPrompt,
663
692
  sessionId: implSessionId,
@@ -668,7 +697,7 @@ async function runAnton(args) {
668
697
  deps: args.deps,
669
698
  workspaceDir: args.workspaceDir
670
699
  });
671
- const changedAfter = await getGitChangedFileCount(gitCwd);
700
+ const changedAfter = await getGitChangedFileCount(gitCwd, changeIgnores);
672
701
  if (mode === "preflight" && changedBefore !== null && changedAfter !== null && changedAfter <= changedBefore) throw new Error("Implementation made no repository changes; refusing to mark task complete");
673
702
  const updated = markTaskDone(await fs.readFile(filePath, "utf8"), task.line);
674
703
  await fs.writeFile(filePath, updated, "utf8");
@@ -219,7 +219,7 @@ async function loadAntonConfig() {
219
219
  }
220
220
  }
221
221
  async function runAgentTask(args) {
222
- const { agentCliCommand } = await import("./agent-via-gateway-Ceb_VeXS.js");
222
+ const { agentCliCommand } = await import("./agent-via-gateway-CC37LlPd.js");
223
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;
224
224
  const result = await agentCliCommand({
225
225
  message: args.message,
@@ -229,7 +229,8 @@ async function runAgentTask(args) {
229
229
  timeout: args.timeout,
230
230
  json: true,
231
231
  deliver: false,
232
- extraSystemPrompt
232
+ extraSystemPrompt,
233
+ workspaceDir: args.workspaceDir
233
234
  }, args.runtime, args.deps);
234
235
  return { text: (result && typeof result === "object" && "result" in result ? result.result?.payloads ?? [] : []).map((p) => typeof p?.text === "string" ? p.text.trim() : "").filter(Boolean).join("\n\n").trim() };
235
236
  }
@@ -239,18 +240,44 @@ function makePlanFilePath(planDir, taskIndex) {
239
240
  async function ensurePlanDir(planDir) {
240
241
  await fs.mkdir(planDir, { recursive: true });
241
242
  }
243
+ function looksLikeStatusJsonOnly(text) {
244
+ const trimmed = text.trim();
245
+ if (!trimmed.startsWith("{") || !trimmed.endsWith("}")) return false;
246
+ try {
247
+ const parsed = JSON.parse(trimmed);
248
+ const keys = Object.keys(parsed).toSorted();
249
+ return keys.length <= 3 && keys.includes("status") && keys.includes("filename");
250
+ } catch {
251
+ return false;
252
+ }
253
+ }
254
+ function isUsefulPlanText(text) {
255
+ const trimmed = text.trim();
256
+ if (trimmed.length < 120) return false;
257
+ if (looksLikeStatusJsonOnly(trimmed)) return false;
258
+ return /^#\s+/m.test(trimmed) || /\b(Implementation approach|What needs to change|Files to modify|How to verify)\b/i.test(trimmed);
259
+ }
242
260
  async function isPlanFileValid(filePath) {
243
261
  try {
244
262
  const stat = await fs.stat(filePath);
245
- return stat.isFile() && stat.size > 10;
263
+ if (!stat.isFile() || stat.size < 20) return false;
264
+ return isUsefulPlanText(await fs.readFile(filePath, "utf8"));
246
265
  } catch {
247
266
  return false;
248
267
  }
249
268
  }
250
- async function getGitChangedFileCount(cwd) {
269
+ async function getGitChangedFileCount(cwd, ignorePaths = []) {
251
270
  try {
252
271
  const { stdout } = await execFile$1("git", ["status", "--porcelain"], { cwd });
253
- return stdout.split(/\r?\n/).map((line) => line.trim()).filter(Boolean).length;
272
+ const ignores = ignorePaths.map((p) => p.replace(/\\/g, "/").replace(/^\.\//, "")).filter(Boolean);
273
+ return stdout.split(/\r?\n/).map((line) => line.trimEnd()).filter(Boolean).map((line) => {
274
+ const raw = line.slice(3).trim();
275
+ return (raw.includes(" -> ") ? raw.split(" -> ").at(-1) ?? raw : raw).replace(/\\/g, "/").replace(/^\.\//, "");
276
+ }).filter((file) => {
277
+ if (!file) return false;
278
+ if (file.startsWith(".agents/tasks/")) return false;
279
+ return !ignores.some((ignore) => file === ignore || file.startsWith(`${ignore}/`));
280
+ }).length;
254
281
  } catch {
255
282
  return null;
256
283
  }
@@ -284,7 +311,7 @@ function extractJsonObject(text) {
284
311
  }
285
312
  function extractPlanMarkdownFromText(text) {
286
313
  const candidate = text.match(/```(?:markdown|md)?\s*([\s\S]*?)```/i)?.[1]?.trim() ?? text.trim();
287
- if (candidate.length < 60) return;
314
+ if (!isUsefulPlanText(candidate)) return;
288
315
  return candidate;
289
316
  }
290
317
  function normalizeDiscoveryFilename(filename, expectedPlanFile) {
@@ -308,7 +335,7 @@ Task: ${task}`;
308
335
  }
309
336
  async function tryPersistPlanFallback(params) {
310
337
  const planText = (((typeof params.parsed?.planMarkdown === "string" ? params.parsed.planMarkdown : void 0) ?? (typeof params.parsed?.plan === "string" ? params.parsed.plan : void 0))?.trim() || extractPlanMarkdownFromText(params.rawText) || "").trim();
311
- if (planText.length < 60) return false;
338
+ if (!isUsefulPlanText(planText)) return false;
312
339
  await fs.writeFile(params.planFile, `${planText}\n`, "utf8");
313
340
  return await isPlanFileValid(params.planFile);
314
341
  }
@@ -342,7 +369,7 @@ async function runDiscoveryPhase(args) {
342
369
  workspaceDir: args.workspaceDir
343
370
  });
344
371
  const firstParsed = extractJsonObject(firstPass.text);
345
- if ((firstParsed?.status ?? "").toLowerCase() === "complete") return { status: "complete" };
372
+ if ((firstParsed?.status ?? "").toLowerCase() === "complete") throw new Error("Discovery claimed task already complete without a verifiable plan artifact; refusing auto-complete");
346
373
  const declaredPlanFile = normalizeDiscoveryFilename(firstParsed?.filename, planFile);
347
374
  if (await isPlanFileValid(declaredPlanFile)) {
348
375
  await args.notify({
@@ -393,7 +420,7 @@ async function runDiscoveryPhase(args) {
393
420
  workspaceDir: args.workspaceDir
394
421
  });
395
422
  const repairParsed = extractJsonObject(repairPass.text);
396
- if ((repairParsed?.status ?? "").toLowerCase() === "complete") return { status: "complete" };
423
+ if ((repairParsed?.status ?? "").toLowerCase() === "complete") throw new Error("Discovery repair claimed task complete without a verifiable plan artifact; refusing auto-complete");
397
424
  const repairPlanFile = normalizeDiscoveryFilename(repairParsed?.filename, declaredPlanFile);
398
425
  if (await isPlanFileValid(repairPlanFile) || await tryPersistPlanFallback({
399
426
  planFile: repairPlanFile,
@@ -651,7 +678,9 @@ async function runAnton(args) {
651
678
  });
652
679
  const implPrompt = planFile ? buildImplementationPrompt(task.text, planFile) : buildDirectTaskPrompt(task.text);
653
680
  const gitCwd = args.workspaceDir ? path.resolve(args.workspaceDir) : path.dirname(filePath);
654
- const changedBefore = await getGitChangedFileCount(gitCwd);
681
+ const taskFileRel = path.relative(gitCwd, filePath).replace(/\\/g, "/");
682
+ const changeIgnores = taskFileRel.startsWith("..") ? [] : [taskFileRel];
683
+ const changedBefore = await getGitChangedFileCount(gitCwd, changeIgnores);
655
684
  await runAgentTask({
656
685
  message: implPrompt,
657
686
  sessionId: implSessionId,
@@ -662,7 +691,7 @@ async function runAnton(args) {
662
691
  deps: args.deps,
663
692
  workspaceDir: args.workspaceDir
664
693
  });
665
- const changedAfter = await getGitChangedFileCount(gitCwd);
694
+ const changedAfter = await getGitChangedFileCount(gitCwd, changeIgnores);
666
695
  if (mode === "preflight" && changedBefore !== null && changedAfter !== null && changedAfter <= changedBefore) throw new Error("Implementation made no repository changes; refusing to mark task complete");
667
696
  const updated = markTaskDone(await fs.readFile(filePath, "utf8"), task.line);
668
697
  await fs.writeFile(filePath, updated, "utf8");
@@ -1,42 +1,42 @@
1
- import "./agent-scope-DyP_tr7s.js";
2
- import "./paths-BYNVLNi_.js";
3
- import "./subsystem-tzu-rIAJ.js";
4
- import { A as shouldLogVerbose, D as logVerbose } from "./utils-CTFLl_ji.js";
1
+ import "./agent-scope-BVeQuh5x.js";
2
+ import "./paths-CkTEyLTV.js";
3
+ import "./subsystem-B98oWbbO.js";
4
+ import { A as shouldLogVerbose, D as logVerbose } from "./utils-ChNzRVsg.js";
5
5
  import "./runtime-8mi3mpYB.js";
6
- import "./workspace-DBFSzT6O.js";
7
- import "./model-selection-1MMYqY6M.js";
8
- import "./github-copilot-token-Dgt6cnsM.js";
6
+ import "./workspace-AM44PzIs.js";
7
+ import "./model-selection-Vtu6d5Um.js";
8
+ import "./github-copilot-token-DCg9Q9Ll.js";
9
9
  import "./boolean-CE7i9tBR.js";
10
- import "./env-B5G1qwGc.js";
11
- import "./dock-BgOmHcbh.js";
12
- import "./plugins-CRB60mCJ.js";
13
- import "./accounts-Dk8mJIrQ.js";
14
- import "./bindings-D3b5Fmc9.js";
15
- import "./auth-store-DXT-l7fO.js";
16
- import "./accounts-BDVs8LTu.js";
17
- import "./image-ops-D1KtygWz.js";
18
- import "./pi-model-discovery-Bb__OY-j.js";
19
- import "./message-channel-C8QtrwEU.js";
20
- import "./pi-embedded-helpers-CyTpDKo5.js";
21
- import "./chrome-_2tzVjVl.js";
10
+ import "./env-B7b7MKfk.js";
11
+ import "./dock-6MgvdSqu.js";
12
+ import "./plugins-Bb6_uisJ.js";
13
+ import "./accounts-CRDMZUcg.js";
14
+ import "./bindings-B9L4cqmm.js";
15
+ import "./auth-store-DQAd4LSE.js";
16
+ import "./accounts-upx5iuke.js";
17
+ import "./image-ops-ZNtLhD4c.js";
18
+ import "./pi-model-discovery-DBHbwKOo.js";
19
+ import "./message-channel-Cg9KtLfy.js";
20
+ import "./pi-embedded-helpers-B1CKQ81Y.js";
21
+ import "./chrome-D_SXDetO.js";
22
22
  import "./ssrf-CZeHDwVZ.js";
23
- import "./frontmatter-BOudmHMS.js";
24
- import "./skills-CnAPWfca.js";
25
- import "./path-alias-guards-Cu1nXNMM.js";
26
- import "./redact-Bvpf-ATQ.js";
27
- import "./errors-C_0nm4TJ.js";
28
- import "./fs-safe-CYUaAFO9.js";
29
- import "./store-CvMgrKWx.js";
30
- import "./sessions-3ioSeOA1.js";
31
- import "./accounts-CIvVRRHb.js";
32
- import "./paths-D_qUel1T.js";
33
- import "./tool-images-CcGZpzmq.js";
23
+ import "./frontmatter-p8nPDprK.js";
24
+ import "./skills-OsjsCf_S.js";
25
+ import "./path-alias-guards-BnjbJzIQ.js";
26
+ import "./redact-D1Ebz_iR.js";
27
+ import "./errors--Eb33_ji.js";
28
+ import "./fs-safe-BEl8T_Vc.js";
29
+ import "./store-B4rHJvSg.js";
30
+ import "./sessions-BgxmLQuf.js";
31
+ import "./accounts-yD5yI-jP.js";
32
+ import "./paths-0fcEvxu4.js";
33
+ import "./tool-images-DLiBUCZb.js";
34
34
  import "./thinking-z4_linel.js";
35
- import "./image-COw__ACq.js";
36
- import "./gemini-auth-CIyaa44H.js";
37
- import "./fetch-guard-iuQsIjqN.js";
38
- import "./local-roots-KN4Hp1yZ.js";
39
- import { a as resolveMediaAttachmentLocalRoots, n as createMediaAttachmentCache, o as runCapability, r as normalizeMediaAttachments, t as buildProviderRegistry, u as isAudioAttachment } from "./runner-BzNdfqDz.js";
35
+ import "./image-BQ3RQWD8.js";
36
+ import "./gemini-auth-CA0K3QXj.js";
37
+ import "./fetch-guard-OZ_PCUyr.js";
38
+ import "./local-roots-C9CA2f0R.js";
39
+ import { a as resolveMediaAttachmentLocalRoots, n as createMediaAttachmentCache, o as runCapability, r as normalizeMediaAttachments, t as buildProviderRegistry, u as isAudioAttachment } from "./runner-DO528Ump.js";
40
40
 
41
41
  //#region src/media-understanding/audio-preflight.ts
42
42
  /**
@@ -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-CnqcE5__.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-D0cQmJkF.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";
@@ -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-PdlgGx1Z.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-Aojd4jNn.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";
@@ -1,11 +1,11 @@
1
- import { l as resolveOAuthDir } from "./paths-BYNVLNi_.js";
2
- import { I as getChildLogger, T as info, h as resolveUserPath, j as success, u as jidToE164 } from "./utils-CTFLl_ji.js";
1
+ import { l as resolveOAuthDir } from "./paths-CkTEyLTV.js";
2
+ import { I as getChildLogger, T as info, h as resolveUserPath, j as success, u as jidToE164 } from "./utils-ChNzRVsg.js";
3
3
  import { n as defaultRuntime } from "./runtime-8mi3mpYB.js";
4
4
  import { f as DEFAULT_ACCOUNT_ID } from "./session-key-CuLPSMu_.js";
5
5
  import { t as formatCliCommand } from "./command-format-BAxx4PW5.js";
6
6
  import fs from "node:fs/promises";
7
7
  import path from "node:path";
8
- import syncFs from "node:fs";
8
+ import fsSync from "node:fs";
9
9
 
10
10
  //#region src/web/auth-store.ts
11
11
  function resolveDefaultWebAuthDir() {
@@ -20,7 +20,7 @@ function resolveWebCredsBackupPath(authDir) {
20
20
  }
21
21
  function hasWebCredsSync(authDir) {
22
22
  try {
23
- const stats = syncFs.statSync(resolveWebCredsPath(authDir));
23
+ const stats = fsSync.statSync(resolveWebCredsPath(authDir));
24
24
  return stats.isFile() && stats.size > 1;
25
25
  } catch {
26
26
  return false;
@@ -28,10 +28,10 @@ function hasWebCredsSync(authDir) {
28
28
  }
29
29
  function readCredsJsonRaw(filePath) {
30
30
  try {
31
- if (!syncFs.existsSync(filePath)) return null;
32
- const stats = syncFs.statSync(filePath);
31
+ if (!fsSync.existsSync(filePath)) return null;
32
+ const stats = fsSync.statSync(filePath);
33
33
  if (!stats.isFile() || stats.size <= 1) return null;
34
- return syncFs.readFileSync(filePath, "utf-8");
34
+ return fsSync.readFileSync(filePath, "utf-8");
35
35
  } catch {
36
36
  return null;
37
37
  }
@@ -49,9 +49,9 @@ function maybeRestoreCredsFromBackup(authDir) {
49
49
  const backupRaw = readCredsJsonRaw(backupPath);
50
50
  if (!backupRaw) return;
51
51
  JSON.parse(backupRaw);
52
- syncFs.copyFileSync(backupPath, credsPath);
52
+ fsSync.copyFileSync(backupPath, credsPath);
53
53
  try {
54
- syncFs.chmodSync(credsPath, 384);
54
+ fsSync.chmodSync(credsPath, 384);
55
55
  } catch {}
56
56
  logger.warn({ credsPath }, "restored corrupted WhatsApp creds.json from backup");
57
57
  } catch {}
@@ -107,11 +107,11 @@ async function logoutWeb(params) {
107
107
  function readWebSelfId(authDir = resolveDefaultWebAuthDir()) {
108
108
  try {
109
109
  const credsPath = resolveWebCredsPath(resolveUserPath(authDir));
110
- if (!syncFs.existsSync(credsPath)) return {
110
+ if (!fsSync.existsSync(credsPath)) return {
111
111
  e164: null,
112
112
  jid: null
113
113
  };
114
- const raw = syncFs.readFileSync(credsPath, "utf-8");
114
+ const raw = fsSync.readFileSync(credsPath, "utf-8");
115
115
  const jid = JSON.parse(raw)?.me?.id ?? null;
116
116
  return {
117
117
  e164: jid ? jidToE164(jid, { authDir }) : null,
@@ -130,7 +130,7 @@ function readWebSelfId(authDir = resolveDefaultWebAuthDir()) {
130
130
  */
131
131
  function getWebAuthAgeMs(authDir = resolveDefaultWebAuthDir()) {
132
132
  try {
133
- const stats = syncFs.statSync(resolveWebCredsPath(resolveUserPath(authDir)));
133
+ const stats = fsSync.statSync(resolveWebCredsPath(resolveUserPath(authDir)));
134
134
  return Date.now() - stats.mtimeMs;
135
135
  } catch {
136
136
  return null;
@@ -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-DeXWDNty.js";
2
+ import { Tn as resolveCommitHash } from "./subagent-registry-CcxZYIwL.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
- import { c as resolveDefaultAgentId } from "./agent-scope-DyP_tr7s.js";
2
- import { c as normalizeChatChannelId } from "./subsystem-tzu-rIAJ.js";
1
+ import { c as resolveDefaultAgentId } from "./agent-scope-BVeQuh5x.js";
2
+ import { c as normalizeChatChannelId } from "./subsystem-B98oWbbO.js";
3
3
  import { p as normalizeAccountId, s as normalizeAgentId } from "./session-key-CuLPSMu_.js";
4
4
 
5
5
  //#region src/routing/bindings.ts
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.0.16",
3
- "commit": "0c953c25b8be576afe93df1929513c8239c078a1",
4
- "builtAt": "2026-03-01T21:22:45.610Z"
2
+ "version": "4.0.18",
3
+ "commit": "561051aa858e5f946a44c931315f67a95773357d",
4
+ "builtAt": "2026-03-01T21:45:43.759Z"
5
5
  }
@@ -1,72 +1,72 @@
1
- import { n as listAgentIds, s as resolveAgentWorkspaceDir } from "../../agent-scope-DyP_tr7s.js";
2
- import "../../paths-BYNVLNi_.js";
3
- import { S as isGatewayStartupEvent, t as createSubsystemLogger } from "../../subsystem-tzu-rIAJ.js";
4
- import "../../utils-CTFLl_ji.js";
1
+ import { n as listAgentIds, s as resolveAgentWorkspaceDir } from "../../agent-scope-BVeQuh5x.js";
2
+ import "../../paths-CkTEyLTV.js";
3
+ import { S as isGatewayStartupEvent, t as createSubsystemLogger } from "../../subsystem-B98oWbbO.js";
4
+ import "../../utils-ChNzRVsg.js";
5
5
  import { n as defaultRuntime } from "../../runtime-8mi3mpYB.js";
6
6
  import { l as resolveAgentIdFromSessionKey } from "../../session-key-CuLPSMu_.js";
7
- import "../../workspace-DBFSzT6O.js";
8
- import "../../model-selection-1MMYqY6M.js";
9
- import "../../github-copilot-token-Dgt6cnsM.js";
7
+ import "../../workspace-AM44PzIs.js";
8
+ import "../../model-selection-Vtu6d5Um.js";
9
+ import "../../github-copilot-token-DCg9Q9Ll.js";
10
10
  import "../../boolean-CE7i9tBR.js";
11
- import "../../env-B5G1qwGc.js";
12
- import "../../dock-BgOmHcbh.js";
13
- import { n as SILENT_REPLY_TOKEN } from "../../tokens-BRLyURxW.js";
14
- import { a as agentCommand } from "../../pi-embedded-Oto02Ard.js";
15
- import "../../plugins-CRB60mCJ.js";
16
- import "../../accounts-Dk8mJIrQ.js";
17
- import "../../bindings-D3b5Fmc9.js";
18
- import "../../auth-store-DXT-l7fO.js";
19
- import "../../send-BeIZJuy4.js";
20
- import "../../send-DmLC7aEF.js";
21
- import "../../deliver-CVTXl0Cv.js";
22
- import "../../diagnostic-4owMk4vH.js";
11
+ import "../../env-B7b7MKfk.js";
12
+ import "../../dock-6MgvdSqu.js";
13
+ import { n as SILENT_REPLY_TOKEN } from "../../tokens-B9ArFCMX.js";
14
+ import { a as agentCommand } from "../../pi-embedded-BDp9JsrM.js";
15
+ import "../../plugins-Bb6_uisJ.js";
16
+ import "../../accounts-CRDMZUcg.js";
17
+ import "../../bindings-B9L4cqmm.js";
18
+ import "../../auth-store-DQAd4LSE.js";
19
+ import "../../send-BspIjWIY.js";
20
+ import "../../send-BypmtKl1.js";
21
+ import "../../deliver-CJaM2zRY.js";
22
+ import "../../diagnostic-lz5wKsEe.js";
23
23
  import "../../diagnostic-session-state-BGF2r-kt.js";
24
- import "../../accounts-BDVs8LTu.js";
25
- import "../../send-Dfa3sn6r.js";
26
- import "../../image-ops-D1KtygWz.js";
27
- import "../../pi-model-discovery-Bb__OY-j.js";
28
- import "../../message-channel-C8QtrwEU.js";
29
- import "../../pi-embedded-helpers-CyTpDKo5.js";
30
- import "../../chrome-_2tzVjVl.js";
24
+ import "../../accounts-upx5iuke.js";
25
+ import "../../send-De8xTUIV.js";
26
+ import "../../image-ops-ZNtLhD4c.js";
27
+ import "../../pi-model-discovery-DBHbwKOo.js";
28
+ import "../../message-channel-Cg9KtLfy.js";
29
+ import "../../pi-embedded-helpers-B1CKQ81Y.js";
30
+ import "../../chrome-D_SXDetO.js";
31
31
  import "../../ssrf-CZeHDwVZ.js";
32
- import "../../frontmatter-BOudmHMS.js";
33
- import "../../skills-CnAPWfca.js";
34
- import "../../path-alias-guards-Cu1nXNMM.js";
35
- import "../../redact-Bvpf-ATQ.js";
36
- import "../../errors-C_0nm4TJ.js";
37
- import "../../fs-safe-CYUaAFO9.js";
38
- import "../../store-CvMgrKWx.js";
39
- import { H as resolveAgentMainSessionKey, W as resolveMainSessionKey, f as updateSessionStore, s as loadSessionStore } from "../../sessions-3ioSeOA1.js";
40
- import "../../accounts-CIvVRRHb.js";
41
- import { u as resolveStorePath } from "../../paths-D_qUel1T.js";
42
- import "../../tool-images-CcGZpzmq.js";
32
+ import "../../frontmatter-p8nPDprK.js";
33
+ import "../../skills-OsjsCf_S.js";
34
+ import "../../path-alias-guards-BnjbJzIQ.js";
35
+ import "../../redact-D1Ebz_iR.js";
36
+ import "../../errors--Eb33_ji.js";
37
+ import "../../fs-safe-BEl8T_Vc.js";
38
+ import "../../store-B4rHJvSg.js";
39
+ import { H as resolveAgentMainSessionKey, W as resolveMainSessionKey, f as updateSessionStore, s as loadSessionStore } from "../../sessions-BgxmLQuf.js";
40
+ import "../../accounts-yD5yI-jP.js";
41
+ import { u as resolveStorePath } from "../../paths-0fcEvxu4.js";
42
+ import "../../tool-images-DLiBUCZb.js";
43
43
  import "../../thinking-z4_linel.js";
44
- import "../../image-COw__ACq.js";
45
- import "../../reply-prefix-BUgeSN2R.js";
46
- import "../../manager-BE_76jWB.js";
47
- import "../../gemini-auth-CIyaa44H.js";
48
- import "../../fetch-guard-iuQsIjqN.js";
49
- import "../../query-expansion-DEq020GG.js";
50
- import "../../retry-BeB9WenR.js";
51
- import "../../target-errors-BPfQrPim.js";
52
- import "../../chunk-CMpX7Jaz.js";
53
- import "../../markdown-tables-CzsockiZ.js";
54
- import "../../local-roots-KN4Hp1yZ.js";
55
- import "../../ir-B7IBoKLy.js";
44
+ import "../../image-BQ3RQWD8.js";
45
+ import "../../reply-prefix-49q2WQ2B.js";
46
+ import "../../manager-DBd_2F6j.js";
47
+ import "../../gemini-auth-CA0K3QXj.js";
48
+ import "../../fetch-guard-OZ_PCUyr.js";
49
+ import "../../query-expansion-CW7PqIXL.js";
50
+ import "../../retry-DWN-e4ja.js";
51
+ import "../../target-errors-CWZr3RMI.js";
52
+ import "../../chunk-BgScV6uo.js";
53
+ import "../../markdown-tables-CsrsXS80.js";
54
+ import "../../local-roots-C9CA2f0R.js";
55
+ import "../../ir-DnyYtX4H.js";
56
56
  import "../../render-MTSxc7LK.js";
57
- import "../../commands-registry-j4vAzcF2.js";
58
- import "../../skill-commands-Ck3flWX7.js";
59
- import "../../runner-BzNdfqDz.js";
57
+ import "../../commands-registry-CK7aj_ri.js";
58
+ import "../../skill-commands-BOUMR5De.js";
59
+ import "../../runner-DO528Ump.js";
60
60
  import "../../fetch-CsfR_943.js";
61
- import "../../channel-activity-D_TMOGQ0.js";
62
- import "../../tables-5k-zOZ-s.js";
63
- import "../../send-C1hvd3bt.js";
64
- import "../../outbound-attachment-3I6GzwDe.js";
65
- import "../../send-D4bMycQu.js";
66
- import "../../resolve-route-DuttYY7A.js";
61
+ import "../../channel-activity-DOLX-uK1.js";
62
+ import "../../tables-DuOExt0S.js";
63
+ import "../../send-szC_vYk_.js";
64
+ import "../../outbound-attachment-DwaqvYNG.js";
65
+ import "../../send-CRnMBrJ2.js";
66
+ import "../../resolve-route-Dr-fqH39.js";
67
67
  import "../../proxy-CRB9oCP5.js";
68
- import "../../replies-6_GxvQYe.js";
69
- import { t as createDefaultDeps } from "../../deps-CVb-kfIX.js";
68
+ import "../../replies-CXcxPRWk.js";
69
+ import { t as createDefaultDeps } from "../../deps-CQzDLqTz.js";
70
70
  import fs from "node:fs/promises";
71
71
  import path from "node:path";
72
72
  import crypto from "node:crypto";
@@ -1,10 +1,10 @@
1
- import "../../paths-BYNVLNi_.js";
2
- import { t as createSubsystemLogger, x as isAgentBootstrapEvent } from "../../subsystem-tzu-rIAJ.js";
3
- import "../../utils-CTFLl_ji.js";
1
+ import "../../paths-CkTEyLTV.js";
2
+ import { t as createSubsystemLogger, x as isAgentBootstrapEvent } from "../../subsystem-B98oWbbO.js";
3
+ import "../../utils-ChNzRVsg.js";
4
4
  import "../../runtime-8mi3mpYB.js";
5
- import { d as loadExtraBootstrapFilesWithDiagnostics, u as filterBootstrapFilesForSession } from "../../workspace-DBFSzT6O.js";
5
+ import { d as loadExtraBootstrapFilesWithDiagnostics, u as filterBootstrapFilesForSession } from "../../workspace-AM44PzIs.js";
6
6
  import "../../boolean-CE7i9tBR.js";
7
- import "../../frontmatter-BOudmHMS.js";
7
+ import "../../frontmatter-p8nPDprK.js";
8
8
  import { t as resolveHookConfig } from "../../config-BsP4lHEP.js";
9
9
 
10
10
  //#region src/hooks/bundled/bootstrap-extra-files/handler.ts
@@ -1,6 +1,6 @@
1
- import { d as resolveStateDir } from "../../paths-BYNVLNi_.js";
2
- import { t as createSubsystemLogger } from "../../subsystem-tzu-rIAJ.js";
3
- import "../../utils-CTFLl_ji.js";
1
+ import { d as resolveStateDir } from "../../paths-CkTEyLTV.js";
2
+ import { t as createSubsystemLogger } from "../../subsystem-B98oWbbO.js";
3
+ import "../../utils-ChNzRVsg.js";
4
4
  import "../../runtime-8mi3mpYB.js";
5
5
  import fs from "node:fs/promises";
6
6
  import os from "node:os";