@visorcraft/idlehands 4.1.0 → 4.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (382) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/{accounts-DsVN0UNw.js → accounts-3HS_UAhJ.js} +1 -1
  3. package/dist/{accounts-B8cGzkjD.js → accounts-BDVs8LTu.js} +1 -1
  4. package/dist/{accounts-D5tB_lO0.js → accounts-CIvVRRHb.js} +1 -1
  5. package/dist/{accounts-D-hQsUw-.js → accounts-DLTODa_Z.js} +1 -1
  6. package/dist/{accounts-D87a1Y_K.js → accounts-DgbTKQoW.js} +1 -1
  7. package/dist/{accounts-BQC_GRUB.js → accounts-Dk8mJIrQ.js} +6 -6
  8. package/dist/{acp-cli-BEHYc8ty.js → acp-cli-BEpWQbqb.js} +7 -7
  9. package/dist/{agent-scope-Bxq1eWbA.js → agent-scope-DyP_tr7s.js} +4 -4
  10. package/dist/{agent-scope-Bn39ugK4.js → agent-scope-RA0zXRpu.js} +18 -18
  11. package/dist/{agent-via-gateway-igDg7ko6.js → agent-via-gateway-C42kkKZI.js} +2 -2
  12. package/dist/{agent-via-gateway-CM7X6sKJ.js → agent-via-gateway-CUtzJXBE.js} +60 -60
  13. package/dist/{agent-via-gateway-B03q92bw.js → agent-via-gateway-CldlRczJ.js} +1 -1
  14. package/dist/{agent-via-gateway-bS6seBwg.js → agent-via-gateway-oMn0WfUq.js} +4 -4
  15. package/dist/{agents-DdTECKDf.js → agents-BfnnMO1i.js} +4 -4
  16. package/dist/{agents.config-D2EbQiOx.js → agents.config-BFfVBZMA.js} +1 -1
  17. package/dist/{agents.config-CPUPtcKt.js → agents.config-bWtpv0jP.js} +2 -2
  18. package/dist/{anton-ONYQUE8F.js → anton-CgpWkf5P.js} +32 -17
  19. package/dist/{anton-C7-Qxyij.js → anton-CoGaJdTU.js} +36 -21
  20. package/dist/{anton-D4vpCj_q.js → anton-DSS3RNo7.js} +32 -17
  21. package/dist/anton-DXL8jrY_.js +792 -0
  22. package/dist/{api-key-rotation-nXQVJErE.js → api-key-rotation-B-FTJm5p.js} +1 -1
  23. package/dist/{audio-preflight-qkU2lsDn.js → audio-preflight-CW8IH1lU.js} +35 -35
  24. package/dist/{audio-preflight-DzjXupNO.js → audio-preflight-Dl1TO10w.js} +31 -31
  25. package/dist/{audit-C5VPFgbJ.js → audit-CKeZnjft.js} +22 -22
  26. package/dist/{auth-choice-DVoPuwEs.js → auth-choice-BNofPyTK.js} +1 -1
  27. package/dist/{auth-choice-BDndThZZ.js → auth-choice-D12Wsf7w.js} +12 -12
  28. package/dist/{auth-choice-CQqV1VIf.js → auth-choice-Z7nPFxhP.js} +10 -10
  29. package/dist/{auth-choice.apply-helpers-pTqMTYmi.js → auth-choice.apply-helpers-CGcniL1T.js} +1 -1
  30. package/dist/{auth-store-CMyrmmSF.js → auth-store-DDzIMy8_.js} +7 -7
  31. package/dist/{auth-store-Bb4aajHu.js → auth-store-DXT-l7fO.js} +12 -12
  32. package/dist/{auth-token-fKt_cHOj.js → auth-token-BJq87X3o.js} +1 -1
  33. package/dist/{banner-CFKoGAzN.js → banner-B1-kj-GW.js} +1 -1
  34. package/dist/{bindings-DZjkLUU_.js → bindings-B59Q7nsk.js} +1 -1
  35. package/dist/{bindings-CLZIJ0Eo.js → bindings-D3b5Fmc9.js} +2 -2
  36. package/dist/{browser-cli-qU0I-Gla.js → browser-cli-Ci6DpTnS.js} +11 -11
  37. package/dist/build-info.json +3 -3
  38. package/dist/bundled/boot-md/handler.js +60 -60
  39. package/dist/bundled/bootstrap-extra-files/handler.js +5 -5
  40. package/dist/bundled/command-logger/handler.js +3 -3
  41. package/dist/bundled/session-memory/handler.js +60 -60
  42. package/dist/{call-Du-oBD99.js → call-BpWhjuOg.js} +9 -9
  43. package/dist/{channel-account-context-B4nJPU2N.js → channel-account-context-CDbY5AIr.js} +5 -5
  44. package/dist/{channel-activity-DdL3RAv_.js → channel-activity-D_TMOGQ0.js} +3 -3
  45. package/dist/{channel-options-BU0E7BdU.js → channel-options-C5Iz9bes.js} +1 -1
  46. package/dist/{channel-options-B1cfZ5uQ.js → channel-options-CUP3A4VX.js} +3 -3
  47. package/dist/{channel-selection-3jUl-PyW.js → channel-selection-ZxRkxpuF.js} +1 -1
  48. package/dist/{channel-web-BDytDCrG.js → channel-web-CGXl1PnB.js} +2 -2
  49. package/dist/{channel-web-CzrJ-6X4.js → channel-web-CsUiKxQo.js} +22 -22
  50. package/dist/{channels-cli-DWaQsKP8.js → channels-cli-DK7TRLqX.js} +7 -7
  51. package/dist/{channels-cli-B4o-qohk.js → channels-cli-DmHSajZy.js} +88 -88
  52. package/dist/{channels-status-issues-hgASw9UA.js → channels-status-issues-CDpWjdI3.js} +1 -1
  53. package/dist/{chrome-CT_a9OgI.js → chrome-BcJB6PcM.js} +17 -17
  54. package/dist/{chrome-YguTEaLx.js → chrome-VBsQfIrt.js} +2 -2
  55. package/dist/{chunk-Djk-9JeT.js → chunk-CMpX7Jaz.js} +1 -1
  56. package/dist/{clawbot-cli-C5cDal-5.js → clawbot-cli-uFgYrysW.js} +5 -5
  57. package/dist/{cli-Hplv9sD1.js → cli-6eMKeewY.js} +2 -2
  58. package/dist/{cli-DXyOlvH2.js → cli-DEE_ketW.js} +70 -70
  59. package/dist/{client-Dl5EAvfO.js → client-DtnD-ee9.js} +1 -1
  60. package/dist/{command-registry-esizscE2.js → command-registry-BFTlzx6d.js} +10 -10
  61. package/dist/{commands-D3BU_t7G.js → commands-Dj5LalLo.js} +1 -1
  62. package/dist/{commands-registry-Cj4D_1tw.js → commands-registry-CURlRZQJ.js} +3 -3
  63. package/dist/{commands-registry-_TBHHpvt.js → commands-registry-j4vAzcF2.js} +5 -5
  64. package/dist/{completion-cli-c4blaZPQ.js → completion-cli-BbXgtvGY.js} +2 -2
  65. package/dist/{completion-cli-CXDILt8-.js → completion-cli-PBfCNWhv.js} +12 -12
  66. package/dist/{config-cli-D_mH5-FH.js → config-cli-BVJRkNhX.js} +6 -6
  67. package/dist/{config-cli-98ASrAou.js → config-cli-Q934shK6.js} +1 -1
  68. package/dist/{config-guard-DnAyuF6T.js → config-guard-BdsOumqh.js} +17 -17
  69. package/dist/{config-validation-DIomLMwH.js → config-validation-BvKX6fPw.js} +2 -2
  70. package/dist/{configure-PKG58EzI.js → configure-85ttW_lD.js} +16 -16
  71. package/dist/{configure-CKspMrI1.js → configure-BGAvA5a4.js} +3 -3
  72. package/dist/{control-ui-assets-CiaCDBvZ.js → control-ui-assets-C7ZpN9hN.js} +1 -1
  73. package/dist/{cron-cli-BIfVPc5K.js → cron-cli-DQsnGQKs.js} +12 -12
  74. package/dist/{daemon-cli-DpyQu0Dp.js → daemon-cli-DUg-s4LG.js} +11 -11
  75. package/dist/{daemon-install-DeqQiAad.js → daemon-install-CYPo4M1M.js} +4 -4
  76. package/dist/{daemon-install-helpers-Bug_GYuy.js → daemon-install-helpers-BZY9-jNW.js} +9 -9
  77. package/dist/{deliver-yTpXc5sv.js → deliver--kttnrER.js} +7 -7
  78. package/dist/{deliver-Db2xqgLg.js → deliver-BUiQ-9fE.js} +20 -20
  79. package/dist/{deps-CjWcQwlX.js → deps-AEDT3iDX.js} +1 -1
  80. package/dist/{deps-CC5E5LXB.js → deps-B4J8H6nI.js} +6 -6
  81. package/dist/{deps-BotXja4Z.js → deps-Bq7jJLyN.js} +6 -6
  82. package/dist/{deps-DR1eh_L_.js → deps-Ch6bZ8PI.js} +1 -1
  83. package/dist/{devices-cli-B7fkQKei.js → devices-cli-DKK65S9Z.js} +7 -7
  84. package/dist/{diagnostic-BvlZ0Sot.js → diagnostic-4owMk4vH.js} +1 -1
  85. package/dist/{diagnostics-CdUgLS0N.js → diagnostics-DmZbQ8Nc.js} +5 -5
  86. package/dist/{directory-cli-BAMS8f9U.js → directory-cli-Dz9iXeut.js} +9 -9
  87. package/dist/{dns-cli-BdxBk-k_.js → dns-cli-DD6hWsdc.js} +4 -4
  88. package/dist/{dock-ejUetwTC.js → dock-BgOmHcbh.js} +6 -6
  89. package/dist/{dock-CzF5XYGd.js → dock-Y96MzKuM.js} +4 -4
  90. package/dist/{docs-cli-SF7es4Zs.js → docs-cli-cHkrTB2e.js} +4 -4
  91. package/dist/{doctor-completion-Co_xszXC.js → doctor-completion-CN5Zujsa.js} +2 -2
  92. package/dist/{doctor-completion-DFr8_h-z.js → doctor-completion-Clh5CNUd.js} +1 -1
  93. package/dist/{doctor-config-flow-8qXzBx09.js → doctor-config-flow-Ck4oCjfl.js} +14 -14
  94. package/dist/{emergency-stop-ChBe32HN.js → emergency-stop-2v4bhRCE.js} +2 -2
  95. package/dist/{emergency-stop-DtVFxCO1.js → emergency-stop-BtasjDnU.js} +70 -70
  96. package/dist/emergency-stop-CVO75pTD.js +113 -0
  97. package/dist/{emergency-stop-CDozqde9.js → emergency-stop-D_bTOufu.js} +2 -2
  98. package/dist/{enable-DaA_orGN.js → enable-o_s6PBsC.js} +1 -1
  99. package/dist/entry.js +1 -1
  100. package/dist/{env-q-PhWbb_.js → env-B5G1qwGc.js} +1 -1
  101. package/dist/{errors-C4SHjIZK.js → errors-C_0nm4TJ.js} +1 -1
  102. package/dist/{exec-approvals-allowlist-8AkOwwIr.js → exec-approvals-allowlist-Co2tJSEo.js} +1 -1
  103. package/dist/{exec-approvals-cli-CbcJzCt0.js → exec-approvals-cli-D6XUzs4j.js} +15 -15
  104. package/dist/{exec-safe-bin-runtime-policy-DYXuBKqH.js → exec-safe-bin-runtime-policy-DaoU9-ni.js} +2 -2
  105. package/dist/extensionAPI.js +2 -2
  106. package/dist/{fetch-guard-CcfDZXe9.js → fetch-guard-iuQsIjqN.js} +1 -1
  107. package/dist/{frontmatter-pTUG4Sx_.js → frontmatter-BOudmHMS.js} +2 -2
  108. package/dist/{fs-safe-2l05hI1Y.js → fs-safe-CYUaAFO9.js} +2 -2
  109. package/dist/{fs-safe-DNFrxDS-.js → fs-safe-_JQUGpZf.js} +15 -15
  110. package/dist/{gateway-cli-DjCBMnUT.js → gateway-cli-Cl7cEsHE.js} +9 -9
  111. package/dist/{gateway-cli-poVGdgAz.js → gateway-cli-DJm73Wou.js} +148 -148
  112. package/dist/{gateway-rpc-IpZymG6F.js → gateway-rpc-BBFG1T-M.js} +1 -1
  113. package/dist/{gemini-auth-DLSGffQK.js → gemini-auth-CIyaa44H.js} +2 -2
  114. package/dist/{github-copilot-token-BjmEQcmi.js → github-copilot-token-Dgt6cnsM.js} +7 -7
  115. package/dist/{health-lZsCLX6p.js → health-C6_Sa_ef.js} +13 -13
  116. package/dist/{health-HEN6Wk9G.js → health-D-b3jdnU.js} +1 -1
  117. package/dist/{hooks-cli-DFrttZGb.js → hooks-cli-BB25FyuN.js} +3 -3
  118. package/dist/{hooks-cli-EbzkZ1Xh.js → hooks-cli-BC3n8UYQ.js} +84 -84
  119. package/dist/{hooks-status-CPIWc_bx.js → hooks-status-DNGo2G8Q.js} +1 -1
  120. package/dist/{idlehands-root-DFL2GrNW.js → idlehands-root-B8cUs-5M.js} +8 -8
  121. package/dist/{image-Dlu13Ebx.js → image-D8b_rlQC.js} +6 -6
  122. package/dist/{image-C2JZiK-6.js → image-DSDEbSiO.js} +5 -5
  123. package/dist/{image-ops-J8P5zOFm.js → image-ops-BU-VdLZu.js} +2 -2
  124. package/dist/{image-ops-BkoEFRYH.js → image-ops-D1KtygWz.js} +11 -11
  125. package/dist/index.js +80 -80
  126. package/dist/{inspect-Dg16DMLn.js → inspect-ISQZuNM5.js} +4 -4
  127. package/dist/{install-safe-path-CNNMzJl9.js → install-safe-path-ChNR9pl6.js} +19 -19
  128. package/dist/{installs-ST3UaUVJ.js → installs-CNubze2L.js} +9 -9
  129. package/dist/{ir-BT5aAdU9.js → ir-B7IBoKLy.js} +5 -5
  130. package/dist/{ir-DV0Hszc8.js → ir-VncGpwA1.js} +6 -6
  131. package/dist/{lifecycle-core-DOScNyOv.js → lifecycle-core-B6UoqYTJ.js} +5 -5
  132. package/dist/llm-slug-generator.js +60 -60
  133. package/dist/{local-roots-d4y0lvs2.js → local-roots-KN4Hp1yZ.js} +5 -5
  134. package/dist/{local-roots-Cco87A2_.js → local-roots-q0xbefkf.js} +2 -2
  135. package/dist/{login-C2X0In6m.js → login-CFr5vJmR.js} +6 -6
  136. package/dist/{login-Dl_lsEHS.js → login-CfUhrgWT.js} +4 -4
  137. package/dist/{login-qr-C17PY0rr.js → login-qr-CFFFOjOl.js} +11 -11
  138. package/dist/{login-qr-B68cBRH0.js → login-qr-DBMsUxgL.js} +7 -7
  139. package/dist/{logs-cli-DHCG25JA.js → logs-cli-4VQ9Iwiw.js} +8 -8
  140. package/dist/{manager-CgzA1hKo.js → manager-BE_76jWB.js} +15 -15
  141. package/dist/{manager-BBeTPO2h.js → manager-BMAFgXyU.js} +13 -13
  142. package/dist/{manifest-registry-RfRn8HJx.js → manifest-registry-Bak1x76G.js} +1 -1
  143. package/dist/{markdown-tables-R8VTpfE9.js → markdown-tables-CzsockiZ.js} +1 -1
  144. package/dist/{markdown-tables-C5hTDqNm.js → markdown-tables-DZClqsNo.js} +1 -1
  145. package/dist/{memory-cli-4wfelGdK.js → memory-cli-CUGwnVIY.js} +12 -12
  146. package/dist/{message-channel-ZdI1-uUh.js → message-channel-C8QtrwEU.js} +1 -1
  147. package/dist/{model-Bd-05WpB.js → model-C-icShH2.js} +2 -2
  148. package/dist/{model-catalog-BCsDrrvq.js → model-catalog-D9no0CH2.js} +3 -3
  149. package/dist/{model-picker-D3U0wJCO.js → model-picker-BkXoTOiA.js} +4 -4
  150. package/dist/{model-selection-CSn9tUuH.js → model-selection-0dGxYGp8.js} +16 -16
  151. package/dist/{model-selection-C5hI1dum.js → model-selection-1MMYqY6M.js} +41 -41
  152. package/dist/{models-tZYpgts_.js → models-C1_Tdc1Q.js} +2 -2
  153. package/dist/{models-cli-umEUn4Xu.js → models-cli-B9yw60gV.js} +79 -79
  154. package/dist/{models-cli-DVAyIZ63.js → models-cli-Bs5ZNSbk.js} +4 -4
  155. package/dist/{models-config-lQpqp472.js → models-config-C5A1wDWh.js} +6 -6
  156. package/dist/{node-cli-7gQ7xfOh.js → node-cli-BYzjxmUY.js} +32 -32
  157. package/dist/{node-service-GpI0jzKr.js → node-service-C3vyxHLA.js} +1 -1
  158. package/dist/{nodes-cli-CDXLGCox.js → nodes-cli-kNOtp0U0.js} +14 -14
  159. package/dist/{nodes-screen-CIAn0wXq.js → nodes-screen-CcpPaFxa.js} +4 -4
  160. package/dist/{npm-registry-spec-BfeHLbIQ.js → npm-registry-spec-BCbbfIhX.js} +16 -16
  161. package/dist/{npm-resolution-By6en78P.js → npm-resolution-BMDipaRX.js} +3 -3
  162. package/dist/{npm-resolution-By6bZkA-.js → npm-resolution-yXJbqHHn.js} +1 -1
  163. package/dist/{onboard-Dw-URWpt.js → onboard-CYRoDnOI.js} +2 -2
  164. package/dist/{onboard-BmDmDXYf.js → onboard-DjbHK18p.js} +6 -6
  165. package/dist/{onboard-channels-DCDhpz9s.js → onboard-channels-CNQt2jFU.js} +20 -20
  166. package/dist/{onboard-channels-JPltbNGL.js → onboard-channels-CkxvodmR.js} +1 -1
  167. package/dist/{onboard-custom-D2sCP3_S.js → onboard-custom-DUbzMMu7.js} +4 -4
  168. package/dist/{onboard-helpers-CdzbIhrm.js → onboard-helpers-mzy38DiC.js} +8 -8
  169. package/dist/{onboard-hooks-_1Jgimeu.js → onboard-hooks-D9teGxfH.js} +4 -4
  170. package/dist/{onboard-remote-pCRaL_Ey.js → onboard-remote-LCBHijVE.js} +1 -1
  171. package/dist/{onboard-skills-DvwRvBvj.js → onboard-skills-jFY9gaOu.js} +4 -4
  172. package/dist/{onboarding-DIorhVOJ.js → onboarding-BEDOWI9h.js} +3 -3
  173. package/dist/{onboarding-Cf3JxJxY.js → onboarding-D9AZJlDK.js} +13 -13
  174. package/dist/{onboarding.finalize-BCmAqhLV.js → onboarding.finalize-D4hW1yTd.js} +7 -7
  175. package/dist/{onboarding.finalize-BH4WHo75.js → onboarding.finalize-DJxMkD2g.js} +82 -82
  176. package/dist/{onboarding.gateway-config-Sj7zQKsE.js → onboarding.gateway-config-Btu2gzgr.js} +16 -16
  177. package/dist/{openai-model-default-OPCCNNS0.js → openai-model-default-7J6cw1rA.js} +2 -2
  178. package/dist/{outbound-CdY_AskB.js → outbound-BNh6PpQb.js} +6 -6
  179. package/dist/{outbound-CG19kl0w.js → outbound-DPTxwchq.js} +4 -4
  180. package/dist/{outbound-attachment-jYdMgCml.js → outbound-attachment-3I6GzwDe.js} +2 -2
  181. package/dist/{outbound-attachment-IfeZJAKk.js → outbound-attachment-Bot3bRnK.js} +2 -2
  182. package/dist/{pairing-cli-QJYYDcIK.js → pairing-cli-jwx6hMsM.js} +10 -10
  183. package/dist/{pairing-labels-DuZ7ih-T.js → pairing-labels-ChQJzbS9.js} +1 -1
  184. package/dist/{pairing-store-qvpPoWL_.js → pairing-store-CPpEEQJO.js} +2 -2
  185. package/dist/{pairing-token-3hoCgQqp.js → pairing-token-lKXTMQ_M.js} +7 -7
  186. package/dist/{path-alias-guards-BZmt6hFb.js → path-alias-guards-Cu1nXNMM.js} +1 -1
  187. package/dist/{path-alias-guards-BCskHdfJ.js → path-alias-guards-FXBVVTLw.js} +3 -3
  188. package/dist/{path-safety-C1Y004P_.js → path-safety-DwibX65n.js} +1 -1
  189. package/dist/{paths-Bt0fZexW.js → paths-B-CLQ5RT.js} +9 -9
  190. package/dist/{paths-DQpv9a3Q.js → paths-BYNVLNi_.js} +5 -5
  191. package/dist/{paths-D3p7ZvM6.js → paths-D_qUel1T.js} +3 -3
  192. package/dist/{pi-embedded-mKozULng.js → pi-embedded-C6RDRgJM.js} +179 -179
  193. package/dist/{pi-embedded-helpers-BkzrQ5bZ.js → pi-embedded-helpers-BCsfqpDt.js} +6 -6
  194. package/dist/{pi-embedded-helpers-B3ceCcxm.js → pi-embedded-helpers-CghCLoPo.js} +24 -24
  195. package/dist/{pi-embedded-DMx6rHVL.js → pi-embedded-o6Xj8V4C.js} +11 -11
  196. package/dist/{pi-model-discovery-Bt79ifyi.js → pi-model-discovery-BIP3RjXl.js} +1 -1
  197. package/dist/{pi-model-discovery-Dlx4RLWo.js → pi-model-discovery-Bb__OY-j.js} +7 -7
  198. package/dist/{pi-tools.policy-B_ME3yF6.js → pi-tools.policy-DfITIKZj.js} +5 -5
  199. package/dist/{plugin-auto-enable-BMuSi4aV.js → plugin-auto-enable-7DUxMy6A.js} +3 -3
  200. package/dist/{plugin-registry-BY85d-vE.js → plugin-registry-6C1sgAm1.js} +1 -1
  201. package/dist/{plugin-registry-BIoGoN5y.js → plugin-registry-DIK-5KI9.js} +3 -3
  202. package/dist/plugin-sdk/{agent-via-gateway-CXtWg-qx.js → agent-via-gateway-DmQMFWNE.js} +2 -2
  203. package/dist/plugin-sdk/{anton-CGYTy9vy.js → anton-CrjFisFZ.js} +32 -17
  204. package/dist/plugin-sdk/{channel-web-EFRSObCG.js → channel-web-vQgHbtCG.js} +2 -2
  205. package/dist/plugin-sdk/{deps-qZxPlSgp.js → deps-DfyALwFG.js} +1 -1
  206. package/dist/plugin-sdk/{emergency-stop-CxcBz-aQ.js → emergency-stop-0ZrbH3D4.js} +2 -2
  207. package/dist/plugin-sdk/index.js +3 -3
  208. package/dist/plugin-sdk/{reply-nUO1aM3T.js → reply-BfdVf3fw.js} +11 -11
  209. package/dist/plugin-sdk/{web-CEtAvhaI.js → web-DwDLI7GP.js} +3 -3
  210. package/dist/{plugins-DYr-HHj0.js → plugins-CRB60mCJ.js} +10 -10
  211. package/dist/{plugins-B4hASNc2.js → plugins-D46VZh7u.js} +2 -2
  212. package/dist/{plugins-cli-Dlb8QO-K.js → plugins-cli-B1kN2Xze.js} +80 -80
  213. package/dist/{plugins-cli-RFXGkaxP.js → plugins-cli-DFUxLQbB.js} +3 -3
  214. package/dist/{ports-B07M55Gr.js → ports-B2o0FSFD.js} +1 -1
  215. package/dist/{ports-DWJO5S52.js → ports-SQy1d-RL.js} +2 -2
  216. package/dist/{program-context-B_byBfwR.js → program-context-CjyGlgVG.js} +43 -43
  217. package/dist/{program-Do2-I4y3.js → program-mmjp27H4.js} +8 -8
  218. package/dist/{prompt-select-styled-VWGHu3e1.js → prompt-select-styled-04TKk_r3.js} +4 -4
  219. package/dist/{prompt-select-styled-CBF_I30O.js → prompt-select-styled-FskTiqWw.js} +37 -37
  220. package/dist/{provider-auth-helpers-BCc5UtUa.js → provider-auth-helpers-9IcvdTst.js} +1 -1
  221. package/dist/{provider-auth-helpers-BGGSUXOH.js → provider-auth-helpers-BI7MVWjD.js} +5 -5
  222. package/dist/{push-apns-CHmvuoMu.js → push-apns-Bh0u21Bh.js} +1 -1
  223. package/dist/{push-apns-CuwLAoXk.js → push-apns-DvSYSWvk.js} +5 -5
  224. package/dist/{pw-ai-BGALvhDi.js → pw-ai-7i9eGnLh.js} +11 -11
  225. package/dist/{pw-ai-DIV4PcIo.js → pw-ai-CfYaR1K2.js} +13 -13
  226. package/dist/{qmd-manager-CVcPfkhL.js → qmd-manager-B-qeywfQ.js} +19 -19
  227. package/dist/{qmd-manager-BRvg3Rx2.js → qmd-manager-B_GgyQQ0.js} +8 -8
  228. package/dist/{qr-cli-D2Oh8f0U.js → qr-cli-CSt5ihwG.js} +1 -1
  229. package/dist/{query-expansion-i5I3yavb.js → query-expansion-Clts_AGz.js} +12 -12
  230. package/dist/{query-expansion-DHuNyU-_.js → query-expansion-DEq020GG.js} +5 -5
  231. package/dist/{redact-1Y0KPNtr.js → redact-Bvpf-ATQ.js} +1 -1
  232. package/dist/{redact-snapshot-KMo22a85.js → redact-snapshot-BbEVKv0k.js} +1 -1
  233. package/dist/{register.agent-Dx7ULz49.js → register.agent-B3zUfhl9.js} +9 -9
  234. package/dist/{register.agent-CDcuj79y.js → register.agent-BSe92Zxh.js} +95 -95
  235. package/dist/register.configure-DZ9OCp0V.js +168 -0
  236. package/dist/{register.configure-BctHAiWh.js → register.configure-N4JG5hVe.js} +8 -8
  237. package/dist/{register.maintenance-BcFR1fGQ.js → register.maintenance-BjhkxF3o.js} +9 -9
  238. package/dist/{register.maintenance-wv8PzmVy.js → register.maintenance-DxauQqK_.js} +90 -90
  239. package/dist/{register.message-DUAiI9J7.js → register.message-BsMpRFVr.js} +71 -71
  240. package/dist/{register.message-BLScF2fV.js → register.message-DoZ5i1Pn.js} +3 -3
  241. package/dist/{register.onboard-BMNBXD29.js → register.onboard-Cw3wNQRm.js} +2 -2
  242. package/dist/{register.onboard-F09brfSb.js → register.onboard-Hxi3l9IA.js} +18 -18
  243. package/dist/{register.orchestrator-anton-CGhKIDjJ.js → register.orchestrator-anton-BqQfw2JX.js} +14 -14
  244. package/dist/{register.orchestrator-anton-Tn_RaMLq.js → register.orchestrator-anton-DOByOKzU.js} +2 -2
  245. package/dist/{register.setup-jzek547p.js → register.setup-dazD7bl3.js} +21 -21
  246. package/dist/{register.setup-DqbGSLoJ.js → register.setup-r5Xy4nv4.js} +2 -2
  247. package/dist/{register.status-health-sessions-ByfydR_f.js → register.status-health-sessions-3zjBM0m6.js} +82 -82
  248. package/dist/{register.status-health-sessions-wbopjGL-.js → register.status-health-sessions-DobZ2G2u.js} +4 -4
  249. package/dist/{register.subclis-CuNL7Zgu.js → register.subclis-CGJxYP3h.js} +9 -9
  250. package/dist/{replies-2C16fnBP.js → replies-6_GxvQYe.js} +3 -3
  251. package/dist/{replies-Czp4hvpS.js → replies-hSFVxL4h.js} +1 -1
  252. package/dist/{reply-CdFdL9nL.js → reply-BDr-UY9O.js} +153 -153
  253. package/dist/{reply-prefix-DCljZiIB.js → reply-prefix-BUgeSN2R.js} +1 -1
  254. package/dist/{reply-prefix-BMEdvSpA.js → reply-prefix-C3y4zpTl.js} +1 -1
  255. package/dist/{resolve-route-Ef_Yt2Dw.js → resolve-route-D_AbcmD6.js} +2 -2
  256. package/dist/{resolve-route-ClcifpKn.js → resolve-route-DuttYY7A.js} +4 -4
  257. package/dist/{retry-CG6cMRDQ.js → retry-BeB9WenR.js} +1 -1
  258. package/dist/{rpc-CNqnw2FL.js → rpc-Cf9OK5Yk.js} +1 -1
  259. package/dist/{run-main-9A7FdIR1.js → run-main-BDEztzfx.js} +15 -15
  260. package/dist/{runner-BFG54hnb.js → runner-DzszLzI4.js} +20 -20
  261. package/dist/{runner-BkCU-kqs.js → runner-PgRFPYUj.js} +11 -11
  262. package/dist/{runtime-DEmy759r.js → runtime-XmXLaHNk.js} +2 -2
  263. package/dist/{sandbox-CfPbhDY_.js → sandbox-DcUw5h3p.js} +20 -20
  264. package/dist/{sandbox-cli-B4wLJr21.js → sandbox-cli-DGvJ7Eeq.js} +22 -22
  265. package/dist/{secrets-cli-DP718vNZ.js → secrets-cli-CR3h2TBy.js} +9 -9
  266. package/dist/{security-cli-CG2_SV7b.js → security-cli-B9_LV2po.js} +39 -39
  267. package/dist/{send-DDMaLJAQ.js → send--lzpNy4f.js} +7 -7
  268. package/dist/{send-DZa8fWSm.js → send-BeIZJuy4.js} +7 -7
  269. package/dist/{send-Y1hD4tQ1.js → send-C1hvd3bt.js} +6 -6
  270. package/dist/{send-BCPkAE2k.js → send-C4v0Leny.js} +6 -6
  271. package/dist/{send-BOxJ4QXF.js → send-D4bMycQu.js} +7 -7
  272. package/dist/{send-CEavqqEz.js → send-DQiw_nGD.js} +6 -6
  273. package/dist/{send-FLdrx-oF.js → send-Dfa3sn6r.js} +24 -24
  274. package/dist/{send-IlPMLAH-.js → send-DmLC7aEF.js} +10 -10
  275. package/dist/{send-BPwTl4-K.js → send-DuwdEkLw.js} +4 -4
  276. package/dist/{send-CVIXqubC.js → send-DwdHiC7_.js} +13 -13
  277. package/dist/{server-BpSbZAwg.js → server-D6MltJIF.js} +14 -14
  278. package/dist/{server-context-BxNSTpH6.js → server-context-DI0W_H7R.js} +10 -10
  279. package/dist/{server-lifecycle-CGKrGrhM.js → server-lifecycle-B5PlrlbG.js} +2 -2
  280. package/dist/{server-node-events-CbVkqOtV.js → server-node-events-BL1dTBEr.js} +3 -3
  281. package/dist/{server-node-events-BSPxvn7O.js → server-node-events-C69TPlKW.js} +71 -71
  282. package/dist/{service-Bj2oSfpw.js → service-C8NMS3m_.js} +15 -15
  283. package/dist/{session-BKVySI8q.js → session-CdnrRhb4.js} +1 -1
  284. package/dist/{session-nUPBXeEa.js → session-F_YDS_1V.js} +7 -7
  285. package/dist/{sessions-DRA4oaxz.js → sessions-3ioSeOA1.js} +41 -41
  286. package/dist/{sessions-BqWocozB.js → sessions-BtPXimXQ.js} +14 -14
  287. package/dist/{shared-DnQ4iyXk.js → shared-CpDPo3hJ.js} +2 -2
  288. package/dist/{shared-Jzrx8DfN.js → shared-DpLSpJIl.js} +1 -1
  289. package/dist/{skill-commands-BwIRWSCI.js → skill-commands-BFzmZAfo.js} +5 -5
  290. package/dist/{skill-commands-BHTBXXVn.js → skill-commands-Ck3flWX7.js} +9 -9
  291. package/dist/{skill-scanner-B4Ftsbd2.js → skill-scanner-D7mzXRXd.js} +5 -5
  292. package/dist/{skills-umlGvChF.js → skills-CnAPWfca.js} +22 -22
  293. package/dist/{skills-TIyQDZx7.js → skills-DlvDyK8L.js} +3 -3
  294. package/dist/{skills-cli-5lbXi4Lh.js → skills-cli-BhKGhjbO.js} +5 -5
  295. package/dist/{skills-install-D0JHP5uM.js → skills-install-tr6wRWZj.js} +4 -4
  296. package/dist/{skills-status-Q9skQExW.js → skills-status-qjQ8XP0h.js} +1 -1
  297. package/dist/{status-ClMOrHdT.js → status-AEwcpHsu.js} +2 -2
  298. package/dist/{status-YWasgjym.js → status-B8z0RCPf.js} +24 -24
  299. package/dist/{status.update-C3uRz7W6.js → status.update-CTi6vuWj.js} +2 -2
  300. package/dist/{store-D-ZicQeo.js → store-CvMgrKWx.js} +2 -2
  301. package/dist/{store-CLNuI8-G.js → store-kH9wHHbO.js} +5 -5
  302. package/dist/{subagent-registry-BH5O1rxK.js → subagent-registry-Dclk-Ews.js} +11 -11
  303. package/dist/{subsystem-D7ZepYT1.js → subsystem-tzu-rIAJ.js} +1 -1
  304. package/dist/{system-cli-BfjZ6QvH.js → system-cli-DyVZ5udc.js} +8 -8
  305. package/dist/{system-run-approval-context-xZVoE4nS.js → system-run-approval-context-CISBXlNw.js} +1 -1
  306. package/dist/{system-run-command-BIhrK3OI.js → system-run-command-qJdgzxLp.js} +1 -1
  307. package/dist/{systemd-DyrVLTI0.js → systemd-CaCR5CyM.js} +9 -9
  308. package/dist/{systemd-hints-BoKKzRI_.js → systemd-hints-DHu-HVFx.js} +6 -6
  309. package/dist/{systemd-linger-DrhGd61G.js → systemd-linger-B7XlUHk_.js} +1 -1
  310. package/dist/{tables-Co_R_WKs.js → tables-5k-zOZ-s.js} +1 -1
  311. package/dist/{tables-CZSD889r.js → tables-g9xkflht.js} +1 -1
  312. package/dist/{target-errors-B1mcM4WR.js → target-errors-BPfQrPim.js} +2 -2
  313. package/dist/{target-errors-BYuWhuLU.js → target-errors-bLIVFsbF.js} +4 -4
  314. package/dist/{tokens-DGajj8M9.js → tokens-BRLyURxW.js} +1 -1
  315. package/dist/{tool-images-DZHrc4pq.js → tool-images-CHqepyF_.js} +1 -1
  316. package/dist/{tool-images-Duuqr4bN.js → tool-images-CcGZpzmq.js} +2 -2
  317. package/dist/{tool-loop-detection-CjWRg_4q.js → tool-loop-detection-BNGetx3Z.js} +3 -3
  318. package/dist/{tui-B2bAseIB.js → tui-Bne3YNiw.js} +6 -6
  319. package/dist/{tui-cli-cewAjqAk.js → tui-cli-D0Z-rcUe.js} +30 -30
  320. package/dist/{update-la2AdLf3.js → update-D79ppbMQ.js} +3 -3
  321. package/dist/{update-cli-D7gDHoEE.js → update-cli-8Tk6PCmD.js} +99 -99
  322. package/dist/{update-cli-Cxp_mYOH.js → update-cli-Bobm67f-.js} +9 -9
  323. package/dist/{update-runner-DRglQgXe.js → update-runner-B4xzPa4-.js} +15 -15
  324. package/dist/{update-runner-tu2Aiphu.js → update-runner-C4NjVy9-.js} +1 -1
  325. package/dist/{upgrade-command-28wRHZZ2.js → upgrade-command-909a7QUc.js} +3 -3
  326. package/dist/{utils-D9wGoiU9.js → utils-CTFLl_ji.js} +18 -18
  327. package/dist/{web-aRaB-CvF.js → web-9J12F46d.js} +3 -3
  328. package/dist/{web-BxegDO-S.js → web-DPSpgc_K.js} +3 -3
  329. package/dist/web-Dqy4kqC9.js +123 -0
  330. package/dist/{web-BuIXrrsp.js → web-NzOJcvWO.js} +66 -66
  331. package/dist/{webhooks-cli-BnmVPYkU.js → webhooks-cli-2N03q0iY.js} +6 -6
  332. package/dist/{whatsapp-actions-D2mBFzmK.js → whatsapp-actions-Cms8wQM1.js} +18 -18
  333. package/dist/{whatsapp-actions-BJ6kVDXi.js → whatsapp-actions-DbPcN6JQ.js} +25 -25
  334. package/dist/{with-timeout-BodPmGCY.js → with-timeout-DEdycYxq.js} +3 -3
  335. package/dist/{workspace-CDw87aZG.js → workspace-D3pARwoB.js} +1 -1
  336. package/dist/{workspace-tAtkoD_r.js → workspace-DBFSzT6O.js} +18 -18
  337. package/dist/{workspace-dirs-D3bousoX.js → workspace-dirs-SsExQ3Bz.js} +1 -1
  338. package/dist/{wsl-CgXDjE09.js → wsl-BJW8nTyL.js} +2 -2
  339. package/extensions/acpx/package.json +1 -1
  340. package/extensions/bluebubbles/package.json +1 -1
  341. package/extensions/copilot-proxy/package.json +1 -1
  342. package/extensions/diagnostics-otel/package.json +1 -1
  343. package/extensions/discord/package.json +1 -1
  344. package/extensions/feishu/package.json +1 -1
  345. package/extensions/google-gemini-cli-auth/package.json +1 -1
  346. package/extensions/googlechat/package.json +1 -1
  347. package/extensions/hand/package.json +1 -1
  348. package/extensions/imessage/package.json +1 -1
  349. package/extensions/irc/package.json +1 -1
  350. package/extensions/line/package.json +1 -1
  351. package/extensions/llm-task/package.json +1 -1
  352. package/extensions/matrix/CHANGELOG.md +12 -0
  353. package/extensions/matrix/package.json +1 -1
  354. package/extensions/mattermost/package.json +1 -1
  355. package/extensions/memory-core/package.json +1 -1
  356. package/extensions/memory-lancedb/package.json +1 -1
  357. package/extensions/minimax-portal-auth/package.json +1 -1
  358. package/extensions/msteams/CHANGELOG.md +12 -0
  359. package/extensions/msteams/package.json +1 -1
  360. package/extensions/nextcloud-talk/package.json +1 -1
  361. package/extensions/nostr/CHANGELOG.md +12 -0
  362. package/extensions/nostr/package.json +1 -1
  363. package/extensions/open-prose/package.json +1 -1
  364. package/extensions/signal/package.json +1 -1
  365. package/extensions/slack/package.json +1 -1
  366. package/extensions/synology-chat/package.json +1 -1
  367. package/extensions/telegram/package.json +1 -1
  368. package/extensions/tlon/package.json +1 -1
  369. package/extensions/twitch/CHANGELOG.md +12 -0
  370. package/extensions/twitch/package.json +1 -1
  371. package/extensions/voice-call/CHANGELOG.md +12 -0
  372. package/extensions/voice-call/package.json +1 -1
  373. package/extensions/whatsapp/package.json +1 -1
  374. package/extensions/zalo/CHANGELOG.md +12 -0
  375. package/extensions/zalo/package.json +1 -1
  376. package/extensions/zalouser/CHANGELOG.md +12 -0
  377. package/extensions/zalouser/package.json +1 -1
  378. package/package.json +1 -1
  379. package/dist/anton-D9tZAGaj.js +0 -777
  380. package/dist/emergency-stop-DyQna_P0.js +0 -113
  381. package/dist/register.configure-CxwdWRSG.js +0 -168
  382. package/dist/web-DESq0zCM.js +0 -123
@@ -1,777 +0,0 @@
1
- import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { t as CONFIG_DIR } from "./utils-CXzXXV2o.js";
3
- import path from "node:path";
4
- import { promisify } from "node:util";
5
- import fsPromises from "node:fs/promises";
6
- import { execFile } from "node:child_process";
7
-
8
- //#region src/commands/anton.ts
9
- var anton_exports = /* @__PURE__ */ __exportAll({
10
- antonStatus: () => antonStatus,
11
- antonStop: () => antonStop,
12
- formatProgressMessage: () => formatProgressMessage,
13
- runAnton: () => runAnton
14
- });
15
- const ANTON_STATE_PATH = path.join(CONFIG_DIR, "anton.state.json");
16
- const ANTON_LOCK_PATH = path.join(CONFIG_DIR, "anton.lock");
17
- const execFile$1 = promisify(execFile);
18
- async function ensureStateDir() {
19
- await fsPromises.mkdir(CONFIG_DIR, { recursive: true });
20
- }
21
- async function readState() {
22
- try {
23
- return JSON.parse(await fsPromises.readFile(ANTON_STATE_PATH, "utf8"));
24
- } catch {
25
- return { running: false };
26
- }
27
- }
28
- async function writeState(state) {
29
- await ensureStateDir();
30
- await fsPromises.writeFile(ANTON_STATE_PATH, `${JSON.stringify({
31
- ...state,
32
- updatedAt: (/* @__PURE__ */ new Date()).toISOString()
33
- }, null, 2)}\n`, "utf8");
34
- }
35
- async function acquireLock(force = false) {
36
- await ensureStateDir();
37
- try {
38
- await fsPromises.writeFile(ANTON_LOCK_PATH, JSON.stringify({
39
- pid: process.pid,
40
- startedAt: (/* @__PURE__ */ new Date()).toISOString()
41
- }), {
42
- encoding: "utf8",
43
- flag: "wx"
44
- });
45
- } catch {
46
- if (!force) throw new Error("Anton is already running (lock held)");
47
- await fsPromises.rm(ANTON_LOCK_PATH, { force: true });
48
- await fsPromises.writeFile(ANTON_LOCK_PATH, JSON.stringify({
49
- pid: process.pid,
50
- startedAt: (/* @__PURE__ */ new Date()).toISOString(),
51
- force: true
52
- }), {
53
- encoding: "utf8",
54
- flag: "wx"
55
- });
56
- }
57
- }
58
- async function releaseLock() {
59
- await fsPromises.rm(ANTON_LOCK_PATH, { force: true });
60
- }
61
- async function shouldStop() {
62
- const s = await readState();
63
- return Boolean(s.stopRequested);
64
- }
65
- function parsePendingTasks(markdown) {
66
- const lines = markdown.split(/\r?\n/);
67
- const tasks = [];
68
- for (let i = 0; i < lines.length; i++) {
69
- const m = (lines[i] ?? "").match(/^(\s*)- \[ \] (.+)$/);
70
- if (!m) continue;
71
- tasks.push({
72
- line: i + 1,
73
- indent: m[1] ?? "",
74
- text: (m[2] ?? "").trim()
75
- });
76
- }
77
- return tasks;
78
- }
79
- function markTaskDone(markdown, lineNo) {
80
- const lines = markdown.split(/\r?\n/);
81
- const idx = lineNo - 1;
82
- if (idx < 0 || idx >= lines.length) return markdown;
83
- lines[idx] = (lines[idx] ?? "").replace(/^(\s*)- \[ \] /, "$1- [x] ");
84
- return `${lines.join("\n")}\n`;
85
- }
86
- function buildDirectTaskPrompt(task) {
87
- return [
88
- "You are executing one item from a managed checklist.",
89
- `Task: ${task}`,
90
- "Rules:",
91
- "1) Make the minimal code changes required for this task.",
92
- "2) Run targeted tests for your change.",
93
- "3) Return a concise completion summary."
94
- ].join("\n");
95
- }
96
- function buildDiscoveryPrompt(task, taskFile, planFilePath) {
97
- return `You are running PRE-FLIGHT for an autonomous coding orchestrator.
98
-
99
- ## RULES
100
- - DO NOT implement code changes. DO NOT modify source files.
101
- - You may ONLY write to the plan file specified below.
102
- - Read the codebase to understand what needs to change.
103
-
104
- ## TASK
105
- From task file: ${taskFile}
106
- Task: ${task}
107
-
108
- ## DECISION FLOW
109
-
110
- **If task is ALREADY COMPLETE** (you are CERTAIN it's done after checking with tools):
111
- → Return ONLY: {"status":"complete","filename":""}
112
-
113
- **If task is INCOMPLETE or UNCERTAIN**:
114
- 1. Read relevant source files to understand the current state
115
- 2. Write a detailed implementation plan to: ${planFilePath}
116
- 3. The plan MUST include:
117
- - Task description (verbatim from above)
118
- - What needs to change and why
119
- - Implementation approach with specific steps
120
- - Files to modify/create
121
- - How to verify (test commands)
122
- 4. Verify the file exists and is non-empty
123
- 5. Return ONLY: {"status":"incomplete","filename":"${planFilePath}"}
124
-
125
- ## OUTPUT
126
- Return ONLY the JSON object. No markdown fences. No explanation.`;
127
- }
128
- function buildReviewPrompt(planFilePath) {
129
- return `Review this implementation plan and improve it:
130
- ${planFilePath}
131
-
132
- Treat it as written by a junior developer. Look for:
133
- - Missing edge cases
134
- - Opportunities to reuse existing code
135
- - Unclear or ambiguous steps
136
- - Missing test scenarios
137
-
138
- Update the SAME file in-place with your improvements.
139
-
140
- After review, return ONLY:
141
- {"status":"ready","filename":"${planFilePath}"}
142
-
143
- Do not return status=ready unless the file exists and has content.
144
- Return JSON only. No markdown fences. No commentary.`;
145
- }
146
- function buildImplementationPrompt(task, planFilePath) {
147
- return [
148
- "You are implementing a task from a managed checklist.",
149
- "A planning agent has already analyzed the codebase and written a detailed spec.",
150
- "",
151
- `Task: ${task}`,
152
- "",
153
- `Implementation plan: ${planFilePath}`,
154
- "",
155
- "Rules:",
156
- "1) Read the plan file FIRST — it contains the implementation approach.",
157
- "2) Follow the plan precisely. Make the code changes specified.",
158
- "3) Run the verification steps from the plan.",
159
- "4) Return a concise completion summary.",
160
- "",
161
- "Do not deviate from the plan unless you find a clear error in it."
162
- ].join("\n");
163
- }
164
- function formatDuration(ms) {
165
- const seconds = Math.floor(ms / 1e3);
166
- if (seconds < 60) return `${seconds}s`;
167
- const minutes = Math.floor(seconds / 60);
168
- const secs = seconds % 60;
169
- if (minutes < 60) return `${minutes}m ${secs}s`;
170
- return `${Math.floor(minutes / 60)}h ${minutes % 60}m`;
171
- }
172
- function formatProgressMessage(event) {
173
- switch (event.phase) {
174
- case "start": return `🤚 **Anton activated**\n📄 Task file: \`${path.basename(event.taskFile)}\`\n📋 ${event.totalTasks} task${event.totalTasks === 1 ? "" : "s"} pending`;
175
- case "task_start": return `\n🔪 **Task ${event.index}/${event.total}**: ${event.task}`;
176
- case "discovery_start": return `🔎 Discovery: analyzing codebase for task ${event.index}/${event.total}...`;
177
- case "discovery_complete": return `📝 Plan written: \`${path.basename(event.planFile)}\``;
178
- case "discovery_failed": return `⚠️ Discovery failed: ${event.error}\n└ Falling back to direct execution`;
179
- case "discovery_already_complete": return `✅ Discovery says task already complete — skipping implementation`;
180
- case "review_start": return `🧪 Reviewing plan: \`${path.basename(event.planFile)}\`...`;
181
- case "review_complete": return `✅ Plan reviewed and refined`;
182
- case "review_failed": return `⚠️ Review failed: ${event.error}\n└ Proceeding with unreviewed plan`;
183
- case "implementation_start": return event.planFile ? `🛠️ Implementation: following spec \`${path.basename(event.planFile)}\`` : `🛠️ Implementation: direct execution`;
184
- case "task_agent_spawned": return `🤖 Agent spawned (session: \`${event.sessionId}\`)`;
185
- case "task_complete": return `✅ **Task ${event.index}/${event.total} complete**: ${event.task}`;
186
- case "task_failed": return `❌ **Task ${event.index}/${event.total} failed**: ${event.task}\n└ ${event.error}`;
187
- case "task_skipped": return `⏭️ **Task ${event.index}/${event.total} skipped**: ${event.task}\n└ ${event.reason}`;
188
- case "stopped": return `🛑 **Anton stopped** (${event.completedSoFar}/${event.total} completed before stop)`;
189
- case "finish": return [
190
- `\n🏁 **Anton finished**`,
191
- `✅ Completed: ${event.completed}/${event.total}`,
192
- event.skipped > 0 ? `⏭️ Skipped: ${event.skipped}` : null,
193
- `⏱️ Duration: ${formatDuration(event.durationMs)}`
194
- ].filter(Boolean).join("\n");
195
- }
196
- }
197
- async function antonStatus(runtime) {
198
- const s = await readState();
199
- if (!s.running) {
200
- runtime.log("Anton is idle.");
201
- if (s.lastSummary) runtime.log(s.lastSummary);
202
- return;
203
- }
204
- runtime.log(`Anton running: ${s.completed ?? 0}/${s.total ?? 0} complete` + (s.taskFile ? ` | file=${s.taskFile}` : "") + (typeof s.currentIndex === "number" ? ` | current=${s.currentIndex + 1}` : ""));
205
- }
206
- async function antonStop(runtime) {
207
- const s = await readState();
208
- if (!s.running) {
209
- runtime.log("Anton is not running.");
210
- return;
211
- }
212
- await writeState({
213
- ...s,
214
- stopRequested: true
215
- });
216
- runtime.log("Anton stop requested. It will stop after current task.");
217
- }
218
- /** Load Anton config from the IdleHands config file. */
219
- async function loadAntonConfig() {
220
- try {
221
- const { loadConfig } = await import("./model-selection-CSn9tUuH.js").then((n) => n.Mt);
222
- return loadConfig().anton ?? {};
223
- } catch {
224
- return {};
225
- }
226
- }
227
- async function runAgentTask(args) {
228
- const { agentCliCommand } = await import("./agent-via-gateway-bS6seBwg.js").then((n) => n.n);
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
- const result = await agentCliCommand({
231
- message: args.message,
232
- agent: args.agent,
233
- to: args.to,
234
- sessionId: args.sessionId,
235
- timeout: args.timeout,
236
- json: true,
237
- deliver: false,
238
- extraSystemPrompt,
239
- workspaceDir: args.workspaceDir
240
- }, args.runtime, args.deps);
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() };
242
- }
243
- function makePlanFilePath(planDir, taskIndex) {
244
- return path.join(planDir, `task-${taskIndex}-${Date.now()}.md`);
245
- }
246
- async function ensurePlanDir(planDir) {
247
- await fsPromises.mkdir(planDir, { recursive: true });
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
- }
266
- async function isPlanFileValid(filePath) {
267
- try {
268
- const stat = await fsPromises.stat(filePath);
269
- if (!stat.isFile() || stat.size < 20) return false;
270
- return isUsefulPlanText(await fsPromises.readFile(filePath, "utf8"));
271
- } catch {
272
- return false;
273
- }
274
- }
275
- async function getGitChangedFileCount(cwd, ignorePaths = []) {
276
- try {
277
- const { stdout } = await execFile$1("git", ["status", "--porcelain"], { cwd });
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;
287
- } catch {
288
- return null;
289
- }
290
- }
291
- function extractJsonObject(text) {
292
- const trimmed = text.trim();
293
- if (!trimmed) return null;
294
- const tryParse = (candidate) => {
295
- try {
296
- const parsed = JSON.parse(candidate);
297
- if (!parsed || typeof parsed !== "object") return null;
298
- return parsed;
299
- } catch {
300
- return null;
301
- }
302
- };
303
- const direct = tryParse(trimmed);
304
- if (direct) return direct;
305
- const fencedMatch = trimmed.match(/```(?:json)?\s*([\s\S]*?)```/i);
306
- if (fencedMatch?.[1]) {
307
- const fenced = tryParse(fencedMatch[1].trim());
308
- if (fenced) return fenced;
309
- }
310
- const first = trimmed.indexOf("{");
311
- const last = trimmed.lastIndexOf("}");
312
- if (first >= 0 && last > first) {
313
- const sliced = tryParse(trimmed.slice(first, last + 1));
314
- if (sliced) return sliced;
315
- }
316
- return null;
317
- }
318
- function extractPlanMarkdownFromText(text) {
319
- const candidate = text.match(/```(?:markdown|md)?\s*([\s\S]*?)```/i)?.[1]?.trim() ?? text.trim();
320
- if (!isUsefulPlanText(candidate)) return;
321
- return candidate;
322
- }
323
- function normalizeDiscoveryFilename(filename, expectedPlanFile) {
324
- const trimmed = filename?.trim();
325
- if (!trimmed) return expectedPlanFile;
326
- return path.resolve(trimmed);
327
- }
328
- function buildDiscoveryRepairPrompt(task, taskFile, planFilePath) {
329
- return `RETRY: your previous preflight response did not produce a valid plan file.
330
-
331
- You MUST complete these steps exactly:
332
- 1) Write the implementation plan to: ${planFilePath}
333
- 2) Verify the file exists and is non-empty
334
- 3) Return ONLY strict JSON: {"status":"incomplete","filename":"${planFilePath}"}
335
-
336
- If task is already complete, return ONLY: {"status":"complete","filename":""}
337
-
338
- Do not include THOUGHT, markdown fences, or extra commentary.
339
- Task file: ${taskFile}
340
- Task: ${task}`;
341
- }
342
- async function tryPersistPlanFallback(params) {
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();
344
- if (!isUsefulPlanText(planText)) return false;
345
- await fsPromises.writeFile(params.planFile, `${planText}\n`, "utf8");
346
- return await isPlanFileValid(params.planFile);
347
- }
348
- async function runDiscoveryPhase(args) {
349
- const planFile = makePlanFilePath(args.planDir, args.taskNum);
350
- await ensurePlanDir(args.planDir);
351
- await args.notify({
352
- phase: "discovery_start",
353
- index: args.taskNum,
354
- total: args.total,
355
- task: args.task.text
356
- });
357
- for (let attempt = 0; attempt <= args.maxRetries; attempt++) {
358
- const sessionId = `anton-discovery-${Date.now()}-${args.taskNum}-${attempt}`;
359
- try {
360
- await args.notify({
361
- phase: "task_agent_spawned",
362
- index: args.taskNum,
363
- total: args.total,
364
- task: `Discovery (attempt ${attempt + 1})`,
365
- sessionId
366
- });
367
- const firstPass = await runAgentTask({
368
- message: buildDiscoveryPrompt(args.task.text, args.taskFile, planFile),
369
- sessionId,
370
- timeout: args.timeout,
371
- agent: args.agent,
372
- to: args.to,
373
- runtime: args.runtime,
374
- deps: args.deps,
375
- workspaceDir: args.workspaceDir
376
- });
377
- const firstParsed = extractJsonObject(firstPass.text);
378
- const declaredPlanFile = normalizeDiscoveryFilename(firstParsed?.filename, planFile);
379
- if (await isPlanFileValid(planFile)) {
380
- await args.notify({
381
- phase: "discovery_complete",
382
- index: args.taskNum,
383
- total: args.total,
384
- task: args.task.text,
385
- planFile
386
- });
387
- return {
388
- status: "plan_ready",
389
- planFile
390
- };
391
- }
392
- if (declaredPlanFile !== planFile && await isPlanFileValid(declaredPlanFile)) {
393
- await args.notify({
394
- phase: "discovery_complete",
395
- index: args.taskNum,
396
- total: args.total,
397
- task: args.task.text,
398
- planFile: declaredPlanFile
399
- });
400
- return {
401
- status: "plan_ready",
402
- planFile: declaredPlanFile
403
- };
404
- }
405
- if ((firstParsed?.status ?? "").toLowerCase() === "incomplete" && await tryPersistPlanFallback({
406
- planFile: declaredPlanFile,
407
- parsed: firstParsed,
408
- rawText: firstPass.text
409
- })) {
410
- await args.notify({
411
- phase: "discovery_complete",
412
- index: args.taskNum,
413
- total: args.total,
414
- task: args.task.text,
415
- planFile: declaredPlanFile
416
- });
417
- return {
418
- status: "plan_ready",
419
- planFile: declaredPlanFile
420
- };
421
- }
422
- const repairSessionId = `anton-discovery-repair-${Date.now()}-${args.taskNum}-${attempt}`;
423
- await args.notify({
424
- phase: "task_agent_spawned",
425
- index: args.taskNum,
426
- total: args.total,
427
- task: `Discovery repair (attempt ${attempt + 1})`,
428
- sessionId: repairSessionId
429
- });
430
- const repairPass = await runAgentTask({
431
- message: buildDiscoveryRepairPrompt(args.task.text, args.taskFile, declaredPlanFile),
432
- sessionId: repairSessionId,
433
- timeout: args.timeout,
434
- agent: args.agent,
435
- to: args.to,
436
- runtime: args.runtime,
437
- deps: args.deps,
438
- workspaceDir: args.workspaceDir
439
- });
440
- const repairParsed = extractJsonObject(repairPass.text);
441
- if (await isPlanFileValid(declaredPlanFile)) {
442
- await args.notify({
443
- phase: "discovery_complete",
444
- index: args.taskNum,
445
- total: args.total,
446
- task: args.task.text,
447
- planFile: declaredPlanFile
448
- });
449
- return {
450
- status: "plan_ready",
451
- planFile: declaredPlanFile
452
- };
453
- }
454
- const repairPlanFile = normalizeDiscoveryFilename(repairParsed?.filename, declaredPlanFile);
455
- if (await isPlanFileValid(repairPlanFile) || await tryPersistPlanFallback({
456
- planFile: repairPlanFile,
457
- parsed: repairParsed,
458
- rawText: repairPass.text
459
- })) {
460
- await args.notify({
461
- phase: "discovery_complete",
462
- index: args.taskNum,
463
- total: args.total,
464
- task: args.task.text,
465
- planFile: repairPlanFile
466
- });
467
- return {
468
- status: "plan_ready",
469
- planFile: repairPlanFile
470
- };
471
- }
472
- if (attempt === args.maxRetries) {
473
- const reason = "Discovery did not produce a valid plan file after primary + repair passes";
474
- await args.notify({
475
- phase: "discovery_failed",
476
- index: args.taskNum,
477
- total: args.total,
478
- task: args.task.text,
479
- error: reason
480
- });
481
- return {
482
- status: "failed",
483
- error: reason
484
- };
485
- }
486
- } catch (err) {
487
- const errorMsg = err instanceof Error ? err.message : String(err);
488
- if (attempt === args.maxRetries) {
489
- await args.notify({
490
- phase: "discovery_failed",
491
- index: args.taskNum,
492
- total: args.total,
493
- task: args.task.text,
494
- error: errorMsg
495
- });
496
- return {
497
- status: "failed",
498
- error: errorMsg
499
- };
500
- }
501
- }
502
- }
503
- return {
504
- status: "failed",
505
- error: "Discovery exhausted retries"
506
- };
507
- }
508
- async function runReviewPhase(args) {
509
- await args.notify({
510
- phase: "review_start",
511
- index: args.taskNum,
512
- total: args.total,
513
- task: args.task.text,
514
- planFile: args.planFile
515
- });
516
- const sessionId = `anton-review-${Date.now()}-${args.taskNum}`;
517
- try {
518
- await args.notify({
519
- phase: "task_agent_spawned",
520
- index: args.taskNum,
521
- total: args.total,
522
- task: "Requirements review",
523
- sessionId
524
- });
525
- await runAgentTask({
526
- message: buildReviewPrompt(args.planFile),
527
- sessionId,
528
- timeout: args.timeout,
529
- agent: args.agent,
530
- to: args.to,
531
- runtime: args.runtime,
532
- deps: args.deps,
533
- workspaceDir: args.workspaceDir
534
- });
535
- await args.notify({
536
- phase: "review_complete",
537
- index: args.taskNum,
538
- total: args.total,
539
- task: args.task.text,
540
- planFile: args.planFile
541
- });
542
- return { success: true };
543
- } catch (err) {
544
- const errorMsg = err instanceof Error ? err.message : String(err);
545
- await args.notify({
546
- phase: "review_failed",
547
- index: args.taskNum,
548
- total: args.total,
549
- task: args.task.text,
550
- error: errorMsg
551
- });
552
- return {
553
- success: false,
554
- error: errorMsg
555
- };
556
- }
557
- }
558
- async function runAnton(args) {
559
- const filePath = path.resolve(args.taskFile);
560
- const pending = parsePendingTasks(await fsPromises.readFile(filePath, "utf8"));
561
- const notify = args.onProgress ?? (async () => {});
562
- if (args.dryRun) {
563
- args.runtime.log(`Dry run: ${pending.length} pending task(s)`);
564
- for (const t of pending) args.runtime.log(`- [ ] ${t.text}`);
565
- return;
566
- }
567
- if (pending.length === 0) {
568
- args.runtime.log("No pending tasks.");
569
- await notify({
570
- phase: "finish",
571
- completed: 0,
572
- skipped: 0,
573
- total: 0,
574
- durationMs: 0
575
- });
576
- return;
577
- }
578
- const antonCfg = await loadAntonConfig();
579
- const mode = args.mode ?? antonCfg.mode ?? "direct";
580
- const requirementsReview = antonCfg.requirementsReview ?? false;
581
- const taskTimeout = antonCfg.taskTimeoutSec ?? 1200;
582
- const discoveryTimeout = antonCfg.discoveryTimeoutSec ?? taskTimeout;
583
- const reviewTimeout = antonCfg.reviewTimeoutSec ?? taskTimeout;
584
- const preflightMaxRetries = antonCfg.preflightMaxRetries ?? 2;
585
- const planDir = antonCfg.planDir ? path.resolve(antonCfg.planDir) : path.resolve(path.dirname(filePath), ".agents", "tasks");
586
- const { loadConfig } = await import("./model-selection-CSn9tUuH.js").then((n) => n.Mt);
587
- const cfg = loadConfig();
588
- const defaultTimeout = String(Number.isFinite(args.timeoutSec) && (args.timeoutSec ?? 0) > 0 ? args.timeoutSec : cfg.agents?.defaults?.timeoutSeconds ?? taskTimeout);
589
- await acquireLock(Boolean(args.force));
590
- const startedAt = Date.now();
591
- await writeState({
592
- running: true,
593
- taskFile: filePath,
594
- startedAt: new Date(startedAt).toISOString(),
595
- currentIndex: 0,
596
- total: pending.length,
597
- completed: 0,
598
- skipped: 0,
599
- stopRequested: false
600
- });
601
- await notify({
602
- phase: "start",
603
- taskFile: filePath,
604
- totalTasks: pending.length
605
- });
606
- args.runtime.log(`[Anton] Mode: ${mode}${mode === "preflight" ? requirementsReview ? " (with review)" : " (discovery → implementation)" : ""}`);
607
- let completed = 0;
608
- let skipped = 0;
609
- try {
610
- for (let i = 0; i < pending.length; i++) {
611
- if (await shouldStop()) {
612
- args.runtime.log("Anton stop acknowledged.");
613
- await notify({
614
- phase: "stopped",
615
- completedSoFar: completed,
616
- total: pending.length
617
- });
618
- break;
619
- }
620
- const task = pending[i];
621
- if (!task) continue;
622
- const taskNum = i + 1;
623
- await writeState({
624
- running: true,
625
- taskFile: filePath,
626
- startedAt: new Date(startedAt).toISOString(),
627
- currentIndex: i,
628
- total: pending.length,
629
- completed,
630
- skipped,
631
- stopRequested: false
632
- });
633
- args.runtime.log(`\n[Anton] Task ${taskNum}/${pending.length}: ${task.text}`);
634
- await notify({
635
- phase: "task_start",
636
- index: taskNum,
637
- total: pending.length,
638
- task: task.text
639
- });
640
- try {
641
- let planFile;
642
- const gitCwdForBaseline = args.workspaceDir ? path.resolve(args.workspaceDir) : path.dirname(filePath);
643
- const taskFileRelForBaseline = path.relative(gitCwdForBaseline, filePath).replace(/\\/g, "/");
644
- const changedBeforeTask = await getGitChangedFileCount(gitCwdForBaseline, taskFileRelForBaseline.startsWith("..") ? [] : [taskFileRelForBaseline]);
645
- if (mode === "preflight") {
646
- const discoveryResult = await runDiscoveryPhase({
647
- task,
648
- taskNum,
649
- total: pending.length,
650
- taskFile: filePath,
651
- planDir,
652
- timeout: String(discoveryTimeout),
653
- maxRetries: preflightMaxRetries,
654
- agent: args.agent,
655
- to: args.to,
656
- runtime: args.runtime,
657
- deps: args.deps,
658
- notify,
659
- workspaceDir: args.workspaceDir
660
- });
661
- if (discoveryResult.status === "complete") {
662
- await notify({
663
- phase: "discovery_already_complete",
664
- index: taskNum,
665
- total: pending.length,
666
- task: task.text
667
- });
668
- const updated = markTaskDone(await fsPromises.readFile(filePath, "utf8"), task.line);
669
- await fsPromises.writeFile(filePath, updated, "utf8");
670
- completed += 1;
671
- await notify({
672
- phase: "task_complete",
673
- index: taskNum,
674
- total: pending.length,
675
- task: task.text
676
- });
677
- continue;
678
- }
679
- if (discoveryResult.status === "plan_ready" && discoveryResult.planFile) {
680
- planFile = discoveryResult.planFile;
681
- if (requirementsReview) await runReviewPhase({
682
- task,
683
- taskNum,
684
- total: pending.length,
685
- planFile,
686
- timeout: String(reviewTimeout),
687
- agent: args.agent,
688
- to: args.to,
689
- runtime: args.runtime,
690
- deps: args.deps,
691
- notify,
692
- workspaceDir: args.workspaceDir
693
- });
694
- }
695
- if (!planFile) throw new Error("Preflight discovery did not produce a verified plan file; refusing direct implementation fallback");
696
- }
697
- await notify({
698
- phase: "implementation_start",
699
- index: taskNum,
700
- total: pending.length,
701
- task: task.text,
702
- planFile
703
- });
704
- const implSessionId = `anton-impl-${Date.now()}-${taskNum}`;
705
- await notify({
706
- phase: "task_agent_spawned",
707
- index: taskNum,
708
- total: pending.length,
709
- task: task.text,
710
- sessionId: implSessionId
711
- });
712
- const implPrompt = planFile ? buildImplementationPrompt(task.text, planFile) : buildDirectTaskPrompt(task.text);
713
- const gitCwd = args.workspaceDir ? path.resolve(args.workspaceDir) : path.dirname(filePath);
714
- const taskFileRel = path.relative(gitCwd, filePath).replace(/\\/g, "/");
715
- const changeIgnores = taskFileRel.startsWith("..") ? [] : [taskFileRel];
716
- await runAgentTask({
717
- message: implPrompt,
718
- sessionId: implSessionId,
719
- timeout: defaultTimeout,
720
- agent: args.agent,
721
- to: args.to,
722
- runtime: args.runtime,
723
- deps: args.deps,
724
- workspaceDir: args.workspaceDir
725
- });
726
- const changedAfter = await getGitChangedFileCount(gitCwd, changeIgnores);
727
- if (mode === "preflight" && changedBeforeTask !== null && changedAfter !== null && changedAfter <= changedBeforeTask) throw new Error("Implementation made no repository changes; refusing to mark task complete");
728
- const updated = markTaskDone(await fsPromises.readFile(filePath, "utf8"), task.line);
729
- await fsPromises.writeFile(filePath, updated, "utf8");
730
- completed += 1;
731
- await notify({
732
- phase: "task_complete",
733
- index: taskNum,
734
- total: pending.length,
735
- task: task.text
736
- });
737
- } catch (err) {
738
- skipped += 1;
739
- const errorMsg = err instanceof Error ? err.message : String(err);
740
- args.runtime.error(`[Anton] Task failed and was skipped: ${task.text}`);
741
- args.runtime.error(errorMsg);
742
- await notify({
743
- phase: "task_failed",
744
- index: taskNum,
745
- total: pending.length,
746
- task: task.text,
747
- error: errorMsg
748
- });
749
- }
750
- }
751
- const durationMs = Date.now() - startedAt;
752
- const summary = `Anton finished: completed=${completed}, skipped=${skipped}, total=${pending.length}, duration=${formatDuration(durationMs)}`;
753
- await writeState({
754
- running: false,
755
- taskFile: filePath,
756
- startedAt: new Date(startedAt).toISOString(),
757
- total: pending.length,
758
- completed,
759
- skipped,
760
- lastSummary: summary,
761
- stopRequested: false
762
- });
763
- args.runtime.log(`\n${summary}`);
764
- await notify({
765
- phase: "finish",
766
- completed,
767
- skipped,
768
- total: pending.length,
769
- durationMs
770
- });
771
- } finally {
772
- await releaseLock();
773
- }
774
- }
775
-
776
- //#endregion
777
- export { runAnton as i, antonStop as n, anton_exports as r, antonStatus as t };