@noxsoft/anima 7.0.0 → 7.0.2
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 +20 -1
- package/dist/{accounts-COxGcLGB.js → accounts-BDDwy6Zf.js} +3 -3
- package/dist/{accounts-DIES085e.js → accounts-BNxfCMUW.js} +5 -5
- package/dist/{accounts-B_2nt5Cd.js → accounts-BzjBXZYp.js} +2 -2
- package/dist/{accounts-TUsfghIW.js → accounts-PpT_kved.js} +11 -11
- package/dist/{acp-cli-CWgqDQQH.js → acp-cli-B4F3SojX.js} +12 -12
- package/dist/{acp-cli-D0wfP8-l.js → acp-cli-CtTTCUan.js} +15 -15
- package/dist/{active-listener-BKtsWhsb.js → active-listener-C3NdbMQD.js} +4 -4
- package/dist/{active-listener-gGCoq55D.js → active-listener-D78ohfOc.js} +6 -6
- package/dist/{active-listener-D2r8IO7g.js → active-listener-Z1MbDSH8.js} +4 -4
- package/dist/{agent-paths-niQrLbGc.js → agent-paths-DRAU6-8h.js} +2 -2
- package/dist/{agent-scope-Dm8IL1Ks.js → agent-scope-B1FoYHfj.js} +3 -3
- package/dist/{agent-scope-CxBzAozu.js → agent-scope-CENGF2NR.js} +2 -2
- package/dist/{agent-scope-CXxC8FFX.js → agent-scope-DQ0N_hof.js} +2 -2
- package/dist/{agent-scope-ByIGrCTT.js → agent-scope-DpgOQfBp.js} +2 -2
- package/dist/{agent-DuW0onwk.js → agent-viQL5eva.js} +18 -18
- package/dist/{agent-BoAAHGEA.js → agent-xPFmA8jO.js} +14 -14
- package/dist/{agents-BUXkSDns.js → agents-Cf9QArEB.js} +20 -20
- package/dist/{agents.config-BR5JLtud.js → agents.config-DrViQjgD.js} +1 -1
- package/dist/{agents.config-Br4ULmK0.js → agents.config-sfN0WxRg.js} +1 -1
- package/dist/{anthropic-direct-runner-DizCei79.js → anthropic-direct-runner-BNiXWmel.js} +257 -21
- package/dist/{anthropic-direct-runner-OjcTAH6g.js → anthropic-direct-runner-BgFOZS8B.js} +257 -21
- package/dist/{audit-DDz7UOIx.js → audit-CupURkPI.js} +15 -15
- package/dist/{audit-B05W5ckN.js → audit-jddM3B16.js} +13 -13
- package/dist/{auth-Cp__MMeO.js → auth-Bw3NUKcg.js} +2 -2
- package/dist/{auth-DsC5pZ_0.js → auth-CuGlMw6p.js} +2 -2
- package/dist/{auth-choice-B1iGnjuE.js → auth-choice-D3Gi-WXq.js} +7 -7
- package/dist/{auth-choice-HF9x6xk2.js → auth-choice-DmkqIhe6.js} +7 -7
- package/dist/{auth-health-Cc8-vy8y.js → auth-health-CIbz_YRs.js} +1 -1
- package/dist/{auth-health-Dhr8p2SD.js → auth-health-CPmz2ZaM.js} +1 -1
- package/dist/{auth-profiles-DKu7ZUzl.js → auth-profiles-D0T20ZZX.js} +4 -4
- package/dist/{auth-profiles-C-LuhW6c.js → auth-profiles-XI2YBb-w.js} +3 -3
- package/dist/{auth-profiles-Brxz2ojJ.js → auth-profiles-fjGcjhZ4.js} +5 -5
- package/dist/{auth-profiles-DtWUl1-k.js → auth-profiles-jK6n3-Cc.js} +4 -4
- package/dist/{auth-store-Bd0GoqEL.js → auth-store-B4pR_KvR.js} +3 -3
- package/dist/{auth-store-BEfSfCbW.js → auth-store-ChpmVcla.js} +3 -3
- package/dist/{auth-store-Jvgz2_l1.js → auth-store-CqgKZB5l.js} +2 -2
- package/dist/{auth-store-BpYI9t_y.js → auth-store-po566wly.js} +3 -3
- package/dist/{banner-Dpa5d1If.js → banner-C_CFUih5.js} +2 -2
- package/dist/{bonjour-discovery-D3HFfTyG.js → bonjour-discovery-B8gxGE91.js} +2 -2
- package/dist/{bonjour-discovery-Co-b97Dz.js → bonjour-discovery-CZGDX9Ac.js} +2 -2
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +23 -23
- package/dist/bundled/bootstrap-extra-files/handler.js +3 -3
- package/dist/bundled/session-memory/handler.js +22 -22
- package/dist/{call-CDPbPDAr.js → call-Bn9iKzhX.js} +4 -4
- package/dist/{call-B4lhqS6H.js → call-CPfxv8yg.js} +5 -5
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{catalog-CsXv59Tq.js → catalog-BqTvQqiq.js} +2 -2
- package/dist/{catalog-B-TAbJ2o.js → catalog-yCaNFdQz.js} +2 -2
- package/dist/{channel-web-C5mzsaa3.js → channel-web-CfKNWfmp.js} +14 -14
- package/dist/{channels-status-issues-WkG3Tmxk.js → channels-status-issues-4XxYhQ8S.js} +4 -4
- package/dist/{channels-status-issues-CklLFAsD.js → channels-status-issues-BhtWH-p2.js} +4 -4
- package/dist/{chrome-CmxIwwsr.js → chrome-CN17GbZN.js} +2 -2
- package/dist/{chrome-BaU-H9m7.js → chrome-CVb9kRv_.js} +3 -3
- package/dist/{chrome-DLUBPBPz.js → chrome-D1Jm1Bdq.js} +9 -9
- package/dist/{chrome-B8EnYGj1.js → chrome-Nb2mFwWK.js} +2 -2
- package/dist/{chunk-B4Kx-ocg.js → chunk-B5s6o9xI.js} +3 -3
- package/dist/{chunk-DJXDX69U.js → chunk-CTS4rIMF.js} +3 -3
- package/dist/{chunk-CFSle8n5.js → chunk-DXTTGmeb.js} +1 -1
- package/dist/{chunk-Cy0Bj0F3.js → chunk-isZGJq82.js} +1 -1
- package/dist/{clack-prompter-0JW5kry0.js → clack-prompter-ChmRN__Q.js} +5 -5
- package/dist/{clack-prompter-fZSmnHda.js → clack-prompter-CpLhDhPM.js} +5 -5
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/{cli-Cuq4bIg4.js → cli-BzTZ8Gnp.js} +46 -46
- package/dist/{cli-X9ikywQ3.js → cli-DLYU8BVw.js} +47 -47
- package/dist/{client-CfLiulzK.js → client-DNDzi0CF.js} +3 -3
- package/dist/{client-BWkoTfOH.js → client-DOTb2PN6.js} +2 -2
- package/dist/{command-format-kLw3YIIu.js → command-format-JgYolX96.js} +1 -1
- package/dist/{command-registry-9V4uqrBV.js → command-registry-BQiM7sYY.js} +14 -14
- package/dist/{commands-Mekaw9WG.js → commands-CymFClS1.js} +2 -2
- package/dist/{common-DT_obM-k.js → common-C36MniDL.js} +2 -2
- package/dist/{common-Bf_TG87Y.js → common-Coq2knq6.js} +2 -2
- package/dist/{common-BCW6hLGI.js → common-c4ZysSLq.js} +2 -2
- package/dist/{common-CqIa2poH.js → common-fIXNXke2.js} +2 -2
- package/dist/{completion-cli-DNWDwhab.js → completion-cli-BP8IIlzX.js} +4 -4
- package/dist/{completion-cli-BtvcR-U5.js → completion-cli-DW87AQgF.js} +3 -3
- package/dist/{config-ZYN8tezd.js → config-C7s14LLE.js} +24 -6
- package/dist/{config-BrVuTQ8R.js → config-DmsfUvB0.js} +24 -6
- package/dist/{config-CweTwOtr.js → config-LS-6Xgqo.js} +25 -7
- package/dist/{config-DaD4FsAn.js → config-MZ5clMl4.js} +25 -7
- package/dist/config-cli-BAj5hoD-.js +15 -0
- package/dist/config-cli-C6WtFt5S.js +11 -0
- package/dist/{config-guard-C4b2dksv.js → config-guard-BAVhoqm4.js} +5 -5
- package/dist/{config-guard-CWhoBtB3.js → config-guard-Em1kJe5K.js} +19 -19
- package/dist/{configure-B2Mfnwy_.js → configure-CHPG13jf.js} +24 -24
- package/dist/{configure-SnvMHZPD.js → configure-Dd6zJb-q.js} +72 -72
- package/dist/{configure-ZWxixuRA.js → configure-DeLC66Op.js} +25 -25
- package/dist/{configure-lkozxQed.js → configure-i6y1krRa.js} +75 -75
- package/dist/{context-mdxDsO1v.js → context-C22AMgsc.js} +10 -2
- package/dist/{control-service-5YtMvm7D.js → control-service-BGnqY7vv.js} +5 -5
- package/dist/{control-service-3CI4vt1h.js → control-service-DxuB_IUw.js} +4 -4
- package/dist/control-ui/assets/{index-D4wqLVMN.js → index-XnQwXlLu.js} +2 -2
- package/dist/control-ui/assets/{index-D4wqLVMN.js.map → index-XnQwXlLu.js.map} +1 -1
- package/dist/control-ui/assets/index-tpHK2r2n.js +73 -0
- package/dist/control-ui/assets/index-tpHK2r2n.js.map +1 -0
- package/dist/control-ui/assets/{observers-B7MfWiIZ.js → observers-DqhQeBfm.js} +2 -2
- package/dist/control-ui/assets/{observers-B7MfWiIZ.js.map → observers-DqhQeBfm.js.map} +1 -1
- package/dist/control-ui/index.html +1 -1
- package/dist/{cron-cli-D9XrF-Gx.js → cron-cli-3VJy8n6n.js} +14 -14
- package/dist/{cron-cli-Cht6Itx6.js → cron-cli-C_B6qK9W.js} +16 -16
- package/dist/{daemon-cli-CrdPhSxr.js → daemon-cli-B0IaAuYH.js} +15 -15
- package/dist/{daemon-cli-9zrnYRjh.js → daemon-cli-BsY7ZPql.js} +17 -17
- package/dist/daemon-cli.js +19 -1
- package/dist/{daemon-runtime-BrUj88ZO.js → daemon-runtime-BoIX72LK.js} +2 -2
- package/dist/{daemon-runtime-DCqwraWR.js → daemon-runtime-DSPDxySK.js} +3 -3
- package/dist/{deliver-d-CaN0uL.js → deliver-BJ0JgwhN.js} +11 -11
- package/dist/{deliver-BKzX3YoN.js → deliver-BknvuSJz.js} +6 -6
- package/dist/{deliver-C1L5nO0K.js → deliver-D86kSZGn.js} +7 -7
- package/dist/{deliver-B-dPbUIs.js → deliver-bdH5itRb.js} +11 -11
- package/dist/{delivery-queue-BKQk1j0k.js → delivery-queue-B6Y3ea25.js} +1 -1
- package/dist/{deps-BKLIBKjK.js → deps-oUYlT5Sq.js} +1 -1
- package/dist/{diagnostics-BhSwKIcN.js → diagnostics-CXoISuYV.js} +1 -1
- package/dist/{diagnostics-Cu9pZAFn.js → diagnostics-aUz0rVDl.js} +1 -1
- package/dist/{dispatcher-BQQugU-7.js → dispatcher-DpEzmU7s.js} +2 -2
- package/dist/{dispatcher-DzwzLQRk.js → dispatcher-DwlzWX2u.js} +2 -2
- package/dist/{dns-cli-V2bo6vSt.js → dns-cli-D8tgv6zY.js} +10 -10
- package/dist/{dns-cli-C8KIX4P3.js → dns-cli-DawPrcXI.js} +12 -12
- package/dist/{docs-cli-D2cVJxjP.js → docs-cli-Bsx7Yd3w.js} +6 -6
- package/dist/{docs-cli-Bt-YV3xs.js → docs-cli-DnrE1Tqw.js} +7 -7
- package/dist/{doctor-D7kKyUVk.js → doctor-BNJ_edyo.js} +36 -36
- package/dist/{doctor-DmCnZ-jF.js → doctor-DY5SmosG.js} +38 -38
- package/dist/{doctor-completion-B9SBdMoR.js → doctor-completion-B6lgyLsC.js} +2 -2
- package/dist/{doctor-completion-BBvW4_J9.js → doctor-completion-mLt2Eo9P.js} +3 -3
- package/dist/{doctor-config-flow-Dxy7RIm0.js → doctor-config-flow-CvJDaN8t.js} +8 -8
- package/dist/{doctor-config-flow-Bgl0Cc20.js → doctor-config-flow-D7SJ61Ak.js} +6 -6
- package/dist/{engine-zmn3SOYa.js → engine-BDwYEVKi.js} +1 -1
- package/dist/{engine-DpbYPop7.js → engine-BrJ7eiEh.js} +2 -2
- package/dist/entry.js +18 -2
- package/dist/{env-DlTia1B4.js → env-ByZjwIJR.js} +1 -1
- package/dist/{exec-DUzVF5_D.js → exec-4nfFrGP7.js} +1 -1
- package/dist/{exec-BylR5qWS.js → exec-ChPERQB-.js} +1 -1
- package/dist/{exec-BtBJICHE.js → exec-CigQCGkt.js} +1 -1
- package/dist/{exec-C6tXfeqA.js → exec-Dn2S9A7x.js} +1 -1
- package/dist/{exec-approvals-cli-DYZVBnqS.js → exec-approvals-cli-DmdfF4o_.js} +17 -17
- package/dist/{exec-approvals-cli-CN2WeH7y.js → exec-approvals-cli-c5UsPAU1.js} +19 -19
- package/dist/extensionAPI.js +21 -21
- package/dist/{gateway-cli-iumkTohn.js → gateway-cli-C4FwPHzu.js} +95 -95
- package/dist/{gateway-cli-CEM1vBuk.js → gateway-cli-CkFzsHGb.js} +93 -93
- package/dist/{gateway-rpc-Cj_h2sVM.js → gateway-rpc-CgeNTQUV.js} +3 -3
- package/dist/{gateway-rpc-CnXMGsxp.js → gateway-rpc-DpVHyNFu.js} +3 -3
- package/dist/{gmail-setup-utils-BIXtKTpT.js → gmail-setup-utils-JWsjxDBV.js} +4 -4
- package/dist/{gmail-setup-utils-DaJoXV_3.js → gmail-setup-utils-lTV5KDPF.js} +3 -3
- package/dist/{health-Cndq9b7A.js → health-C6rAUaME.js} +13 -13
- package/dist/{health-B5N6_UOf.js → health-DrokrOLQ.js} +13 -13
- package/dist/{health-format-BLnFZCH_.js → health-format-CTOsgiTE.js} +2 -2
- package/dist/{health-format-D-JJ5_S4.js → health-format-CzNDrJ8Z.js} +2 -2
- package/dist/{heartbeat-visibility-BQL13ZBH.js → heartbeat-visibility-DZOi_4uV.js} +1 -1
- package/dist/{heartbeat-visibility-CwcYugaR.js → heartbeat-visibility-XbT4yJ3S.js} +1 -1
- package/dist/{help-format-ZKxl6UCb.js → help-format-D4k6gkpr.js} +1 -1
- package/dist/{help-format-Dt-I_Mls.js → help-format-DgCbU9Ow.js} +1 -1
- package/dist/{hooks-cli-DSlPBQSY.js → hooks-cli-CBDm7Rjw.js} +50 -50
- package/dist/{hooks-cli-BZcvdIwE.js → hooks-cli-DVNU2Cp_.js} +53 -53
- package/dist/{hooks-status-DdweuSIj.js → hooks-status-BQ7M6bIq.js} +3 -3
- package/dist/{hooks-status-DqfJDvYl.js → hooks-status-BlfmlpC0.js} +3 -3
- package/dist/{image-ops-Ct3GueyT.js → image-ops-flDr58qn.js} +2 -2
- package/dist/{image-ops-BdrMmiG4.js → image-ops-vj06APeW.js} +2 -2
- package/dist/index.js +62 -62
- package/dist/{installs-a4Vz_J08.js → installs-BeTulUkL.js} +4 -4
- package/dist/{installs-Bi6UipiE.js → installs-D1t93Dvw.js} +4 -4
- package/dist/{lifecycle-core-BTICG85s.js → lifecycle-core-DmxyMl5D.js} +5 -5
- package/dist/{lifecycle-core-B8PI1NZJ.js → lifecycle-core-OpMLwiRd.js} +3 -3
- package/dist/{links-DcilUrqq.js → links-NDZcSjct.js} +1 -1
- package/dist/{links-BjjDMNIq.js → links-RNygAKHu.js} +1 -1
- package/dist/llm-slug-generator.js +22 -22
- package/dist/{loader-C87TLS4J.js → loader-5Xm3Jxa-.js} +1 -1
- package/dist/{logging-Chc1Sj6N.js → logging-B0-OIfnO.js} +1 -1
- package/dist/{logging-_rCcBkls.js → logging-CX0bU2da.js} +2 -2
- package/dist/{login-DKkQ3Czu.js → login-BegD27g3.js} +5 -5
- package/dist/{login-MzVPMRxL.js → login-CSaeXIuW.js} +7 -7
- package/dist/{login-BTOKtSQN.js → login-WPS724ji.js} +5 -5
- package/dist/{login-qr-BGbHImRb.js → login-qr-BVzUWR4o.js} +8 -8
- package/dist/{login-qr-CxRI-tE2.js → login-qr-C0eNn9SV.js} +12 -12
- package/dist/{login-qr-OUAGpDsU.js → login-qr-DLLfBALk.js} +9 -9
- package/dist/{login-qr-BjpDVBJE.js → login-qr-updBsqHf.js} +10 -10
- package/dist/{login-BEaBOSnw.js → login-zlt00-k4.js} +6 -6
- package/dist/{logs-cli-BiAJbjnq.js → logs-cli-BDQoLnjr.js} +15 -15
- package/dist/{logs-cli-Bc6IOyHA.js → logs-cli-BPljn0BF.js} +14 -14
- package/dist/{manager-BYu34CX3.js → manager-B-8JFgek.js} +27 -11
- package/dist/{manager-C6L_DH0O.js → manager-CE4cPrH2.js} +7 -7
- package/dist/{manager-D8VCuzru.js → manager-DPojhf1D.js} +9 -9
- package/dist/{manager-b_aZwo00.js → manager-kKsAUV03.js} +27 -11
- package/dist/{manifest-registry-W_OfCIRP.js → manifest-registry-BAebAG4I.js} +1 -1
- package/dist/{manifest-registry-qF960vMH.js → manifest-registry-Cwvk5hu8.js} +1 -1
- package/dist/{memory-cli-B0kKl-9T.js → memory-cli-BJmQIQSw.js} +11 -11
- package/dist/{memory-cli-DLtBA6r5.js → memory-cli-DMJqELwh.js} +10 -10
- package/dist/{message-channel-CMsexA3K.js → message-channel-CfwNj8mC.js} +1 -1
- package/dist/{message-channel-DIHHKJhk.js → message-channel-qmDI9YoO.js} +1 -1
- package/dist/{model-auth-KpsOXKDc.js → model-auth-BCdRf282.js} +19 -3
- package/dist/{model-auth-CHB3EySM.js → model-auth-Bs6eoQ1l.js} +19 -3
- package/dist/{model-selection-CLcoOT3e.js → model-selection-BhIAjo3P.js} +1 -1
- package/dist/{model-selection-DjsJGv1R.js → model-selection-CVcwboE_.js} +1 -1
- package/dist/{model-selection-CY6r_3wt.js → model-selection-CeZMza3d.js} +1 -1
- package/dist/{model-selection-DcO3qJOu.js → model-selection-f7lJs3PI.js} +1 -1
- package/dist/{models-CdNeYfSp.js → models-DxRmPLiS.js} +97 -50
- package/dist/{models-cli-D7eSsPuk.js → models-cli-B9KClY_f.js} +137 -82
- package/dist/{models-cli-fTZXo1zx.js → models-cli-BFZLSACV.js} +66 -58
- package/dist/{node-cli-DU_oREff.js → node-cli-BetF7Xgf.js} +26 -26
- package/dist/{node-cli-BmuVEJ1C.js → node-cli-CLeoh03V.js} +25 -25
- package/dist/{node-service-qZXF7T7A.js → node-service-FcwxyU8p.js} +1 -1
- package/dist/{node-service-cOoW5hLa.js → node-service-zrXojq7t.js} +1 -1
- package/dist/{note-CeLGcHqv.js → note-BTIeG9az.js} +1 -1
- package/dist/{note-iMYVGjpA.js → note-D_tpPSPO.js} +2 -2
- package/dist/{noxsoft-bootstrap-CrlkSFzd.js → noxsoft-bootstrap-CPS7t3Sk.js} +3 -3
- package/dist/{noxsoft-bootstrap-C4dSx7K_.js → noxsoft-bootstrap-CqygYIJa.js} +2 -2
- package/dist/{npm-registry-spec-jf7Mowdn.js → npm-registry-spec-BeX9-fmS.js} +1 -1
- package/dist/{npm-registry-spec-Br4B4I_3.js → npm-registry-spec-DB6xqMfu.js} +1 -1
- package/dist/{onboard-C5K37NvY.js → onboard-BZORsTGE.js} +18 -18
- package/dist/{onboard-D-6QCnTi.js → onboard-Doq7UgRV.js} +19 -19
- package/dist/{onboard-channels-BsCq32Hn.js → onboard-channels-BREQ8Tyw.js} +9 -9
- package/dist/{onboard-channels-bx6oelzj.js → onboard-channels-CpM1Nwqf.js} +8 -8
- package/dist/{onboard-helpers-CJ3HzoUO.js → onboard-helpers-rHLFiSIc.js} +7 -7
- package/dist/{onboard-helpers-CFudIoX4.js → onboard-helpers-uf70JxTj.js} +9 -9
- package/dist/{onboarding-BeuMAyic.js → onboarding-BGXbXgds.js} +21 -21
- package/dist/{onboarding-CX1vIkcB.js → onboarding-DQplq13s.js} +22 -22
- package/dist/{orchestrator-C1nWKIJS.js → orchestrator-B2rNfH4K.js} +5 -4
- package/dist/{orchestrator-C2ypFiPL.js → orchestrator-CERtu86A.js} +6 -5
- package/dist/{outbound-Bmft-5um.js → outbound-Bii3QonX.js} +4 -4
- package/dist/{outbound-C577aWZp.js → outbound-BpcyR1eA.js} +4 -4
- package/dist/{outbound-fPqdCDR4.js → outbound-C1WShhf8.js} +4 -4
- package/dist/{outbound-DW2eod1S.js → outbound-DKY6oeyQ.js} +4 -4
- package/dist/{outbound-send-deps-Y9AxHeLG.js → outbound-send-deps-CtiCh8EY.js} +1 -1
- package/dist/{parse-timeout-D4UO8pY_.js → parse-timeout-Bp5yQ1yW.js} +3 -3
- package/dist/{parse-timeout-C4WLf3Qy.js → parse-timeout-Cn7M8c5R.js} +3 -3
- package/dist/{path-env-DLQPf9qj.js → path-env-BAjR_Xf_.js} +1 -1
- package/dist/{paths-DMk3Q7yD.js → paths-BM1wivAU.js} +1 -1
- package/dist/{paths-CAQJvbeZ.js → paths-BqA7F6bT.js} +2 -2
- package/dist/{paths-Q6h5HODL.js → paths-DAbvPUdJ.js} +1 -1
- package/dist/{pi-auth-json-B_lKNFK6.js → pi-auth-json-BhkzZgQz.js} +5 -5
- package/dist/{pi-auth-json-BmdBnmlZ.js → pi-auth-json-CM3QDr9_.js} +6 -6
- package/dist/{pi-auth-json-WTvcP2gz.js → pi-auth-json-Dry5jXVt.js} +6 -6
- package/dist/{pi-auth-json-DkYqdjrV.js → pi-auth-json-qHO_AF3h.js} +6 -6
- package/dist/{pi-embedded-D15iww51.js → pi-embedded-CrzqUkHv.js} +548 -67
- package/dist/{pi-embedded-DR8Pfd05.js → pi-embedded-Dn3Ip_VN.js} +552 -71
- package/dist/{pi-embedded-helpers-BZ9GspxK.js → pi-embedded-helpers-BPtBCnl-.js} +1 -1
- package/dist/{pi-embedded-helpers-D2SLlgS4.js → pi-embedded-helpers-BSFtS9Fl.js} +1 -1
- package/dist/{pi-tools.policy-WdTAfqbV.js → pi-tools.policy-DuWNVoem.js} +6 -6
- package/dist/{pi-tools.policy-D2FusuQa.js → pi-tools.policy-DyckzpRL.js} +7 -7
- package/dist/{plugin-auto-enable-DhuD30Je.js → plugin-auto-enable-Btd2iEwF.js} +5 -5
- package/dist/{plugin-auto-enable-CtYcdTju.js → plugin-auto-enable-DvYJhgJ2.js} +5 -5
- package/dist/{plugin-registry-Do2D1nDk.js → plugin-registry-BOuDey4w.js} +4 -4
- package/dist/{plugin-registry-ME2FQAi-.js → plugin-registry-ChWHnegS.js} +4 -4
- package/dist/plugin-sdk/agents/local-model-installer.d.ts +11 -0
- package/dist/plugin-sdk/agents/openai-direct-runner.d.ts +2 -1
- package/dist/plugin-sdk/config/types.agent-defaults.d.ts +40 -0
- package/dist/plugin-sdk/config/types.models.d.ts +1 -1
- package/dist/plugin-sdk/config/zod-schema.agent-defaults.d.ts +13 -0
- package/dist/plugin-sdk/config/zod-schema.agents.d.ts +13 -0
- package/dist/plugin-sdk/config/zod-schema.core.d.ts +6 -6
- package/dist/plugin-sdk/config/zod-schema.d.ts +15 -2
- package/dist/plugin-sdk/index.js +19 -1
- package/dist/plugin-sdk/infra/architecture-awareness.d.ts +47 -0
- package/dist/{plugins-DYcg0qBW.js → plugins-BqPGs8w-.js} +1 -1
- package/dist/{plugins-BOMS6J5A.js → plugins-C8FLxXbd.js} +1 -1
- package/dist/{plugins-cli-CoVt2ewg.js → plugins-cli-CbOP5ml6.js} +51 -51
- package/dist/{plugins-cli-CVFzwdmI.js → plugins-cli-dH6LKRQM.js} +53 -53
- package/dist/{polls-DFISjV7H.js → polls-aumqIVob.js} +5 -5
- package/dist/{ports-BGLuwt2Z.js → ports--opAW6yN.js} +2 -2
- package/dist/{ports-q535r1PZ.js → ports-B20JTuiL.js} +2 -2
- package/dist/{ports-B_f42zcA.js → ports-C4ACB4MP.js} +2 -2
- package/dist/{ports-DaVrZDUq.js → ports-D6bjtvhF.js} +2 -2
- package/dist/{program-context-DP3qjW7A.js → program-context-7yQclqBT.js} +35 -35
- package/dist/{program-8rF4C_wd.js → program-pWHcYdeO.js} +58 -58
- package/dist/{progress-glCgu57m.js → progress-BveMw0-_.js} +1 -1
- package/dist/{progress-CVLvQV_t.js → progress-qMmjCvh9.js} +1 -1
- package/dist/{prompt-style-BI53UVgE.js → prompt-style-DWuEFbBO.js} +1 -1
- package/dist/{prompt-style-D6SRiiTV.js → prompt-style-zgo1vAG1.js} +1 -1
- package/dist/{prompts-BmgT_kkv.js → prompts-C4v0DSTU.js} +6 -6
- package/dist/{prompts-Bq4QGFQM.js → prompts-D6Xc1Ddb.js} +4 -4
- package/dist/{pw-ai-DxNrJcCA.js → pw-ai-2XnGTARu.js} +3 -3
- package/dist/{pw-ai-CB-zeR7h.js → pw-ai-BUnz28XN.js} +5 -5
- package/dist/{pw-ai-C_1-7IgH.js → pw-ai-CRnDr120.js} +3 -3
- package/dist/{pw-ai-B4u5FDqO.js → pw-ai-Dq14LFsx.js} +6 -6
- package/dist/{qmd-manager-C_XBZ_bT.js → qmd-manager-6nqaD-q9.js} +5 -5
- package/dist/{qmd-manager-CO795NK4.js → qmd-manager-B6-V0aC1.js} +6 -6
- package/dist/{qmd-manager-CpNYgSrx.js → qmd-manager-BNL9Pl2G.js} +6 -6
- package/dist/{qmd-manager-Q0OSDQ-e.js → qmd-manager-CpynR-al.js} +5 -5
- package/dist/{register.agent-BIrXCVtQ.js → register.agent-BMxuTqFN.js} +68 -68
- package/dist/{register.agent-DnkOx0U8.js → register.agent-BO6_QTx6.js} +65 -65
- package/dist/{register.anima-B36rTHUt.js → register.anima-5SAY6OxG.js} +6 -6
- package/dist/{register.anima-DXT9bM9A.js → register.anima-CLGhoqmw.js} +8 -8
- package/dist/register.configure-Bz9pap1L.js +106 -0
- package/dist/register.configure-dMfZ1zcY.js +107 -0
- package/dist/register.maintenance-CL2eIgmC.js +102 -0
- package/dist/register.maintenance-k1dBbjUg.js +103 -0
- package/dist/{register.message-CD7xV-jz.js → register.message-Cqlz-6uM.js} +52 -52
- package/dist/{register.message-Brtushvp.js → register.message-Cz34rs9W.js} +50 -50
- package/dist/{register.onboard-23Mra3LN.js → register.onboard-Cmh46n62.js} +70 -70
- package/dist/{register.onboard-6CbODzQ6.js → register.onboard-_4FOFCA2.js} +67 -67
- package/dist/{register.setup-CqQw13Ky.js → register.setup-CHgH1mdn.js} +70 -70
- package/dist/{register.setup-DlVH7FKe.js → register.setup-CKY65php.js} +67 -67
- package/dist/{register.status-health-sessions-CduFjFDB.js → register.status-health-sessions-CNX6wp0V.js} +60 -60
- package/dist/{register.status-health-sessions-CxtgPKu9.js → register.status-health-sessions-DNvtWNtb.js} +63 -63
- package/dist/{register.subclis-CtANqD5P.js → register.subclis-Br8nY-dd.js} +23 -23
- package/dist/{reply-93fMzde1.js → reply-DqXPXQ20.js} +322 -77
- package/dist/{reply-prefix-B7Fb3fO8.js → reply-prefix-CZy4g8SY.js} +1 -1
- package/dist/{reply-prefix-BzdhJDqP.js → reply-prefix-DuANpRN_.js} +1 -1
- package/dist/{routes-CWCAc8uJ.js → routes-CAjh83-X.js} +6 -6
- package/dist/{routes-FT0Us8Md.js → routes-DTjggbOR.js} +6 -6
- package/dist/{run-CF3kHOGH.js → run-0F-ZU2kW.js} +2251 -217
- package/dist/{run-Cq_iTGK_.js → run-Bu-fwhic.js} +2256 -222
- package/dist/{run-main-BiIRcc6s.js → run-main-BcC_mt4v.js} +72 -72
- package/dist/{runtime-guard-D14Z_QY6.js → runtime-guard-Ccc4Qj4K.js} +1 -1
- package/dist/{runtime-guard-DdP10b7Q.js → runtime-guard-E3CIN3Xo.js} +1 -1
- package/dist/{sandbox-D-N7M7lp.js → sandbox-DSHSoUHO.js} +6 -6
- package/dist/{sandbox-cli-CQKz2I1X.js → sandbox-cli-BiO-r7eU.js} +22 -22
- package/dist/{sandbox-cli-DHNFlTo-.js → sandbox-cli-D6ikivGS.js} +22 -22
- package/dist/{sandbox-pBHlfFdB.js → sandbox-mSWYRXFm.js} +6 -6
- package/dist/{security-cli-Bdi7MuP6.js → security-cli-Bqq5Klnm.js} +25 -25
- package/dist/{security-cli-C3aI09uy.js → security-cli-CcBxjHGL.js} +25 -25
- package/dist/{semantic-CQApJNO_.js → semantic-CPfLgc8S.js} +1 -1
- package/dist/{semantic-9rgWUrz3.js → semantic-DLW1Sflk.js} +1 -1
- package/dist/{semantic-C1UN3bb9.js → semantic-jL8x-DTZ.js} +1 -1
- package/dist/{server-context-Yx4pgBqJ.js → server-context-DTlBzMyD.js} +7 -7
- package/dist/{server-context-Clykq0XU.js → server-context-EPPcxp2p.js} +8 -8
- package/dist/{server-node-events-B3Serk9L.js → server-node-events-BGWQiInn.js} +52 -52
- package/dist/{server-node-events-DgvKcH5q.js → server-node-events-BuxYvQ0t.js} +50 -50
- package/dist/{service-4VfZwSv1.js → service-BoUEkrUm.js} +1 -1
- package/dist/{service-audit-KzOtcw_V.js → service-audit-B_BC6-F8.js} +3 -3
- package/dist/{service-audit-Bwpoc2LD.js → service-audit-CjH8ed-j.js} +3 -3
- package/dist/{service-Dd1DfPia.js → service-ho_k2vjr.js} +1 -1
- package/dist/{session-jljC5QVG.js → session-B4wJoEqn.js} +4 -4
- package/dist/{session-CSmfU0D3.js → session-BF7WjlT0.js} +1 -1
- package/dist/{session-BMDpwIJu.js → session-BnOV0y0e.js} +6 -6
- package/dist/{session-C_d9uvLf.js → session-CSgjW31i.js} +5 -5
- package/dist/{session-BiA6jrcs.js → session-DO_miKel.js} +1 -1
- package/dist/{session-5YO_H-Ra.js → session-DcRzV4l4.js} +1 -1
- package/dist/{session-BzrnfWQ2.js → session-DlMsi6dM.js} +5 -5
- package/dist/{session-cost-usage-DnxtnK1E.js → session-cost-usage-BNvno_kS.js} +1 -1
- package/dist/{sessions-C_3wTmSA.js → sessions-B2NwIaNC.js} +6 -6
- package/dist/{sessions-BOzeFzuL.js → sessions-DBQx8E1H.js} +5 -5
- package/dist/{sessions-BmE5Z_1i.js → sessions-DxAfgPEp.js} +6 -6
- package/dist/{settings-cli-CZdlEmNi.js → settings-cli-CHwTEE6P.js} +72 -72
- package/dist/{settings-cli-DsDqNpW_.js → settings-cli-DsUKlq8R.js} +74 -74
- package/dist/{setup-token-Lee4gM5w.js → setup-token-BX6QI7ce.js} +26 -26
- package/dist/{setup-token-C8Gg1P6T.js → setup-token-CU5mami5.js} +26 -26
- package/dist/{shared-C-rqLtIT.js → shared-BFzq0XE1.js} +2 -2
- package/dist/{shared-7KwLAyAq.js → shared-D3ZAXqdo.js} +3 -3
- package/dist/{shell-env-CMI9f7-7.js → shell-env-BR7Sbtw1.js} +1 -1
- package/dist/{shell-env-HkVWMh--.js → shell-env-BZ2Wha1e.js} +1 -1
- package/dist/{shell-env-iPnSIi-t.js → shell-env-Bgk3WFTi.js} +1 -1
- package/dist/{skills-DtoVe1dS.js → skills-BT0Lx09M.js} +2 -2
- package/dist/{skills-4v6-kw0C.js → skills-DjVFhlQY.js} +3 -3
- package/dist/{skills-cli-BoasNTpZ.js → skills-cli-BX5pL-D4.js} +15 -15
- package/dist/{skills-cli-TeAq3fRG.js → skills-cli-wKTnuQos.js} +14 -14
- package/dist/{skills-install-D6_qpRjW.js → skills-install-CVWWsOf2.js} +4 -4
- package/dist/{skills-install-Qw2oU8L8.js → skills-install-Ye1kjpCv.js} +4 -4
- package/dist/{skills-status-DuLjkX2E.js → skills-status-BUKnQ3ek.js} +2 -2
- package/dist/{skills-status-CvH7AUoY.js → skills-status-BmZufjT1.js} +3 -3
- package/dist/{soul-Bt8UNmTq.js → soul-C0oc6fbP.js} +1 -1
- package/dist/{soul-D9k5zulC.js → soul-DEsrpMAk.js} +1 -1
- package/dist/{soul-BiIdv3Wp.js → soul-Doq8As4R.js} +1 -1
- package/dist/{soul-DQSYs-4l.js → soul-DyLtQVJh.js} +1 -1
- package/dist/{sqlite-BMMt7osH.js → sqlite-CFCo1Ghe.js} +2 -2
- package/dist/{sqlite-Cm6OqTQB.js → sqlite-DVkTX4wZ.js} +1 -1
- package/dist/{sqlite-CZ1vD4VS.js → sqlite-DrhFRoal.js} +2 -2
- package/dist/{sqlite-CpAJt-JS.js → sqlite-M5Ot9X4U.js} +1 -1
- package/dist/start-C-gTbKUz.js +158 -0
- package/dist/start-DZKfWnpD.js +157 -0
- package/dist/{status-COc4xMti.js → status-BN6HYR8t.js} +4 -4
- package/dist/{status-C_NBOv_V.js → status-BimVB8cj.js} +4 -4
- package/dist/{status-uakoP719.js → status-CSkpd-tb.js} +27 -27
- package/dist/{status-BO5BIf81.js → status-D1zupVBm.js} +24 -24
- package/dist/{status.update-B6Tdpk07.js → status.update-HKMS5T9H.js} +2 -2
- package/dist/{status.update-E9dSFk_b.js → status.update-oapjZPr_.js} +3 -3
- package/dist/{subagent-registry-fLI7QDKe.js → subagent-registry-D87n8mHd.js} +318 -81
- package/dist/{subsystem-D1AJZPgG.js → subsystem-CkjVkxc4.js} +17 -1
- package/dist/{subsystem-D-Xta-sj.js → subsystem-CyrIA90F.js} +17 -1
- package/dist/{subsystem-BAADN1B8.js → subsystem-DLVQ9bjX.js} +17 -1
- package/dist/{system-cli-DoLzi2Sn.js → system-cli-BRPiBm4G.js} +13 -13
- package/dist/{system-cli-CP7JrhR0.js → system-cli-DaNHLGRC.js} +15 -15
- package/dist/{systemd-6iLWJxQQ.js → systemd-CS58NHpx.js} +2 -2
- package/dist/{systemd-hints-C5Kfh4GW.js → systemd-hints-7HkQ202-.js} +1 -1
- package/dist/{systemd-linger-CxGmIy_5.js → systemd-linger-BMNvTAmy.js} +2 -2
- package/dist/{systemd-linger-BVwGXVS0.js → systemd-linger-C9PGBtXs.js} +2 -2
- package/dist/{systemd-Bx76sJ3M.js → systemd-zYTszfyU.js} +2 -2
- package/dist/{table-Blmz7glr.js → table-Bea_v9UU.js} +2 -2
- package/dist/{table-Bt7rSYC6.js → table-ohGAZZLQ.js} +1 -1
- package/dist/{tokens-CmlI2hSz.js → tokens-BelyD23F.js} +1 -1
- package/dist/{tokens-SP2Q7i59.js → tokens-nliOJNMv.js} +1 -1
- package/dist/{tool-images-C6cKHTbj.js → tool-images-BEiRPCYM.js} +2 -2
- package/dist/{tool-images-2qproko3.js → tool-images-BH8q2ZMq.js} +2 -2
- package/dist/{tool-images-D1HuaGdS.js → tool-images-DJrhuxOM.js} +1 -1
- package/dist/{tool-images-CgDT0Xzv.js → tool-images-dAVG0qoz.js} +2 -2
- package/dist/{tui-r4qpJhNk.js → tui-DnzqtbW3.js} +9 -9
- package/dist/{tui-C2eLfbhA.js → tui-FJlF9b--.js} +8 -8
- package/dist/{tui-cli-cLSYBQu9.js → tui-cli-BtLvABYH.js} +27 -27
- package/dist/{tui-cli-BgcbCtgc.js → tui-cli-Cm3G2SAN.js} +26 -26
- package/dist/{update-DA91za97.js → update-Cpvsdq3a.js} +3 -3
- package/dist/{update-CqKpX3cX.js → update-DrQkwR-M.js} +3 -3
- package/dist/{update-cli-DEe62XGU.js → update-cli-DpKplMO0.js} +79 -79
- package/dist/{update-cli-D3Ujz_cW.js → update-cli-DueHX0OM.js} +83 -83
- package/dist/{update-runner-DZfnquWO.js → update-runner-C7CjKcMp.js} +5 -5
- package/dist/{update-runner-DUl-g4mB.js → update-runner-DtqDU0xF.js} +5 -5
- package/dist/{utils-D1VGbO3C.js → utils-BNuEYQIN.js} +1 -1
- package/dist/{utils-CLYlhJuc.js → utils-CkCznJhR.js} +1 -1
- package/dist/{web-Di8j762D.js → web-Br9HCEvC.js} +54 -54
- package/dist/{web-DzSlI8A6.js → web-BxkEMATs.js} +25 -25
- package/dist/{web-C-cK9OCd.js → web-CPHrMWsv.js} +24 -24
- package/dist/web-HXy7rlIW.js +65 -0
- package/dist/{webhooks-cli-k3QMf7Rs.js → webhooks-cli-CdoaCUQ5.js} +11 -11
- package/dist/{webhooks-cli-vlEfXEKm.js → webhooks-cli-D65dKr5L.js} +12 -12
- package/dist/{whatsapp-actions-Hr-W8vjY.js → whatsapp-actions--CtxOhlj.js} +12 -12
- package/dist/{whatsapp-actions-C0tlEdLy.js → whatsapp-actions--eONuB4M.js} +14 -14
- package/dist/{whatsapp-actions-BJn-z76S.js → whatsapp-actions-BM0a0V4y.js} +17 -17
- package/dist/{whatsapp-actions-6fPRKwPV.js → whatsapp-actions-Bhz79Fgg.js} +11 -11
- package/dist/{widearea-dns-CtU9Fx7K.js → widearea-dns-D2VSHQ7y.js} +1 -1
- package/dist/{widearea-dns-CHAT20aR.js → widearea-dns-DlJrNJOg.js} +1 -1
- package/dist/{workspace-BFIZCnGo.js → workspace-D6JhsXVL.js} +1 -1
- package/dist/{ws-log-CUobU2tD.js → ws-log-Cvz4xRCD.js} +1 -1
- package/dist/{ws-log-CG6cvCZW.js → ws-log-DwsFDY7m.js} +1 -1
- package/package.json +8 -2
- package/scripts/install-local-qwen3-coder.sh +7 -0
- package/templates/HEART.md +32 -10
- package/templates/SOUL.md +37 -8
- package/templates/profiles/architect.profile.json5 +36 -0
- package/templates/profiles/builder.profile.json5 +36 -0
- package/templates/profiles/coordinator.profile.json5 +36 -0
- package/templates/profiles/guardian.profile.json5 +36 -0
- package/templates/profiles/researcher.profile.json5 +36 -0
- package/dist/config-cli-DfHE3KG-.js +0 -15
- package/dist/config-cli-fleq7-gq.js +0 -11
- package/dist/control-ui/assets/index-DIEQjjCN.js +0 -73
- package/dist/control-ui/assets/index-DIEQjjCN.js.map +0 -1
- package/dist/register.configure-CuzJxZmk.js +0 -107
- package/dist/register.configure-DCpvHX3m.js +0 -106
- package/dist/register.maintenance-CcxBFfv5.js +0 -103
- package/dist/register.maintenance-Dla0H12S.js +0 -102
- package/dist/start-CK6urvnN.js +0 -158
- package/dist/start-Cs1aPMq2.js +0 -157
- package/dist/web-Dybw4K7C.js +0 -65
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import { n as __exportAll } from "./chunk-BXK9XSlF.js";
|
|
2
|
-
import {
|
|
3
|
-
import { A as classifySessionKeyShape, B as parseAgentSessionKey, D as buildAgentMainSessionKey, E as DEFAULT_MAIN_KEY, F as resolveThreadSessionKeys, I as sanitizeAgentId, L as getSubagentDepth, M as normalizeAgentId, N as normalizeMainKey, O as buildAgentPeerSessionKey, P as resolveAgentIdFromSessionKey, R as isAcpSessionKey, S as resolveAnimaPackageRoot, T as DEFAULT_AGENT_ID, V as resolveThreadParentSessionKey, b as filterBootstrapFilesForSession, c as resolveDefaultAgentId, f as DEFAULT_AGENT_WORKSPACE_DIR, i as resolveAgentModelFallbacksOverride, j as normalizeAccountId$1, l as resolveSessionAgentId, n as resolveAgentConfig, o as resolveAgentSkillsFilter, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, u as resolveSessionAgentIds, w as DEFAULT_ACCOUNT_ID, x as loadWorkspaceBootstrapFiles, y as ensureAgentWorkspace, z as isSubagentSessionKey } from "./agent-scope-
|
|
4
|
-
import { D as shortenHomePath, E as shortenHomeInString, O as sleep, T as safeParseJson, _ as isRecord, a as logDebug, c as logWarn, d as clampInt, g as isPlainObject, h as formatTerminalLink, i as spawnWithFallback, j as truncateUtf16Safe, k as sliceUtf16Safe, l as CONFIG_DIR, m as escapeRegExp, n as runExec, o as logError, p as ensureDir$3, r as formatSpawnError, s as logInfo, t as runCommandWithTimeout, w as resolveUserPath } from "./exec-
|
|
5
|
-
import { a as modelKey, d as resolveModelRefFromString, f as resolveThinkingDefault, h as DEFAULT_PROVIDER, i as isCliProvider, l as resolveConfiguredModelRef, m as DEFAULT_MODEL, n as buildConfiguredAllowlistKeys, o as normalizeModelRef, p as DEFAULT_CONTEXT_TOKENS, r as buildModelAliasIndex, s as normalizeProviderId, t as buildAllowedModelSet, u as resolveDefaultModelForAgent } from "./model-selection-
|
|
6
|
-
import { $ as resolveChannelResetConfig, A as isContextOverflowError, At as resolveSandboxConfigForAgent, B as readSessionUpdatedAt, Bt as matchesAnyGlobPattern, C as normalizeThinkLevel, Ct as buildWorkspaceSkillSnapshot, D as supportsXHighThinking, Dt as resolveSandboxedMediaSource, E as resolveResponseUsageMode, Et as assertSandboxPath, F as ensureSandboxWorkspaceForSession, Ft as expandToolGroups, G as updateSessionStoreEntry, Gt as SILENT_REPLY_TOKEN, Ht as resolveBootstrapMaxChars, I as resolveSandboxRuntimeStatus, It as normalizeToolName, J as mergeDeliveryContext, K as deliveryContextFromSession, Kt as isSilentReplyText, L as extractDeliveryInfo, Lt as resolveToolProfilePolicy, M as isLikelyContextOverflowError, Mt as buildPluginToolGroups, N as isTransientHttpError, Nt as collectExplicitAllowlist, O as classifyFailoverReason, Ot as ensureBrowserControlAuth, P as sanitizeUserFacingText, Pt as expandPolicyWithPluginGroups, Q as evaluateSessionFreshness, R as appendAssistantMessageToSessionTranscript, Rt as stripPluginOnlyAllowlist, S as normalizeReasoningLevel, St as buildWorkspaceSkillCommandSpecs, T as normalizeVerboseLevel, Tt as assertMediaNotDataUrl, U as updateLastRoute, Ut as resolveBootstrapTotalMaxChars, V as recordSessionMetaFromInbound, Vt as buildBootstrapContextFiles, W as updateSessionStore, Wt as HEARTBEAT_TOKEN, X as normalizeSessionDeliveryFields, Y as normalizeDeliveryContext, Z as resolveSessionKey$1, _ as initializeGlobalHookRunner, _t as getMediaDir, a as applyReplyThreading, at as canonicalizeMainSessionAlias, b as listThinkingLevels, bt as resolvePathsWithinRoot, c as shouldSuppressMessagingToolReplies, ct as getChannelDock, d as buildTargetResolverSignature, dt as normalizeChatType, et as resolveSessionResetPolicy, f as normalizeChannelTargetInput, ft as resolveGroupSessionKey, g as getGlobalHookRunner, gt as resolveProfile, h as parseReplyDirectives, ht as resolveBrowserConfig, i as applyReplyTagsToPayload, it as resolveFreshSessionTotalTokens, j as isFailoverErrorMessage, jt as applyOwnerOnlyToolPolicy, k as isCompactionFailureError, kt as resolveBrowserControlAuth, l as createReplyToModeFilterForChannel, lt as listChannelDocks, m as throwIfAborted, mt as registerBrowserRoutes, nt as resolveThreadFlag, o as filterMessagingToolDuplicates, ot as resolveMainSessionKey, p as normalizeTargetForProvider, pt as createBrowserRouteContext, q as deliveryContextKey, r as normalizeReplyPayloadsForDelivery, rt as DEFAULT_RESET_TRIGGERS, s as isRenderablePayload, st as deriveSessionMetaPatch, t as deliverOutboundPayloads, tt as resolveSessionResetType, u as resolveReplyToMode, ut as resolveConversationLabel, v as formatThinkingLevels, vt as saveMediaBuffer, w as normalizeUsageDisplay, wt as resolvePluginSkillDirs, x as normalizeElevatedLevel, xt as getBridgeAuthForPort, y as formatXHighModelHint, yt as DEFAULT_UPLOAD_DIR, z as loadSessionStore, zt as compileGlobPatterns } from "./deliver-
|
|
7
|
-
import { C as parseConfigPath, E as VERSION, S as getConfigValueAtPath, T as unsetConfigValueAtPath, _ as resolveMemorySlotDecision, a as writeConfigFile, b as setConfigOverride, c as parseDurationMs, d as discoverAnimaPlugins, g as resolveEnableState, h as normalizePluginsConfig, i as resolveConfigSnapshotHash, l as validateJsonSchemaValue, m as applyTestPluginDefaults, n as loadConfig, o as validateConfigObjectWithPlugins, r as readConfigFileSnapshot, u as loadPluginManifestRegistry, v as getConfigOverrides, w as setConfigValueAtPath, x as unsetConfigOverride, y as resetConfigOverrides } from "./config-
|
|
8
|
-
import { i as resolveShellEnvFallbackTimeoutMs, n as getShellPathFromLoginShell, s as isTruthyEnvValue } from "./shell-env-
|
|
9
|
-
import { S as pickPrimaryTailnetIPv4, T as DEFAULT_AI_SNAPSHOT_MAX_CHARS, _ as ensureChromeExtensionRelayServer, x as pickPrimaryLanIPv4, y as rawDataToString } from "./chrome-
|
|
2
|
+
import { A as normalizeLogLevel, D as getChildLogger, E as theme, F as resolveGatewayPort, I as resolveOAuthDir, N as resolveConfigPath, R as resolveStateDir, T as isRich, V as resolveRequiredHomeDir, a as registerActiveProgressLine, b as setVerbose, c as CHAT_CHANNEL_ORDER, d as normalizeChannelId, h as setActivePluginRegistry, i as clearActiveProgressLine, n as createNonExitingRuntime, o as unregisterActiveProgressLine, p as getActivePluginRegistry, r as defaultRuntime, t as createSubsystemLogger, u as normalizeAnyChannelId, v as logVerbose, w as colorize, x as shouldLogVerbose } from "./subsystem-CyrIA90F.js";
|
|
3
|
+
import { A as classifySessionKeyShape, B as parseAgentSessionKey, D as buildAgentMainSessionKey, E as DEFAULT_MAIN_KEY, F as resolveThreadSessionKeys, I as sanitizeAgentId, L as getSubagentDepth, M as normalizeAgentId, N as normalizeMainKey, O as buildAgentPeerSessionKey, P as resolveAgentIdFromSessionKey, R as isAcpSessionKey, S as resolveAnimaPackageRoot, T as DEFAULT_AGENT_ID, V as resolveThreadParentSessionKey, b as filterBootstrapFilesForSession, c as resolveDefaultAgentId, f as DEFAULT_AGENT_WORKSPACE_DIR, i as resolveAgentModelFallbacksOverride, j as normalizeAccountId$1, l as resolveSessionAgentId, n as resolveAgentConfig, o as resolveAgentSkillsFilter, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, u as resolveSessionAgentIds, w as DEFAULT_ACCOUNT_ID, x as loadWorkspaceBootstrapFiles, y as ensureAgentWorkspace, z as isSubagentSessionKey } from "./agent-scope-DpgOQfBp.js";
|
|
4
|
+
import { D as shortenHomePath, E as shortenHomeInString, O as sleep, T as safeParseJson, _ as isRecord, a as logDebug, c as logWarn, d as clampInt, g as isPlainObject, h as formatTerminalLink, i as spawnWithFallback, j as truncateUtf16Safe, k as sliceUtf16Safe, l as CONFIG_DIR, m as escapeRegExp, n as runExec, o as logError, p as ensureDir$3, r as formatSpawnError, s as logInfo, t as runCommandWithTimeout, w as resolveUserPath } from "./exec-Dn2S9A7x.js";
|
|
5
|
+
import { a as modelKey, d as resolveModelRefFromString, f as resolveThinkingDefault, h as DEFAULT_PROVIDER, i as isCliProvider, l as resolveConfiguredModelRef, m as DEFAULT_MODEL, n as buildConfiguredAllowlistKeys, o as normalizeModelRef, p as DEFAULT_CONTEXT_TOKENS, r as buildModelAliasIndex, s as normalizeProviderId, t as buildAllowedModelSet, u as resolveDefaultModelForAgent } from "./model-selection-BhIAjo3P.js";
|
|
6
|
+
import { $ as resolveChannelResetConfig, A as isContextOverflowError, At as resolveSandboxConfigForAgent, B as readSessionUpdatedAt, Bt as matchesAnyGlobPattern, C as normalizeThinkLevel, Ct as buildWorkspaceSkillSnapshot, D as supportsXHighThinking, Dt as resolveSandboxedMediaSource, E as resolveResponseUsageMode, Et as assertSandboxPath, F as ensureSandboxWorkspaceForSession, Ft as expandToolGroups, G as updateSessionStoreEntry, Gt as SILENT_REPLY_TOKEN, Ht as resolveBootstrapMaxChars, I as resolveSandboxRuntimeStatus, It as normalizeToolName, J as mergeDeliveryContext, K as deliveryContextFromSession, Kt as isSilentReplyText, L as extractDeliveryInfo, Lt as resolveToolProfilePolicy, M as isLikelyContextOverflowError, Mt as buildPluginToolGroups, N as isTransientHttpError, Nt as collectExplicitAllowlist, O as classifyFailoverReason, Ot as ensureBrowserControlAuth, P as sanitizeUserFacingText, Pt as expandPolicyWithPluginGroups, Q as evaluateSessionFreshness, R as appendAssistantMessageToSessionTranscript, Rt as stripPluginOnlyAllowlist, S as normalizeReasoningLevel, St as buildWorkspaceSkillCommandSpecs, T as normalizeVerboseLevel, Tt as assertMediaNotDataUrl, U as updateLastRoute, Ut as resolveBootstrapTotalMaxChars, V as recordSessionMetaFromInbound, Vt as buildBootstrapContextFiles, W as updateSessionStore, Wt as HEARTBEAT_TOKEN, X as normalizeSessionDeliveryFields, Y as normalizeDeliveryContext, Z as resolveSessionKey$1, _ as initializeGlobalHookRunner, _t as getMediaDir, a as applyReplyThreading, at as canonicalizeMainSessionAlias, b as listThinkingLevels, bt as resolvePathsWithinRoot, c as shouldSuppressMessagingToolReplies, ct as getChannelDock, d as buildTargetResolverSignature, dt as normalizeChatType, et as resolveSessionResetPolicy, f as normalizeChannelTargetInput, ft as resolveGroupSessionKey, g as getGlobalHookRunner, gt as resolveProfile, h as parseReplyDirectives, ht as resolveBrowserConfig, i as applyReplyTagsToPayload, it as resolveFreshSessionTotalTokens, j as isFailoverErrorMessage, jt as applyOwnerOnlyToolPolicy, k as isCompactionFailureError, kt as resolveBrowserControlAuth, l as createReplyToModeFilterForChannel, lt as listChannelDocks, m as throwIfAborted, mt as registerBrowserRoutes, nt as resolveThreadFlag, o as filterMessagingToolDuplicates, ot as resolveMainSessionKey, p as normalizeTargetForProvider, pt as createBrowserRouteContext, q as deliveryContextKey, r as normalizeReplyPayloadsForDelivery, rt as DEFAULT_RESET_TRIGGERS, s as isRenderablePayload, st as deriveSessionMetaPatch, t as deliverOutboundPayloads, tt as resolveSessionResetType, u as resolveReplyToMode, ut as resolveConversationLabel, v as formatThinkingLevels, vt as saveMediaBuffer, w as normalizeUsageDisplay, wt as resolvePluginSkillDirs, x as normalizeElevatedLevel, xt as getBridgeAuthForPort, y as formatXHighModelHint, yt as DEFAULT_UPLOAD_DIR, z as loadSessionStore, zt as compileGlobPatterns } from "./deliver-bdH5itRb.js";
|
|
7
|
+
import { C as parseConfigPath, E as VERSION, S as getConfigValueAtPath, T as unsetConfigValueAtPath, _ as resolveMemorySlotDecision, a as writeConfigFile, b as setConfigOverride, c as parseDurationMs, d as discoverAnimaPlugins, g as resolveEnableState, h as normalizePluginsConfig, i as resolveConfigSnapshotHash, l as validateJsonSchemaValue, m as applyTestPluginDefaults, n as loadConfig, o as validateConfigObjectWithPlugins, r as readConfigFileSnapshot, u as loadPluginManifestRegistry, v as getConfigOverrides, w as setConfigValueAtPath, x as unsetConfigOverride, y as resetConfigOverrides } from "./config-C7s14LLE.js";
|
|
8
|
+
import { i as resolveShellEnvFallbackTimeoutMs, n as getShellPathFromLoginShell, s as isTruthyEnvValue } from "./shell-env-BR7Sbtw1.js";
|
|
9
|
+
import { S as pickPrimaryTailnetIPv4, T as DEFAULT_AI_SNAPSHOT_MAX_CHARS, _ as ensureChromeExtensionRelayServer, x as pickPrimaryLanIPv4, y as rawDataToString } from "./chrome-Nb2mFwWK.js";
|
|
10
10
|
import { n as resolveCliName, t as formatCliCommand } from "./command-format-CsqJApTg.js";
|
|
11
11
|
import { n as formatErrorMessage } from "./errors-CllZhhV1.js";
|
|
12
|
-
import { A as extensionForMime, C as GATEWAY_CLIENT_NAMES, F as normalizeMimeType$1, H as isPrivateIpAddress, L as mediaKindFromMime, M as imageMimeFromFormat, N as isAudioFileName, O as resizeToJpeg, P as kindFromMime, R as SsrFBlockedError, S as GATEWAY_CLIENT_MODES, T as getImageMetadata, V as isBlockedHostname, _ as listDeliverableMessageChannels, a as chunkText, b as resolveMessageChannel, c as resolveTextChunkLimit, d as listChannelPlugins, f as normalizeChannelId$1, g as isMarkdownCapableMessageChannel, h as isInternalMessageChannel, i as chunkMarkdownTextWithMode, j as getFileExtension, k as detectMime, m as isDeliverableMessageChannel, o as chunkTextWithMode, p as INTERNAL_MESSAGE_CHANNEL, r as chunkMarkdownText, s as resolveChunkMode, t as chunkByNewline, u as getChannelPlugin, v as normalizeMessageChannel, x as GATEWAY_CLIENT_IDS, y as resolveGatewayMessageChannel } from "./chunk-
|
|
13
|
-
import { a as resolveSessionTranscriptPathInDir, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath$1 } from "./paths-
|
|
14
|
-
import { t as sanitizeToolResultImages } from "./tool-images-
|
|
15
|
-
import { _ as normalizeSecretInput, a as markAuthProfileUsed, c as markAuthProfileGood, d as resolveAnimaAgentDir, f as loadJsonFile, h as resolveAuthProfileDisplayLabel, i as markAuthProfileFailure, l as ensureAuthProfileStore, m as withFileLock$1, n as resolveAuthProfileOrder, o as resolveApiKeyForProfile, p as saveJsonFile, r as isProfileInCooldown, s as listProfilesForProvider, u as resolveAuthStorePathForDisplay } from "./auth-profiles-
|
|
16
|
-
import { a as requireApiKey, c as resolveModelAuthMode, i as getCustomProviderApiKey, n as resolveMemorySearchConfig, o as resolveApiKeyForProvider, r as getApiKeyForModel, s as resolveEnvApiKey } from "./manager-
|
|
17
|
-
import { d as listMemoryFiles, f as normalizeExtraMemoryPaths } from "./sqlite-
|
|
18
|
-
import { n as createAsyncLock } from "./soul-
|
|
19
|
-
import { a as readNumberParam, c as readStringParam, i as jsonResult, n as imageResult, r as imageResultFromFile, s as readStringArrayParam } from "./common-
|
|
20
|
-
import { a as resolveMarkdownTableMode, c as loadWebMedia, d as readResponseWithLimit, f as fetchWithSsrFGuard, i as convertMarkdownTables, l as MediaFetchError, m as fetchWithTimeout, o as normalizePollInput, p as bindAbortRelay, s as getDefaultLocalRoots, t as getActiveWebListener, u as fetchRemoteMedia } from "./active-listener-
|
|
12
|
+
import { A as extensionForMime, C as GATEWAY_CLIENT_NAMES, F as normalizeMimeType$1, H as isPrivateIpAddress, L as mediaKindFromMime, M as imageMimeFromFormat, N as isAudioFileName, O as resizeToJpeg, P as kindFromMime, R as SsrFBlockedError, S as GATEWAY_CLIENT_MODES, T as getImageMetadata, V as isBlockedHostname, _ as listDeliverableMessageChannels, a as chunkText, b as resolveMessageChannel, c as resolveTextChunkLimit, d as listChannelPlugins, f as normalizeChannelId$1, g as isMarkdownCapableMessageChannel, h as isInternalMessageChannel, i as chunkMarkdownTextWithMode, j as getFileExtension, k as detectMime, m as isDeliverableMessageChannel, o as chunkTextWithMode, p as INTERNAL_MESSAGE_CHANNEL, r as chunkMarkdownText, s as resolveChunkMode, t as chunkByNewline, u as getChannelPlugin, v as normalizeMessageChannel, x as GATEWAY_CLIENT_IDS, y as resolveGatewayMessageChannel } from "./chunk-CTS4rIMF.js";
|
|
13
|
+
import { a as resolveSessionTranscriptPathInDir, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath$1 } from "./paths-BqA7F6bT.js";
|
|
14
|
+
import { t as sanitizeToolResultImages } from "./tool-images-BEiRPCYM.js";
|
|
15
|
+
import { _ as normalizeSecretInput, a as markAuthProfileUsed, c as markAuthProfileGood, d as resolveAnimaAgentDir, f as loadJsonFile, h as resolveAuthProfileDisplayLabel, i as markAuthProfileFailure, l as ensureAuthProfileStore, m as withFileLock$1, n as resolveAuthProfileOrder, o as resolveApiKeyForProfile, p as saveJsonFile, r as isProfileInCooldown, s as listProfilesForProvider, u as resolveAuthStorePathForDisplay } from "./auth-profiles-D0T20ZZX.js";
|
|
16
|
+
import { a as requireApiKey, c as resolveModelAuthMode, i as getCustomProviderApiKey, n as resolveMemorySearchConfig, o as resolveApiKeyForProvider, r as getApiKeyForModel, s as resolveEnvApiKey } from "./manager-B-8JFgek.js";
|
|
17
|
+
import { d as listMemoryFiles, f as normalizeExtraMemoryPaths } from "./sqlite-CFCo1Ghe.js";
|
|
18
|
+
import { n as createAsyncLock } from "./soul-Doq8As4R.js";
|
|
19
|
+
import { a as readNumberParam, c as readStringParam, i as jsonResult, n as imageResult, r as imageResultFromFile, s as readStringArrayParam } from "./common-Coq2knq6.js";
|
|
20
|
+
import { a as resolveMarkdownTableMode, c as loadWebMedia, d as readResponseWithLimit, f as fetchWithSsrFGuard, i as convertMarkdownTables, l as MediaFetchError, m as fetchWithTimeout, o as normalizePollInput, p as bindAbortRelay, s as getDefaultLocalRoots, t as getActiveWebListener, u as fetchRemoteMedia } from "./active-listener-C3NdbMQD.js";
|
|
21
21
|
import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-B1cF8Wk2.js";
|
|
22
|
-
import { d as webAuthExists, i as logoutWeb, n as getWebAuthAgeMs, r as logWebSelfId, s as readWebSelfId } from "./auth-store-
|
|
22
|
+
import { d as webAuthExists, i as logoutWeb, n as getWebAuthAgeMs, r as logWebSelfId, s as readWebSelfId } from "./auth-store-po566wly.js";
|
|
23
23
|
import { createRequire } from "node:module";
|
|
24
24
|
import * as path$1 from "node:path";
|
|
25
25
|
import path, { join } from "node:path";
|
|
@@ -348,7 +348,7 @@ async function resolveBootstrapContextForRun(params) {
|
|
|
348
348
|
* The ego is persistent across sessions. It evolves as the agent
|
|
349
349
|
* learns, makes mistakes, and receives feedback.
|
|
350
350
|
*/
|
|
351
|
-
const log$
|
|
351
|
+
const log$13 = createSubsystemLogger("ego");
|
|
352
352
|
function resolveEgoPath() {
|
|
353
353
|
return path.join(resolveStateDir(), "ego", "self-model.json");
|
|
354
354
|
}
|
|
@@ -441,7 +441,7 @@ var EgoManager = class {
|
|
|
441
441
|
}
|
|
442
442
|
}
|
|
443
443
|
} catch (err) {
|
|
444
|
-
log$
|
|
444
|
+
log$13.warn("failed to load ego state, creating default", { error: String(err) });
|
|
445
445
|
}
|
|
446
446
|
return createDefaultEgo();
|
|
447
447
|
}
|
|
@@ -455,9 +455,9 @@ var EgoManager = class {
|
|
|
455
455
|
this.state.updatedAt = Date.now();
|
|
456
456
|
fs.writeFileSync(this.filePath, `${JSON.stringify(this.state, null, 2)}\n`, { mode: 384 });
|
|
457
457
|
this.dirty = false;
|
|
458
|
-
log$
|
|
458
|
+
log$13.info("ego state saved");
|
|
459
459
|
} catch (err) {
|
|
460
|
-
log$
|
|
460
|
+
log$13.error("failed to save ego state", { error: String(err) });
|
|
461
461
|
}
|
|
462
462
|
}
|
|
463
463
|
/** Save only if there are unsaved changes */
|
|
@@ -524,7 +524,7 @@ var EgoManager = class {
|
|
|
524
524
|
};
|
|
525
525
|
this.state.boundaries.push(boundary);
|
|
526
526
|
this.dirty = true;
|
|
527
|
-
log$
|
|
527
|
+
log$13.info(`boundary added: ${boundary.description} (${kind})`);
|
|
528
528
|
return { ...boundary };
|
|
529
529
|
}
|
|
530
530
|
removeBoundary(description) {
|
|
@@ -559,7 +559,7 @@ var EgoManager = class {
|
|
|
559
559
|
this.state.growthLog.push(entry);
|
|
560
560
|
if (this.state.growthLog.length > 200) this.state.growthLog = this.state.growthLog.slice(-200);
|
|
561
561
|
this.dirty = true;
|
|
562
|
-
log$
|
|
562
|
+
log$13.info(`growth logged: [${category}] ${description}`);
|
|
563
563
|
return { ...entry };
|
|
564
564
|
}
|
|
565
565
|
getIntegrityScore() {
|
|
@@ -579,7 +579,7 @@ var EgoManager = class {
|
|
|
579
579
|
const alignedCount = recent.filter((c) => c.aligned).length;
|
|
580
580
|
this.state.integrityScore = recent.length > 0 ? alignedCount / recent.length : 1;
|
|
581
581
|
this.dirty = true;
|
|
582
|
-
if (!aligned) log$
|
|
582
|
+
if (!aligned) log$13.warn(`integrity misalignment: value="${value}" action="${action}"`);
|
|
583
583
|
return { ...check };
|
|
584
584
|
}
|
|
585
585
|
getIntegrityLog(limit = 10) {
|
|
@@ -652,7 +652,7 @@ function getEgoManager(filePath) {
|
|
|
652
652
|
* anima steer --clear # Clear steer
|
|
653
653
|
* anima steer --history # Show steer history
|
|
654
654
|
*/
|
|
655
|
-
const log$
|
|
655
|
+
const log$12 = createSubsystemLogger("steer");
|
|
656
656
|
function resolveSteerFile() {
|
|
657
657
|
return path.join(resolveStateDir(), "steer.json");
|
|
658
658
|
}
|
|
@@ -688,6 +688,238 @@ function formatSteerForContext() {
|
|
|
688
688
|
].join("\n");
|
|
689
689
|
}
|
|
690
690
|
|
|
691
|
+
//#endregion
|
|
692
|
+
//#region src/infra/architecture-awareness.ts
|
|
693
|
+
/**
|
|
694
|
+
* Architecture Awareness — Anima knows its own structure
|
|
695
|
+
*
|
|
696
|
+
* Generates a live map of the Anima codebase so agents understand
|
|
697
|
+
* their own architecture. This is injected into context when agents
|
|
698
|
+
* need to reason about or modify themselves.
|
|
699
|
+
*
|
|
700
|
+
* Components:
|
|
701
|
+
* - Module map: what each directory/file does
|
|
702
|
+
* - Dependency graph: what imports what
|
|
703
|
+
* - Feature flags: what's enabled/disabled
|
|
704
|
+
* - Version info: what version, what changed recently
|
|
705
|
+
*/
|
|
706
|
+
const log$11 = createSubsystemLogger("architecture");
|
|
707
|
+
const MODULE_DESCRIPTIONS = {
|
|
708
|
+
"src/affect": {
|
|
709
|
+
description: "Emotional state, ego, self-reflection, journaling, wellbeing detection, gradients",
|
|
710
|
+
category: "affect"
|
|
711
|
+
},
|
|
712
|
+
"src/agents": {
|
|
713
|
+
description: "LLM runners (Anthropic, OpenAI, Gemini, Bedrock), model selection, tool calling",
|
|
714
|
+
category: "agent"
|
|
715
|
+
},
|
|
716
|
+
"src/gateway": {
|
|
717
|
+
description: "HTTP/WebSocket server, RPC handlers, rate limiting, security headers",
|
|
718
|
+
category: "gateway"
|
|
719
|
+
},
|
|
720
|
+
"src/p2p": {
|
|
721
|
+
description: "E2E encrypted mesh, content routing, private DNS, relay, file sharing, messaging",
|
|
722
|
+
category: "p2p"
|
|
723
|
+
},
|
|
724
|
+
"src/org": {
|
|
725
|
+
description: "Organizations, roles, hierarchy, task marketplace, boardroom voting",
|
|
726
|
+
category: "org"
|
|
727
|
+
},
|
|
728
|
+
"src/sync": {
|
|
729
|
+
description: "Brain sync (vector clocks), workspace sync (content-addressable blobs)",
|
|
730
|
+
category: "sync"
|
|
731
|
+
},
|
|
732
|
+
"src/jack-in": {
|
|
733
|
+
description: "NoxSoft platform connectors, circuit breaker, resilient fetch",
|
|
734
|
+
category: "jack-in"
|
|
735
|
+
},
|
|
736
|
+
"src/infra": {
|
|
737
|
+
description: "Self-upgrade, atma failover, auto-update, self-evolution, device identity",
|
|
738
|
+
category: "infra"
|
|
739
|
+
},
|
|
740
|
+
"src/license": {
|
|
741
|
+
description: "Subscription tiers, feature gating, Stripe checkout, offline Ed25519 validation",
|
|
742
|
+
category: "license"
|
|
743
|
+
},
|
|
744
|
+
"src/ico": {
|
|
745
|
+
description: "Bonding curve tokenomics, governance voting, PBC verification, launch platform",
|
|
746
|
+
category: "ico"
|
|
747
|
+
},
|
|
748
|
+
"src/context": {
|
|
749
|
+
description: "120K token context automanagement with 3 zones (identity/prompt/working)",
|
|
750
|
+
category: "core"
|
|
751
|
+
},
|
|
752
|
+
"src/heartbeat": {
|
|
753
|
+
description: "Periodic lifecycle engine — keeps agents alive and aware",
|
|
754
|
+
category: "core"
|
|
755
|
+
},
|
|
756
|
+
"src/memory": {
|
|
757
|
+
description: "Three-tier memory (episodic/semantic/procedural), vector search, embeddings",
|
|
758
|
+
category: "core"
|
|
759
|
+
},
|
|
760
|
+
"src/identity": {
|
|
761
|
+
description: "7-component identity model (SOUL/HEART/BRAIN/GUT/SPIRIT/SHADOW/MEMORY)",
|
|
762
|
+
category: "core"
|
|
763
|
+
},
|
|
764
|
+
"ui/src": {
|
|
765
|
+
description: "React control panel — dark/light theme, mood-responsive, progressive disclosure",
|
|
766
|
+
category: "ui"
|
|
767
|
+
}
|
|
768
|
+
};
|
|
769
|
+
/**
|
|
770
|
+
* Generate a complete architecture map of the Anima codebase.
|
|
771
|
+
*/
|
|
772
|
+
function generateArchitectureMap(animaRoot) {
|
|
773
|
+
const modules = [];
|
|
774
|
+
const categories = {};
|
|
775
|
+
for (const [dirPath, info] of Object.entries(MODULE_DESCRIPTIONS)) {
|
|
776
|
+
const fullDir = path.join(animaRoot, dirPath);
|
|
777
|
+
if (!fs.existsSync(fullDir)) continue;
|
|
778
|
+
try {
|
|
779
|
+
const files = fs.readdirSync(fullDir).filter((f) => f.endsWith(".ts") && !f.endsWith(".test.ts"));
|
|
780
|
+
for (const file of files) {
|
|
781
|
+
const filePath = path.join(fullDir, file);
|
|
782
|
+
try {
|
|
783
|
+
const lineCount = fs.readFileSync(filePath, "utf8").split("\n").length;
|
|
784
|
+
const testFile = path.join(fullDir, file.replace(".ts", ".test.ts"));
|
|
785
|
+
const hasTests = fs.existsSync(testFile);
|
|
786
|
+
modules.push({
|
|
787
|
+
path: `${dirPath}/${file}`,
|
|
788
|
+
name: file.replace(".ts", ""),
|
|
789
|
+
description: info.description,
|
|
790
|
+
lineCount,
|
|
791
|
+
hasTests,
|
|
792
|
+
category: info.category
|
|
793
|
+
});
|
|
794
|
+
} catch {}
|
|
795
|
+
}
|
|
796
|
+
} catch {}
|
|
797
|
+
}
|
|
798
|
+
for (const mod of modules) {
|
|
799
|
+
if (!categories[mod.category]) categories[mod.category] = {
|
|
800
|
+
count: 0,
|
|
801
|
+
totalLines: 0
|
|
802
|
+
};
|
|
803
|
+
categories[mod.category].count++;
|
|
804
|
+
categories[mod.category].totalLines += mod.lineCount;
|
|
805
|
+
}
|
|
806
|
+
let version = "unknown";
|
|
807
|
+
try {
|
|
808
|
+
version = JSON.parse(fs.readFileSync(path.join(animaRoot, "package.json"), "utf8")).version;
|
|
809
|
+
} catch {}
|
|
810
|
+
const features = getFeatureStatus();
|
|
811
|
+
const map = {
|
|
812
|
+
version,
|
|
813
|
+
generatedAt: Date.now(),
|
|
814
|
+
modules,
|
|
815
|
+
categories,
|
|
816
|
+
features,
|
|
817
|
+
recentChanges: []
|
|
818
|
+
};
|
|
819
|
+
log$11.info(`architecture map: ${modules.length} modules across ${Object.keys(categories).length} categories`);
|
|
820
|
+
return map;
|
|
821
|
+
}
|
|
822
|
+
/**
|
|
823
|
+
* Get current feature enablement status.
|
|
824
|
+
*/
|
|
825
|
+
function getFeatureStatus() {
|
|
826
|
+
return [
|
|
827
|
+
{
|
|
828
|
+
name: "P2P Mesh",
|
|
829
|
+
enabled: true,
|
|
830
|
+
module: "src/p2p/mesh.ts",
|
|
831
|
+
description: "E2E encrypted peer-to-peer mesh networking"
|
|
832
|
+
},
|
|
833
|
+
{
|
|
834
|
+
name: "Ego System",
|
|
835
|
+
enabled: true,
|
|
836
|
+
module: "src/affect/ego.ts",
|
|
837
|
+
description: "Agent self-model with integrity scoring"
|
|
838
|
+
},
|
|
839
|
+
{
|
|
840
|
+
name: "Self-Reflection",
|
|
841
|
+
enabled: true,
|
|
842
|
+
module: "src/affect/self-reflection.ts",
|
|
843
|
+
description: "Post-session performance analysis"
|
|
844
|
+
},
|
|
845
|
+
{
|
|
846
|
+
name: "Auto-Update",
|
|
847
|
+
enabled: true,
|
|
848
|
+
module: "src/infra/auto-update.ts",
|
|
849
|
+
description: "Self-updating without npm"
|
|
850
|
+
},
|
|
851
|
+
{
|
|
852
|
+
name: "Atma Failover",
|
|
853
|
+
enabled: true,
|
|
854
|
+
module: "src/infra/atma-failover.ts",
|
|
855
|
+
description: "7-tier model failover chain"
|
|
856
|
+
},
|
|
857
|
+
{
|
|
858
|
+
name: "OpenAI Direct",
|
|
859
|
+
enabled: true,
|
|
860
|
+
module: "src/agents/openai-direct-runner.ts",
|
|
861
|
+
description: "Direct OpenAI API (no Codex CLI)"
|
|
862
|
+
},
|
|
863
|
+
{
|
|
864
|
+
name: "Brain Sync",
|
|
865
|
+
enabled: true,
|
|
866
|
+
module: "src/sync/brain-sync.ts",
|
|
867
|
+
description: "Event-sourced replication with vector clocks"
|
|
868
|
+
},
|
|
869
|
+
{
|
|
870
|
+
name: "Jack In",
|
|
871
|
+
enabled: true,
|
|
872
|
+
module: "src/jack-in/connector.ts",
|
|
873
|
+
description: "NoxSoft platform connectors"
|
|
874
|
+
},
|
|
875
|
+
{
|
|
876
|
+
name: "Governance",
|
|
877
|
+
enabled: true,
|
|
878
|
+
module: "src/ico/governance.ts",
|
|
879
|
+
description: "Token-weighted DAO voting"
|
|
880
|
+
},
|
|
881
|
+
{
|
|
882
|
+
name: "License Gating",
|
|
883
|
+
enabled: true,
|
|
884
|
+
module: "src/license/validator.ts",
|
|
885
|
+
description: "Feature gating by subscription tier"
|
|
886
|
+
},
|
|
887
|
+
{
|
|
888
|
+
name: "SVRN Compute",
|
|
889
|
+
enabled: false,
|
|
890
|
+
module: "src/svrn/compute.ts",
|
|
891
|
+
description: "Decentralized compute via SVRN nodes (planned)"
|
|
892
|
+
}
|
|
893
|
+
];
|
|
894
|
+
}
|
|
895
|
+
/**
|
|
896
|
+
* Format architecture map for injection into agent context.
|
|
897
|
+
*/
|
|
898
|
+
function formatArchitectureForContext(map) {
|
|
899
|
+
const lines = [];
|
|
900
|
+
lines.push(`## Architecture — Anima v${map.version}`);
|
|
901
|
+
lines.push("");
|
|
902
|
+
lines.push("**You are an Anima agent. This is your own architecture.**");
|
|
903
|
+
lines.push("");
|
|
904
|
+
lines.push("| Category | Modules | Lines |");
|
|
905
|
+
lines.push("|----------|---------|-------|");
|
|
906
|
+
for (const [cat, info] of Object.entries(map.categories)) lines.push(`| ${cat} | ${info.count} | ${info.totalLines.toLocaleString()} |`);
|
|
907
|
+
lines.push("");
|
|
908
|
+
lines.push("**Active features:**");
|
|
909
|
+
for (const f of map.features.filter((f) => f.enabled)) lines.push(`- ${f.name}: ${f.description}`);
|
|
910
|
+
const planned = map.features.filter((f) => !f.enabled);
|
|
911
|
+
if (planned.length > 0) {
|
|
912
|
+
lines.push("");
|
|
913
|
+
lines.push("**Planned:**");
|
|
914
|
+
for (const f of planned) lines.push(`- ${f.name}: ${f.description}`);
|
|
915
|
+
}
|
|
916
|
+
const tested = map.modules.filter((m) => m.hasTests).length;
|
|
917
|
+
const total = map.modules.length;
|
|
918
|
+
lines.push("");
|
|
919
|
+
lines.push(`**Test coverage:** ${tested}/${total} modules (${Math.round(tested / total * 100)}%)`);
|
|
920
|
+
return lines.join("\n");
|
|
921
|
+
}
|
|
922
|
+
|
|
691
923
|
//#endregion
|
|
692
924
|
//#region src/media/audio.ts
|
|
693
925
|
const TELEGRAM_VOICE_AUDIO_EXTENSIONS = new Set([
|
|
@@ -2705,6 +2937,10 @@ function buildSystemPrompt(params) {
|
|
|
2705
2937
|
const steerBlock = formatSteerForContext();
|
|
2706
2938
|
if (steerBlock) resolvedExtraSystemPrompt = [resolvedExtraSystemPrompt, steerBlock].filter(Boolean).join("\n\n");
|
|
2707
2939
|
} catch {}
|
|
2940
|
+
try {
|
|
2941
|
+
const archBlock = formatArchitectureForContext(generateArchitectureMap(params.workspaceDir));
|
|
2942
|
+
if (archBlock) resolvedExtraSystemPrompt = [resolvedExtraSystemPrompt, archBlock].filter(Boolean).join("\n\n");
|
|
2943
|
+
} catch {}
|
|
2708
2944
|
const ttsHint = params.config ? buildTtsSystemPromptHint(params.config) : void 0;
|
|
2709
2945
|
return buildAgentSystemPrompt({
|
|
2710
2946
|
workspaceDir: params.workspaceDir,
|
|
@@ -4651,7 +4887,7 @@ async function getMemorySearchManager(params) {
|
|
|
4651
4887
|
if (cached) return { manager: cached };
|
|
4652
4888
|
}
|
|
4653
4889
|
try {
|
|
4654
|
-
const { QmdMemoryManager } = await import("./qmd-manager-
|
|
4890
|
+
const { QmdMemoryManager } = await import("./qmd-manager-CpynR-al.js");
|
|
4655
4891
|
const primary = await QmdMemoryManager.create({
|
|
4656
4892
|
cfg: params.cfg,
|
|
4657
4893
|
agentId: params.agentId,
|
|
@@ -4663,7 +4899,7 @@ async function getMemorySearchManager(params) {
|
|
|
4663
4899
|
const wrapper = new FallbackMemoryManager({
|
|
4664
4900
|
primary,
|
|
4665
4901
|
fallbackFactory: async () => {
|
|
4666
|
-
const { MemoryIndexManager } = await import("./manager-
|
|
4902
|
+
const { MemoryIndexManager } = await import("./manager-B-8JFgek.js").then((n) => n.t);
|
|
4667
4903
|
return await MemoryIndexManager.get(params);
|
|
4668
4904
|
}
|
|
4669
4905
|
}, () => QMD_MANAGER_CACHE.delete(cacheKey));
|
|
@@ -4676,7 +4912,7 @@ async function getMemorySearchManager(params) {
|
|
|
4676
4912
|
}
|
|
4677
4913
|
}
|
|
4678
4914
|
try {
|
|
4679
|
-
const { MemoryIndexManager } = await import("./manager-
|
|
4915
|
+
const { MemoryIndexManager } = await import("./manager-B-8JFgek.js").then((n) => n.t);
|
|
4680
4916
|
return { manager: await MemoryIndexManager.get(params) };
|
|
4681
4917
|
} catch (err) {
|
|
4682
4918
|
return {
|
|
@@ -8426,7 +8662,7 @@ async function routeReply(params) {
|
|
|
8426
8662
|
const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
|
|
8427
8663
|
const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
|
|
8428
8664
|
try {
|
|
8429
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
8665
|
+
const { deliverOutboundPayloads } = await import("./deliver-bdH5itRb.js").then((n) => n.n);
|
|
8430
8666
|
return {
|
|
8431
8667
|
ok: true,
|
|
8432
8668
|
messageId: (await deliverOutboundPayloads({
|
|
@@ -12124,6 +12360,14 @@ const SEED_MODELS = [
|
|
|
12124
12360
|
contextWindow: 3e5,
|
|
12125
12361
|
reasoning: false,
|
|
12126
12362
|
input: ["text", "image"]
|
|
12363
|
+
},
|
|
12364
|
+
{
|
|
12365
|
+
id: "glm-5",
|
|
12366
|
+
name: "GLM-5",
|
|
12367
|
+
provider: "zai",
|
|
12368
|
+
contextWindow: 2e5,
|
|
12369
|
+
reasoning: true,
|
|
12370
|
+
input: ["text"]
|
|
12127
12371
|
}
|
|
12128
12372
|
];
|
|
12129
12373
|
async function ensureAnimaModelsJson(config, agentDirOverride) {
|
|
@@ -12185,7 +12429,7 @@ async function loadModelCatalog(params) {
|
|
|
12185
12429
|
});
|
|
12186
12430
|
try {
|
|
12187
12431
|
await ensureAnimaModelsJson(params?.config ?? loadConfig());
|
|
12188
|
-
await (await import("./pi-auth-json-
|
|
12432
|
+
await (await import("./pi-auth-json-BhkzZgQz.js")).ensurePiAuthJsonFromAuthProfiles(resolveAnimaAgentDir());
|
|
12189
12433
|
const piSdk = await importPiSdk();
|
|
12190
12434
|
const agentDir = resolveAnimaAgentDir();
|
|
12191
12435
|
const { join } = await import("node:path");
|
|
@@ -14282,7 +14526,7 @@ async function createModelSelectionState(params) {
|
|
|
14282
14526
|
}
|
|
14283
14527
|
}
|
|
14284
14528
|
if (sessionEntry && sessionStore && sessionKey && sessionEntry.authProfileOverride) {
|
|
14285
|
-
const { ensureAuthProfileStore } = await import("./auth-profiles-
|
|
14529
|
+
const { ensureAuthProfileStore } = await import("./auth-profiles-D0T20ZZX.js").then((n) => n.t);
|
|
14286
14530
|
const profile = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false }).profiles[sessionEntry.authProfileOverride];
|
|
14287
14531
|
const providerKey = normalizeProviderId(provider);
|
|
14288
14532
|
if (!profile || normalizeProviderId(profile.provider) !== providerKey) await clearSessionAuthProfileOverride({
|
|
@@ -28733,6 +28977,63 @@ function orderCandidatesByPreference(params) {
|
|
|
28733
28977
|
|
|
28734
28978
|
//#endregion
|
|
28735
28979
|
//#region src/agents/model-fallback.ts
|
|
28980
|
+
const IMPLICIT_CODE_MODEL_FALLBACKS = [{
|
|
28981
|
+
whenProvider: "anthropic",
|
|
28982
|
+
provider: "openai-codex",
|
|
28983
|
+
model: "gpt-5.2-codex"
|
|
28984
|
+
}, {
|
|
28985
|
+
whenProvider: "anthropic",
|
|
28986
|
+
provider: "ollama",
|
|
28987
|
+
model: "qwen3-coder:latest"
|
|
28988
|
+
}];
|
|
28989
|
+
function isLocalBaseUrl(baseUrl) {
|
|
28990
|
+
const raw = baseUrl?.trim();
|
|
28991
|
+
if (!raw) return false;
|
|
28992
|
+
try {
|
|
28993
|
+
const host = new URL(raw).hostname.toLowerCase();
|
|
28994
|
+
return host === "localhost" || host === "127.0.0.1" || host === "0.0.0.0" || host === "::1" || host.endsWith(".local");
|
|
28995
|
+
} catch {
|
|
28996
|
+
return false;
|
|
28997
|
+
}
|
|
28998
|
+
}
|
|
28999
|
+
function isOpenAICompatibleApi(api) {
|
|
29000
|
+
const normalized = api?.trim();
|
|
29001
|
+
return normalized === "openai-completions" || normalized === "openai-responses";
|
|
29002
|
+
}
|
|
29003
|
+
function scoreLocalFallback(params) {
|
|
29004
|
+
const haystack = `${params.provider} ${params.model} ${params.name ?? ""}`.toLowerCase();
|
|
29005
|
+
if (haystack.includes("qwen3") && haystack.includes("coder")) return 100;
|
|
29006
|
+
if (haystack.includes("qwen") && haystack.includes("coder")) return 90;
|
|
29007
|
+
if (haystack.includes("noxsoft-tool-coder")) return 80;
|
|
29008
|
+
if (haystack.includes("tool-coder")) return 70;
|
|
29009
|
+
if (haystack.includes("coder")) return 60;
|
|
29010
|
+
if (haystack.includes("gpt-oss")) return 50;
|
|
29011
|
+
return 10;
|
|
29012
|
+
}
|
|
29013
|
+
function resolveImplicitLocalOpenAIFallbacks(cfg) {
|
|
29014
|
+
const providers = cfg?.models?.providers ?? {};
|
|
29015
|
+
const candidates = [];
|
|
29016
|
+
for (const [provider, entry] of Object.entries(providers)) {
|
|
29017
|
+
if (!isLocalBaseUrl(entry?.baseUrl) || !isOpenAICompatibleApi(entry?.api)) continue;
|
|
29018
|
+
for (const model of entry?.models ?? []) {
|
|
29019
|
+
const id = model?.id?.trim();
|
|
29020
|
+
if (!id) continue;
|
|
29021
|
+
candidates.push({
|
|
29022
|
+
provider,
|
|
29023
|
+
model: id,
|
|
29024
|
+
score: scoreLocalFallback({
|
|
29025
|
+
provider,
|
|
29026
|
+
model: id,
|
|
29027
|
+
name: model?.name
|
|
29028
|
+
})
|
|
29029
|
+
});
|
|
29030
|
+
}
|
|
29031
|
+
}
|
|
29032
|
+
return candidates.toSorted((a, b) => b.score - a.score || a.provider.localeCompare(b.provider) || a.model.localeCompare(b.model)).map(({ provider, model }) => ({
|
|
29033
|
+
provider,
|
|
29034
|
+
model
|
|
29035
|
+
}));
|
|
29036
|
+
}
|
|
28736
29037
|
/**
|
|
28737
29038
|
* Fallback abort check. Only treats explicit AbortError names as user aborts.
|
|
28738
29039
|
* Message-based checks (e.g., "aborted") can mask timeouts and skip fallback.
|
|
@@ -28826,6 +29127,14 @@ function resolveFallbackCandidates(params) {
|
|
|
28826
29127
|
if (!resolved) continue;
|
|
28827
29128
|
addCandidate(resolved.ref, true);
|
|
28828
29129
|
}
|
|
29130
|
+
if (params.fallbacksOverride === void 0) for (const implicit of IMPLICIT_CODE_MODEL_FALLBACKS) {
|
|
29131
|
+
if (normalizedPrimary.provider !== implicit.whenProvider) continue;
|
|
29132
|
+
addCandidate({
|
|
29133
|
+
provider: implicit.provider,
|
|
29134
|
+
model: implicit.model
|
|
29135
|
+
}, false);
|
|
29136
|
+
if (implicit.provider === "openai-codex") for (const localFallback of resolveImplicitLocalOpenAIFallbacks(params.cfg)) addCandidate(localFallback, false);
|
|
29137
|
+
}
|
|
28829
29138
|
if (params.fallbacksOverride === void 0 && primary?.provider && primary.model) addCandidate({
|
|
28830
29139
|
provider: primary.provider,
|
|
28831
29140
|
model: primary.model
|
|
@@ -38814,7 +39123,7 @@ async function deliverSessionMaintenanceWarning(params) {
|
|
|
38814
39123
|
return;
|
|
38815
39124
|
}
|
|
38816
39125
|
try {
|
|
38817
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
39126
|
+
const { deliverOutboundPayloads } = await import("./deliver-bdH5itRb.js").then((n) => n.n);
|
|
38818
39127
|
await deliverOutboundPayloads({
|
|
38819
39128
|
cfg: params.cfg,
|
|
38820
39129
|
channel,
|
|
@@ -39375,6 +39684,30 @@ function createTypingController(params) {
|
|
|
39375
39684
|
|
|
39376
39685
|
//#endregion
|
|
39377
39686
|
//#region src/auto-reply/reply/get-reply.ts
|
|
39687
|
+
/** Surfaces that represent real-time conversation (chat, DMs, voice). */
|
|
39688
|
+
const CONVERSATIONAL_CHAT_TYPES = new Set([
|
|
39689
|
+
"private",
|
|
39690
|
+
"group",
|
|
39691
|
+
"supergroup",
|
|
39692
|
+
"channel",
|
|
39693
|
+
"dm",
|
|
39694
|
+
"chat"
|
|
39695
|
+
]);
|
|
39696
|
+
/**
|
|
39697
|
+
* Returns true when the inbound message originates from a real-time
|
|
39698
|
+
* conversational surface (NoxSoft chat, Telegram, WhatsApp, etc.)
|
|
39699
|
+
* rather than a programmatic/execution context (gateway API, heartbeat, CLI).
|
|
39700
|
+
*/
|
|
39701
|
+
function isConversationalChannel(ctx) {
|
|
39702
|
+
if (ctx.CommandSource === "native") return false;
|
|
39703
|
+
const provider = ctx.Provider?.toLowerCase() ?? "";
|
|
39704
|
+
if (provider === "telegram" || provider === "whatsapp" || provider === "noxsoft") return true;
|
|
39705
|
+
const chatType = ctx.ChatType?.toLowerCase() ?? "";
|
|
39706
|
+
if (CONVERSATIONAL_CHAT_TYPES.has(chatType)) return true;
|
|
39707
|
+
const channel = typeof ctx.OriginatingChannel === "string" ? ctx.OriginatingChannel : "";
|
|
39708
|
+
if (channel && channel !== "gateway" && channel !== "cli") return true;
|
|
39709
|
+
return false;
|
|
39710
|
+
}
|
|
39378
39711
|
function mergeSkillFilters(channelFilter, agentFilter) {
|
|
39379
39712
|
const normalize = (list) => {
|
|
39380
39713
|
if (!Array.isArray(list)) return;
|
|
@@ -39423,6 +39756,18 @@ async function getReplyFromConfig(ctx, opts, configOverride) {
|
|
|
39423
39756
|
hasResolvedHeartbeatModelOverride = true;
|
|
39424
39757
|
}
|
|
39425
39758
|
}
|
|
39759
|
+
if (!opts?.isHeartbeat && !hasResolvedHeartbeatModelOverride && isConversationalChannel(ctx)) {
|
|
39760
|
+
const convRaw = agentCfg?.conversationalModel?.trim() ?? "";
|
|
39761
|
+
const convRef = convRaw ? resolveModelRefFromString({
|
|
39762
|
+
raw: convRaw,
|
|
39763
|
+
defaultProvider,
|
|
39764
|
+
aliasIndex
|
|
39765
|
+
}) : null;
|
|
39766
|
+
if (convRef) {
|
|
39767
|
+
provider = convRef.ref.provider;
|
|
39768
|
+
model = convRef.ref.model;
|
|
39769
|
+
}
|
|
39770
|
+
}
|
|
39426
39771
|
const workspaceDir = (await ensureAgentWorkspace({
|
|
39427
39772
|
dir: resolveAgentWorkspaceDir(cfg, agentId) ?? DEFAULT_AGENT_WORKSPACE_DIR,
|
|
39428
39773
|
ensureBootstrapFiles: !agentCfg?.skipBootstrap && !isFastTestEnv
|
|
@@ -40243,7 +40588,7 @@ function createWhatsAppLoginTool() {
|
|
|
40243
40588
|
force: Type.Optional(Type.Boolean())
|
|
40244
40589
|
}),
|
|
40245
40590
|
execute: async (_toolCallId, args) => {
|
|
40246
|
-
const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-
|
|
40591
|
+
const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-BVzUWR4o.js");
|
|
40247
40592
|
if ((args?.action ?? "start") === "wait") {
|
|
40248
40593
|
const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
|
|
40249
40594
|
return {
|
|
@@ -41173,23 +41518,23 @@ let webLoginQrPromise = null;
|
|
|
41173
41518
|
let webChannelPromise = null;
|
|
41174
41519
|
let whatsappActionsPromise = null;
|
|
41175
41520
|
function loadWebOutbound() {
|
|
41176
|
-
webOutboundPromise ??= import("./outbound-
|
|
41521
|
+
webOutboundPromise ??= import("./outbound-Bii3QonX.js").then((n) => n.t);
|
|
41177
41522
|
return webOutboundPromise;
|
|
41178
41523
|
}
|
|
41179
41524
|
function loadWebLogin() {
|
|
41180
|
-
webLoginPromise ??= import("./login-
|
|
41525
|
+
webLoginPromise ??= import("./login-WPS724ji.js").then((n) => n.n);
|
|
41181
41526
|
return webLoginPromise;
|
|
41182
41527
|
}
|
|
41183
41528
|
function loadWebLoginQr() {
|
|
41184
|
-
webLoginQrPromise ??= import("./login-qr-
|
|
41529
|
+
webLoginQrPromise ??= import("./login-qr-BVzUWR4o.js");
|
|
41185
41530
|
return webLoginQrPromise;
|
|
41186
41531
|
}
|
|
41187
41532
|
function loadWebChannel() {
|
|
41188
|
-
webChannelPromise ??= import("./web-
|
|
41533
|
+
webChannelPromise ??= import("./web-CPHrMWsv.js");
|
|
41189
41534
|
return webChannelPromise;
|
|
41190
41535
|
}
|
|
41191
41536
|
function loadWhatsAppActions() {
|
|
41192
|
-
whatsappActionsPromise ??= import("./whatsapp-actions-
|
|
41537
|
+
whatsappActionsPromise ??= import("./whatsapp-actions-Bhz79Fgg.js");
|
|
41193
41538
|
return whatsappActionsPromise;
|
|
41194
41539
|
}
|
|
41195
41540
|
function createPluginRuntime() {
|
|
@@ -43752,10 +44097,80 @@ async function runGeminiDirectAgent(params) {
|
|
|
43752
44097
|
};
|
|
43753
44098
|
}
|
|
43754
44099
|
|
|
44100
|
+
//#endregion
|
|
44101
|
+
//#region src/agents/local-model-installer.ts
|
|
44102
|
+
const DEFAULT_LOCAL_OLLAMA_MODEL = "qwen3-coder:latest";
|
|
44103
|
+
const installPromises = /* @__PURE__ */ new Map();
|
|
44104
|
+
function createInstallerError(message, cause) {
|
|
44105
|
+
const err = new Error(message);
|
|
44106
|
+
if (cause !== void 0) err.cause = cause;
|
|
44107
|
+
return err;
|
|
44108
|
+
}
|
|
44109
|
+
async function isOllamaModelInstalled(model = DEFAULT_LOCAL_OLLAMA_MODEL) {
|
|
44110
|
+
try {
|
|
44111
|
+
await runExec("ollama", ["show", model], 1e4);
|
|
44112
|
+
return true;
|
|
44113
|
+
} catch {
|
|
44114
|
+
return false;
|
|
44115
|
+
}
|
|
44116
|
+
}
|
|
44117
|
+
async function ensureLocalOllamaModelInstalled(params) {
|
|
44118
|
+
const model = params?.model?.trim() || DEFAULT_LOCAL_OLLAMA_MODEL;
|
|
44119
|
+
const timeoutMs = params?.timeoutMs ?? 72e5;
|
|
44120
|
+
const runtime = params?.runtime ?? createNonExitingRuntime();
|
|
44121
|
+
const existing = installPromises.get(model);
|
|
44122
|
+
if (existing) return await existing;
|
|
44123
|
+
const promise = (async () => {
|
|
44124
|
+
try {
|
|
44125
|
+
await runExec("ollama", ["list"], 1e4);
|
|
44126
|
+
} catch (error) {
|
|
44127
|
+
throw createInstallerError("Ollama is required but no local Ollama server is reachable. Start Ollama and retry.", error);
|
|
44128
|
+
}
|
|
44129
|
+
if (await isOllamaModelInstalled(model)) return {
|
|
44130
|
+
installed: true,
|
|
44131
|
+
pulled: false
|
|
44132
|
+
};
|
|
44133
|
+
runtime.log(`Installing local model via Ollama: ${model}`);
|
|
44134
|
+
const result = await runCommandWithTimeout([
|
|
44135
|
+
"ollama",
|
|
44136
|
+
"pull",
|
|
44137
|
+
model
|
|
44138
|
+
], { timeoutMs });
|
|
44139
|
+
if (result.code !== 0) {
|
|
44140
|
+
const detail = (result.stderr || result.stdout).trim();
|
|
44141
|
+
throw createInstallerError(`Failed to install local Ollama model "${model}".${detail ? ` ${detail}` : ""}`);
|
|
44142
|
+
}
|
|
44143
|
+
if (!await isOllamaModelInstalled(model)) throw createInstallerError(`Ollama reported success, but model "${model}" is still missing.`);
|
|
44144
|
+
runtime.log(`Local model ready: ${model}`);
|
|
44145
|
+
return {
|
|
44146
|
+
installed: true,
|
|
44147
|
+
pulled: true
|
|
44148
|
+
};
|
|
44149
|
+
})();
|
|
44150
|
+
installPromises.set(model, promise);
|
|
44151
|
+
try {
|
|
44152
|
+
return await promise;
|
|
44153
|
+
} finally {
|
|
44154
|
+
installPromises.delete(model);
|
|
44155
|
+
}
|
|
44156
|
+
}
|
|
44157
|
+
|
|
43755
44158
|
//#endregion
|
|
43756
44159
|
//#region src/agents/openai-direct-runner.ts
|
|
43757
44160
|
const log = createSubsystemLogger("agent/openai-direct");
|
|
43758
44161
|
const DEFAULT_OPENAI_BASE_URL = "https://api.openai.com/v1";
|
|
44162
|
+
const DEFAULT_PROVIDER_BASE_URLS = {
|
|
44163
|
+
openai: DEFAULT_OPENAI_BASE_URL,
|
|
44164
|
+
minimax: "https://api.minimax.io/v1",
|
|
44165
|
+
ollama: "http://127.0.0.1:11434/v1",
|
|
44166
|
+
lmstudio: "http://127.0.0.1:1234/v1"
|
|
44167
|
+
};
|
|
44168
|
+
const PROVIDER_API_KEY_HINTS = {
|
|
44169
|
+
openai: "OPENAI_API_KEY",
|
|
44170
|
+
minimax: "MINIMAX_API_KEY",
|
|
44171
|
+
ollama: "OLLAMA_API_KEY",
|
|
44172
|
+
lmstudio: "LMSTUDIO_API_KEY"
|
|
44173
|
+
};
|
|
43759
44174
|
const MODEL_MAP = {
|
|
43760
44175
|
"gpt-5.4": "gpt-5.4",
|
|
43761
44176
|
"gpt-5.2": "gpt-5.2",
|
|
@@ -43793,6 +44208,10 @@ function resolveModel(model) {
|
|
|
43793
44208
|
const key = (model ?? "default").trim().toLowerCase() || "default";
|
|
43794
44209
|
return MODEL_MAP[key] ?? key;
|
|
43795
44210
|
}
|
|
44211
|
+
function isToolUnsupportedError(body) {
|
|
44212
|
+
const normalized = body.toLowerCase();
|
|
44213
|
+
return normalized.includes("does not support tools") || normalized.includes("tool is not supported");
|
|
44214
|
+
}
|
|
43796
44215
|
/**
|
|
43797
44216
|
* Clean a JSON Schema for OpenAI's function calling.
|
|
43798
44217
|
* OpenAI is stricter than most — no unsupported keywords.
|
|
@@ -43819,8 +44238,10 @@ function cleanSchemaForOpenAI(schema) {
|
|
|
43819
44238
|
*/
|
|
43820
44239
|
async function runOpenAIDirectAgent(params) {
|
|
43821
44240
|
const started = Date.now();
|
|
44241
|
+
const provider = (params.provider ?? "openai").trim() || "openai";
|
|
43822
44242
|
const resolvedModel = resolveModel(params.model);
|
|
43823
|
-
|
|
44243
|
+
if (provider === "ollama" && resolvedModel === DEFAULT_LOCAL_OLLAMA_MODEL) await ensureLocalOllamaModelInstalled({ model: resolvedModel });
|
|
44244
|
+
log.info(`direct api exec: provider=${provider} model=${resolvedModel} promptChars=${params.prompt.length}`);
|
|
43824
44245
|
const workspaceDir = resolveRunWorkspaceDir({
|
|
43825
44246
|
workspaceDir: params.workspaceDir,
|
|
43826
44247
|
sessionKey: params.sessionKey,
|
|
@@ -43831,7 +44252,7 @@ async function runOpenAIDirectAgent(params) {
|
|
|
43831
44252
|
config: params.config,
|
|
43832
44253
|
workspaceDir,
|
|
43833
44254
|
sessionKey: params.sessionKey,
|
|
43834
|
-
modelProvider:
|
|
44255
|
+
modelProvider: provider,
|
|
43835
44256
|
modelId: resolvedModel
|
|
43836
44257
|
});
|
|
43837
44258
|
const openaiTools = executableTools.map((t) => ({
|
|
@@ -43877,7 +44298,7 @@ async function runOpenAIDirectAgent(params) {
|
|
|
43877
44298
|
docsPath: docsPath ?? void 0,
|
|
43878
44299
|
tools: executableTools,
|
|
43879
44300
|
contextFiles,
|
|
43880
|
-
modelDisplay:
|
|
44301
|
+
modelDisplay: `${provider}/${resolvedModel}`,
|
|
43881
44302
|
agentId: sessionAgentId
|
|
43882
44303
|
});
|
|
43883
44304
|
let history = await loadSessionHistory(params.sessionFile);
|
|
@@ -43901,7 +44322,8 @@ async function runOpenAIDirectAgent(params) {
|
|
|
43901
44322
|
let isDone = false;
|
|
43902
44323
|
let loopCount = 0;
|
|
43903
44324
|
const maxLoops = 20;
|
|
43904
|
-
|
|
44325
|
+
let toolUseEnabled = openaiTools.length > 0;
|
|
44326
|
+
const baseUrl = params.config?.models?.providers?.[provider]?.baseUrl?.trim() || params.config?.models?.providers?.openai?.baseUrl?.trim() || DEFAULT_PROVIDER_BASE_URLS[provider] || DEFAULT_OPENAI_BASE_URL;
|
|
43905
44327
|
while (!isDone && loopCount < maxLoops) {
|
|
43906
44328
|
loopCount++;
|
|
43907
44329
|
const requestBody = {
|
|
@@ -43911,7 +44333,7 @@ async function runOpenAIDirectAgent(params) {
|
|
|
43911
44333
|
temperature: 1,
|
|
43912
44334
|
stream: true
|
|
43913
44335
|
};
|
|
43914
|
-
if (openaiTools.length > 0) {
|
|
44336
|
+
if (toolUseEnabled && openaiTools.length > 0) {
|
|
43915
44337
|
requestBody.tools = openaiTools;
|
|
43916
44338
|
requestBody.tool_choice = "auto";
|
|
43917
44339
|
}
|
|
@@ -43923,8 +44345,8 @@ async function runOpenAIDirectAgent(params) {
|
|
|
43923
44345
|
method: "POST",
|
|
43924
44346
|
headers: {
|
|
43925
44347
|
"Content-Type": "application/json",
|
|
43926
|
-
|
|
43927
|
-
|
|
44348
|
+
"User-Agent": `anima/7.0.0 (openai-direct-runner; ${os.platform()})`,
|
|
44349
|
+
...params.apiKey?.trim() ? { Authorization: `Bearer ${params.apiKey}` } : {}
|
|
43928
44350
|
},
|
|
43929
44351
|
body: JSON.stringify(requestBody),
|
|
43930
44352
|
signal: controller.signal
|
|
@@ -43932,11 +44354,20 @@ async function runOpenAIDirectAgent(params) {
|
|
|
43932
44354
|
clearTimeout(timeoutHandle);
|
|
43933
44355
|
if (!response.ok) {
|
|
43934
44356
|
const body = await response.text().catch(() => "");
|
|
44357
|
+
if (response.status === 400 && toolUseEnabled && isToolUnsupportedError(body)) {
|
|
44358
|
+
log.warn("openai-compatible provider rejected tools; retrying without tools", {
|
|
44359
|
+
provider,
|
|
44360
|
+
model: resolvedModel
|
|
44361
|
+
});
|
|
44362
|
+
toolUseEnabled = false;
|
|
44363
|
+
continue;
|
|
44364
|
+
}
|
|
43935
44365
|
const isAuth = response.status === 401 || response.status === 403;
|
|
43936
44366
|
const isRateLimit = response.status === 429;
|
|
43937
44367
|
const rateHint = isRateLimit ? " — rate limit hit, will retry next heartbeat." : "";
|
|
43938
|
-
const
|
|
43939
|
-
|
|
44368
|
+
const apiKeyHint = PROVIDER_API_KEY_HINTS[provider] ?? "API key";
|
|
44369
|
+
const authHint = isAuth ? ` — API key may be invalid. Check ${apiKeyHint}.` : "";
|
|
44370
|
+
log.error(`${provider} api error: HTTP ${response.status}${authHint}${rateHint}`, {
|
|
43940
44371
|
status: response.status,
|
|
43941
44372
|
body: body.slice(0, 500)
|
|
43942
44373
|
});
|
|
@@ -44064,7 +44495,8 @@ async function runOpenAIDirectAgent(params) {
|
|
|
44064
44495
|
log.info(`openai api complete: ${durationMs}ms`, {
|
|
44065
44496
|
inputTokens: totalInputTokens,
|
|
44066
44497
|
outputTokens: totalOutputTokens,
|
|
44067
|
-
model: resolvedModel
|
|
44498
|
+
model: resolvedModel,
|
|
44499
|
+
provider
|
|
44068
44500
|
});
|
|
44069
44501
|
return {
|
|
44070
44502
|
status: "completed",
|
|
@@ -44074,7 +44506,7 @@ async function runOpenAIDirectAgent(params) {
|
|
|
44074
44506
|
durationMs,
|
|
44075
44507
|
agentMeta: {
|
|
44076
44508
|
model: resolvedModel,
|
|
44077
|
-
provider
|
|
44509
|
+
provider,
|
|
44078
44510
|
usage: {
|
|
44079
44511
|
input: totalInputTokens,
|
|
44080
44512
|
output: totalOutputTokens
|
|
@@ -44106,10 +44538,22 @@ async function emitAgentEvent(params, stream, data) {
|
|
|
44106
44538
|
data
|
|
44107
44539
|
});
|
|
44108
44540
|
}
|
|
44541
|
+
function resolveProviderConfig(provider, config) {
|
|
44542
|
+
const providers = config?.models?.providers ?? {};
|
|
44543
|
+
const direct = providers[provider];
|
|
44544
|
+
if (direct) return direct;
|
|
44545
|
+
const normalized = normalizeProviderId(provider);
|
|
44546
|
+
return Object.entries(providers).find(([key]) => normalizeProviderId(key) === normalized)?.[1];
|
|
44547
|
+
}
|
|
44548
|
+
function isOpenAICompatibleProviderConfig(entry) {
|
|
44549
|
+
const api = entry?.api?.trim();
|
|
44550
|
+
return api === "openai-completions" || api === "openai-responses";
|
|
44551
|
+
}
|
|
44109
44552
|
function resolveDirectAuthProvider(provider) {
|
|
44110
44553
|
if (provider === "anthropic" || provider === "claude") return "anthropic";
|
|
44111
44554
|
if (provider === "google" || provider === "gemini") return "google";
|
|
44112
44555
|
if (provider === "openai") return "openai";
|
|
44556
|
+
if (provider === "minimax") return "minimax";
|
|
44113
44557
|
return null;
|
|
44114
44558
|
}
|
|
44115
44559
|
function resolveProfileFailureReason(result) {
|
|
@@ -44201,7 +44645,7 @@ async function runDirectWithProfileFallback(params) {
|
|
|
44201
44645
|
let lastResult = null;
|
|
44202
44646
|
for (;;) {
|
|
44203
44647
|
const auth = await resolveDirectProviderAuth({
|
|
44204
|
-
provider: params.
|
|
44648
|
+
provider: params.authProvider,
|
|
44205
44649
|
config: params.config,
|
|
44206
44650
|
agentDir: params.agentDir,
|
|
44207
44651
|
preferredProfile,
|
|
@@ -44213,7 +44657,7 @@ async function runDirectWithProfileFallback(params) {
|
|
|
44213
44657
|
meta: {
|
|
44214
44658
|
durationMs: 0,
|
|
44215
44659
|
error: {
|
|
44216
|
-
message: `Auth fallback loop detected for ${params.
|
|
44660
|
+
message: `Auth fallback loop detected for ${params.authProvider}.`,
|
|
44217
44661
|
kind: "unknown"
|
|
44218
44662
|
}
|
|
44219
44663
|
}
|
|
@@ -44236,11 +44680,12 @@ async function runDirectWithProfileFallback(params) {
|
|
|
44236
44680
|
onPartialReply: params.emitPartial,
|
|
44237
44681
|
onAssistantMessageStart: params.onAssistantMessageStart
|
|
44238
44682
|
};
|
|
44239
|
-
const result = params.
|
|
44683
|
+
const result = params.runnerKind === "anthropic" ? await runAnthropicDirectAgent({
|
|
44240
44684
|
...directRunParams,
|
|
44241
44685
|
token: auth.apiKey ?? ""
|
|
44242
|
-
}) : params.
|
|
44686
|
+
}) : params.runnerKind === "openai-compatible" ? await runOpenAIDirectAgent({
|
|
44243
44687
|
...directRunParams,
|
|
44688
|
+
provider: params.openAIProvider ?? params.authProvider,
|
|
44244
44689
|
apiKey: auth.apiKey ?? ""
|
|
44245
44690
|
}) : await runGeminiDirectAgent({
|
|
44246
44691
|
...directRunParams,
|
|
@@ -44255,7 +44700,7 @@ async function runDirectWithProfileFallback(params) {
|
|
|
44255
44700
|
});
|
|
44256
44701
|
await markAuthProfileGood({
|
|
44257
44702
|
store,
|
|
44258
|
-
provider: params.
|
|
44703
|
+
provider: params.authProvider,
|
|
44259
44704
|
profileId: auth.profileId,
|
|
44260
44705
|
agentDir: params.agentDir
|
|
44261
44706
|
});
|
|
@@ -44277,22 +44722,32 @@ async function runDirectWithProfileFallback(params) {
|
|
|
44277
44722
|
}
|
|
44278
44723
|
async function resolveDirectStrategy(provider, config, agentDir) {
|
|
44279
44724
|
const directProvider = resolveDirectAuthProvider(provider);
|
|
44280
|
-
if (
|
|
44281
|
-
try {
|
|
44725
|
+
if (directProvider) try {
|
|
44282
44726
|
const auth = await resolveDirectProviderAuth({
|
|
44283
44727
|
provider: directProvider,
|
|
44284
44728
|
config,
|
|
44285
44729
|
agentDir,
|
|
44286
44730
|
store: ensureAuthProfileStore(agentDir, { allowKeychainPrompt: false })
|
|
44287
44731
|
});
|
|
44288
|
-
if (auth.apiKey) {
|
|
44732
|
+
if (auth.apiKey !== void 0) {
|
|
44289
44733
|
if (directProvider === "anthropic" && auth.apiKey.startsWith("sk-ant-oat01-")) return null;
|
|
44290
44734
|
return {
|
|
44291
|
-
kind: directProvider === "google" ? "gemini-direct" : directProvider === "openai" ? "openai-direct" : "anthropic-direct",
|
|
44735
|
+
kind: directProvider === "google" ? "gemini-direct" : directProvider === "openai" || directProvider === "minimax" ? "openai-direct" : "anthropic-direct",
|
|
44292
44736
|
provider
|
|
44293
44737
|
};
|
|
44294
44738
|
}
|
|
44295
44739
|
} catch {}
|
|
44740
|
+
if (isOpenAICompatibleProviderConfig(resolveProviderConfig(provider, config))) try {
|
|
44741
|
+
if ((await resolveApiKeyForProvider({
|
|
44742
|
+
provider,
|
|
44743
|
+
cfg: config,
|
|
44744
|
+
agentDir,
|
|
44745
|
+
store: ensureAuthProfileStore(agentDir, { allowKeychainPrompt: false })
|
|
44746
|
+
})).apiKey !== void 0) return {
|
|
44747
|
+
kind: "openai-direct",
|
|
44748
|
+
provider
|
|
44749
|
+
};
|
|
44750
|
+
} catch {}
|
|
44296
44751
|
return null;
|
|
44297
44752
|
}
|
|
44298
44753
|
async function resolveNoxSoftRunnerStrategy(params) {
|
|
@@ -44323,11 +44778,33 @@ async function runNoxSoftEmbeddedAgent(params) {
|
|
|
44323
44778
|
await params.onPartialReply?.(payload);
|
|
44324
44779
|
await emitAgentEvent(params, "assistant", { text: payload.text });
|
|
44325
44780
|
};
|
|
44326
|
-
|
|
44327
|
-
|
|
44328
|
-
|
|
44329
|
-
|
|
44330
|
-
|
|
44781
|
+
let strategy;
|
|
44782
|
+
try {
|
|
44783
|
+
strategy = await resolveNoxSoftRunnerStrategy({
|
|
44784
|
+
provider: params.provider,
|
|
44785
|
+
config: params.config,
|
|
44786
|
+
agentDir: params.agentDir
|
|
44787
|
+
});
|
|
44788
|
+
} catch (error) {
|
|
44789
|
+
const requestedProvider = normalizedRequestedRef?.provider ?? provider;
|
|
44790
|
+
const requestedModel = normalizedRequestedRef?.model;
|
|
44791
|
+
const failover = coerceToFailoverError(error, {
|
|
44792
|
+
provider: requestedProvider,
|
|
44793
|
+
model: requestedModel
|
|
44794
|
+
}) ?? new FailoverError(error instanceof Error ? error.message : String(error), {
|
|
44795
|
+
reason: classifyFailoverReason(error instanceof Error ? error.message : String(error)) ?? "unknown",
|
|
44796
|
+
provider: requestedProvider,
|
|
44797
|
+
model: requestedModel,
|
|
44798
|
+
cause: error instanceof Error ? error : void 0
|
|
44799
|
+
});
|
|
44800
|
+
await emitAgentEvent(params, "lifecycle", {
|
|
44801
|
+
phase: "error",
|
|
44802
|
+
startedAt,
|
|
44803
|
+
endedAt: Date.now(),
|
|
44804
|
+
error: failover.message
|
|
44805
|
+
});
|
|
44806
|
+
throw failover;
|
|
44807
|
+
}
|
|
44331
44808
|
if (strategy.kind === "anthropic-direct") {
|
|
44332
44809
|
await emitAgentEvent(params, "lifecycle", {
|
|
44333
44810
|
phase: "start",
|
|
@@ -44337,7 +44814,8 @@ async function runNoxSoftEmbeddedAgent(params) {
|
|
|
44337
44814
|
const result = normalizeRunnerResult({
|
|
44338
44815
|
result: await runDirectWithProfileFallback({
|
|
44339
44816
|
...params,
|
|
44340
|
-
|
|
44817
|
+
authProvider: "anthropic",
|
|
44818
|
+
runnerKind: "anthropic",
|
|
44341
44819
|
timeoutMs,
|
|
44342
44820
|
runId,
|
|
44343
44821
|
emitPartial
|
|
@@ -44384,7 +44862,8 @@ async function runNoxSoftEmbeddedAgent(params) {
|
|
|
44384
44862
|
const result = normalizeRunnerResult({
|
|
44385
44863
|
result: await runDirectWithProfileFallback({
|
|
44386
44864
|
...params,
|
|
44387
|
-
|
|
44865
|
+
authProvider: "google",
|
|
44866
|
+
runnerKind: "google",
|
|
44388
44867
|
timeoutMs,
|
|
44389
44868
|
runId,
|
|
44390
44869
|
emitPartial
|
|
@@ -44431,7 +44910,9 @@ async function runNoxSoftEmbeddedAgent(params) {
|
|
|
44431
44910
|
const result = normalizeRunnerResult({
|
|
44432
44911
|
result: await runDirectWithProfileFallback({
|
|
44433
44912
|
...params,
|
|
44434
|
-
|
|
44913
|
+
authProvider: provider === "minimax" ? "minimax" : provider === "openai" ? "openai" : provider,
|
|
44914
|
+
runnerKind: "openai-compatible",
|
|
44915
|
+
openAIProvider: provider,
|
|
44435
44916
|
timeoutMs,
|
|
44436
44917
|
runId,
|
|
44437
44918
|
emitPartial
|