@visorcraft/idlehands 4.0.15 → 4.0.17
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.
- package/CHANGELOG.md +13 -0
- package/dist/{accounts-DLTODa_Z.js → accounts-D-hQsUw-.js} +1 -1
- package/dist/{accounts-DgbTKQoW.js → accounts-D87a1Y_K.js} +1 -1
- package/dist/{accounts-3HS_UAhJ.js → accounts-DsVN0UNw.js} +1 -1
- package/dist/{acp-cli-B-7CXaeS.js → acp-cli-D52jj29o.js} +7 -7
- package/dist/{agent-scope-RA0zXRpu.js → agent-scope-Bn39ugK4.js} +18 -18
- package/dist/{agent-via-gateway-CcaPUQrc.js → agent-via-gateway-BDWomN2t.js} +4 -4
- package/dist/{agent-via-gateway-BvXS1sXv.js → agent-via-gateway-BVY7w5-N.js} +1 -1
- package/dist/{agent-via-gateway-CIM26Dxl.js → agent-via-gateway-BlRwv6D6.js} +2 -2
- package/dist/{agent-via-gateway-BFtbpQpT.js → agent-via-gateway-DSZK5iRF.js} +2 -2
- package/dist/{agents-DPlb4UQu.js → agents-BLa67Gdv.js} +4 -4
- package/dist/{agents.config-8pxRoZvL.js → agents.config-ADCeu0yD.js} +1 -1
- package/dist/{agents.config-BKoyeUnK.js → agents.config-CyEkgCQE.js} +2 -2
- package/dist/{anton-DKA8iAQE.js → anton-CZ5moxh6.js} +22 -4
- package/dist/{anton-BTjKlGm7.js → anton-D-0SP_5T.js} +22 -4
- package/dist/{anton-DhBvDNcB.js → anton-DYEYyPJ1.js} +40 -22
- package/dist/{anton-Dyhtv3C8.js → anton-llLwn1lp.js} +22 -4
- package/dist/{api-key-rotation-B-FTJm5p.js → api-key-rotation-nXQVJErE.js} +1 -1
- package/dist/{audio-preflight-Dl1TO10w.js → audio-preflight-DzjXupNO.js} +31 -31
- package/dist/{audit-BmaVRZSd.js → audit-D12wg2tV.js} +22 -22
- package/dist/{auth-choice-D-_AVWgJ.js → auth-choice-01ELTnLA.js} +1 -1
- package/dist/{auth-choice-D12Wsf7w.js → auth-choice-BDndThZZ.js} +12 -12
- package/dist/{auth-choice-CMUzxwaw.js → auth-choice-CqbTnCYz.js} +10 -10
- package/dist/{auth-choice.apply-helpers-CGcniL1T.js → auth-choice.apply-helpers-pTqMTYmi.js} +1 -1
- package/dist/{auth-store-DDzIMy8_.js → auth-store-CMyrmmSF.js} +7 -7
- package/dist/{auth-token-BJq87X3o.js → auth-token-fKt_cHOj.js} +1 -1
- package/dist/{banner-B6ih1A5q.js → banner-Dv_eAAWw.js} +1 -1
- package/dist/{bindings-B59Q7nsk.js → bindings-DZjkLUU_.js} +1 -1
- package/dist/{browser-cli-Ny1nHwqv.js → browser-cli-Da-0lyq2.js} +11 -11
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +2 -2
- package/dist/bundled/session-memory/handler.js +2 -2
- package/dist/{call-BRL23UCk.js → call-DnTBT02D.js} +9 -9
- package/dist/{channel-account-context-CDbY5AIr.js → channel-account-context-B4nJPU2N.js} +5 -5
- package/dist/{channel-options-DqOp64vm.js → channel-options-BilcK806.js} +1 -1
- package/dist/{channel-options-DdT_iiu2.js → channel-options-BvOLgXCF.js} +3 -3
- package/dist/{channel-selection-ZxRkxpuF.js → channel-selection-3jUl-PyW.js} +1 -1
- package/dist/{channel-web-DjS8VQYO.js → channel-web-B1IazKKL.js} +22 -22
- package/dist/{channel-web-PG7u76pG.js → channel-web-BptLTwvg.js} +2 -2
- package/dist/{channels-cli-1tt6zmdw.js → channels-cli-DejBZZ85.js} +7 -7
- package/dist/{channels-cli-CWxVX3_x.js → channels-cli-FssbSykQ.js} +88 -88
- package/dist/{channels-status-issues-CDpWjdI3.js → channels-status-issues-hgASw9UA.js} +1 -1
- package/dist/{chrome-VBsQfIrt.js → chrome-YguTEaLx.js} +2 -2
- package/dist/{clawbot-cli-uFgYrysW.js → clawbot-cli-C5cDal-5.js} +5 -5
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/{cli-D4FV736E.js → cli-BrQZTuUX.js} +70 -70
- package/dist/{cli-CmOlEYcx.js → cli-j1A8WKSj.js} +2 -2
- package/dist/{client-DxH9hwLn.js → client-DIckPnsi.js} +1 -1
- package/dist/{command-registry-CQ_cgvak.js → command-registry-DZZAmcbA.js} +10 -10
- package/dist/{commands-Dj5LalLo.js → commands-D3BU_t7G.js} +1 -1
- package/dist/{commands-registry-CURlRZQJ.js → commands-registry-Cj4D_1tw.js} +3 -3
- package/dist/{completion-cli-UytEAOmM.js → completion-cli-Cxvf8clb.js} +2 -2
- package/dist/{completion-cli-y9BFk5F6.js → completion-cli-ktxbWAiG.js} +12 -12
- package/dist/{config-cli-DUb0ZGdL.js → config-cli-Bq_MWzp9.js} +1 -1
- package/dist/{config-cli-5c6A3y5U.js → config-cli-CogA71uD.js} +6 -6
- package/dist/{config-guard-BdsOumqh.js → config-guard-DnAyuF6T.js} +17 -17
- package/dist/{config-validation-BvKX6fPw.js → config-validation-DIomLMwH.js} +2 -2
- package/dist/{configure-AlSS40po.js → configure-CPDGJFyt.js} +3 -3
- package/dist/{configure-BPwYKVb4.js → configure-CZUn--aN.js} +16 -16
- package/dist/{control-ui-assets-C7ZpN9hN.js → control-ui-assets-CiaCDBvZ.js} +1 -1
- package/dist/{cron-cli-Xml0Uww8.js → cron-cli-B8uqoogS.js} +12 -12
- package/dist/{daemon-cli-B1Ti51bt.js → daemon-cli-CMBNTpSS.js} +11 -11
- package/dist/{daemon-install-CYPo4M1M.js → daemon-install-DeqQiAad.js} +4 -4
- package/dist/{daemon-install-helpers-BZY9-jNW.js → daemon-install-helpers-Bug_GYuy.js} +9 -9
- package/dist/{deliver--kttnrER.js → deliver-yTpXc5sv.js} +7 -7
- package/dist/{deps-DxMLbT7t.js → deps-BUUwigzc.js} +1 -1
- package/dist/{deps-KIFYHxig.js → deps-B_5kPH1Q.js} +1 -1
- package/dist/{deps-BYfE_aIY.js → deps-CH8f3TJK.js} +6 -6
- package/dist/{deps-TwKaIh1I.js → deps-PAzfFs3Q.js} +1 -1
- package/dist/{devices-cli-BNkO0Fey.js → devices-cli-DVLF8Yvw.js} +7 -7
- package/dist/{diagnostics-DmZbQ8Nc.js → diagnostics-CdUgLS0N.js} +5 -5
- package/dist/{directory-cli-Dz9iXeut.js → directory-cli-BAMS8f9U.js} +9 -9
- package/dist/{dns-cli-DD6hWsdc.js → dns-cli-BdxBk-k_.js} +4 -4
- package/dist/{dock-Y96MzKuM.js → dock-CzF5XYGd.js} +4 -4
- package/dist/{docs-cli-cHkrTB2e.js → docs-cli-SF7es4Zs.js} +4 -4
- package/dist/{doctor-completion-S-XHygGb.js → doctor-completion-i04j1TGW.js} +1 -1
- package/dist/{doctor-completion-HzTBPNbS.js → doctor-completion-iWmUY3B4.js} +2 -2
- package/dist/{doctor-config-flow-Ck4oCjfl.js → doctor-config-flow-8qXzBx09.js} +14 -14
- package/dist/{emergency-stop-BDwI4Cyl.js → emergency-stop-CfKEsUr_.js} +70 -70
- package/dist/{emergency-stop-DpMAMIiz.js → emergency-stop-CzExWKhr.js} +2 -2
- package/dist/{emergency-stop-DOi-rKmj.js → emergency-stop-DAmKucxm.js} +2 -2
- package/dist/{emergency-stop--ScwariE.js → emergency-stop-tKLAiFAG.js} +2 -2
- package/dist/{enable-o_s6PBsC.js → enable-DaA_orGN.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/{exec-approvals-allowlist-Co2tJSEo.js → exec-approvals-allowlist-8AkOwwIr.js} +1 -1
- package/dist/{exec-approvals-cli-CyjTnYfk.js → exec-approvals-cli-CtoJW2K-.js} +15 -15
- package/dist/{exec-safe-bin-runtime-policy-DaoU9-ni.js → exec-safe-bin-runtime-policy-DYXuBKqH.js} +2 -2
- package/dist/extensionAPI.js +2 -2
- package/dist/{fs-safe-_JQUGpZf.js → fs-safe-DNFrxDS-.js} +15 -15
- package/dist/{gateway-cli-DQcjWJr7.js → gateway-cli-C8P5BVto.js} +148 -148
- package/dist/{gateway-cli-B4T44JsM.js → gateway-cli-DSJcNJYR.js} +9 -9
- package/dist/{gateway-rpc-Du-ZpDjh.js → gateway-rpc-6vnhO4v8.js} +1 -1
- package/dist/{health-D7UCYzfy.js → health-BN8WNyon.js} +1 -1
- package/dist/{health--39yieH5.js → health-CNZK5D2k.js} +13 -13
- package/dist/{hooks-cli-CGB7TcZZ.js → hooks-cli-L32lBsp7.js} +3 -3
- package/dist/{hooks-cli-Cko_uweG.js → hooks-cli-t7tiLn8P.js} +84 -84
- package/dist/{hooks-status-DNGo2G8Q.js → hooks-status-CPIWc_bx.js} +1 -1
- package/dist/{idlehands-root-B8cUs-5M.js → idlehands-root-DFL2GrNW.js} +8 -8
- package/dist/{image-DSDEbSiO.js → image-C2JZiK-6.js} +5 -5
- package/dist/{image-ops-BU-VdLZu.js → image-ops-BkoEFRYH.js} +10 -10
- package/dist/index.js +80 -80
- package/dist/{inspect-ISQZuNM5.js → inspect-Dg16DMLn.js} +4 -4
- package/dist/{install-safe-path-ChNR9pl6.js → install-safe-path-CNNMzJl9.js} +19 -19
- package/dist/{installs-CNubze2L.js → installs-ST3UaUVJ.js} +9 -9
- package/dist/{ir-VncGpwA1.js → ir-DV0Hszc8.js} +6 -6
- package/dist/{lifecycle-core-B6UoqYTJ.js → lifecycle-core-DOScNyOv.js} +5 -5
- package/dist/llm-slug-generator.js +2 -2
- package/dist/{local-roots-q0xbefkf.js → local-roots-Cco87A2_.js} +2 -2
- package/dist/{login-CfUhrgWT.js → login-Dl_lsEHS.js} +4 -4
- package/dist/{login-qr-DBMsUxgL.js → login-qr-B68cBRH0.js} +7 -7
- package/dist/{logs-cli-CH4mFhUt.js → logs-cli-BluGGq03.js} +8 -8
- package/dist/{manager-BMAFgXyU.js → manager-BBeTPO2h.js} +13 -13
- package/dist/{manifest-registry-Bak1x76G.js → manifest-registry-RfRn8HJx.js} +1 -1
- package/dist/{markdown-tables-DZClqsNo.js → markdown-tables-C5hTDqNm.js} +1 -1
- package/dist/{memory-cli-CUGwnVIY.js → memory-cli-4wfelGdK.js} +12 -12
- package/dist/{model-C-icShH2.js → model-Bd-05WpB.js} +2 -2
- package/dist/{model-catalog-D9no0CH2.js → model-catalog-BCsDrrvq.js} +3 -3
- package/dist/{model-picker-BkXoTOiA.js → model-picker-D3U0wJCO.js} +4 -4
- package/dist/{model-selection-0dGxYGp8.js → model-selection-CSn9tUuH.js} +16 -16
- package/dist/{models-cli-d_ead6LU.js → models-cli-ChStpcQY.js} +79 -79
- package/dist/{models-cli-NlT2N74B.js → models-cli-dd-wJvj0.js} +4 -4
- package/dist/{models-config-C5A1wDWh.js → models-config-lQpqp472.js} +6 -6
- package/dist/{models-CWfcMshO.js → models-mQeB9JXZ.js} +2 -2
- package/dist/{node-cli-Ch7K7WtL.js → node-cli-DhD8-NHR.js} +32 -32
- package/dist/{node-service-C3vyxHLA.js → node-service-GpI0jzKr.js} +1 -1
- package/dist/{nodes-cli-D_hUCPNt.js → nodes-cli-DPzxQ0mY.js} +14 -14
- package/dist/{nodes-screen-CcpPaFxa.js → nodes-screen-CIAn0wXq.js} +4 -4
- package/dist/{npm-registry-spec-BCbbfIhX.js → npm-registry-spec-BfeHLbIQ.js} +16 -16
- package/dist/{npm-resolution-Dpn9DNPz.js → npm-resolution-WKW4cIrd.js} +1 -1
- package/dist/{npm-resolution-DIJeEhoa.js → npm-resolution-tT1BUac2.js} +3 -3
- package/dist/{onboard-DFseyAG9.js → onboard-D1wKkHHC.js} +2 -2
- package/dist/{onboard-channels-mLWuxUlN.js → onboard-channels-CG1R8Ozs.js} +1 -1
- package/dist/{onboard-channels-CG1HcORq.js → onboard-channels-CRHp5hA-.js} +20 -20
- package/dist/{onboard-custom-DUbzMMu7.js → onboard-custom-D2sCP3_S.js} +4 -4
- package/dist/{onboard-helpers-BQmbMJxJ.js → onboard-helpers-ByhJg2ST.js} +8 -8
- package/dist/{onboard-hooks-D9teGxfH.js → onboard-hooks-_1Jgimeu.js} +4 -4
- package/dist/{onboard-remote-CIjhaP2W.js → onboard-remote-DuhWSiAO.js} +1 -1
- package/dist/{onboard-Raw5nkGc.js → onboard-rze7pzoW.js} +6 -6
- package/dist/{onboard-skills-BsaUIuq6.js → onboard-skills-vFwEasAg.js} +4 -4
- package/dist/{onboarding-CzzjhwRf.js → onboarding-BgHfZNln.js} +3 -3
- package/dist/{onboarding-DYlNLV9R.js → onboarding-BxvY_aEE.js} +13 -13
- package/dist/{onboarding.finalize-CIOBj6Jy.js → onboarding.finalize-5_UCPMAw.js} +7 -7
- package/dist/{onboarding.finalize-BJYuOTPe.js → onboarding.finalize-DnCFQEPR.js} +82 -82
- package/dist/{onboarding.gateway-config-CEQMyj8l.js → onboarding.gateway-config-qVAY6x7I.js} +16 -16
- package/dist/{openai-model-default-7J6cw1rA.js → openai-model-default-OPCCNNS0.js} +2 -2
- package/dist/{outbound-DPTxwchq.js → outbound-CG19kl0w.js} +4 -4
- package/dist/{plugin-sdk/outbound-attachment-BisU5Vji.js → outbound-attachment-jYdMgCml.js} +2 -2
- package/dist/{pairing-cli-jwx6hMsM.js → pairing-cli-QJYYDcIK.js} +10 -10
- package/dist/{pairing-labels-ChQJzbS9.js → pairing-labels-DuZ7ih-T.js} +1 -1
- package/dist/{pairing-store-CPpEEQJO.js → pairing-store-qvpPoWL_.js} +2 -2
- package/dist/{pairing-token-lKXTMQ_M.js → pairing-token-3hoCgQqp.js} +7 -7
- package/dist/{path-alias-guards-FXBVVTLw.js → path-alias-guards-BCskHdfJ.js} +3 -3
- package/dist/{path-safety-DwibX65n.js → path-safety-C1Y004P_.js} +1 -1
- package/dist/{paths-B-CLQ5RT.js → paths-Bt0fZexW.js} +9 -9
- package/dist/{pi-embedded-Swc7dke2.js → pi-embedded-BcmA23Ak.js} +12 -12
- package/dist/{pi-embedded-7XGjNojd.js → pi-embedded-D_8x2ll-.js} +12 -12
- package/dist/{pi-embedded-helpers-BCsfqpDt.js → pi-embedded-helpers-BkzrQ5bZ.js} +6 -6
- package/dist/{pi-model-discovery-BIP3RjXl.js → pi-model-discovery-Bt79ifyi.js} +1 -1
- package/dist/{pi-tools.policy-DfITIKZj.js → pi-tools.policy-B_ME3yF6.js} +5 -5
- package/dist/{plugin-auto-enable-7DUxMy6A.js → plugin-auto-enable-BMuSi4aV.js} +3 -3
- package/dist/{plugin-registry-BAd0SoEv.js → plugin-registry-C3IHwz9i.js} +3 -3
- package/dist/{plugin-registry-D9Z1bMNt.js → plugin-registry-CncOKeD3.js} +1 -1
- package/dist/plugin-sdk/{accounts-CBVAw5_G.js → accounts-B9nfRzyn.js} +1 -1
- package/dist/plugin-sdk/{accounts-BLYMokxV.js → accounts-Kt6ygPsC.js} +2 -2
- package/dist/plugin-sdk/{accounts-C5tHm1UI.js → accounts-mjFAny5F.js} +1 -1
- package/dist/plugin-sdk/{agent-scope-jl80I5G9.js → agent-scope-CU41EMlR.js} +2 -2
- package/dist/plugin-sdk/{agent-via-gateway-B3F-royZ.js → agent-via-gateway-CDKZ0Jk9.js} +55 -55
- package/dist/plugin-sdk/{anton-DfpQdXJJ.js → anton-Bp5L7uaN.js} +25 -7
- package/dist/plugin-sdk/{api-key-rotation-D6nK54XH.js → api-key-rotation-CZhCWd61.js} +2 -2
- package/dist/plugin-sdk/{audio-preflight-CKqqN8ty.js → audio-preflight-CRgDehfO.js} +30 -30
- package/dist/plugin-sdk/{auth-store-DaPWgQTx.js → auth-store-DycBvVqL.js} +1 -1
- package/dist/plugin-sdk/{bindings-xXgmJGxj.js → bindings-BDKKHGv-.js} +2 -2
- package/dist/plugin-sdk/{channel-activity-loOg1DRw.js → channel-activity-TcS_VfJk.js} +3 -3
- package/dist/plugin-sdk/{channel-web-BWE_kecR.js → channel-web-DcgShj6y.js} +24 -24
- package/dist/plugin-sdk/{chrome-Cb9FgiCI.js → chrome-BCTizrZD.js} +6 -6
- package/dist/plugin-sdk/{chunk-PW4MBmaN.js → chunk-DZr5xuqv.js} +1 -1
- package/dist/plugin-sdk/{commands-registry-B5m2EsHz.js → commands-registry-BqJLwZYh.js} +5 -5
- package/dist/plugin-sdk/{config-CEgzwk0J.js → config-BzPMtEKA.js} +10 -10
- package/dist/plugin-sdk/{deliver-BNfMF0Nb.js → deliver-Cfc1UCre.js} +10 -10
- package/dist/plugin-sdk/{deps-B0MfJgDH.js → deps-B5eQTF_d.js} +6 -6
- package/dist/plugin-sdk/{diagnostic-ByA6zvzu.js → diagnostic-B8VzcqLf.js} +1 -1
- package/dist/plugin-sdk/{dock-DKQYtT6-.js → dock-CMURqoee.js} +6 -6
- package/dist/plugin-sdk/{emergency-stop-rTRWpk26.js → emergency-stop-DQppo4RU.js} +55 -55
- package/dist/plugin-sdk/{env-5XecRTLs.js → env-qurSiOO2.js} +1 -1
- package/dist/plugin-sdk/{errors-CMcD8Lhh.js → errors-UqLewZJL.js} +1 -1
- package/dist/plugin-sdk/{fetch-guard-DwdUEdmT.js → fetch-guard-C174s8ZV.js} +1 -1
- package/dist/plugin-sdk/{fs-safe-qsx2_8-o.js → fs-safe-CCXTOK7j.js} +2 -2
- package/dist/plugin-sdk/{image-C_1tftC8.js → image-DDuK8tyO.js} +6 -6
- package/dist/plugin-sdk/{image-ops-CXSUo-AM.js → image-ops-BRYGGDwL.js} +1 -1
- package/dist/plugin-sdk/index.js +60 -60
- package/dist/plugin-sdk/{ir-kdDGpPMq.js → ir-Bv0Zbp2E.js} +5 -5
- package/dist/plugin-sdk/{local-roots-DjB6DYeI.js → local-roots-bHCsSVt_.js} +4 -4
- package/dist/plugin-sdk/{login-DIwO5D5Y.js → login-CkQrnY2G.js} +6 -6
- package/dist/plugin-sdk/{login-qr-CpCAJuvT.js → login-qr-DAeHibH_.js} +8 -8
- package/dist/plugin-sdk/{manager-Dox9r7og.js → manager-CTC1S_c9.js} +10 -10
- package/dist/plugin-sdk/{markdown-tables-Drtwd4J5.js → markdown-tables-DfUQHRZY.js} +1 -1
- package/dist/plugin-sdk/{message-channel-CQ0qkGHj.js → message-channel-DiMXmQeQ.js} +1 -1
- package/dist/plugin-sdk/{outbound-Dx_q6JAI.js → outbound-B1twcfz5.js} +6 -6
- package/dist/{outbound-attachment-Bot3bRnK.js → plugin-sdk/outbound-attachment-Bs7fNaqv.js} +2 -2
- package/dist/plugin-sdk/{path-alias-guards-C_uBEYb4.js → path-alias-guards-yyy61qHh.js} +1 -1
- package/dist/plugin-sdk/{pi-embedded-helpers-B68z4sHq.js → pi-embedded-helpers-BAm9cWol.js} +16 -16
- package/dist/plugin-sdk/{pi-model-discovery-Dt6899be.js → pi-model-discovery-Bt6JtUFr.js} +1 -1
- package/dist/plugin-sdk/{plugins-NTjIvHYk.js → plugins-DRPlVBr_.js} +5 -5
- package/dist/plugin-sdk/{pw-ai-Dk2PTZzq.js → pw-ai-CY0evCZ2.js} +10 -10
- package/dist/plugin-sdk/{qmd-manager-juzrnopq.js → qmd-manager-BckPBwZX.js} +5 -5
- package/dist/plugin-sdk/{query-expansion-xBXvzdkL.js → query-expansion-CPqK-tTR.js} +2 -2
- package/dist/plugin-sdk/{redact-B6VQH3UQ.js → redact-Ub8sMBBC.js} +1 -1
- package/dist/plugin-sdk/{replies-ZovJp-3F.js → replies-DwTNZJgi.js} +3 -3
- package/dist/plugin-sdk/{reply-C2G4DKTN.js → reply-BtQHoQT3.js} +96 -96
- package/dist/plugin-sdk/{reply-prefix--mxmTL7A.js → reply-prefix-BqV0o7_7.js} +1 -1
- package/dist/plugin-sdk/{resolve-outbound-target-CnUtsDch.js → resolve-outbound-target-DAdNGEqG.js} +2 -2
- package/dist/plugin-sdk/{resolve-route-BZABUE4J.js → resolve-route-C5mAwY-o.js} +3 -3
- package/dist/plugin-sdk/{retry-Bh7jveNm.js → retry-2OVzZJMZ.js} +1 -1
- package/dist/plugin-sdk/{runner-CZz1tOIR.js → runner-Ck0w3rcz.js} +10 -10
- package/dist/plugin-sdk/{send-Cb5NIN8s.js → send-A4Lv5nrg.js} +7 -7
- package/dist/plugin-sdk/{send-0EVlThEG.js → send-BBD-m-nM.js} +10 -10
- package/dist/plugin-sdk/{send-BCjVQhp3.js → send-CPeuqOlq.js} +13 -13
- package/dist/plugin-sdk/{send-B26cNPqY.js → send-CaPoBwby.js} +6 -6
- package/dist/plugin-sdk/{send-CHUGIZs9.js → send-SsqudCMv.js} +7 -7
- package/dist/plugin-sdk/{session-DdJj6_DW.js → session-DpL4uk1J.js} +3 -3
- package/dist/plugin-sdk/{sessions-DNx9c2O2.js → sessions-CQ5iD4Uq.js} +6 -6
- package/dist/plugin-sdk/{skill-commands-DorIK8kn.js → skill-commands-C_O9I71g.js} +5 -5
- package/dist/plugin-sdk/{skills-Dh_Cf2PA.js → skills-DmiIiX4l.js} +8 -8
- package/dist/plugin-sdk/{store-CCCXwngh.js → store-BI3rLJdW.js} +2 -2
- package/dist/plugin-sdk/{subsystem-DWPzKeZ0.js → subsystem-lJo9gqAK.js} +1 -1
- package/dist/plugin-sdk/{tables-CF9W23Rd.js → tables-C4X_nAUQ.js} +1 -1
- package/dist/plugin-sdk/{target-errors-DaH0qYtL.js → target-errors-CXh6e9ZE.js} +2 -2
- package/dist/plugin-sdk/{tokens-Y97UKh4C.js → tokens-CU9S3S7t.js} +1 -1
- package/dist/plugin-sdk/{tool-images-BMRkn_yk.js → tool-images-Cf9aWlVu.js} +2 -2
- package/dist/plugin-sdk/{tool-loop-detection-Cv8wyfAi.js → tool-loop-detection-DuwkSqZL.js} +2 -2
- package/dist/plugin-sdk/{upgrade-command-DKUGbn8D.js → upgrade-command-y1YvsJbf.js} +12 -2
- package/dist/plugin-sdk/{utils-Dyj2wV4e.js → utils-dP-FpIgu.js} +2 -2
- package/dist/plugin-sdk/web-Cg6vlkku.js +71 -0
- package/dist/plugin-sdk/{whatsapp-actions-B5g-Rywy.js → whatsapp-actions-Bcknq6EZ.js} +23 -23
- package/dist/{plugins-D46VZh7u.js → plugins-B4hASNc2.js} +2 -2
- package/dist/{plugins-cli-BYfDyWXn.js → plugins-cli-BMptU-1l.js} +80 -80
- package/dist/{plugins-cli-DP46ipIu.js → plugins-cli-CMYlin6k.js} +3 -3
- package/dist/{ports-B2o0FSFD.js → ports-B07M55Gr.js} +1 -1
- package/dist/{ports-SQy1d-RL.js → ports-DWJO5S52.js} +2 -2
- package/dist/{program-BlV0XOMu.js → program-DyMaBEqF.js} +8 -8
- package/dist/{program-context-PC7Knx3s.js → program-context-BxflGz_G.js} +43 -43
- package/dist/{prompt-select-styled-BgfuPDVv.js → prompt-select-styled-CI3hobey.js} +37 -37
- package/dist/{prompt-select-styled-BEnn1bwr.js → prompt-select-styled-es3PJxfH.js} +4 -4
- package/dist/{provider-auth-helpers-CrjXAqYu.js → provider-auth-helpers-CrGScfnN.js} +1 -1
- package/dist/{provider-auth-helpers-CKIkgNDk.js → provider-auth-helpers-DYxaYmlq.js} +5 -5
- package/dist/{push-apns-B4sxQAG3.js → push-apns-BNxgGXQy.js} +1 -1
- package/dist/{push-apns-BPmS_f8e.js → push-apns-CjAXPy2N.js} +5 -5
- package/dist/{pw-ai-7i9eGnLh.js → pw-ai-BGALvhDi.js} +11 -11
- package/dist/{qmd-manager-B-qeywfQ.js → qmd-manager-CVcPfkhL.js} +19 -19
- package/dist/{qr-cli-CSt5ihwG.js → qr-cli-D2Oh8f0U.js} +1 -1
- package/dist/{query-expansion-Clts_AGz.js → query-expansion-i5I3yavb.js} +12 -12
- package/dist/{redact-snapshot-BBNDQZIe.js → redact-snapshot-CtIVs92s.js} +1 -1
- package/dist/{register.agent-DRcOj2U3.js → register.agent-B9f0mtlc.js} +9 -9
- package/dist/{register.agent-uaM-OgFM.js → register.agent-DrVFgVpf.js} +95 -95
- package/dist/register.configure-BxZRBEJ9.js +168 -0
- package/dist/{register.configure-BebpNVXc.js → register.configure-DAlBU97I.js} +8 -8
- package/dist/{register.maintenance-CjWtRkPb.js → register.maintenance-BThQUyMI.js} +9 -9
- package/dist/{register.maintenance-Cr0SJRGa.js → register.maintenance-G_dZOyQA.js} +90 -90
- package/dist/{register.message-BNqRwnPx.js → register.message-BVTuvjQA.js} +71 -71
- package/dist/{register.message-DMAqqNBh.js → register.message-DKaxesxx.js} +3 -3
- package/dist/{register.onboard-9Z1ghVgM.js → register.onboard-CnoQ56yq.js} +18 -18
- package/dist/{register.onboard-DDLj9mJ2.js → register.onboard-CwtL9YYR.js} +2 -2
- package/dist/{register.orchestrator-anton-BybNaYi1.js → register.orchestrator-anton-2LtPHPXM.js} +14 -14
- package/dist/{register.orchestrator-anton-9Al8Av8i.js → register.orchestrator-anton-Ce55Lxt0.js} +2 -2
- package/dist/{register.setup-yqN0SXow.js → register.setup-Dg5LmRxd.js} +2 -2
- package/dist/{register.setup-Z1tBfa9d.js → register.setup-_s2CQaBF.js} +21 -21
- package/dist/{register.status-health-sessions-r-mpQR1m.js → register.status-health-sessions-DX2OgAeG.js} +4 -4
- package/dist/{register.status-health-sessions-Di92AnoH.js → register.status-health-sessions-iSQzPXD0.js} +82 -82
- package/dist/{register.subclis-DPQqxIZd.js → register.subclis-YeKuHCRg.js} +10 -10
- package/dist/{replies-hSFVxL4h.js → replies-Czp4hvpS.js} +1 -1
- package/dist/{reply-ZWOav11z.js → reply-DKIv9jez.js} +153 -153
- package/dist/{reply-prefix-C3y4zpTl.js → reply-prefix-BMEdvSpA.js} +1 -1
- package/dist/{resolve-route-D_AbcmD6.js → resolve-route-Ef_Yt2Dw.js} +2 -2
- package/dist/{rpc-CCimHATv.js → rpc-DDTp_J6f.js} +1 -1
- package/dist/{run-main-DDbBATo6.js → run-main-BwWO5erE.js} +15 -15
- package/dist/{runner-DzszLzI4.js → runner-BFG54hnb.js} +20 -20
- package/dist/{runtime-XmXLaHNk.js → runtime-DEmy759r.js} +2 -2
- package/dist/{sandbox-DcUw5h3p.js → sandbox-CfPbhDY_.js} +20 -20
- package/dist/{sandbox-cli-DGvJ7Eeq.js → sandbox-cli-B4wLJr21.js} +22 -22
- package/dist/{secrets-cli-Bgp_H_bH.js → secrets-cli-CidAOBfl.js} +9 -9
- package/dist/{security-cli-MQ__Ca6v.js → security-cli-Ch7AhbhS.js} +39 -39
- package/dist/{send-C4v0Leny.js → send-BCPkAE2k.js} +6 -6
- package/dist/{send-DuwdEkLw.js → send-BPwTl4-K.js} +4 -4
- package/dist/{send-DQiw_nGD.js → send-CEavqqEz.js} +6 -6
- package/dist/{send-DwdHiC7_.js → send-CVIXqubC.js} +13 -13
- package/dist/{send--lzpNy4f.js → send-DDMaLJAQ.js} +7 -7
- package/dist/{server-D6MltJIF.js → server-BpSbZAwg.js} +14 -14
- package/dist/{server-context-DI0W_H7R.js → server-context-BxNSTpH6.js} +10 -10
- package/dist/{server-lifecycle-B5PlrlbG.js → server-lifecycle-CGKrGrhM.js} +2 -2
- package/dist/{server-node-events-DNJLKEMT.js → server-node-events-CZ5OkouD.js} +71 -71
- package/dist/{server-node-events-BcZPS5tj.js → server-node-events-lbb8M18B.js} +3 -3
- package/dist/{service-C8NMS3m_.js → service-Bj2oSfpw.js} +15 -15
- package/dist/{session-CdnrRhb4.js → session-BKVySI8q.js} +1 -1
- package/dist/{sessions-BtPXimXQ.js → sessions-BqWocozB.js} +14 -14
- package/dist/{shared-CpDPo3hJ.js → shared-DnQ4iyXk.js} +2 -2
- package/dist/{shared-DpLSpJIl.js → shared-Jzrx8DfN.js} +1 -1
- package/dist/{skill-commands-BFzmZAfo.js → skill-commands-BwIRWSCI.js} +5 -5
- package/dist/{skill-scanner-D7mzXRXd.js → skill-scanner-B4Ftsbd2.js} +5 -5
- package/dist/{skills-DlvDyK8L.js → skills-TIyQDZx7.js} +3 -3
- package/dist/{skills-cli-BhKGhjbO.js → skills-cli-5lbXi4Lh.js} +5 -5
- package/dist/{skills-install-tr6wRWZj.js → skills-install-D0JHP5uM.js} +4 -4
- package/dist/{skills-status-qjQ8XP0h.js → skills-status-Q9skQExW.js} +1 -1
- package/dist/{status-geIYZraQ.js → status-BE1Y0CKS.js} +2 -2
- package/dist/{status-BXSiFfmy.js → status-Bd9NYE1U.js} +24 -24
- package/dist/{status.update-CTi6vuWj.js → status.update-C3uRz7W6.js} +2 -2
- package/dist/{store-kH9wHHbO.js → store-CLNuI8-G.js} +5 -5
- package/dist/{subagent-registry-C6uygQa1.js → subagent-registry-CTZmDdGV.js} +12 -12
- package/dist/{system-cli-3T-OTIKv.js → system-cli-DBp9Zmvt.js} +8 -8
- package/dist/{system-run-approval-context-CISBXlNw.js → system-run-approval-context-xZVoE4nS.js} +1 -1
- package/dist/{system-run-command-qJdgzxLp.js → system-run-command-BIhrK3OI.js} +1 -1
- package/dist/{systemd-CaCR5CyM.js → systemd-DyrVLTI0.js} +9 -9
- package/dist/{systemd-hints-DHu-HVFx.js → systemd-hints-BoKKzRI_.js} +6 -6
- package/dist/{systemd-linger-B7XlUHk_.js → systemd-linger-DrhGd61G.js} +1 -1
- package/dist/{tables-g9xkflht.js → tables-CZSD889r.js} +1 -1
- package/dist/{target-errors-bLIVFsbF.js → target-errors-BYuWhuLU.js} +4 -4
- package/dist/{tool-images-CHqepyF_.js → tool-images-DZHrc4pq.js} +1 -1
- package/dist/{tui-lalhRHve.js → tui-DWGHGeZ3.js} +6 -6
- package/dist/{tui-cli-BVKWJ9X7.js → tui-cli-DKyA5pZ2.js} +30 -30
- package/dist/{update-cli-BxVcRBy_.js → update-cli-D-4_OhRR.js} +9 -9
- package/dist/{update-cli-VlK55yII.js → update-cli-DvUx2El6.js} +99 -99
- package/dist/{update-D79ppbMQ.js → update-la2AdLf3.js} +3 -3
- package/dist/{update-runner-bFqEARFN.js → update-runner-BvaywdEe.js} +1 -1
- package/dist/{update-runner-Cw7BbjGv.js → update-runner-n2snlf-4.js} +15 -15
- package/dist/{upgrade-command-Bh61DpzA.js → upgrade-command-28wRHZZ2.js} +15 -5
- package/dist/{upgrade-command-CvbcPPIF.js → upgrade-command-BOG7TpIq.js} +12 -2
- package/dist/{upgrade-command-Bvrv4iDU.js → upgrade-command-CWP8S_lt.js} +12 -2
- package/dist/{upgrade-command-L9y3xbza.js → upgrade-command-eqla-KnV.js} +12 -2
- package/dist/{web-BjMMu9l1.js → web-BedV4zGE.js} +3 -3
- package/dist/{web-DptF9st7.js → web-BjP-D0Iz.js} +3 -3
- package/dist/web-CDFWB79W.js +123 -0
- package/dist/{web-TRTzT6rm.js → web-Dbrx58hF.js} +3 -3
- package/dist/{webhooks-cli-2N03q0iY.js → webhooks-cli-BnmVPYkU.js} +6 -6
- package/dist/{whatsapp-actions-Cms8wQM1.js → whatsapp-actions-D2mBFzmK.js} +18 -18
- package/dist/{with-timeout-DEdycYxq.js → with-timeout-BodPmGCY.js} +3 -3
- package/dist/{workspace-D3pARwoB.js → workspace-CDw87aZG.js} +1 -1
- package/dist/{workspace-dirs-SsExQ3Bz.js → workspace-dirs-D3bousoX.js} +1 -1
- package/dist/{wsl-BJW8nTyL.js → wsl-CgXDjE09.js} +2 -2
- package/extensions/acpx/package.json +1 -1
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/discord/package.json +1 -1
- package/extensions/feishu/package.json +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/googlechat/package.json +1 -1
- package/extensions/hand/package.json +1 -1
- package/extensions/imessage/package.json +1 -1
- package/extensions/irc/package.json +1 -1
- package/extensions/line/package.json +1 -1
- package/extensions/llm-task/package.json +1 -1
- package/extensions/matrix/CHANGELOG.md +12 -0
- package/extensions/matrix/package.json +1 -1
- package/extensions/mattermost/package.json +1 -1
- package/extensions/memory-core/package.json +1 -1
- package/extensions/memory-lancedb/package.json +1 -1
- package/extensions/minimax-portal-auth/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +12 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +12 -0
- package/extensions/nostr/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- package/extensions/signal/package.json +1 -1
- package/extensions/slack/package.json +1 -1
- package/extensions/synology-chat/package.json +1 -1
- package/extensions/telegram/package.json +1 -1
- package/extensions/tlon/package.json +1 -1
- package/extensions/twitch/CHANGELOG.md +12 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +12 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/whatsapp/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +12 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +12 -0
- package/extensions/zalouser/package.json +1 -1
- package/package.json +1 -1
- package/dist/plugin-sdk/web-bxu2RRVS.js +0 -71
- package/dist/register.configure-B0i1vobR.js +0 -168
- package/dist/web-Bjj9WtlF.js +0 -123
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
Docs: https://docs.idlehands.ai
|
|
4
4
|
|
|
5
|
+
## 4.0.17
|
|
6
|
+
|
|
7
|
+
### Fixes
|
|
8
|
+
|
|
9
|
+
- Anton preflight plan validation: reject discovery artifacts that contain only status JSON (for example `{"status":"incomplete","filename":"..."}`) and require meaningful implementation-plan content before marking a plan as valid.
|
|
10
|
+
- Anton preflight fallback hardening: prevent JSON-only discovery output from being persisted as a plan file during recovery; retry/repair continues until a real plan is produced or the task is skipped.
|
|
11
|
+
|
|
12
|
+
## 4.0.16
|
|
13
|
+
|
|
14
|
+
### Fixes
|
|
15
|
+
|
|
16
|
+
- Upgrade/NPM source: force self-upgrade installs to use the official npmjs registry (`https://registry.npmjs.org`) to avoid `ETARGET` failures caused by misconfigured or lagging alternate registries under elevated (`sudo`) installs.
|
|
17
|
+
|
|
5
18
|
## 4.0.15
|
|
6
19
|
|
|
7
20
|
### Fixes
|
|
@@ -2,7 +2,7 @@ import { m as resolveOAuthDir } from "./paths-Cn44w-EB.js";
|
|
|
2
2
|
import { y as resolveUserPath } from "./utils-CXzXXV2o.js";
|
|
3
3
|
import { h as normalizeAccountId, m as DEFAULT_ACCOUNT_ID } from "./session-key-Cuihcz_O.js";
|
|
4
4
|
import { t as resolveAccountEntry } from "./account-lookup-BtMY6XyP.js";
|
|
5
|
-
import { r as hasWebCredsSync } from "./auth-store-
|
|
5
|
+
import { r as hasWebCredsSync } from "./auth-store-CMyrmmSF.js";
|
|
6
6
|
import fs from "node:fs";
|
|
7
7
|
import path from "node:path";
|
|
8
8
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { h as normalizeAccountId } from "./session-key-Cuihcz_O.js";
|
|
2
2
|
import { t as resolveAccountEntry } from "./account-lookup-BtMY6XyP.js";
|
|
3
|
-
import { o as createAccountListHelpers } from "./accounts-
|
|
3
|
+
import { o as createAccountListHelpers } from "./accounts-D-hQsUw-.js";
|
|
4
4
|
|
|
5
5
|
//#region src/signal/accounts.ts
|
|
6
6
|
const { listAccountIds, resolveDefaultAccountId } = createAccountListHelpers("signal");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { h as normalizeAccountId } from "./session-key-Cuihcz_O.js";
|
|
2
2
|
import { t as resolveAccountEntry } from "./account-lookup-BtMY6XyP.js";
|
|
3
|
-
import { o as createAccountListHelpers } from "./accounts-
|
|
3
|
+
import { o as createAccountListHelpers } from "./accounts-D-hQsUw-.js";
|
|
4
4
|
|
|
5
5
|
//#region src/imessage/accounts.ts
|
|
6
6
|
const { listAccountIds, resolveDefaultAccountId } = createAccountListHelpers("imessage");
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
import "./paths-Cn44w-EB.js";
|
|
2
2
|
import { B as theme, S as shortenHomePath, y as resolveUserPath } from "./utils-CXzXXV2o.js";
|
|
3
|
-
import "./agent-scope-
|
|
3
|
+
import "./agent-scope-Bn39ugK4.js";
|
|
4
4
|
import "./subsystem-CGZX2PBV.js";
|
|
5
5
|
import { n as defaultRuntime } from "./runtime-44j_X4Y6.js";
|
|
6
|
-
import "./idlehands-root-
|
|
6
|
+
import "./idlehands-root-DFL2GrNW.js";
|
|
7
7
|
import "./exec-CKHMT0tZ.js";
|
|
8
|
-
import { It as loadConfig } from "./model-selection-
|
|
8
|
+
import { It as loadConfig } from "./model-selection-CSn9tUuH.js";
|
|
9
9
|
import "./github-copilot-token-D7lpquOO.js";
|
|
10
10
|
import "./boolean-BsqeuxE6.js";
|
|
11
11
|
import "./env-Bx-F45X5.js";
|
|
12
12
|
import "./host-env-security-DkAVVuaw.js";
|
|
13
13
|
import { r as VERSION } from "./env-vars-sTMVGyld.js";
|
|
14
|
-
import "./manifest-registry-
|
|
14
|
+
import "./manifest-registry-RfRn8HJx.js";
|
|
15
15
|
import { h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-DVauVtrg.js";
|
|
16
16
|
import { r as isKnownCoreToolId } from "./tool-catalog-4_Wxc542.js";
|
|
17
17
|
import "./ip-DJ5wsTQn.js";
|
|
18
18
|
import "./tailnet-C9lH_YnG.js";
|
|
19
19
|
import "./ws-XBTtYpJc.js";
|
|
20
20
|
import { t as resolveGatewayCredentialsFromConfig } from "./credentials-DcJ9zJDt.js";
|
|
21
|
-
import { t as GatewayClient } from "./client-
|
|
22
|
-
import { t as buildGatewayConnectionDetails } from "./call-
|
|
23
|
-
import "./pairing-token-
|
|
21
|
+
import { t as GatewayClient } from "./client-DIckPnsi.js";
|
|
22
|
+
import { t as buildGatewayConnectionDetails } from "./call-DnTBT02D.js";
|
|
23
|
+
import "./pairing-token-3hoCgQqp.js";
|
|
24
24
|
import { t as formatDocsLink } from "./links-15764jZB.js";
|
|
25
25
|
import { t as isMainModule } from "./is-main-DxnLDMqD.js";
|
|
26
26
|
import { t as ensureIdleHandsCliOnPath } from "./path-env-CKSLQUS1.js";
|
|
@@ -2,13 +2,13 @@ import { g as resolveStateDir, y as resolveRequiredHomeDir } from "./paths-Cn44w
|
|
|
2
2
|
import { h as pathExists, y as resolveUserPath } from "./utils-CXzXXV2o.js";
|
|
3
3
|
import { t as createSubsystemLogger } from "./subsystem-CGZX2PBV.js";
|
|
4
4
|
import { C as isSubagentSessionKey, S as isCronSessionKey, l as resolveAgentIdFromSessionKey, s as normalizeAgentId, t as DEFAULT_AGENT_ID, w as parseAgentSessionKey } from "./session-key-Cuihcz_O.js";
|
|
5
|
-
import { h as normalizeSkillFilter, i as openBoundaryFile, t as resolveIdleHandsPackageRoot } from "./idlehands-root-
|
|
5
|
+
import { h as normalizeSkillFilter, i as openBoundaryFile, t as resolveIdleHandsPackageRoot } from "./idlehands-root-DFL2GrNW.js";
|
|
6
6
|
import { t as runCommandWithTimeout } from "./exec-CKHMT0tZ.js";
|
|
7
7
|
import { fileURLToPath } from "node:url";
|
|
8
8
|
import fs from "node:fs";
|
|
9
9
|
import os from "node:os";
|
|
10
10
|
import path from "node:path";
|
|
11
|
-
import
|
|
11
|
+
import fsPromises from "node:fs/promises";
|
|
12
12
|
|
|
13
13
|
//#region src/config/model-input.ts
|
|
14
14
|
function resolveAgentModelPrimaryValue(model) {
|
|
@@ -150,11 +150,11 @@ async function loadTemplate(name) {
|
|
|
150
150
|
const templateDir = await resolveWorkspaceTemplateDir();
|
|
151
151
|
const templatePath = path.join(templateDir, name);
|
|
152
152
|
try {
|
|
153
|
-
return stripFrontMatter(await
|
|
153
|
+
return stripFrontMatter(await fsPromises.readFile(templatePath, "utf-8"));
|
|
154
154
|
} catch {
|
|
155
155
|
const devTemplatePath = name.endsWith(".md") ? path.join(templateDir, name.replace(/\.md$/, ".dev.md")) : "";
|
|
156
156
|
if (devTemplatePath) try {
|
|
157
|
-
return stripFrontMatter(await
|
|
157
|
+
return stripFrontMatter(await fsPromises.readFile(devTemplatePath, "utf-8"));
|
|
158
158
|
} catch {}
|
|
159
159
|
throw new Error(`Missing workspace template: ${name} (${templatePath}). Ensure docs/reference/templates are packaged.`);
|
|
160
160
|
}
|
|
@@ -169,7 +169,7 @@ async function loadTemplate(name) {
|
|
|
169
169
|
}
|
|
170
170
|
async function writeFileIfMissing(filePath, content) {
|
|
171
171
|
try {
|
|
172
|
-
await
|
|
172
|
+
await fsPromises.writeFile(filePath, content, {
|
|
173
173
|
encoding: "utf-8",
|
|
174
174
|
flag: "wx"
|
|
175
175
|
});
|
|
@@ -181,7 +181,7 @@ async function writeFileIfMissing(filePath, content) {
|
|
|
181
181
|
}
|
|
182
182
|
async function fileExists(filePath) {
|
|
183
183
|
try {
|
|
184
|
-
await
|
|
184
|
+
await fsPromises.access(filePath);
|
|
185
185
|
return true;
|
|
186
186
|
} catch {
|
|
187
187
|
return false;
|
|
@@ -205,7 +205,7 @@ function parseWorkspaceOnboardingState(raw) {
|
|
|
205
205
|
}
|
|
206
206
|
async function readWorkspaceOnboardingState(statePath) {
|
|
207
207
|
try {
|
|
208
|
-
return parseWorkspaceOnboardingState(await
|
|
208
|
+
return parseWorkspaceOnboardingState(await fsPromises.readFile(statePath, "utf-8")) ?? { version: WORKSPACE_STATE_VERSION };
|
|
209
209
|
} catch (err) {
|
|
210
210
|
if (err.code !== "ENOENT") throw err;
|
|
211
211
|
return { version: WORKSPACE_STATE_VERSION };
|
|
@@ -219,20 +219,20 @@ async function isWorkspaceOnboardingCompleted(dir) {
|
|
|
219
219
|
return typeof state.onboardingCompletedAt === "string" && state.onboardingCompletedAt.trim().length > 0;
|
|
220
220
|
}
|
|
221
221
|
async function writeWorkspaceOnboardingState(statePath, state) {
|
|
222
|
-
await
|
|
222
|
+
await fsPromises.mkdir(path.dirname(statePath), { recursive: true });
|
|
223
223
|
const payload = `${JSON.stringify(state, null, 2)}\n`;
|
|
224
224
|
const tmpPath = `${statePath}.tmp-${process.pid}-${Date.now().toString(36)}`;
|
|
225
225
|
try {
|
|
226
|
-
await
|
|
227
|
-
await
|
|
226
|
+
await fsPromises.writeFile(tmpPath, payload, { encoding: "utf-8" });
|
|
227
|
+
await fsPromises.rename(tmpPath, statePath);
|
|
228
228
|
} catch (err) {
|
|
229
|
-
await
|
|
229
|
+
await fsPromises.unlink(tmpPath).catch(() => {});
|
|
230
230
|
throw err;
|
|
231
231
|
}
|
|
232
232
|
}
|
|
233
233
|
async function hasGitRepo(dir) {
|
|
234
234
|
try {
|
|
235
|
-
await
|
|
235
|
+
await fsPromises.stat(path.join(dir, ".git"));
|
|
236
236
|
return true;
|
|
237
237
|
} catch {
|
|
238
238
|
return false;
|
|
@@ -262,7 +262,7 @@ async function ensureGitRepo(dir, isBrandNewWorkspace) {
|
|
|
262
262
|
}
|
|
263
263
|
async function ensureAgentWorkspace(params) {
|
|
264
264
|
const dir = resolveUserPath(params?.dir?.trim() ? params.dir.trim() : DEFAULT_AGENT_WORKSPACE_DIR);
|
|
265
|
-
await
|
|
265
|
+
await fsPromises.mkdir(dir, { recursive: true });
|
|
266
266
|
if (!params?.ensureBootstrapFiles) return { dir };
|
|
267
267
|
const agentsPath = path.join(dir, DEFAULT_AGENTS_FILENAME);
|
|
268
268
|
const soulPath = path.join(dir, DEFAULT_SOUL_FILENAME);
|
|
@@ -289,7 +289,7 @@ async function ensureAgentWorkspace(params) {
|
|
|
289
289
|
const paths = [...templatePaths, ...userContentPaths];
|
|
290
290
|
return (await Promise.all(paths.map(async (p) => {
|
|
291
291
|
try {
|
|
292
|
-
await
|
|
292
|
+
await fsPromises.access(p);
|
|
293
293
|
return true;
|
|
294
294
|
} catch {
|
|
295
295
|
return false;
|
|
@@ -322,7 +322,7 @@ async function ensureAgentWorkspace(params) {
|
|
|
322
322
|
if (!state.bootstrapSeededAt && bootstrapExists) markState({ bootstrapSeededAt: nowIso() });
|
|
323
323
|
if (!state.onboardingCompletedAt && state.bootstrapSeededAt && !bootstrapExists) markState({ onboardingCompletedAt: nowIso() });
|
|
324
324
|
if (!state.bootstrapSeededAt && !state.onboardingCompletedAt && !bootstrapExists) {
|
|
325
|
-
const [identityContent, userContent] = await Promise.all([
|
|
325
|
+
const [identityContent, userContent] = await Promise.all([fsPromises.readFile(identityPath, "utf-8"), fsPromises.readFile(userPath, "utf-8")]);
|
|
326
326
|
const hasUserContent = await (async () => {
|
|
327
327
|
const indicators = [
|
|
328
328
|
path.join(dir, "memory"),
|
|
@@ -330,7 +330,7 @@ async function ensureAgentWorkspace(params) {
|
|
|
330
330
|
path.join(dir, ".git")
|
|
331
331
|
];
|
|
332
332
|
for (const indicator of indicators) try {
|
|
333
|
-
await
|
|
333
|
+
await fsPromises.access(indicator);
|
|
334
334
|
return true;
|
|
335
335
|
} catch {}
|
|
336
336
|
return false;
|
|
@@ -361,7 +361,7 @@ async function resolveMemoryBootstrapEntries(resolvedDir) {
|
|
|
361
361
|
for (const name of candidates) {
|
|
362
362
|
const filePath = path.join(resolvedDir, name);
|
|
363
363
|
try {
|
|
364
|
-
await
|
|
364
|
+
await fsPromises.access(filePath);
|
|
365
365
|
entries.push({
|
|
366
366
|
name,
|
|
367
367
|
filePath
|
|
@@ -374,7 +374,7 @@ async function resolveMemoryBootstrapEntries(resolvedDir) {
|
|
|
374
374
|
for (const entry of entries) {
|
|
375
375
|
let key = entry.filePath;
|
|
376
376
|
try {
|
|
377
|
-
key = await
|
|
377
|
+
key = await fsPromises.realpath(entry.filePath);
|
|
378
378
|
} catch {}
|
|
379
379
|
if (seen.has(key)) continue;
|
|
380
380
|
seen.add(key);
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
2
|
-
import { Mt as resolveSessionKeyForRequest, jt as agentCommand } from "./reply-
|
|
3
|
-
import { r as listAgentIds } from "./agent-scope-
|
|
2
|
+
import { Mt as resolveSessionKeyForRequest, jt as agentCommand } from "./reply-DKIv9jez.js";
|
|
3
|
+
import { r as listAgentIds } from "./agent-scope-Bn39ugK4.js";
|
|
4
4
|
import { s as normalizeAgentId } from "./session-key-Cuihcz_O.js";
|
|
5
|
-
import { It as loadConfig } from "./model-selection-
|
|
5
|
+
import { It as loadConfig } from "./model-selection-CSn9tUuH.js";
|
|
6
6
|
import { t as formatCliCommand } from "./command-format-DInZLuZ8.js";
|
|
7
7
|
import { h as GATEWAY_CLIENT_NAMES, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES } from "./message-channel-DVauVtrg.js";
|
|
8
|
-
import { a as randomIdempotencyKey, n as callGateway } from "./call-
|
|
8
|
+
import { a as randomIdempotencyKey, n as callGateway } from "./call-DnTBT02D.js";
|
|
9
9
|
import { n as withProgress } from "./progress-BQLz1r3L.js";
|
|
10
10
|
|
|
11
11
|
//#region src/commands/agent-via-gateway.ts
|
|
@@ -4,7 +4,7 @@ import { t as formatCliCommand } from "./command-format-CPa5ksO_.js";
|
|
|
4
4
|
import { r as listAgentIds } from "./agent-scope-mLXQGQde.js";
|
|
5
5
|
import { s as normalizeAgentId } from "./session-key-B9ePuoPx.js";
|
|
6
6
|
import { h as GATEWAY_CLIENT_NAMES, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES } from "./message-channel-Qpj4ExtQ.js";
|
|
7
|
-
import { D as resolveSessionKeyForRequest, E as agentCommand } from "./subagent-registry-
|
|
7
|
+
import { D as resolveSessionKeyForRequest, E as agentCommand } from "./subagent-registry-CTZmDdGV.js";
|
|
8
8
|
import { a as randomIdempotencyKey, n as callGateway } from "./call-DuNslqj2.js";
|
|
9
9
|
import { n as withProgress } from "./progress-B76RkFx7.js";
|
|
10
10
|
|
|
@@ -11,7 +11,7 @@ import { t as formatCliCommand } from "./command-format-BAxx4PW5.js";
|
|
|
11
11
|
import "./env-BpvqFD5n.js";
|
|
12
12
|
import "./dock-QcCdS4qA.js";
|
|
13
13
|
import "./tokens-Cg4XNE3H.js";
|
|
14
|
-
import { H as callGateway, U as randomIdempotencyKey, a as agentCommand, o as resolveSessionKeyForRequest, v as withProgress } from "./pi-embedded-
|
|
14
|
+
import { H as callGateway, U as randomIdempotencyKey, a as agentCommand, o as resolveSessionKeyForRequest, v as withProgress } from "./pi-embedded-BcmA23Ak.js";
|
|
15
15
|
import "./plugins-D-_jp4FO.js";
|
|
16
16
|
import "./accounts-BwrguHMw.js";
|
|
17
17
|
import "./bindings-hT7SPhiA.js";
|
|
@@ -64,7 +64,7 @@ import "./send-Cn2wvd3W.js";
|
|
|
64
64
|
import "./resolve-route-BI3VjtwE.js";
|
|
65
65
|
import "./proxy-CNZpb4NE.js";
|
|
66
66
|
import "./replies-CqYEEgmA.js";
|
|
67
|
-
import "./deps-
|
|
67
|
+
import "./deps-PAzfFs3Q.js";
|
|
68
68
|
|
|
69
69
|
//#region src/commands/agent-via-gateway.ts
|
|
70
70
|
const NO_GATEWAY_TIMEOUT_MS = 2147e6;
|
|
@@ -12,7 +12,7 @@ import "./boolean-CE7i9tBR.js";
|
|
|
12
12
|
import "./env-B5G1qwGc.js";
|
|
13
13
|
import "./dock-BgOmHcbh.js";
|
|
14
14
|
import "./tokens-BRLyURxW.js";
|
|
15
|
-
import { H as randomIdempotencyKey, V as callGateway, a as agentCommand, o as resolveSessionKeyForRequest, v as withProgress } from "./pi-embedded-
|
|
15
|
+
import { H as randomIdempotencyKey, V as callGateway, a as agentCommand, o as resolveSessionKeyForRequest, v as withProgress } from "./pi-embedded-D_8x2ll-.js";
|
|
16
16
|
import "./plugins-CRB60mCJ.js";
|
|
17
17
|
import "./accounts-Dk8mJIrQ.js";
|
|
18
18
|
import "./bindings-D3b5Fmc9.js";
|
|
@@ -67,7 +67,7 @@ import "./send-D4bMycQu.js";
|
|
|
67
67
|
import "./resolve-route-DuttYY7A.js";
|
|
68
68
|
import "./proxy-CRB9oCP5.js";
|
|
69
69
|
import "./replies-6_GxvQYe.js";
|
|
70
|
-
import "./deps-
|
|
70
|
+
import "./deps-B_5kPH1Q.js";
|
|
71
71
|
|
|
72
72
|
//#region src/commands/agent-via-gateway.ts
|
|
73
73
|
const NO_GATEWAY_TIMEOUT_MS = 2147e6;
|
|
@@ -6,18 +6,18 @@ import { t as formatCliCommand } from "./command-format-CPa5ksO_.js";
|
|
|
6
6
|
import { a as resolveAgentDir, b as DEFAULT_IDENTITY_FILENAME, d as resolveDefaultAgentId, n as listAgentEntries, u as resolveAgentWorkspaceDir } from "./agent-scope-mLXQGQde.js";
|
|
7
7
|
import { m as DEFAULT_ACCOUNT_ID, s as normalizeAgentId, t as DEFAULT_AGENT_ID } from "./session-key-B9ePuoPx.js";
|
|
8
8
|
import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-CCrfZ49T.js";
|
|
9
|
-
import { M as identityHasValues, P as parseIdentityMarkdown } from "./subagent-registry-
|
|
9
|
+
import { M as identityHasValues, P as parseIdentityMarkdown } from "./subagent-registry-CTZmDdGV.js";
|
|
10
10
|
import { l as resolveSessionTranscriptsDirForAgent } from "./paths-CC17i2eK.js";
|
|
11
11
|
import { a as ensureWorkspaceAndSessions, l as moveToTrash } from "./onboard-helpers-Dp6wXNs7.js";
|
|
12
12
|
import { t as WizardCancelledError } from "./prompts-D3HHe1ZZ.js";
|
|
13
13
|
import { t as createClackPrompter } from "./clack-prompter-Bo7vS5xP.js";
|
|
14
14
|
import { t as resolveChannelDefaultAccountId } from "./helpers-CIyuenBU.js";
|
|
15
15
|
import { a as parseBindingSpecs, i as describeBinding, n as applyAgentBindings, o as removeAgentBindings, r as buildChannelBindings, t as requireValidConfigSnapshot } from "./config-validation-BgKexeQb.js";
|
|
16
|
-
import { a as pruneAgentConfig, i as loadAgentIdentity, n as buildAgentSummaries, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-
|
|
17
|
-
import { r as setupChannels } from "./onboard-channels-
|
|
16
|
+
import { a as pruneAgentConfig, i as loadAgentIdentity, n as buildAgentSummaries, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-ADCeu0yD.js";
|
|
17
|
+
import { r as setupChannels } from "./onboard-channels-CG1R8Ozs.js";
|
|
18
18
|
import { n as logConfigUpdated } from "./logging-MF6Thoxk.js";
|
|
19
19
|
import { n as promptAuthChoiceGrouped } from "./auth-choice-prompt-kycZqH8q.js";
|
|
20
|
-
import { i as applyAuthChoice, r as warnIfModelConfigLooksOff } from "./auth-choice-
|
|
20
|
+
import { i as applyAuthChoice, r as warnIfModelConfigLooksOff } from "./auth-choice-01ELTnLA.js";
|
|
21
21
|
import path from "node:path";
|
|
22
22
|
import fs from "node:fs/promises";
|
|
23
23
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as resolveAgentDir, d as resolveDefaultAgentId, n as listAgentEntries, u as resolveAgentWorkspaceDir } from "./agent-scope-mLXQGQde.js";
|
|
2
2
|
import { s as normalizeAgentId } from "./session-key-B9ePuoPx.js";
|
|
3
|
-
import { M as identityHasValues, N as loadAgentIdentityFromWorkspace } from "./subagent-registry-
|
|
3
|
+
import { M as identityHasValues, N as loadAgentIdentityFromWorkspace } from "./subagent-registry-CTZmDdGV.js";
|
|
4
4
|
|
|
5
5
|
//#region src/commands/agents.config.ts
|
|
6
6
|
function findAgentEntryIndex(list, agentId) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { en as identityHasValues, tn as loadAgentIdentityFromWorkspace } from "./reply-
|
|
2
|
-
import { a as resolveAgentDir, d as resolveDefaultAgentId, n as listAgentEntries, u as resolveAgentWorkspaceDir } from "./agent-scope-
|
|
1
|
+
import { en as identityHasValues, tn as loadAgentIdentityFromWorkspace } from "./reply-DKIv9jez.js";
|
|
2
|
+
import { a as resolveAgentDir, d as resolveDefaultAgentId, n as listAgentEntries, u as resolveAgentWorkspaceDir } from "./agent-scope-Bn39ugK4.js";
|
|
3
3
|
import { s as normalizeAgentId } from "./session-key-Cuihcz_O.js";
|
|
4
4
|
|
|
5
5
|
//#region src/commands/agents.config.ts
|
|
@@ -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-
|
|
228
|
+
const { agentCliCommand } = await import("./agent-via-gateway-BVY7w5-N.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,
|
|
@@ -245,10 +245,28 @@ function makePlanFilePath(planDir, taskIndex) {
|
|
|
245
245
|
async function ensurePlanDir(planDir) {
|
|
246
246
|
await fs.mkdir(planDir, { recursive: true });
|
|
247
247
|
}
|
|
248
|
+
function looksLikeStatusJsonOnly(text) {
|
|
249
|
+
const trimmed = text.trim();
|
|
250
|
+
if (!trimmed.startsWith("{") || !trimmed.endsWith("}")) return false;
|
|
251
|
+
try {
|
|
252
|
+
const parsed = JSON.parse(trimmed);
|
|
253
|
+
const keys = Object.keys(parsed).toSorted();
|
|
254
|
+
return keys.length <= 3 && keys.includes("status") && keys.includes("filename");
|
|
255
|
+
} catch {
|
|
256
|
+
return false;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
function isUsefulPlanText(text) {
|
|
260
|
+
const trimmed = text.trim();
|
|
261
|
+
if (trimmed.length < 120) return false;
|
|
262
|
+
if (looksLikeStatusJsonOnly(trimmed)) return false;
|
|
263
|
+
return /^#\s+/m.test(trimmed) || /\b(Implementation approach|What needs to change|Files to modify|How to verify)\b/i.test(trimmed);
|
|
264
|
+
}
|
|
248
265
|
async function isPlanFileValid(filePath) {
|
|
249
266
|
try {
|
|
250
267
|
const stat = await fs.stat(filePath);
|
|
251
|
-
|
|
268
|
+
if (!stat.isFile() || stat.size < 20) return false;
|
|
269
|
+
return isUsefulPlanText(await fs.readFile(filePath, "utf8"));
|
|
252
270
|
} catch {
|
|
253
271
|
return false;
|
|
254
272
|
}
|
|
@@ -290,7 +308,7 @@ function extractJsonObject(text) {
|
|
|
290
308
|
}
|
|
291
309
|
function extractPlanMarkdownFromText(text) {
|
|
292
310
|
const candidate = text.match(/```(?:markdown|md)?\s*([\s\S]*?)```/i)?.[1]?.trim() ?? text.trim();
|
|
293
|
-
if (candidate
|
|
311
|
+
if (!isUsefulPlanText(candidate)) return;
|
|
294
312
|
return candidate;
|
|
295
313
|
}
|
|
296
314
|
function normalizeDiscoveryFilename(filename, expectedPlanFile) {
|
|
@@ -314,7 +332,7 @@ Task: ${task}`;
|
|
|
314
332
|
}
|
|
315
333
|
async function tryPersistPlanFallback(params) {
|
|
316
334
|
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
|
|
335
|
+
if (!isUsefulPlanText(planText)) return false;
|
|
318
336
|
await fs.writeFile(params.planFile, `${planText}\n`, "utf8");
|
|
319
337
|
return await isPlanFileValid(params.planFile);
|
|
320
338
|
}
|
|
@@ -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-
|
|
222
|
+
const { agentCliCommand } = await import("./agent-via-gateway-BlRwv6D6.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,
|
|
@@ -239,10 +239,28 @@ function makePlanFilePath(planDir, taskIndex) {
|
|
|
239
239
|
async function ensurePlanDir(planDir) {
|
|
240
240
|
await fs.mkdir(planDir, { recursive: true });
|
|
241
241
|
}
|
|
242
|
+
function looksLikeStatusJsonOnly(text) {
|
|
243
|
+
const trimmed = text.trim();
|
|
244
|
+
if (!trimmed.startsWith("{") || !trimmed.endsWith("}")) return false;
|
|
245
|
+
try {
|
|
246
|
+
const parsed = JSON.parse(trimmed);
|
|
247
|
+
const keys = Object.keys(parsed).toSorted();
|
|
248
|
+
return keys.length <= 3 && keys.includes("status") && keys.includes("filename");
|
|
249
|
+
} catch {
|
|
250
|
+
return false;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
function isUsefulPlanText(text) {
|
|
254
|
+
const trimmed = text.trim();
|
|
255
|
+
if (trimmed.length < 120) return false;
|
|
256
|
+
if (looksLikeStatusJsonOnly(trimmed)) return false;
|
|
257
|
+
return /^#\s+/m.test(trimmed) || /\b(Implementation approach|What needs to change|Files to modify|How to verify)\b/i.test(trimmed);
|
|
258
|
+
}
|
|
242
259
|
async function isPlanFileValid(filePath) {
|
|
243
260
|
try {
|
|
244
261
|
const stat = await fs.stat(filePath);
|
|
245
|
-
|
|
262
|
+
if (!stat.isFile() || stat.size < 20) return false;
|
|
263
|
+
return isUsefulPlanText(await fs.readFile(filePath, "utf8"));
|
|
246
264
|
} catch {
|
|
247
265
|
return false;
|
|
248
266
|
}
|
|
@@ -284,7 +302,7 @@ function extractJsonObject(text) {
|
|
|
284
302
|
}
|
|
285
303
|
function extractPlanMarkdownFromText(text) {
|
|
286
304
|
const candidate = text.match(/```(?:markdown|md)?\s*([\s\S]*?)```/i)?.[1]?.trim() ?? text.trim();
|
|
287
|
-
if (candidate
|
|
305
|
+
if (!isUsefulPlanText(candidate)) return;
|
|
288
306
|
return candidate;
|
|
289
307
|
}
|
|
290
308
|
function normalizeDiscoveryFilename(filename, expectedPlanFile) {
|
|
@@ -308,7 +326,7 @@ Task: ${task}`;
|
|
|
308
326
|
}
|
|
309
327
|
async function tryPersistPlanFallback(params) {
|
|
310
328
|
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
|
|
329
|
+
if (!isUsefulPlanText(planText)) return false;
|
|
312
330
|
await fs.writeFile(params.planFile, `${planText}\n`, "utf8");
|
|
313
331
|
return await isPlanFileValid(params.planFile);
|
|
314
332
|
}
|
|
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
|
2
2
|
import { t as CONFIG_DIR } from "./utils-CXzXXV2o.js";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { promisify } from "node:util";
|
|
5
|
-
import
|
|
5
|
+
import fsPromises from "node:fs/promises";
|
|
6
6
|
import { execFile } from "node:child_process";
|
|
7
7
|
|
|
8
8
|
//#region src/commands/anton.ts
|
|
@@ -16,18 +16,18 @@ const ANTON_STATE_PATH = path.join(CONFIG_DIR, "anton.state.json");
|
|
|
16
16
|
const ANTON_LOCK_PATH = path.join(CONFIG_DIR, "anton.lock");
|
|
17
17
|
const execFile$1 = promisify(execFile);
|
|
18
18
|
async function ensureStateDir() {
|
|
19
|
-
await
|
|
19
|
+
await fsPromises.mkdir(CONFIG_DIR, { recursive: true });
|
|
20
20
|
}
|
|
21
21
|
async function readState() {
|
|
22
22
|
try {
|
|
23
|
-
return JSON.parse(await
|
|
23
|
+
return JSON.parse(await fsPromises.readFile(ANTON_STATE_PATH, "utf8"));
|
|
24
24
|
} catch {
|
|
25
25
|
return { running: false };
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
async function writeState(state) {
|
|
29
29
|
await ensureStateDir();
|
|
30
|
-
await
|
|
30
|
+
await fsPromises.writeFile(ANTON_STATE_PATH, `${JSON.stringify({
|
|
31
31
|
...state,
|
|
32
32
|
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
33
33
|
}, null, 2)}\n`, "utf8");
|
|
@@ -35,7 +35,7 @@ async function writeState(state) {
|
|
|
35
35
|
async function acquireLock(force = false) {
|
|
36
36
|
await ensureStateDir();
|
|
37
37
|
try {
|
|
38
|
-
await
|
|
38
|
+
await fsPromises.writeFile(ANTON_LOCK_PATH, JSON.stringify({
|
|
39
39
|
pid: process.pid,
|
|
40
40
|
startedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
41
41
|
}), {
|
|
@@ -44,8 +44,8 @@ async function acquireLock(force = false) {
|
|
|
44
44
|
});
|
|
45
45
|
} catch {
|
|
46
46
|
if (!force) throw new Error("Anton is already running (lock held)");
|
|
47
|
-
await
|
|
48
|
-
await
|
|
47
|
+
await fsPromises.rm(ANTON_LOCK_PATH, { force: true });
|
|
48
|
+
await fsPromises.writeFile(ANTON_LOCK_PATH, JSON.stringify({
|
|
49
49
|
pid: process.pid,
|
|
50
50
|
startedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
51
51
|
force: true
|
|
@@ -56,7 +56,7 @@ async function acquireLock(force = false) {
|
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
async function releaseLock() {
|
|
59
|
-
await
|
|
59
|
+
await fsPromises.rm(ANTON_LOCK_PATH, { force: true });
|
|
60
60
|
}
|
|
61
61
|
async function shouldStop() {
|
|
62
62
|
const s = await readState();
|
|
@@ -218,14 +218,14 @@ async function antonStop(runtime) {
|
|
|
218
218
|
/** Load Anton config from the IdleHands config file. */
|
|
219
219
|
async function loadAntonConfig() {
|
|
220
220
|
try {
|
|
221
|
-
const { loadConfig } = await import("./model-selection-
|
|
221
|
+
const { loadConfig } = await import("./model-selection-CSn9tUuH.js").then((n) => n.Mt);
|
|
222
222
|
return loadConfig().anton ?? {};
|
|
223
223
|
} catch {
|
|
224
224
|
return {};
|
|
225
225
|
}
|
|
226
226
|
}
|
|
227
227
|
async function runAgentTask(args) {
|
|
228
|
-
const { agentCliCommand } = await import("./agent-via-gateway-
|
|
228
|
+
const { agentCliCommand } = await import("./agent-via-gateway-BDWomN2t.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,
|
|
@@ -243,12 +243,30 @@ function makePlanFilePath(planDir, taskIndex) {
|
|
|
243
243
|
return path.join(planDir, `task-${taskIndex}-${Date.now()}.md`);
|
|
244
244
|
}
|
|
245
245
|
async function ensurePlanDir(planDir) {
|
|
246
|
-
await
|
|
246
|
+
await fsPromises.mkdir(planDir, { recursive: true });
|
|
247
|
+
}
|
|
248
|
+
function looksLikeStatusJsonOnly(text) {
|
|
249
|
+
const trimmed = text.trim();
|
|
250
|
+
if (!trimmed.startsWith("{") || !trimmed.endsWith("}")) return false;
|
|
251
|
+
try {
|
|
252
|
+
const parsed = JSON.parse(trimmed);
|
|
253
|
+
const keys = Object.keys(parsed).toSorted();
|
|
254
|
+
return keys.length <= 3 && keys.includes("status") && keys.includes("filename");
|
|
255
|
+
} catch {
|
|
256
|
+
return false;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
function isUsefulPlanText(text) {
|
|
260
|
+
const trimmed = text.trim();
|
|
261
|
+
if (trimmed.length < 120) return false;
|
|
262
|
+
if (looksLikeStatusJsonOnly(trimmed)) return false;
|
|
263
|
+
return /^#\s+/m.test(trimmed) || /\b(Implementation approach|What needs to change|Files to modify|How to verify)\b/i.test(trimmed);
|
|
247
264
|
}
|
|
248
265
|
async function isPlanFileValid(filePath) {
|
|
249
266
|
try {
|
|
250
|
-
const stat = await
|
|
251
|
-
|
|
267
|
+
const stat = await fsPromises.stat(filePath);
|
|
268
|
+
if (!stat.isFile() || stat.size < 20) return false;
|
|
269
|
+
return isUsefulPlanText(await fsPromises.readFile(filePath, "utf8"));
|
|
252
270
|
} catch {
|
|
253
271
|
return false;
|
|
254
272
|
}
|
|
@@ -290,7 +308,7 @@ function extractJsonObject(text) {
|
|
|
290
308
|
}
|
|
291
309
|
function extractPlanMarkdownFromText(text) {
|
|
292
310
|
const candidate = text.match(/```(?:markdown|md)?\s*([\s\S]*?)```/i)?.[1]?.trim() ?? text.trim();
|
|
293
|
-
if (candidate
|
|
311
|
+
if (!isUsefulPlanText(candidate)) return;
|
|
294
312
|
return candidate;
|
|
295
313
|
}
|
|
296
314
|
function normalizeDiscoveryFilename(filename, expectedPlanFile) {
|
|
@@ -314,8 +332,8 @@ Task: ${task}`;
|
|
|
314
332
|
}
|
|
315
333
|
async function tryPersistPlanFallback(params) {
|
|
316
334
|
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
|
|
318
|
-
await
|
|
335
|
+
if (!isUsefulPlanText(planText)) return false;
|
|
336
|
+
await fsPromises.writeFile(params.planFile, `${planText}\n`, "utf8");
|
|
319
337
|
return await isPlanFileValid(params.planFile);
|
|
320
338
|
}
|
|
321
339
|
async function runDiscoveryPhase(args) {
|
|
@@ -506,7 +524,7 @@ async function runReviewPhase(args) {
|
|
|
506
524
|
}
|
|
507
525
|
async function runAnton(args) {
|
|
508
526
|
const filePath = path.resolve(args.taskFile);
|
|
509
|
-
const pending = parsePendingTasks(await
|
|
527
|
+
const pending = parsePendingTasks(await fsPromises.readFile(filePath, "utf8"));
|
|
510
528
|
const notify = args.onProgress ?? (async () => {});
|
|
511
529
|
if (args.dryRun) {
|
|
512
530
|
args.runtime.log(`Dry run: ${pending.length} pending task(s)`);
|
|
@@ -532,7 +550,7 @@ async function runAnton(args) {
|
|
|
532
550
|
const reviewTimeout = antonCfg.reviewTimeoutSec ?? taskTimeout;
|
|
533
551
|
const preflightMaxRetries = antonCfg.preflightMaxRetries ?? 2;
|
|
534
552
|
const planDir = antonCfg.planDir ? path.resolve(antonCfg.planDir) : path.resolve(path.dirname(filePath), ".agents", "tasks");
|
|
535
|
-
const { loadConfig } = await import("./model-selection-
|
|
553
|
+
const { loadConfig } = await import("./model-selection-CSn9tUuH.js").then((n) => n.Mt);
|
|
536
554
|
const cfg = loadConfig();
|
|
537
555
|
const defaultTimeout = String(Number.isFinite(args.timeoutSec) && (args.timeoutSec ?? 0) > 0 ? args.timeoutSec : cfg.agents?.defaults?.timeoutSeconds ?? taskTimeout);
|
|
538
556
|
await acquireLock(Boolean(args.force));
|
|
@@ -611,8 +629,8 @@ async function runAnton(args) {
|
|
|
611
629
|
total: pending.length,
|
|
612
630
|
task: task.text
|
|
613
631
|
});
|
|
614
|
-
const updated = markTaskDone(await
|
|
615
|
-
await
|
|
632
|
+
const updated = markTaskDone(await fsPromises.readFile(filePath, "utf8"), task.line);
|
|
633
|
+
await fsPromises.writeFile(filePath, updated, "utf8");
|
|
616
634
|
completed += 1;
|
|
617
635
|
await notify({
|
|
618
636
|
phase: "task_complete",
|
|
@@ -670,8 +688,8 @@ async function runAnton(args) {
|
|
|
670
688
|
});
|
|
671
689
|
const changedAfter = await getGitChangedFileCount(gitCwd);
|
|
672
690
|
if (mode === "preflight" && changedBefore !== null && changedAfter !== null && changedAfter <= changedBefore) throw new Error("Implementation made no repository changes; refusing to mark task complete");
|
|
673
|
-
const updated = markTaskDone(await
|
|
674
|
-
await
|
|
691
|
+
const updated = markTaskDone(await fsPromises.readFile(filePath, "utf8"), task.line);
|
|
692
|
+
await fsPromises.writeFile(filePath, updated, "utf8");
|
|
675
693
|
completed += 1;
|
|
676
694
|
await notify({
|
|
677
695
|
phase: "task_complete",
|