@gguf/claw 2026.2.4 → 2026.2.5
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 +50 -1
- package/LICENSE +1 -1
- package/README.md +50 -43
- package/dist/{accounts-BlHoTziG.js → accounts-BgZmhIm6.js} +4 -4
- package/dist/{accounts-B5QZU96b.js → accounts-Dto4p9zB.js} +2 -2
- package/dist/{acp-cli-DU_cVWbN.js → acp-cli-BOKabdeW.js} +15 -15
- package/dist/{acp-cli-O8LcQigE.js → acp-cli-BwcHtBDk.js} +19 -19
- package/dist/{agent-BBI-UGkN.js → agent-DztWhVCH.js} +20 -13
- package/dist/{agent-DuQt3QDO.js → agent-_H-0rbHV.js} +21 -14
- package/dist/{agent-scope-jm0ZdXwM.js → agent-scope-C9VjJXEK.js} +5 -180
- package/dist/{agent-scope-CrgUOY3f.js → agent-scope-CMs5Y7l-.js} +6 -181
- package/dist/{agent-scope-COnICB_7.js → agent-scope-Csu2B6AM.js} +2 -2
- package/dist/{audit-D-OqdjQu.js → audit-BWbjQmyv.js} +182 -15
- package/dist/{audit-CWGOX7Eh.js → audit-ZY6Dk5Ec.js} +183 -16
- package/dist/{auth-viF_w60n.js → auth-CbhB03Rz.js} +2 -2
- package/dist/{auth-DK3l201_.js → auth-DksjO6WG.js} +2 -2
- package/dist/{auth-health-DcKoxhDo.js → auth-health-C4bElkgf.js} +1 -1
- package/dist/{auth-health-Ba9GTScq.js → auth-health-Ctf-_JFE.js} +1 -1
- package/dist/{auth-profiles-CfFGCDJa.js → auth-profiles-CYBuGiBb.js} +38 -13
- package/dist/build-info.json +2 -2
- package/dist/{call-CfqL-4Nc.js → call-90HgQQ8o.js} +34 -8
- package/dist/{call-CPBhMXxo.js → call-BTbA5OB4.js} +35 -9
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/canvas-host/a2ui/a2ui.bundle.js +29 -44
- package/dist/{channel-options-eRR8_a8h.js → channel-options-DrUmtdd9.js} +3 -3
- package/dist/{channel-options-BCSvD6JM.js → channel-options-uftAnT5P.js} +7 -7
- package/dist/{channel-selection-BAwiO0li.js → channel-selection-CJWYmCLf.js} +2 -2
- package/dist/{channel-selection-BCn8_qun.js → channel-selection-PZuuCvrp.js} +2 -2
- package/dist/{channel-summary-BkqO8zZ9.js → channel-summary-D9nzC5WB.js} +8 -42
- package/dist/{channel-summary-C8GoEKgH.js → channel-summary-DUiKDBLv.js} +9 -43
- package/dist/{channels-cli-CBGINubh.js → channels-cli-PAlqhOZ7.js} +56 -54
- package/dist/{channels-cli-yQo-Rzw6.js → channels-cli-PPk5wwuy.js} +59 -57
- package/dist/{channels-status-issues-C9vMMPG0.js → channels-status-issues-CJ8PJgDc.js} +1 -1
- package/dist/{channels-status-issues-DRXQXvhY.js → channels-status-issues-CrS1r5sr.js} +1 -1
- package/dist/{chrome-DlqPCh1y.js → chrome-B3IuUad-.js} +2 -2
- package/dist/{chrome-D2LUApAY.js → chrome-BNSd7Bie.js} +5 -5
- package/dist/{clack-prompter-OmDa1Hm1.js → clack-prompter-CEKDd_Vg.js} +5 -5
- package/dist/{clack-prompter-BJuVh97L.js → clack-prompter-DuBVnTKy.js} +4 -4
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/cli-DBAccB3n.js +86 -0
- package/dist/cli-DD5dW58-.js +89 -0
- package/dist/{client-zqMhLTAX.js → client-BYVbRnuQ.js} +13 -5
- package/dist/{client-cU7Xg1MO.js → client-CxbkcEZ7.js} +12 -4
- package/dist/{command-options-51bBgSJL.js → command-options-DUUINcz0.js} +3 -3
- package/dist/{commands-DMKDOFmC.js → commands-DAC7XMAT.js} +5 -4
- package/dist/completion-cli-BPIeQDFy.js +773 -0
- package/dist/{completion-cli-BoF86Oeq.js → completion-cli-BbhA_JbG.js} +62 -15
- package/dist/{config-qgIz1lbh.js → config-CAuZ-EkU.js} +93 -31
- package/dist/{config-CGsoho7J.js → config-CG73z4h6.js} +61 -28
- package/dist/{config-DCT1RAo6.js → config-CKLedg5Y.js} +92 -30
- package/dist/{config-guard-CJuPkD5Y.js → config-guard-a5ynrKd-.js} +181 -57
- package/dist/{configure-C1_0rFdQ.js → configure-B47GYdlB.js} +33 -23
- package/dist/{configure-D0OAmW2s.js → configure-ChnTy7Jz.js} +31 -21
- package/dist/{control-service-BW5sW2U1.js → control-service-CS61Road.js} +13 -6
- package/dist/{control-service-Ds9ompnU.js → control-service-D2E9NKqQ.js} +12 -5
- package/dist/control-ui/assets/{index-RwcW4Xl0.css → index-BoXosYY6.css} +1 -1
- package/dist/control-ui/assets/index-Dm6g1E26.js +7553 -0
- package/dist/control-ui/assets/index-Dm6g1E26.js.map +1 -0
- package/dist/control-ui/index.html +2 -2
- package/dist/{cron-cli-Bn_e3WGb.js → cron-cli-CssI71-c.js} +20 -19
- package/dist/{cron-cli-BVARiNrv.js → cron-cli-Ys53MyTg.js} +24 -23
- package/dist/{daemon-cli-fHXAapHL.js → daemon-cli-B6aLZ8OE.js} +28 -23
- package/dist/{daemon-cli-yy_MAYxv.js → daemon-cli-CMKd_D6h.js} +26 -21
- package/dist/{daemon-runtime-vNkYv9tq.js → daemon-runtime-BCn_QIHK.js} +64 -7
- package/dist/{daemon-runtime-ELWW7q0C.js → daemon-runtime-DMd0mgTK.js} +64 -7
- package/dist/{deliver-Bsvrattg.js → deliver-C3bnXkg5.js} +12 -10
- package/dist/{deliver-Dl8TEyHM.js → deliver-CZPhTA7x.js} +7 -5
- package/dist/{deliver-eE21zdeQ.js → deliver-Cau4HL7W.js} +11 -9
- package/dist/{deps-BrcOX0ht.js → deps-BG1LonF6.js} +2 -2
- package/dist/{deps-wXkiMwLZ.js → deps-ytXmI88x.js} +2 -2
- package/dist/{devices-cli-BjlwgE6B.js → devices-cli-Cm0ENrXH.js} +16 -16
- package/dist/{devices-cli-BVc_Ic5O.js → devices-cli-D_rnGkqO.js} +12 -12
- package/dist/{directory-cli-cc9ivzEM.js → directory-cli-CGLolzJC.js} +15 -15
- package/dist/{directory-cli-CULRQACb.js → directory-cli-CTtv_AB7.js} +19 -19
- package/dist/{dispatcher-BNB5aCZ6.js → dispatcher-6oI-H42S.js} +1 -1
- package/dist/{dns-cli-BwDdBlsK.js → dns-cli-BRkJGLqK.js} +15 -15
- package/dist/{dns-cli-B79COhmu.js → dns-cli-CoeI4817.js} +11 -11
- package/dist/{docs-cli-BM55jf4Y.js → docs-cli-BH9bMx3a.js} +7 -7
- package/dist/{docs-cli-t7IEzxr8.js → docs-cli-Bh1Coji2.js} +10 -10
- package/dist/{doctor-CT9JPoCt.js → doctor-CwSrWRCp.js} +43 -38
- package/dist/{doctor-OmfNRlMS.js → doctor-JnMryC_M.js} +40 -35
- package/dist/entry.js +12 -8
- package/dist/{env-DOcCob95.js → env-0_mKbEWW.js} +2 -2
- package/dist/{errors-DdT2Dtkb.js → errors-CZ9opC6L.js} +4 -4
- package/dist/{exec-B7WKla_0.js → exec-BMnoMcZW.js} +1 -1
- package/dist/{exec-CTo4hK94.js → exec-HEWTMJ7j.js} +1 -1
- package/dist/{exec-approvals-WdYFyy5N.js → exec-approvals-BCEFzcbC.js} +19 -2
- package/dist/{exec-approvals-CK-Umdr3.js → exec-approvals-DZixgolZ.js} +19 -2
- package/dist/{exec-approvals-cli-DD_z4fL9.js → exec-approvals-cli-D7aVv5hN.js} +19 -19
- package/dist/{exec-approvals-cli-BK2toX2b.js → exec-approvals-cli-DzLp5G7t.js} +23 -23
- package/dist/extensionAPI.js +1186 -267
- package/dist/{gateway-cli-BCC0T5iY.js → gateway-cli-DHP5DRUH.js} +910 -199
- package/dist/{gateway-cli-BTlr6Uwl.js → gateway-cli-ape0pnBU.js} +912 -202
- package/dist/{gateway-rpc-CMAcradB.js → gateway-rpc-C8rNIC0P.js} +3 -3
- package/dist/{gateway-rpc-SvVB4Fmv.js → gateway-rpc-CWnTaSEY.js} +3 -3
- package/dist/{github-copilot-auth-BHLcQ1sN.js → github-copilot-auth-B_lK1g__.js} +173 -87
- package/dist/{github-copilot-auth-BoRchp_Q.js → github-copilot-auth-C8Uf0Q03.js} +174 -88
- package/dist/{github-copilot-token-BEtihsn6.js → github-copilot-token-B3SA95yo.js} +8 -2
- package/dist/{github-copilot-token-rP-6QdKv.js → github-copilot-token-SLWintYd.js} +7 -1
- package/dist/{github-copilot-token-VZsS4013.js → github-copilot-token-pGSmVaW-.js} +8 -2
- package/dist/{gmail-setup-utils-4czdWNCN.js → gmail-setup-utils-Bi6W14MK.js} +3 -3
- package/dist/{gmail-setup-utils-B1CTmT2V.js → gmail-setup-utils-QpN7TEXS.js} +4 -4
- package/dist/{health-format-B4_A88V3.js → health-format-B3eStY5r.js} +215 -21
- package/dist/{health-format-Ct8J0fwc.js → health-format-ND2rUbQO.js} +213 -19
- package/dist/{help-format-CGcnDM3D.js → help-format-Bozi4K9H.js} +1 -1
- package/dist/{helpers-DfgBr1D5.js → helpers-BIc7L8EF.js} +1 -1
- package/dist/{helpers-Cw9kFCkw.js → helpers-D66_XoIz.js} +1 -1
- package/dist/{hooks-cli-NmkXLKmj.js → hooks-cli-BMu_-4Ru.js} +49 -49
- package/dist/{hooks-cli-B-28F__A.js → hooks-cli-CmeQxEOM.js} +45 -45
- package/dist/{hooks-status-I3Y60zVN.js → hooks-status-CKmUPU-M.js} +3 -3
- package/dist/{hooks-status-XV9oQICf.js → hooks-status-DepPyfBb.js} +4 -4
- package/dist/{image-ClOB6QDJ.js → image-Ca_PtqY7.js} +8 -6
- package/dist/{image-BYmtfVH8.js → image-CgBndiQy.js} +9 -7
- package/dist/{image-CXg7Z0WD.js → image-nRwqkmtf.js} +8 -6
- package/dist/index.js +231 -105
- package/dist/{installs-C5cjVarj.js → installs-BhEjOqPy.js} +43 -6
- package/dist/{installs-W4Pc1LJz.js → installs-DsJkyWfL.js} +43 -6
- package/dist/{links-C9fyAH-V.js → links-B5pRdmo1.js} +1 -1
- package/dist/{links-jGisPfXW.js → links-D0uzJbi6.js} +1 -1
- package/dist/{loader-BYWxo-_j.js → loader-_Pj-TZS2.js} +920 -491
- package/dist/{logging-BnUUuH3y.js → logging-Cc7m6PTv.js} +1 -1
- package/dist/{logging-CLCWl7Iu.js → logging-TXWhN8jG.js} +2 -2
- package/dist/{login-qr-C2H_iQJU.js → login-qr-BIlr0vwe.js} +12 -7
- package/dist/{login-qr-7WOtj6zE.js → login-qr-CcOWO_dR.js} +9 -4
- package/dist/{login-qr-sEcxw1_U.js → login-qr-Cmsf7BGt.js} +11 -6
- package/dist/{logs-cli-C5v4fEDj.js → logs-cli-5L3NxTsc.js} +19 -19
- package/dist/{logs-cli-nVwK5g60.js → logs-cli-DtiFFkZL.js} +15 -15
- package/dist/{manager-rDmdE7O9.js → manager-BXiIQku7.js} +9 -7
- package/dist/{manager-JSP5pLyv.js → manager-C4ILl-d3.js} +10 -8
- package/dist/{manager-BArueSTR.js → manager-LpytrxUw.js} +12 -10
- package/dist/{manifest-registry-tuAcHxrV.js → manifest-registry-C69Z-I4v.js} +1 -1
- package/dist/{manifest-registry-BFpLJJDB.js → manifest-registry-DHaa1SJb.js} +1 -1
- package/dist/{message-channel-CAFcg7mw.js → message-channel-BlgPSDAh.js} +6 -1
- package/dist/{message-channel-CQGWXVL4.js → message-channel-Bpfe5l5f.js} +7 -2
- package/dist/{model-selection-Cp1maz7B.js → model-selection-DMUrNhQP.js} +41 -16
- package/dist/{model-selection-Cs1y6OBv.js → model-selection-mzTqrNoj.js} +38 -14
- package/dist/{models-cli-n9a8pESx.js → models-cli-DHzyyLvp.js} +49 -49
- package/dist/{models-cli-DGnLcr4X.js → models-cli-EhrWjNLH.js} +53 -53
- package/dist/{net-DaJz_a4n.js → net-C8YRVt16.js} +1 -1
- package/dist/{net-DeiCIMU6.js → net-CWMMy37F.js} +1 -1
- package/dist/{node-cli-rtEq-YyU.js → node-cli-2oYmIWJt.js} +30 -30
- package/dist/{node-cli-AOO0HsM1.js → node-cli-DH7Ykym5.js} +26 -26
- package/dist/{node-service-CjtBRyjp.js → node-service-BAYHx0E7.js} +2 -2
- package/dist/{node-service-BW_LhY5w.js → node-service-Lc1LlnFH.js} +2 -2
- package/dist/{nodes-cli-Coxj5hDA.js → nodes-cli-Bc5K-0Lt.js} +22 -22
- package/dist/{nodes-cli-ChBsNXzz.js → nodes-cli-hT8yYD7S.js} +18 -18
- package/dist/{nodes-screen-Ln98EX_f.js → nodes-screen-DGlNPbk4.js} +2 -2
- package/dist/{nodes-screen-DOhGEibx.js → nodes-screen-DT5HvhJV.js} +2 -2
- package/dist/{note-BFpD-42H.js → note-B5HnoeZX.js} +2 -2
- package/dist/{note-CBiVaqG7.js → note-Ci08TSbV.js} +1 -1
- package/dist/{onboard-channels-CF7lTDNu.js → onboard-channels-D-ZQTy5V.js} +9 -8
- package/dist/{onboard-channels-CJCy7TTQ.js → onboard-channels-DKT27PdN.js} +10 -9
- package/dist/{onboard-skills-DdFGj9pt.js → onboard-skills-YobctE-R.js} +259 -194
- package/dist/{onboard-skills-fL84FI8F.js → onboard-skills-s8J5xbUr.js} +259 -194
- package/dist/{onboarding-DcN1avQK.js → onboarding-BP4-5uzE.js} +96 -60
- package/dist/{pairing-cli-DbP9KqPL.js → pairing-cli-C8KHRjaU.js} +15 -15
- package/dist/{pairing-cli-B7RQFp4r.js → pairing-cli-i7wiTmYC.js} +19 -19
- package/dist/{pairing-labels-DK2aLSd2.js → pairing-labels-BbydDT7w.js} +1 -1
- package/dist/{pairing-labels-C6I3dD-m.js → pairing-labels-CtqLxbG6.js} +1 -1
- package/dist/{pairing-store-BnMngoWQ.js → pairing-store-DFq7WtOv.js} +2 -2
- package/dist/{pairing-store-DMex6WWe.js → pairing-store-DTfv_FGA.js} +1 -1
- package/dist/{path-env-CuGC6r1F.js → path-env-DP3DsVge.js} +2 -2
- package/dist/{path-env-CUhrC5DA.js → path-env-h3xp5PqO.js} +1 -1
- package/dist/{paths-xPuk88Yf.js → paths-B4kigINg.js} +2 -2
- package/dist/{paths-50eo6DV6.js → paths-Bb0nwPeu.js} +2 -2
- package/dist/{paths-RvF0P6tQ.js → paths-CTg8F3AE.js} +1 -1
- package/dist/{pi-embedded-helpers-DJgCXZEz.js → pi-embedded-helpers-BB4uACeq.js} +175 -170
- package/dist/{pi-embedded-helpers-DiK8Qn1l.js → pi-embedded-helpers-BxqZh6U7.js} +43 -19
- package/dist/{pi-embedded-helpers-CC00lEFI.js → pi-embedded-helpers-DF8SAHU-.js} +175 -170
- package/dist/{pi-model-discovery-DjGamP_B.js → pi-model-discovery-CV2V1HHz.js} +8 -1
- package/dist/{pi-model-discovery-CnK2Dol8.js → pi-model-discovery-DzEIEgHL.js} +8 -1
- package/dist/{pi-model-discovery-CsRo-xMp.js → pi-model-discovery-EhM2JAQo.js} +8 -1
- package/dist/{pi-tools.policy-DleRi9eC.js → pi-tools.policy-BQ8N5y8a.js} +5 -4
- package/dist/{plugin-auto-enable-JQ63k0Ce.js → plugin-auto-enable-Ci7TBlH2.js} +5 -5
- package/dist/{plugin-auto-enable-CIVp3SAp.js → plugin-auto-enable-DyW8lHTT.js} +4 -4
- package/dist/plugin-sdk/index.d.ts +228 -283
- package/dist/plugin-sdk/index.js +22528 -69091
- package/dist/plugin-sdk/pi-model-discovery-Dw3A6oXH.js +37 -0
- package/dist/{plugins-TrKFfrLt.js → plugins-BUPpq5aS.js} +3 -2
- package/dist/{plugins-D1CxUobm.js → plugins-BYIWo0Cp.js} +5 -4
- package/dist/{plugins-cli-17wYux52.js → plugins-cli-CGfxctIx.js} +50 -49
- package/dist/{plugins-cli-VyQWn_LW.js → plugins-cli-Dr_R2-FY.js} +46 -45
- package/dist/{ports-B27T1uRn.js → ports-0V-Mu4ch.js} +2 -2
- package/dist/{program-BA9_uWfO.js → program-oR55MCAT.js} +84 -81
- package/dist/{progress-uNDQDtGB.js → progress-xpLtQsNY.js} +1 -1
- package/dist/{prompt-style-gfROyHgB.js → prompt-style-vzh0MGHs.js} +1 -1
- package/dist/{pw-ai-BC4dLE7k.js → pw-ai-B7Fvw8DW.js} +4 -4
- package/dist/{pw-ai-DlTBXZjY.js → pw-ai-DYpQO6HI.js} +6 -6
- package/dist/{pw-ai-BEqPnalN.js → pw-ai-tNPuRNn3.js} +4 -4
- package/dist/{qmd-manager-8xWxIGbO.js → qmd-manager-BKkFEEN_.js} +9 -8
- package/dist/{plugin-sdk/qmd-manager-DvkA01DP.js → qmd-manager-CF52nuBg.js} +6 -6
- package/dist/{qmd-manager-BSCOmXYZ.js → qmd-manager-Dub8jfbo.js} +7 -6
- package/dist/{register.subclis-CWWz9WdX.js → register.subclis-BpIR6Iqi.js} +36 -30
- package/dist/{reply-CoztdrN_.js → reply-B8pOiUNN.js} +935 -506
- package/dist/rolldown-runtime-Cbj13DAv.js +20 -0
- package/dist/{routes-yI5QIzeL.js → routes-BSfXf8a5.js} +5 -5
- package/dist/{routes-Ds-tIZFJ.js → routes-DchZU3EK.js} +6 -6
- package/dist/{rpc-HF82_iLh.js → rpc-DqI3QH59.js} +3 -3
- package/dist/{rpc-HdKLb6jx.js → rpc-Vo2ACfn-.js} +3 -3
- package/dist/{run-main-B3krVvc1.js → run-main-DrVUUPHV.js} +84 -84
- package/dist/{sandbox-BXUfp_qv.js → sandbox-CV8VwPij.js} +36 -16
- package/dist/{sandbox-Cnq9TXEn.js → sandbox-DuqLKN5J.js} +34 -14
- package/dist/{sandbox-cli-C7j1V6tb.js → sandbox-cli-C0_Hrk7i.js} +25 -24
- package/dist/{sandbox-cli-CnS9JJlO.js → sandbox-cli-Ces6i3n2.js} +21 -20
- package/dist/{security-cli-Clg7RQT3.js → security-cli-CybLT9XS.js} +32 -30
- package/dist/{security-cli-BGd4NO4l.js → security-cli-T7yrd3lb.js} +28 -26
- package/dist/{server-context-D2cv-pIA.js → server-context-vChIAqjH.js} +6 -6
- package/dist/{server-context-CM_E6wD5.js → server-context-yKyxyxOJ.js} +5 -5
- package/dist/{server-node-events-IMwI538C.js → server-node-events-BR2vHqf6.js} +44 -43
- package/dist/{server-node-events-C5EqDe_U.js → server-node-events-D39FA0NG.js} +48 -47
- package/dist/{service-CAxAjHNB.js → service-BZesBIaG.js} +3 -3
- package/dist/{service-BoDHq_LN.js → service-_JwSmGSn.js} +2 -2
- package/dist/{service-audit-Bf33pqEM.js → service-audit-C-IA4omi.js} +6 -6
- package/dist/{service-audit-DBSAGhm8.js → service-audit-DDX1kO3k.js} +6 -6
- package/dist/session-cost-usage-BTXosU1k.js +692 -0
- package/dist/session-cost-usage-CBP4Hv9D.js +692 -0
- package/dist/session-key-CZkcvAtx.js +177 -0
- package/dist/session-key-Dm2EOhrH.js +177 -0
- package/dist/{shared-ChNOqAzp.js → shared-BmtNKsPq.js} +4 -4
- package/dist/{shared-D42-KbPa.js → shared-C1XLEyB0.js} +3 -3
- package/dist/{shared-xZjRQa6y.js → shared-C8_5pNbb.js} +4 -4
- package/dist/{shared-DBGw227P.js → shared-fnGLWyZ6.js} +3 -3
- package/dist/skill-scanner-BoGjHXUZ.js +255 -0
- package/dist/skill-scanner-Bp1D9gra.js +255 -0
- package/dist/{skills-DtwGIkTI.js → skills-CmU0Q92f.js} +3 -3
- package/dist/{skills-C4b1FA1e.js → skills-D5JDj3TR.js} +5 -5
- package/dist/{skills-cli-BPkuJAz9.js → skills-cli-C1yJvIkL.js} +16 -16
- package/dist/{skills-cli-b0ZmGlmh.js → skills-cli-DBC5zFat.js} +12 -12
- package/dist/{skills-status-CSCMqNZP.js → skills-status-CEvVUD3U.js} +3 -3
- package/dist/{skills-status-CWkBweWW.js → skills-status-DtXrj3fy.js} +2 -2
- package/dist/{status-BIWeu5mN.js → status-BRXuHUsK.js} +94 -58
- package/dist/{status-CcM6W8r4.js → status-BTGXSvZ1.js} +3 -3
- package/dist/{status-PjegR5Cv.js → status-DBZ5Z7ng.js} +4 -4
- package/dist/{subsystem-46MXi6Ip.js → subsystem-CAq3uyo7.js} +1 -1
- package/dist/{system-cli-B4FEIE5d.js → system-cli-Dqnt-b0D.js} +13 -13
- package/dist/{system-cli-BL_QZ1VP.js → system-cli-SJLtqI47.js} +17 -17
- package/dist/{systemd-DAgZTW06.js → systemd-8sIc6isV.js} +2 -2
- package/dist/{systemd-CNYEkRek.js → systemd-B-3NdMmA.js} +3 -3
- package/dist/{systemd-hints-CcgK8AJE.js → systemd-hints-DO88c_nD.js} +1 -1
- package/dist/{systemd-hints-okqOoOug.js → systemd-hints-Wim4Bq6j.js} +1 -1
- package/dist/{systemd-linger-CTe0ZDxD.js → systemd-linger-N-cIaegf.js} +8 -3
- package/dist/{systemd-linger-Cbkoh9qw.js → systemd-linger-SsSOsJST.js} +8 -3
- package/dist/{table-f0EgX-YI.js → table-CJSx0YID.js} +1 -1
- package/dist/{table-DuNe7Qes.js → table-CLtGjVsx.js} +2 -2
- package/dist/{tailscale-BUcKO8Rr.js → tailscale-9MusRvOi.js} +1 -1
- package/dist/{tailscale-Cvk3mQDZ.js → tailscale-BVGD9gSD.js} +2 -2
- package/dist/{tool-display-rIUh61kT.js → tool-display-BxZG0o1b.js} +2 -2
- package/dist/{tool-display-BMYWrp0L.js → tool-display-DmgKs6-V.js} +2 -2
- package/dist/{tui-cV-R-JXi.js → tui-DPorsF4z.js} +203 -75
- package/dist/{tui-DBmFYQTk.js → tui-XH6_v0qC.js} +204 -74
- package/dist/{tui-cli-B_CKOjZ1.js → tui-cli-DRSIBDgZ.js} +30 -29
- package/dist/{tui-cli-CVdJ28TX.js → tui-cli-DV_JAtnq.js} +26 -25
- package/dist/{update-BDyA5Iqy.js → update-DNAVcIQ7.js} +3 -3
- package/dist/{update-BIB5jGcv.js → update-DzMcwy1G.js} +3 -3
- package/dist/{update-cli-p49uMWby.js → update-cli-OAcZiYuA.js} +112 -27
- package/dist/{update-cli-C5vwquH_.js → update-cli-tQcy8mkI.js} +109 -23
- package/dist/{update-runner-8XFxQglY.js → update-runner-2i8_mIG5.js} +254 -17
- package/dist/{update-runner-s8Rs8ex3.js → update-runner-BDdk_K2S.js} +254 -17
- package/dist/usage-format-DvowRSs-.js +36 -0
- package/dist/usage-format-E3bMcUMV.js +36 -0
- package/dist/{utils-Dg0Xbl6w.js → utils-CKSrBNwq.js} +2 -2
- package/dist/{webhooks-cli-DkQGQ2ae.js → webhooks-cli-BztQHEco.js} +11 -11
- package/dist/{webhooks-cli-kRN8qR7B.js → webhooks-cli-ZAn97osC.js} +15 -15
- package/dist/{widearea-dns-BIhjVRG1.js → widearea-dns-CsSylzXH.js} +2 -2
- package/dist/{widearea-dns-D4yoSNNw.js → widearea-dns-D9Al4QRv.js} +2 -2
- package/dist/{ws-log-DQ6nkLys.js → ws-log-B7UNLFLC.js} +3 -3
- package/dist/{ws-log-C4IerKk4.js → ws-log-DJIXahf0.js} +2 -2
- package/dist/{wsl-DASmek7h.js → wsl-ATjkMwMA.js} +1 -1
- package/docs/.i18n/glossary.zh-CN.json +20 -0
- package/docs/assets/macos-onboarding/01-macos-warning.jpeg +0 -0
- package/docs/assets/macos-onboarding/02-local-networks.jpeg +0 -0
- package/docs/assets/macos-onboarding/03-security-notice.png +0 -0
- package/docs/assets/macos-onboarding/04-choose-gateway.png +0 -0
- package/docs/assets/macos-onboarding/05-permissions.png +0 -0
- package/docs/bedrock.md +3 -3
- package/docs/channels/discord.md +2 -1
- package/docs/channels/feishu.md +72 -2
- package/docs/channels/telegram.md +19 -0
- package/docs/cli/devices.md +3 -0
- package/docs/cli/gateway.md +3 -0
- package/docs/cli/index.md +2 -0
- package/docs/cli/onboard.md +16 -2
- package/docs/concepts/features.md +53 -0
- package/docs/concepts/memory.md +1 -1
- package/docs/concepts/messages.md +1 -1
- package/docs/concepts/model-providers.md +11 -11
- package/docs/concepts/models.md +1 -1
- package/docs/concepts/multi-agent.md +2 -2
- package/docs/concepts/session.md +19 -3
- package/docs/docs.json +331 -182
- package/docs/gateway/cli-backends.md +7 -5
- package/docs/gateway/configuration-examples.md +4 -4
- package/docs/gateway/configuration.md +34 -16
- package/docs/gateway/heartbeat.md +61 -1
- package/docs/gateway/local-models.md +3 -3
- package/docs/gateway/network-model.md +17 -0
- package/docs/gateway/remote.md +3 -1
- package/docs/gateway/security/index.md +1 -1
- package/docs/help/faq.md +25 -26
- package/docs/help/submitting-a-pr.md +214 -0
- package/docs/help/submitting-an-issue.md +165 -0
- package/docs/index.md +127 -193
- package/docs/install/docker.md +2 -2
- package/docs/{platforms → install}/exe-dev.md +4 -3
- package/docs/{platforms → install}/fly.md +1 -1
- package/docs/install/index.md +4 -2
- package/docs/nodes/media-understanding.md +2 -2
- package/docs/platforms/digitalocean.md +2 -2
- package/docs/platforms/index.md +4 -4
- package/docs/platforms/linux.md +1 -1
- package/docs/platforms/mac/release.md +7 -7
- package/docs/platforms/oracle.md +1 -1
- package/docs/platforms/raspberry-pi.md +1 -1
- package/docs/providers/anthropic.md +3 -3
- package/docs/providers/index.md +1 -1
- package/docs/providers/minimax.md +3 -3
- package/docs/providers/models.md +1 -1
- package/docs/providers/ollama.md +60 -6
- package/docs/providers/openai.md +2 -2
- package/docs/providers/opencode.md +1 -1
- package/docs/providers/vercel-ai-gateway.md +1 -1
- package/docs/reference/credits.md +27 -0
- package/docs/reference/wizard.md +268 -0
- package/docs/start/bootstrapping.md +41 -0
- package/docs/start/docs-directory.md +64 -0
- package/docs/start/getting-started.md +109 -197
- package/docs/start/hubs.md +12 -0
- package/docs/start/onboarding.md +51 -81
- package/docs/start/openclaw.md +3 -20
- package/docs/start/quickstart.md +22 -0
- package/docs/start/setup.md +14 -1
- package/docs/start/wizard-cli-automation.md +141 -0
- package/docs/start/wizard-cli-reference.md +244 -0
- package/docs/start/wizard.md +48 -289
- package/docs/style.css +3 -0
- package/docs/testing.md +9 -9
- package/docs/token-use.md +2 -2
- package/docs/tools/index.md +3 -0
- package/docs/tools/llm-task.md +1 -1
- package/docs/tools/thinking.md +1 -0
- package/docs/tui.md +3 -0
- package/docs/vps.md +6 -6
- package/docs/web/control-ui.md +2 -0
- package/docs/web/dashboard.md +7 -7
- package/docs/zh-CN/channels/feishu.md +119 -3
- package/docs/zh-CN/concepts/features.md +59 -0
- package/docs/zh-CN/gateway/network-model.md +23 -0
- package/docs/zh-CN/gateway/remote.md +1 -1
- package/docs/zh-CN/help/faq.md +5 -5
- package/docs/zh-CN/index.md +124 -202
- package/docs/zh-CN/install/docker.md +1 -1
- package/docs/zh-CN/platforms/digitalocean.md +2 -2
- package/docs/zh-CN/platforms/index.md +4 -4
- package/docs/zh-CN/platforms/linux.md +1 -1
- package/docs/zh-CN/platforms/oracle.md +1 -1
- package/docs/zh-CN/platforms/raspberry-pi.md +1 -1
- package/docs/zh-CN/providers/ollama.md +1 -1
- package/docs/zh-CN/reference/credits.md +34 -0
- package/docs/zh-CN/start/docs-directory.md +70 -0
- package/docs/zh-CN/start/getting-started.md +1 -1
- package/docs/zh-CN/start/hubs.md +39 -30
- package/docs/zh-CN/start/quickstart.md +88 -0
- package/docs/zh-CN/vps.md +4 -4
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/bluebubbles/src/monitor.ts +9 -0
- package/extensions/copilot-proxy/index.ts +1 -0
- 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/index.ts +49 -1
- package/extensions/feishu/openclaw.plugin.json +1 -0
- package/extensions/feishu/package.json +9 -5
- package/extensions/feishu/skills/feishu-doc/SKILL.md +105 -0
- package/extensions/feishu/skills/feishu-doc/references/block-types.md +103 -0
- package/extensions/feishu/skills/feishu-drive/SKILL.md +97 -0
- package/extensions/feishu/skills/feishu-perm/SKILL.md +119 -0
- package/extensions/feishu/skills/feishu-wiki/SKILL.md +111 -0
- package/extensions/feishu/src/accounts.ts +144 -0
- package/extensions/feishu/src/bitable.ts +459 -0
- package/extensions/feishu/src/bot.ts +871 -0
- package/extensions/feishu/src/channel.ts +267 -202
- package/extensions/feishu/src/client.ts +118 -0
- package/extensions/feishu/src/config-schema.ts +152 -26
- package/extensions/feishu/src/directory.ts +177 -0
- package/extensions/feishu/src/doc-schema.ts +47 -0
- package/extensions/feishu/src/docx.ts +521 -0
- package/extensions/feishu/src/drive-schema.ts +46 -0
- package/extensions/feishu/src/drive.ts +227 -0
- package/extensions/feishu/src/media.ts +527 -0
- package/extensions/feishu/src/mention.ts +126 -0
- package/extensions/feishu/src/monitor.ts +190 -0
- package/extensions/feishu/src/onboarding.ts +278 -200
- package/extensions/feishu/src/outbound.ts +40 -0
- package/extensions/feishu/src/perm-schema.ts +52 -0
- package/extensions/feishu/src/perm.ts +173 -0
- package/extensions/feishu/src/policy.ts +104 -0
- package/extensions/feishu/src/probe.ts +44 -0
- package/extensions/feishu/src/reactions.ts +160 -0
- package/extensions/feishu/src/reply-dispatcher.ts +184 -0
- package/extensions/feishu/src/runtime.ts +14 -0
- package/extensions/feishu/src/send.ts +358 -0
- package/extensions/feishu/src/targets.ts +78 -0
- package/extensions/feishu/src/tools-config.ts +21 -0
- package/extensions/feishu/src/types.ts +75 -0
- package/extensions/feishu/src/typing.ts +80 -0
- package/extensions/feishu/src/wiki-schema.ts +55 -0
- package/extensions/feishu/src/wiki.ts +232 -0
- package/extensions/google-antigravity-auth/package.json +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/googlechat/package.json +1 -1
- package/extensions/googlechat/src/monitor.ts +12 -1
- package/extensions/imessage/package.json +1 -1
- package/extensions/line/package.json +1 -1
- package/extensions/llm-task/package.json +1 -1
- package/extensions/lobster/package.json +1 -1
- package/extensions/matrix/CHANGELOG.md +6 -0
- package/extensions/matrix/package.json +1 -1
- package/extensions/matrix/src/config-schema.ts +1 -0
- package/extensions/matrix/src/matrix/monitor/handler.ts +9 -5
- package/extensions/matrix/src/types.ts +2 -0
- package/extensions/mattermost/package.json +1 -1
- package/extensions/mattermost/src/channel.test.ts +24 -0
- package/extensions/mattermost/src/config-schema.ts +1 -0
- package/extensions/mattermost/src/mattermost/monitor.ts +9 -5
- package/extensions/mattermost/src/types.ts +2 -0
- package/extensions/memory-core/package.json +1 -1
- package/extensions/memory-lancedb/node_modules/.bin/openai +2 -2
- package/extensions/memory-lancedb/node_modules/.bin/openai.CMD +2 -2
- package/extensions/memory-lancedb/node_modules/.bin/openai.ps1 +2 -2
- package/extensions/memory-lancedb/package.json +2 -2
- package/extensions/minimax-portal-auth/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +6 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/msteams/src/monitor-handler/message-handler.ts +1 -0
- package/extensions/msteams/src/reply-dispatcher.ts +7 -5
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nextcloud-talk/src/config-schema.ts +1 -0
- package/extensions/nextcloud-talk/src/inbound.ts +10 -0
- package/extensions/nextcloud-talk/src/send.ts +7 -2
- package/extensions/nextcloud-talk/src/types.ts +2 -0
- package/extensions/nostr/CHANGELOG.md +6 -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/telegram/package.json +1 -1
- package/extensions/tlon/package.json +1 -1
- package/extensions/tlon/src/config-schema.ts +2 -0
- package/extensions/tlon/src/monitor/index.ts +41 -14
- package/extensions/tlon/src/monitor/utils.ts +1 -0
- package/extensions/twitch/CHANGELOG.md +6 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/twitch/src/config-schema.ts +2 -0
- package/extensions/twitch/src/monitor.ts +11 -0
- package/extensions/twitch/src/types.ts +2 -0
- package/extensions/voice-call/CHANGELOG.md +6 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/voice-call/src/manager.test.ts +30 -0
- package/extensions/whatsapp/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +6 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalo/src/config-schema.ts +1 -0
- package/extensions/zalo/src/monitor.ts +11 -0
- package/extensions/zalo/src/types.ts +2 -0
- package/extensions/zalouser/CHANGELOG.md +6 -0
- package/extensions/zalouser/package.json +1 -1
- package/extensions/zalouser/src/config-schema.ts +1 -0
- package/extensions/zalouser/src/monitor.ts +12 -1
- package/extensions/zalouser/src/types.ts +2 -0
- package/package.json +14 -14
- package/dist/auth-profiles-3t9aTwDR.js +0 -11
- package/dist/auth-profiles-BYvLI-zr.js +0 -7
- package/dist/auth-profiles-DswR7tzt.js +0 -7
- package/dist/cli-BxIwNzhi.js +0 -89
- package/dist/cli-wFmvNjpg.js +0 -86
- package/dist/command-format-SkzzRqR1.js +0 -52
- package/dist/completion-cli-vxe-jqwC.js +0 -390
- package/dist/config-BwVg6hhl.js +0 -13
- package/dist/config-jKcyRiMo.js +0 -10
- package/dist/configure-DaecSBSI.js +0 -60
- package/dist/configure-t-7r9i4H.js +0 -64
- package/dist/control-service-Dag9b-dU.js +0 -16
- package/dist/control-service-DsUyuevF.js +0 -12
- package/dist/control-ui/assets/index-ryaCcbyp.js +0 -4584
- package/dist/control-ui/assets/index-ryaCcbyp.js.map +0 -1
- package/dist/daemon-cli-CUkUiGoK.js +0 -53
- package/dist/daemon-cli-D6FF4tmP.js +0 -49
- package/dist/deliver-BGnJ4-vz.js +0 -12
- package/dist/deliver-CXpx7BNb.js +0 -25
- package/dist/deliver-Ds2yqOA3.js +0 -21
- package/dist/doctor-BwqqPqMX.js +0 -58
- package/dist/doctor-DGrfzoKj.js +0 -62
- package/dist/github-copilot-token-B0CUgVkW.js +0 -4
- package/dist/github-copilot-token-B_uWT0Yi.js +0 -4
- package/dist/github-copilot-token-CXUZ9Lrb.js +0 -3
- package/dist/image-CgTMdnmz.js +0 -28
- package/dist/image-D1O-ebQc.js +0 -14
- package/dist/image-njq9Rf6U.js +0 -24
- package/dist/login-qr-BfbIJ1wP.js +0 -12
- package/dist/login-qr-CGWNrSQq.js +0 -9
- package/dist/login-qr-CUV9HZCg.js +0 -16
- package/dist/manager-DKpTd5pc.js +0 -10
- package/dist/manager-Dr_eVHpN.js +0 -10
- package/dist/manager-DtFcs1NT.js +0 -14
- package/dist/pi-model-discovery-BOramrmp.js +0 -3
- package/dist/pi-model-discovery-Bj98Srfa.js +0 -3
- package/dist/pi-model-discovery-DHPwfwKu.js +0 -3
- package/dist/plugin-sdk/agent-scope-qNPdmst1.js +0 -606
- package/dist/plugin-sdk/auth-profiles-D0LhX8iB.js +0 -7
- package/dist/plugin-sdk/chrome-DMuEXuKT.js +0 -1953
- package/dist/plugin-sdk/config-D5CsedNn.js +0 -5623
- package/dist/plugin-sdk/deliver-DOlMKwJ9.js +0 -12
- package/dist/plugin-sdk/deliver-Dl2ednkv.js +0 -2555
- package/dist/plugin-sdk/exec-CjyVHUuE.js +0 -1107
- package/dist/plugin-sdk/github-copilot-token-BoPqI-5_.js +0 -97
- package/dist/plugin-sdk/github-copilot-token-YEH9Bwov.js +0 -4
- package/dist/plugin-sdk/image-B_t0xXCb.js +0 -1419
- package/dist/plugin-sdk/image-DYTdodiR.js +0 -14
- package/dist/plugin-sdk/login-qr-B7ec28AI.js +0 -9
- package/dist/plugin-sdk/login-qr-BVBRxQRt.js +0 -470
- package/dist/plugin-sdk/manager-B-EITu1a.js +0 -10
- package/dist/plugin-sdk/manager-WCGzgWdf.js +0 -2868
- package/dist/plugin-sdk/model-selection-Bo7pocNu.js +0 -2667
- package/dist/plugin-sdk/paths-BFxmmTT5.js +0 -164
- package/dist/plugin-sdk/paths-Bkjq_KcG.js +0 -40
- package/dist/plugin-sdk/pi-embedded-helpers-fm5_Eokw.js +0 -8755
- package/dist/plugin-sdk/pi-model-discovery-CLgDNnGq.js +0 -13
- package/dist/plugin-sdk/pi-model-discovery-P2-pVRmz.js +0 -3
- package/dist/plugin-sdk/pw-ai-BN7Cwl9J.js +0 -1649
- package/dist/qmd-manager-CzArLjr6.js +0 -615
- package/dist/redact-BR0IM00e.js +0 -94
- package/dist/register.subclis-Bo-xmQ-W.js +0 -342
- package/dist/register.subclis-BuT7ZpPf.js +0 -3
- package/dist/restart-sentinel-CdcBcziq.js +0 -65
- package/dist/restart-sentinel-DywisDen.js +0 -65
- package/dist/runtime-guard-BG6JybtL.js +0 -60
- package/dist/runtime-guard-DvBpNsbR.js +0 -60
- package/dist/sqlite-Dz6S6ijV.js +0 -215
- package/dist/status.update-2ZdxeIeT.js +0 -79
- package/dist/status.update-ChwCPLBt.js +0 -79
- package/dist/systemd-linger-BZb1Uwsd.js +0 -7
- package/dist/systemd-linger-DemNCT5l.js +0 -9
- package/dist/transcript-events-fUhPZcB5.js +0 -17
- package/docs/_config.yml +0 -53
- package/docs/_layouts/default.html +0 -145
- package/docs/assets/docs-chat-widget.js +0 -667
- package/docs/assets/markdown.css +0 -179
- package/docs/assets/terminal.css +0 -473
- package/docs/assets/theme.js +0 -55
- package/extensions/feishu/README.md +0 -47
- /package/dist/{archive-BrH5WBhI.js → archive-D0z3LZDK.js} +0 -0
- /package/dist/{archive-mFgwsll-.js → archive-Dy3Ezb-5.js} +0 -0
- /package/dist/{boolean-CE7i9tBR.js → boolean-BgXe2hyu.js} +0 -0
- /package/dist/{brew-0HRgjHZw.js → brew-CAcErcKz.js} +0 -0
- /package/dist/{brew-Qdppmdlx.js → brew-CcZV0dSS.js} +0 -0
- /package/dist/{cli-utils-CukoNm8O.js → cli-utils-BkRQdAoC.js} +0 -0
- /package/dist/{cli-utils-DFbPmfWB.js → cli-utils-ByANh4Sp.js} +0 -0
- /package/dist/{plugin-sdk/command-format-CFzL448l.js → command-format-CFzL448l.js} +0 -0
- /package/dist/{command-format-BQK1OIvH.js → command-format-ChfKqObn.js} +0 -0
- /package/dist/{command-format-3xiXujG0.js → command-format-ayFsmwwz.js} +0 -0
- /package/dist/{constants-3er_81qc.js → constants-D1op9uGI.js} +0 -0
- /package/dist/{constants-CLUi6T-M.js → constants-HPrOsATF.js} +0 -0
- /package/dist/{exec-BIMFe4XS.js → exec-B8JKbXKW.js} +0 -0
- /package/dist/{format-BnjMmWWT.js → format-B7OjpGnt.js} +0 -0
- /package/dist/{format-hyFOmVZc.js → format-CS7EI0xF.js} +0 -0
- /package/dist/{help-format-af1XWYxC.js → help-format-CfZ94KRN.js} +0 -0
- /package/dist/{helpers-HZ-6iA1e.js → helpers-5yebzF4C.js} +0 -0
- /package/dist/{helpers-uGhPZ_kK.js → helpers-EKm3X92T.js} +0 -0
- /package/dist/{is-main-DD0MG3N8.js → is-main-B6kCyqsv.js} +0 -0
- /package/dist/{is-main-DrJg4t1R.js → is-main-qJ675wPV.js} +0 -0
- /package/dist/{logging-BdnOSVPD.js → logging-BWRYHvLp.js} +0 -0
- /package/dist/{logging-fywhKCmE.js → logging-CfEk_PnX.js} +0 -0
- /package/dist/{openclaw-root-Dean7Fp2.js → openclaw-root-9ILYSmJ9.js} +0 -0
- /package/dist/{openclaw-root-CJKDUIBP.js → openclaw-root-Cvotktkd.js} +0 -0
- /package/dist/{parse-BB0Cqon8.js → parse-BZz5lHzQ.js} +0 -0
- /package/dist/{parse-DLFPuO7w.js → parse-gTOGQPH6.js} +0 -0
- /package/dist/{parse-log-line-B3U8Kflp.js → parse-log-line-C6szvNBZ.js} +0 -0
- /package/dist/{parse-log-line-BmyeB3J2.js → parse-log-line-CARp5QyJ.js} +0 -0
- /package/dist/{parse-timeout-BIB19Upi.js → parse-timeout-CbVKLZ4B.js} +0 -0
- /package/dist/{parse-timeout-CmBmmqZZ.js → parse-timeout-Du-wHHNi.js} +0 -0
- /package/dist/{paths-VslOJiD2.js → paths-B1kfl4h5.js} +0 -0
- /package/dist/{paths-BDd7_JUB.js → paths-scjhy7N2.js} +0 -0
- /package/dist/{progress-Dn3kWpaL.js → progress-Da1ehW-x.js} +0 -0
- /package/dist/{prompt-style-D5D7b3cX.js → prompt-style-Dc0C5HC9.js} +0 -0
- /package/dist/{prompts-CIDznuZR.js → prompts-CXLLIBwP.js} +0 -0
- /package/dist/{prompts-CSlE5VZB.js → prompts-FbZThK8w.js} +0 -0
- /package/dist/{redact-BKh-zp-c.js → redact-B8YiFlwn.js} +0 -0
- /package/dist/{plugin-sdk/redact-wH73ib3-.js → redact-BIMJ3ntQ.js} +0 -0
- /package/dist/{redact-CDPAzwi8.js → redact-DJCFY628.js} +0 -0
- /package/dist/{plugin-sdk/sqlite-CqVsQPIl.js → sqlite-BKl1HJFe.js} +0 -0
- /package/dist/{sqlite-C59YNxdL.js → sqlite-Dnmf3LS7.js} +0 -0
- /package/dist/{sqlite-B_L84oiu.js → sqlite-DqUEZnjO.js} +0 -0
- /package/dist/{status-DkW6wMxZ.js → status-CRIEi8Mc.js} +0 -0
- /package/dist/{status-IDW1pkc0.js → status-tCu4RWZH.js} +0 -0
- /package/dist/{tailnet-BijMqkqa.js → tailnet-Byp3obcc.js} +0 -0
- /package/dist/{tailnet-Bk5cGmwE.js → tailnet-DLDGNuH2.js} +0 -0
- /package/dist/{plugin-sdk/transcript-events-DOI14YeV.js → transcript-events-CZ8CG4ht.js} +0 -0
- /package/dist/{transcript-events-Cj85Mq0h.js → transcript-events-ChU6IQwp.js} +0 -0
- /package/dist/{transcript-events-DW_H__a1.js → transcript-events-JLH5W4He.js} +0 -0
- /package/dist/{utils-PmTbZoD1.js → utils-DX85MiPR.js} +0 -0
- /package/dist/{ws-Cxo2p9fH.js → ws-CEcdsnN9.js} +0 -0
- /package/dist/{ws-DlSkA_BG.js → ws-D091yo4M.js} +0 -0
- /package/docs/{platforms → install}/gcp.md +0 -0
- /package/docs/{platforms → install}/hetzner.md +0 -0
- /package/docs/{platforms → install}/macos-vm.md +0 -0
- /package/docs/{northflank.mdx → install/northflank.mdx} +0 -0
- /package/docs/{railway.mdx → install/railway.mdx} +0 -0
- /package/docs/{render.mdx → install/render.mdx} +0 -0
- /package/docs/zh-CN/{platforms → install}/exe-dev.md +0 -0
- /package/docs/zh-CN/{platforms → install}/fly.md +0 -0
- /package/docs/zh-CN/{platforms → install}/gcp.md +0 -0
- /package/docs/zh-CN/{platforms → install}/hetzner.md +0 -0
- /package/docs/zh-CN/{platforms → install}/macos-vm.md +0 -0
- /package/docs/zh-CN/{northflank.mdx → install/northflank.mdx} +0 -0
- /package/docs/zh-CN/{railway.mdx → install/railway.mdx} +0 -0
- /package/docs/zh-CN/{render.mdx → install/render.mdx} +0 -0
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
//#region src/sessions/session-key-utils.ts
|
|
2
|
+
function parseAgentSessionKey(sessionKey) {
|
|
3
|
+
const raw = (sessionKey ?? "").trim();
|
|
4
|
+
if (!raw) return null;
|
|
5
|
+
const parts = raw.split(":").filter(Boolean);
|
|
6
|
+
if (parts.length < 3) return null;
|
|
7
|
+
if (parts[0] !== "agent") return null;
|
|
8
|
+
const agentId = parts[1]?.trim();
|
|
9
|
+
const rest = parts.slice(2).join(":");
|
|
10
|
+
if (!agentId || !rest) return null;
|
|
11
|
+
return {
|
|
12
|
+
agentId,
|
|
13
|
+
rest
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
function isSubagentSessionKey(sessionKey) {
|
|
17
|
+
const raw = (sessionKey ?? "").trim();
|
|
18
|
+
if (!raw) return false;
|
|
19
|
+
if (raw.toLowerCase().startsWith("subagent:")) return true;
|
|
20
|
+
const parsed = parseAgentSessionKey(raw);
|
|
21
|
+
return Boolean((parsed?.rest ?? "").toLowerCase().startsWith("subagent:"));
|
|
22
|
+
}
|
|
23
|
+
function isAcpSessionKey(sessionKey) {
|
|
24
|
+
const raw = (sessionKey ?? "").trim();
|
|
25
|
+
if (!raw) return false;
|
|
26
|
+
if (raw.toLowerCase().startsWith("acp:")) return true;
|
|
27
|
+
const parsed = parseAgentSessionKey(raw);
|
|
28
|
+
return Boolean((parsed?.rest ?? "").toLowerCase().startsWith("acp:"));
|
|
29
|
+
}
|
|
30
|
+
const THREAD_SESSION_MARKERS = [":thread:", ":topic:"];
|
|
31
|
+
function resolveThreadParentSessionKey(sessionKey) {
|
|
32
|
+
const raw = (sessionKey ?? "").trim();
|
|
33
|
+
if (!raw) return null;
|
|
34
|
+
const normalized = raw.toLowerCase();
|
|
35
|
+
let idx = -1;
|
|
36
|
+
for (const marker of THREAD_SESSION_MARKERS) {
|
|
37
|
+
const candidate = normalized.lastIndexOf(marker);
|
|
38
|
+
if (candidate > idx) idx = candidate;
|
|
39
|
+
}
|
|
40
|
+
if (idx <= 0) return null;
|
|
41
|
+
const parent = raw.slice(0, idx).trim();
|
|
42
|
+
return parent ? parent : null;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
//#endregion
|
|
46
|
+
//#region src/routing/session-key.ts
|
|
47
|
+
const DEFAULT_AGENT_ID = "main";
|
|
48
|
+
const DEFAULT_MAIN_KEY = "main";
|
|
49
|
+
const DEFAULT_ACCOUNT_ID = "default";
|
|
50
|
+
const VALID_ID_RE = /^[a-z0-9][a-z0-9_-]{0,63}$/i;
|
|
51
|
+
const INVALID_CHARS_RE = /[^a-z0-9_-]+/g;
|
|
52
|
+
const LEADING_DASH_RE = /^-+/;
|
|
53
|
+
const TRAILING_DASH_RE = /-+$/;
|
|
54
|
+
function normalizeToken(value) {
|
|
55
|
+
return (value ?? "").trim().toLowerCase();
|
|
56
|
+
}
|
|
57
|
+
function normalizeMainKey(value) {
|
|
58
|
+
const trimmed = (value ?? "").trim();
|
|
59
|
+
return trimmed ? trimmed.toLowerCase() : DEFAULT_MAIN_KEY;
|
|
60
|
+
}
|
|
61
|
+
function toAgentRequestSessionKey(storeKey) {
|
|
62
|
+
const raw = (storeKey ?? "").trim();
|
|
63
|
+
if (!raw) return;
|
|
64
|
+
return parseAgentSessionKey(raw)?.rest ?? raw;
|
|
65
|
+
}
|
|
66
|
+
function toAgentStoreSessionKey(params) {
|
|
67
|
+
const raw = (params.requestKey ?? "").trim();
|
|
68
|
+
if (!raw || raw === DEFAULT_MAIN_KEY) return buildAgentMainSessionKey({
|
|
69
|
+
agentId: params.agentId,
|
|
70
|
+
mainKey: params.mainKey
|
|
71
|
+
});
|
|
72
|
+
const lowered = raw.toLowerCase();
|
|
73
|
+
if (lowered.startsWith("agent:")) return lowered;
|
|
74
|
+
if (lowered.startsWith("subagent:")) return `agent:${normalizeAgentId(params.agentId)}:${lowered}`;
|
|
75
|
+
return `agent:${normalizeAgentId(params.agentId)}:${lowered}`;
|
|
76
|
+
}
|
|
77
|
+
function resolveAgentIdFromSessionKey(sessionKey) {
|
|
78
|
+
return normalizeAgentId(parseAgentSessionKey(sessionKey)?.agentId ?? DEFAULT_AGENT_ID);
|
|
79
|
+
}
|
|
80
|
+
function normalizeAgentId(value) {
|
|
81
|
+
const trimmed = (value ?? "").trim();
|
|
82
|
+
if (!trimmed) return DEFAULT_AGENT_ID;
|
|
83
|
+
if (VALID_ID_RE.test(trimmed)) return trimmed.toLowerCase();
|
|
84
|
+
return trimmed.toLowerCase().replace(INVALID_CHARS_RE, "-").replace(LEADING_DASH_RE, "").replace(TRAILING_DASH_RE, "").slice(0, 64) || DEFAULT_AGENT_ID;
|
|
85
|
+
}
|
|
86
|
+
function sanitizeAgentId(value) {
|
|
87
|
+
const trimmed = (value ?? "").trim();
|
|
88
|
+
if (!trimmed) return DEFAULT_AGENT_ID;
|
|
89
|
+
if (VALID_ID_RE.test(trimmed)) return trimmed.toLowerCase();
|
|
90
|
+
return trimmed.toLowerCase().replace(INVALID_CHARS_RE, "-").replace(LEADING_DASH_RE, "").replace(TRAILING_DASH_RE, "").slice(0, 64) || DEFAULT_AGENT_ID;
|
|
91
|
+
}
|
|
92
|
+
function normalizeAccountId(value) {
|
|
93
|
+
const trimmed = (value ?? "").trim();
|
|
94
|
+
if (!trimmed) return DEFAULT_ACCOUNT_ID;
|
|
95
|
+
if (VALID_ID_RE.test(trimmed)) return trimmed.toLowerCase();
|
|
96
|
+
return trimmed.toLowerCase().replace(INVALID_CHARS_RE, "-").replace(LEADING_DASH_RE, "").replace(TRAILING_DASH_RE, "").slice(0, 64) || DEFAULT_ACCOUNT_ID;
|
|
97
|
+
}
|
|
98
|
+
function buildAgentMainSessionKey(params) {
|
|
99
|
+
return `agent:${normalizeAgentId(params.agentId)}:${normalizeMainKey(params.mainKey)}`;
|
|
100
|
+
}
|
|
101
|
+
function buildAgentPeerSessionKey(params) {
|
|
102
|
+
const peerKind = params.peerKind ?? "dm";
|
|
103
|
+
if (peerKind === "dm") {
|
|
104
|
+
const dmScope = params.dmScope ?? "main";
|
|
105
|
+
let peerId = (params.peerId ?? "").trim();
|
|
106
|
+
const linkedPeerId = dmScope === "main" ? null : resolveLinkedPeerId({
|
|
107
|
+
identityLinks: params.identityLinks,
|
|
108
|
+
channel: params.channel,
|
|
109
|
+
peerId
|
|
110
|
+
});
|
|
111
|
+
if (linkedPeerId) peerId = linkedPeerId;
|
|
112
|
+
peerId = peerId.toLowerCase();
|
|
113
|
+
if (dmScope === "per-account-channel-peer" && peerId) {
|
|
114
|
+
const channel = (params.channel ?? "").trim().toLowerCase() || "unknown";
|
|
115
|
+
const accountId = normalizeAccountId(params.accountId);
|
|
116
|
+
return `agent:${normalizeAgentId(params.agentId)}:${channel}:${accountId}:dm:${peerId}`;
|
|
117
|
+
}
|
|
118
|
+
if (dmScope === "per-channel-peer" && peerId) {
|
|
119
|
+
const channel = (params.channel ?? "").trim().toLowerCase() || "unknown";
|
|
120
|
+
return `agent:${normalizeAgentId(params.agentId)}:${channel}:dm:${peerId}`;
|
|
121
|
+
}
|
|
122
|
+
if (dmScope === "per-peer" && peerId) return `agent:${normalizeAgentId(params.agentId)}:dm:${peerId}`;
|
|
123
|
+
return buildAgentMainSessionKey({
|
|
124
|
+
agentId: params.agentId,
|
|
125
|
+
mainKey: params.mainKey
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
const channel = (params.channel ?? "").trim().toLowerCase() || "unknown";
|
|
129
|
+
const peerId = ((params.peerId ?? "").trim() || "unknown").toLowerCase();
|
|
130
|
+
return `agent:${normalizeAgentId(params.agentId)}:${channel}:${peerKind}:${peerId}`;
|
|
131
|
+
}
|
|
132
|
+
function resolveLinkedPeerId(params) {
|
|
133
|
+
const identityLinks = params.identityLinks;
|
|
134
|
+
if (!identityLinks) return null;
|
|
135
|
+
const peerId = params.peerId.trim();
|
|
136
|
+
if (!peerId) return null;
|
|
137
|
+
const candidates = /* @__PURE__ */ new Set();
|
|
138
|
+
const rawCandidate = normalizeToken(peerId);
|
|
139
|
+
if (rawCandidate) candidates.add(rawCandidate);
|
|
140
|
+
const channel = normalizeToken(params.channel);
|
|
141
|
+
if (channel) {
|
|
142
|
+
const scopedCandidate = normalizeToken(`${channel}:${peerId}`);
|
|
143
|
+
if (scopedCandidate) candidates.add(scopedCandidate);
|
|
144
|
+
}
|
|
145
|
+
if (candidates.size === 0) return null;
|
|
146
|
+
for (const [canonical, ids] of Object.entries(identityLinks)) {
|
|
147
|
+
const canonicalName = canonical.trim();
|
|
148
|
+
if (!canonicalName) continue;
|
|
149
|
+
if (!Array.isArray(ids)) continue;
|
|
150
|
+
for (const id of ids) {
|
|
151
|
+
const normalized = normalizeToken(id);
|
|
152
|
+
if (normalized && candidates.has(normalized)) return canonicalName;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
function buildGroupHistoryKey(params) {
|
|
158
|
+
const channel = normalizeToken(params.channel) || "unknown";
|
|
159
|
+
const accountId = normalizeAccountId(params.accountId);
|
|
160
|
+
const peerId = params.peerId.trim().toLowerCase() || "unknown";
|
|
161
|
+
return `${channel}:${accountId}:${params.peerKind}:${peerId}`;
|
|
162
|
+
}
|
|
163
|
+
function resolveThreadSessionKeys(params) {
|
|
164
|
+
const threadId = (params.threadId ?? "").trim();
|
|
165
|
+
if (!threadId) return {
|
|
166
|
+
sessionKey: params.baseSessionKey,
|
|
167
|
+
parentSessionKey: void 0
|
|
168
|
+
};
|
|
169
|
+
const normalizedThreadId = threadId.toLowerCase();
|
|
170
|
+
return {
|
|
171
|
+
sessionKey: params.useSuffix ?? true ? `${params.baseSessionKey}:thread:${normalizedThreadId}` : params.baseSessionKey,
|
|
172
|
+
parentSessionKey: params.parentSessionKey
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
//#endregion
|
|
177
|
+
export { parseAgentSessionKey as _, buildAgentPeerSessionKey as a, normalizeAgentId as c, resolveThreadSessionKeys as d, sanitizeAgentId as f, isSubagentSessionKey as g, isAcpSessionKey as h, buildAgentMainSessionKey as i, normalizeMainKey as l, toAgentStoreSessionKey as m, DEFAULT_AGENT_ID as n, buildGroupHistoryKey as o, toAgentRequestSessionKey as p, DEFAULT_MAIN_KEY as r, normalizeAccountId as s, DEFAULT_ACCOUNT_ID as t, resolveAgentIdFromSessionKey as u, resolveThreadParentSessionKey as v };
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
//#region src/sessions/session-key-utils.ts
|
|
2
|
+
function parseAgentSessionKey(sessionKey) {
|
|
3
|
+
const raw = (sessionKey ?? "").trim();
|
|
4
|
+
if (!raw) return null;
|
|
5
|
+
const parts = raw.split(":").filter(Boolean);
|
|
6
|
+
if (parts.length < 3) return null;
|
|
7
|
+
if (parts[0] !== "agent") return null;
|
|
8
|
+
const agentId = parts[1]?.trim();
|
|
9
|
+
const rest = parts.slice(2).join(":");
|
|
10
|
+
if (!agentId || !rest) return null;
|
|
11
|
+
return {
|
|
12
|
+
agentId,
|
|
13
|
+
rest
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
function isSubagentSessionKey(sessionKey) {
|
|
17
|
+
const raw = (sessionKey ?? "").trim();
|
|
18
|
+
if (!raw) return false;
|
|
19
|
+
if (raw.toLowerCase().startsWith("subagent:")) return true;
|
|
20
|
+
const parsed = parseAgentSessionKey(raw);
|
|
21
|
+
return Boolean((parsed?.rest ?? "").toLowerCase().startsWith("subagent:"));
|
|
22
|
+
}
|
|
23
|
+
function isAcpSessionKey(sessionKey) {
|
|
24
|
+
const raw = (sessionKey ?? "").trim();
|
|
25
|
+
if (!raw) return false;
|
|
26
|
+
if (raw.toLowerCase().startsWith("acp:")) return true;
|
|
27
|
+
const parsed = parseAgentSessionKey(raw);
|
|
28
|
+
return Boolean((parsed?.rest ?? "").toLowerCase().startsWith("acp:"));
|
|
29
|
+
}
|
|
30
|
+
const THREAD_SESSION_MARKERS = [":thread:", ":topic:"];
|
|
31
|
+
function resolveThreadParentSessionKey(sessionKey) {
|
|
32
|
+
const raw = (sessionKey ?? "").trim();
|
|
33
|
+
if (!raw) return null;
|
|
34
|
+
const normalized = raw.toLowerCase();
|
|
35
|
+
let idx = -1;
|
|
36
|
+
for (const marker of THREAD_SESSION_MARKERS) {
|
|
37
|
+
const candidate = normalized.lastIndexOf(marker);
|
|
38
|
+
if (candidate > idx) idx = candidate;
|
|
39
|
+
}
|
|
40
|
+
if (idx <= 0) return null;
|
|
41
|
+
const parent = raw.slice(0, idx).trim();
|
|
42
|
+
return parent ? parent : null;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
//#endregion
|
|
46
|
+
//#region src/routing/session-key.ts
|
|
47
|
+
const DEFAULT_AGENT_ID = "main";
|
|
48
|
+
const DEFAULT_MAIN_KEY = "main";
|
|
49
|
+
const DEFAULT_ACCOUNT_ID = "default";
|
|
50
|
+
const VALID_ID_RE = /^[a-z0-9][a-z0-9_-]{0,63}$/i;
|
|
51
|
+
const INVALID_CHARS_RE = /[^a-z0-9_-]+/g;
|
|
52
|
+
const LEADING_DASH_RE = /^-+/;
|
|
53
|
+
const TRAILING_DASH_RE = /-+$/;
|
|
54
|
+
function normalizeToken(value) {
|
|
55
|
+
return (value ?? "").trim().toLowerCase();
|
|
56
|
+
}
|
|
57
|
+
function normalizeMainKey(value) {
|
|
58
|
+
const trimmed = (value ?? "").trim();
|
|
59
|
+
return trimmed ? trimmed.toLowerCase() : DEFAULT_MAIN_KEY;
|
|
60
|
+
}
|
|
61
|
+
function toAgentRequestSessionKey(storeKey) {
|
|
62
|
+
const raw = (storeKey ?? "").trim();
|
|
63
|
+
if (!raw) return;
|
|
64
|
+
return parseAgentSessionKey(raw)?.rest ?? raw;
|
|
65
|
+
}
|
|
66
|
+
function toAgentStoreSessionKey(params) {
|
|
67
|
+
const raw = (params.requestKey ?? "").trim();
|
|
68
|
+
if (!raw || raw === DEFAULT_MAIN_KEY) return buildAgentMainSessionKey({
|
|
69
|
+
agentId: params.agentId,
|
|
70
|
+
mainKey: params.mainKey
|
|
71
|
+
});
|
|
72
|
+
const lowered = raw.toLowerCase();
|
|
73
|
+
if (lowered.startsWith("agent:")) return lowered;
|
|
74
|
+
if (lowered.startsWith("subagent:")) return `agent:${normalizeAgentId(params.agentId)}:${lowered}`;
|
|
75
|
+
return `agent:${normalizeAgentId(params.agentId)}:${lowered}`;
|
|
76
|
+
}
|
|
77
|
+
function resolveAgentIdFromSessionKey(sessionKey) {
|
|
78
|
+
return normalizeAgentId(parseAgentSessionKey(sessionKey)?.agentId ?? DEFAULT_AGENT_ID);
|
|
79
|
+
}
|
|
80
|
+
function normalizeAgentId(value) {
|
|
81
|
+
const trimmed = (value ?? "").trim();
|
|
82
|
+
if (!trimmed) return DEFAULT_AGENT_ID;
|
|
83
|
+
if (VALID_ID_RE.test(trimmed)) return trimmed.toLowerCase();
|
|
84
|
+
return trimmed.toLowerCase().replace(INVALID_CHARS_RE, "-").replace(LEADING_DASH_RE, "").replace(TRAILING_DASH_RE, "").slice(0, 64) || DEFAULT_AGENT_ID;
|
|
85
|
+
}
|
|
86
|
+
function sanitizeAgentId(value) {
|
|
87
|
+
const trimmed = (value ?? "").trim();
|
|
88
|
+
if (!trimmed) return DEFAULT_AGENT_ID;
|
|
89
|
+
if (VALID_ID_RE.test(trimmed)) return trimmed.toLowerCase();
|
|
90
|
+
return trimmed.toLowerCase().replace(INVALID_CHARS_RE, "-").replace(LEADING_DASH_RE, "").replace(TRAILING_DASH_RE, "").slice(0, 64) || DEFAULT_AGENT_ID;
|
|
91
|
+
}
|
|
92
|
+
function normalizeAccountId(value) {
|
|
93
|
+
const trimmed = (value ?? "").trim();
|
|
94
|
+
if (!trimmed) return DEFAULT_ACCOUNT_ID;
|
|
95
|
+
if (VALID_ID_RE.test(trimmed)) return trimmed.toLowerCase();
|
|
96
|
+
return trimmed.toLowerCase().replace(INVALID_CHARS_RE, "-").replace(LEADING_DASH_RE, "").replace(TRAILING_DASH_RE, "").slice(0, 64) || DEFAULT_ACCOUNT_ID;
|
|
97
|
+
}
|
|
98
|
+
function buildAgentMainSessionKey(params) {
|
|
99
|
+
return `agent:${normalizeAgentId(params.agentId)}:${normalizeMainKey(params.mainKey)}`;
|
|
100
|
+
}
|
|
101
|
+
function buildAgentPeerSessionKey(params) {
|
|
102
|
+
const peerKind = params.peerKind ?? "dm";
|
|
103
|
+
if (peerKind === "dm") {
|
|
104
|
+
const dmScope = params.dmScope ?? "main";
|
|
105
|
+
let peerId = (params.peerId ?? "").trim();
|
|
106
|
+
const linkedPeerId = dmScope === "main" ? null : resolveLinkedPeerId({
|
|
107
|
+
identityLinks: params.identityLinks,
|
|
108
|
+
channel: params.channel,
|
|
109
|
+
peerId
|
|
110
|
+
});
|
|
111
|
+
if (linkedPeerId) peerId = linkedPeerId;
|
|
112
|
+
peerId = peerId.toLowerCase();
|
|
113
|
+
if (dmScope === "per-account-channel-peer" && peerId) {
|
|
114
|
+
const channel = (params.channel ?? "").trim().toLowerCase() || "unknown";
|
|
115
|
+
const accountId = normalizeAccountId(params.accountId);
|
|
116
|
+
return `agent:${normalizeAgentId(params.agentId)}:${channel}:${accountId}:dm:${peerId}`;
|
|
117
|
+
}
|
|
118
|
+
if (dmScope === "per-channel-peer" && peerId) {
|
|
119
|
+
const channel = (params.channel ?? "").trim().toLowerCase() || "unknown";
|
|
120
|
+
return `agent:${normalizeAgentId(params.agentId)}:${channel}:dm:${peerId}`;
|
|
121
|
+
}
|
|
122
|
+
if (dmScope === "per-peer" && peerId) return `agent:${normalizeAgentId(params.agentId)}:dm:${peerId}`;
|
|
123
|
+
return buildAgentMainSessionKey({
|
|
124
|
+
agentId: params.agentId,
|
|
125
|
+
mainKey: params.mainKey
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
const channel = (params.channel ?? "").trim().toLowerCase() || "unknown";
|
|
129
|
+
const peerId = ((params.peerId ?? "").trim() || "unknown").toLowerCase();
|
|
130
|
+
return `agent:${normalizeAgentId(params.agentId)}:${channel}:${peerKind}:${peerId}`;
|
|
131
|
+
}
|
|
132
|
+
function resolveLinkedPeerId(params) {
|
|
133
|
+
const identityLinks = params.identityLinks;
|
|
134
|
+
if (!identityLinks) return null;
|
|
135
|
+
const peerId = params.peerId.trim();
|
|
136
|
+
if (!peerId) return null;
|
|
137
|
+
const candidates = /* @__PURE__ */ new Set();
|
|
138
|
+
const rawCandidate = normalizeToken(peerId);
|
|
139
|
+
if (rawCandidate) candidates.add(rawCandidate);
|
|
140
|
+
const channel = normalizeToken(params.channel);
|
|
141
|
+
if (channel) {
|
|
142
|
+
const scopedCandidate = normalizeToken(`${channel}:${peerId}`);
|
|
143
|
+
if (scopedCandidate) candidates.add(scopedCandidate);
|
|
144
|
+
}
|
|
145
|
+
if (candidates.size === 0) return null;
|
|
146
|
+
for (const [canonical, ids] of Object.entries(identityLinks)) {
|
|
147
|
+
const canonicalName = canonical.trim();
|
|
148
|
+
if (!canonicalName) continue;
|
|
149
|
+
if (!Array.isArray(ids)) continue;
|
|
150
|
+
for (const id of ids) {
|
|
151
|
+
const normalized = normalizeToken(id);
|
|
152
|
+
if (normalized && candidates.has(normalized)) return canonicalName;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
function buildGroupHistoryKey(params) {
|
|
158
|
+
const channel = normalizeToken(params.channel) || "unknown";
|
|
159
|
+
const accountId = normalizeAccountId(params.accountId);
|
|
160
|
+
const peerId = params.peerId.trim().toLowerCase() || "unknown";
|
|
161
|
+
return `${channel}:${accountId}:${params.peerKind}:${peerId}`;
|
|
162
|
+
}
|
|
163
|
+
function resolveThreadSessionKeys(params) {
|
|
164
|
+
const threadId = (params.threadId ?? "").trim();
|
|
165
|
+
if (!threadId) return {
|
|
166
|
+
sessionKey: params.baseSessionKey,
|
|
167
|
+
parentSessionKey: void 0
|
|
168
|
+
};
|
|
169
|
+
const normalizedThreadId = threadId.toLowerCase();
|
|
170
|
+
return {
|
|
171
|
+
sessionKey: params.useSuffix ?? true ? `${params.baseSessionKey}:thread:${normalizedThreadId}` : params.baseSessionKey,
|
|
172
|
+
parentSessionKey: params.parentSessionKey
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
//#endregion
|
|
177
|
+
export { parseAgentSessionKey as _, buildAgentPeerSessionKey as a, normalizeAgentId as c, resolveThreadSessionKeys as d, sanitizeAgentId as f, isSubagentSessionKey as g, isAcpSessionKey as h, buildAgentMainSessionKey as i, normalizeMainKey as l, toAgentStoreSessionKey as m, DEFAULT_AGENT_ID as n, buildGroupHistoryKey as o, toAgentRequestSessionKey as p, DEFAULT_MAIN_KEY as r, normalizeAccountId as s, DEFAULT_ACCOUNT_ID as t, resolveAgentIdFromSessionKey as u, resolveThreadParentSessionKey as v };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { V as getResolvedLoggerSettings, c as defaultRuntime } from "./subsystem-
|
|
2
|
-
import { t as formatCliCommand } from "./command-format-
|
|
3
|
-
import { d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName, l as resolveGatewayLaunchAgentLabel } from "./constants-
|
|
4
|
-
import { o as resolveGatewayLogPaths } from "./service-
|
|
1
|
+
import { V as getResolvedLoggerSettings, c as defaultRuntime } from "./subsystem-CAq3uyo7.js";
|
|
2
|
+
import { t as formatCliCommand } from "./command-format-ChfKqObn.js";
|
|
3
|
+
import { d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName, l as resolveGatewayLaunchAgentLabel } from "./constants-HPrOsATF.js";
|
|
4
|
+
import { o as resolveGatewayLogPaths } from "./service-BZesBIaG.js";
|
|
5
5
|
import { Writable } from "node:stream";
|
|
6
6
|
|
|
7
7
|
//#region src/cli/daemon-cli/response.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { p as defaultRuntime } from "./entry.js";
|
|
2
|
-
import { t as formatCliCommand } from "./command-format-
|
|
3
|
-
import { d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName, l as resolveGatewayLaunchAgentLabel } from "./constants-
|
|
4
|
-
import { t as resolveGatewayService } from "./service-
|
|
2
|
+
import { t as formatCliCommand } from "./command-format-ayFsmwwz.js";
|
|
3
|
+
import { d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName, l as resolveGatewayLaunchAgentLabel } from "./constants-D1op9uGI.js";
|
|
4
|
+
import { t as resolveGatewayService } from "./service-_JwSmGSn.js";
|
|
5
5
|
|
|
6
6
|
//#region src/cli/gateway-cli/shared.ts
|
|
7
7
|
function parsePort(raw) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { c as defaultRuntime } from "./subsystem-
|
|
2
|
-
import { t as formatCliCommand } from "./command-format-
|
|
3
|
-
import { d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName, l as resolveGatewayLaunchAgentLabel } from "./constants-
|
|
4
|
-
import { t as resolveGatewayService } from "./service-
|
|
1
|
+
import { c as defaultRuntime } from "./subsystem-CAq3uyo7.js";
|
|
2
|
+
import { t as formatCliCommand } from "./command-format-ChfKqObn.js";
|
|
3
|
+
import { d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName, l as resolveGatewayLaunchAgentLabel } from "./constants-HPrOsATF.js";
|
|
4
|
+
import { t as resolveGatewayService } from "./service-BZesBIaG.js";
|
|
5
5
|
|
|
6
6
|
//#region src/cli/gateway-cli/shared.ts
|
|
7
7
|
function parsePort(raw) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { M as getResolvedLoggerSettings, p as defaultRuntime } from "./entry.js";
|
|
2
|
-
import { t as formatCliCommand } from "./command-format-
|
|
3
|
-
import { d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName, l as resolveGatewayLaunchAgentLabel } from "./constants-
|
|
4
|
-
import { o as resolveGatewayLogPaths } from "./service-
|
|
2
|
+
import { t as formatCliCommand } from "./command-format-ayFsmwwz.js";
|
|
3
|
+
import { d as resolveGatewaySystemdServiceName, f as resolveGatewayWindowsTaskName, l as resolveGatewayLaunchAgentLabel } from "./constants-D1op9uGI.js";
|
|
4
|
+
import { o as resolveGatewayLogPaths } from "./service-_JwSmGSn.js";
|
|
5
5
|
import { Writable } from "node:stream";
|
|
6
6
|
|
|
7
7
|
//#region src/cli/daemon-cli/response.ts
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
|
+
|
|
4
|
+
//#region src/security/skill-scanner.ts
|
|
5
|
+
const SCANNABLE_EXTENSIONS = new Set([
|
|
6
|
+
".js",
|
|
7
|
+
".ts",
|
|
8
|
+
".mjs",
|
|
9
|
+
".cjs",
|
|
10
|
+
".mts",
|
|
11
|
+
".cts",
|
|
12
|
+
".jsx",
|
|
13
|
+
".tsx"
|
|
14
|
+
]);
|
|
15
|
+
const DEFAULT_MAX_SCAN_FILES = 500;
|
|
16
|
+
const DEFAULT_MAX_FILE_BYTES = 1024 * 1024;
|
|
17
|
+
function isScannable(filePath) {
|
|
18
|
+
return SCANNABLE_EXTENSIONS.has(path.extname(filePath).toLowerCase());
|
|
19
|
+
}
|
|
20
|
+
function isErrno(err, code) {
|
|
21
|
+
if (!err || typeof err !== "object") return false;
|
|
22
|
+
if (!("code" in err)) return false;
|
|
23
|
+
return err.code === code;
|
|
24
|
+
}
|
|
25
|
+
const LINE_RULES = [
|
|
26
|
+
{
|
|
27
|
+
ruleId: "dangerous-exec",
|
|
28
|
+
severity: "critical",
|
|
29
|
+
message: "Shell command execution detected (child_process)",
|
|
30
|
+
pattern: /\b(exec|execSync|spawn|spawnSync|execFile|execFileSync)\s*\(/,
|
|
31
|
+
requiresContext: /child_process/
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
ruleId: "dynamic-code-execution",
|
|
35
|
+
severity: "critical",
|
|
36
|
+
message: "Dynamic code execution detected",
|
|
37
|
+
pattern: /\beval\s*\(|new\s+Function\s*\(/
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
ruleId: "crypto-mining",
|
|
41
|
+
severity: "critical",
|
|
42
|
+
message: "Possible crypto-mining reference detected",
|
|
43
|
+
pattern: /stratum\+tcp|stratum\+ssl|coinhive|cryptonight|xmrig/i
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
ruleId: "suspicious-network",
|
|
47
|
+
severity: "warn",
|
|
48
|
+
message: "WebSocket connection to non-standard port",
|
|
49
|
+
pattern: /new\s+WebSocket\s*\(\s*["']wss?:\/\/[^"']*:(\d+)/
|
|
50
|
+
}
|
|
51
|
+
];
|
|
52
|
+
const STANDARD_PORTS = new Set([
|
|
53
|
+
80,
|
|
54
|
+
443,
|
|
55
|
+
8080,
|
|
56
|
+
8443,
|
|
57
|
+
3e3
|
|
58
|
+
]);
|
|
59
|
+
const SOURCE_RULES = [
|
|
60
|
+
{
|
|
61
|
+
ruleId: "potential-exfiltration",
|
|
62
|
+
severity: "warn",
|
|
63
|
+
message: "File read combined with network send — possible data exfiltration",
|
|
64
|
+
pattern: /readFileSync|readFile/,
|
|
65
|
+
requiresContext: /\bfetch\b|\bpost\b|http\.request/i
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
ruleId: "obfuscated-code",
|
|
69
|
+
severity: "warn",
|
|
70
|
+
message: "Hex-encoded string sequence detected (possible obfuscation)",
|
|
71
|
+
pattern: /(\\x[0-9a-fA-F]{2}){6,}/
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
ruleId: "obfuscated-code",
|
|
75
|
+
severity: "warn",
|
|
76
|
+
message: "Large base64 payload with decode call detected (possible obfuscation)",
|
|
77
|
+
pattern: /(?:atob|Buffer\.from)\s*\(\s*["'][A-Za-z0-9+/=]{200,}["']/
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
ruleId: "env-harvesting",
|
|
81
|
+
severity: "critical",
|
|
82
|
+
message: "Environment variable access combined with network send — possible credential harvesting",
|
|
83
|
+
pattern: /process\.env/,
|
|
84
|
+
requiresContext: /\bfetch\b|\bpost\b|http\.request/i
|
|
85
|
+
}
|
|
86
|
+
];
|
|
87
|
+
function truncateEvidence(evidence, maxLen = 120) {
|
|
88
|
+
if (evidence.length <= maxLen) return evidence;
|
|
89
|
+
return `${evidence.slice(0, maxLen)}…`;
|
|
90
|
+
}
|
|
91
|
+
function scanSource(source, filePath) {
|
|
92
|
+
const findings = [];
|
|
93
|
+
const lines = source.split("\n");
|
|
94
|
+
const matchedLineRules = /* @__PURE__ */ new Set();
|
|
95
|
+
for (const rule of LINE_RULES) {
|
|
96
|
+
if (matchedLineRules.has(rule.ruleId)) continue;
|
|
97
|
+
if (rule.requiresContext && !rule.requiresContext.test(source)) continue;
|
|
98
|
+
for (let i = 0; i < lines.length; i++) {
|
|
99
|
+
const line = lines[i];
|
|
100
|
+
const match = rule.pattern.exec(line);
|
|
101
|
+
if (!match) continue;
|
|
102
|
+
if (rule.ruleId === "suspicious-network") {
|
|
103
|
+
const port = parseInt(match[1], 10);
|
|
104
|
+
if (STANDARD_PORTS.has(port)) continue;
|
|
105
|
+
}
|
|
106
|
+
findings.push({
|
|
107
|
+
ruleId: rule.ruleId,
|
|
108
|
+
severity: rule.severity,
|
|
109
|
+
file: filePath,
|
|
110
|
+
line: i + 1,
|
|
111
|
+
message: rule.message,
|
|
112
|
+
evidence: truncateEvidence(line.trim())
|
|
113
|
+
});
|
|
114
|
+
matchedLineRules.add(rule.ruleId);
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
const matchedSourceRules = /* @__PURE__ */ new Set();
|
|
119
|
+
for (const rule of SOURCE_RULES) {
|
|
120
|
+
const ruleKey = `${rule.ruleId}::${rule.message}`;
|
|
121
|
+
if (matchedSourceRules.has(ruleKey)) continue;
|
|
122
|
+
if (!rule.pattern.test(source)) continue;
|
|
123
|
+
if (rule.requiresContext && !rule.requiresContext.test(source)) continue;
|
|
124
|
+
let matchLine = 0;
|
|
125
|
+
let matchEvidence = "";
|
|
126
|
+
for (let i = 0; i < lines.length; i++) if (rule.pattern.test(lines[i])) {
|
|
127
|
+
matchLine = i + 1;
|
|
128
|
+
matchEvidence = lines[i].trim();
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
if (matchLine === 0) {
|
|
132
|
+
matchLine = 1;
|
|
133
|
+
matchEvidence = source.slice(0, 120);
|
|
134
|
+
}
|
|
135
|
+
findings.push({
|
|
136
|
+
ruleId: rule.ruleId,
|
|
137
|
+
severity: rule.severity,
|
|
138
|
+
file: filePath,
|
|
139
|
+
line: matchLine,
|
|
140
|
+
message: rule.message,
|
|
141
|
+
evidence: truncateEvidence(matchEvidence)
|
|
142
|
+
});
|
|
143
|
+
matchedSourceRules.add(ruleKey);
|
|
144
|
+
}
|
|
145
|
+
return findings;
|
|
146
|
+
}
|
|
147
|
+
function normalizeScanOptions(opts) {
|
|
148
|
+
return {
|
|
149
|
+
includeFiles: opts?.includeFiles ?? [],
|
|
150
|
+
maxFiles: Math.max(1, opts?.maxFiles ?? DEFAULT_MAX_SCAN_FILES),
|
|
151
|
+
maxFileBytes: Math.max(1, opts?.maxFileBytes ?? DEFAULT_MAX_FILE_BYTES)
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
function isPathInside(basePath, candidatePath) {
|
|
155
|
+
const base = path.resolve(basePath);
|
|
156
|
+
const candidate = path.resolve(candidatePath);
|
|
157
|
+
const rel = path.relative(base, candidate);
|
|
158
|
+
return rel === "" || !rel.startsWith(`..${path.sep}`) && rel !== ".." && !path.isAbsolute(rel);
|
|
159
|
+
}
|
|
160
|
+
async function walkDirWithLimit(dirPath, maxFiles) {
|
|
161
|
+
const files = [];
|
|
162
|
+
const stack = [dirPath];
|
|
163
|
+
while (stack.length > 0 && files.length < maxFiles) {
|
|
164
|
+
const currentDir = stack.pop();
|
|
165
|
+
if (!currentDir) break;
|
|
166
|
+
const entries = await fs.readdir(currentDir, { withFileTypes: true });
|
|
167
|
+
for (const entry of entries) {
|
|
168
|
+
if (files.length >= maxFiles) break;
|
|
169
|
+
if (entry.name.startsWith(".") || entry.name === "node_modules") continue;
|
|
170
|
+
const fullPath = path.join(currentDir, entry.name);
|
|
171
|
+
if (entry.isDirectory()) stack.push(fullPath);
|
|
172
|
+
else if (isScannable(entry.name)) files.push(fullPath);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return files;
|
|
176
|
+
}
|
|
177
|
+
async function resolveForcedFiles(params) {
|
|
178
|
+
if (params.includeFiles.length === 0) return [];
|
|
179
|
+
const seen = /* @__PURE__ */ new Set();
|
|
180
|
+
const out = [];
|
|
181
|
+
for (const rawIncludePath of params.includeFiles) {
|
|
182
|
+
const includePath = path.resolve(params.rootDir, rawIncludePath);
|
|
183
|
+
if (!isPathInside(params.rootDir, includePath)) continue;
|
|
184
|
+
if (!isScannable(includePath)) continue;
|
|
185
|
+
if (seen.has(includePath)) continue;
|
|
186
|
+
let st = null;
|
|
187
|
+
try {
|
|
188
|
+
st = await fs.stat(includePath);
|
|
189
|
+
} catch (err) {
|
|
190
|
+
if (isErrno(err, "ENOENT")) continue;
|
|
191
|
+
throw err;
|
|
192
|
+
}
|
|
193
|
+
if (!st?.isFile()) continue;
|
|
194
|
+
out.push(includePath);
|
|
195
|
+
seen.add(includePath);
|
|
196
|
+
}
|
|
197
|
+
return out;
|
|
198
|
+
}
|
|
199
|
+
async function collectScannableFiles(dirPath, opts) {
|
|
200
|
+
const forcedFiles = await resolveForcedFiles({
|
|
201
|
+
rootDir: dirPath,
|
|
202
|
+
includeFiles: opts.includeFiles
|
|
203
|
+
});
|
|
204
|
+
if (forcedFiles.length >= opts.maxFiles) return forcedFiles.slice(0, opts.maxFiles);
|
|
205
|
+
const walkedFiles = await walkDirWithLimit(dirPath, opts.maxFiles);
|
|
206
|
+
const seen = new Set(forcedFiles.map((f) => path.resolve(f)));
|
|
207
|
+
const out = [...forcedFiles];
|
|
208
|
+
for (const walkedFile of walkedFiles) {
|
|
209
|
+
if (out.length >= opts.maxFiles) break;
|
|
210
|
+
const resolved = path.resolve(walkedFile);
|
|
211
|
+
if (seen.has(resolved)) continue;
|
|
212
|
+
out.push(walkedFile);
|
|
213
|
+
seen.add(resolved);
|
|
214
|
+
}
|
|
215
|
+
return out;
|
|
216
|
+
}
|
|
217
|
+
async function readScannableSource(filePath, maxFileBytes) {
|
|
218
|
+
let st = null;
|
|
219
|
+
try {
|
|
220
|
+
st = await fs.stat(filePath);
|
|
221
|
+
} catch (err) {
|
|
222
|
+
if (isErrno(err, "ENOENT")) return null;
|
|
223
|
+
throw err;
|
|
224
|
+
}
|
|
225
|
+
if (!st?.isFile() || st.size > maxFileBytes) return null;
|
|
226
|
+
try {
|
|
227
|
+
return await fs.readFile(filePath, "utf-8");
|
|
228
|
+
} catch (err) {
|
|
229
|
+
if (isErrno(err, "ENOENT")) return null;
|
|
230
|
+
throw err;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
async function scanDirectoryWithSummary(dirPath, opts) {
|
|
234
|
+
const scanOptions = normalizeScanOptions(opts);
|
|
235
|
+
const files = await collectScannableFiles(dirPath, scanOptions);
|
|
236
|
+
const allFindings = [];
|
|
237
|
+
let scannedFiles = 0;
|
|
238
|
+
for (const file of files) {
|
|
239
|
+
const source = await readScannableSource(file, scanOptions.maxFileBytes);
|
|
240
|
+
if (source == null) continue;
|
|
241
|
+
scannedFiles += 1;
|
|
242
|
+
const findings = scanSource(source, file);
|
|
243
|
+
allFindings.push(...findings);
|
|
244
|
+
}
|
|
245
|
+
return {
|
|
246
|
+
scannedFiles,
|
|
247
|
+
critical: allFindings.filter((f) => f.severity === "critical").length,
|
|
248
|
+
warn: allFindings.filter((f) => f.severity === "warn").length,
|
|
249
|
+
info: allFindings.filter((f) => f.severity === "info").length,
|
|
250
|
+
findings: allFindings
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
//#endregion
|
|
255
|
+
export { scanDirectoryWithSummary as t };
|