@noxsoft/anima 2.0.2 → 2.0.4
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/README.md +1260 -28
- package/dist/accounts-Bth3PpPD.js +260 -0
- package/dist/accounts-D8CPKNkN.js +259 -0
- package/dist/acp-cli-ByK6lS6c.js +1081 -0
- package/dist/acp-cli-CaQCjIw4.js +1084 -0
- package/dist/agent-BgIkqd3F.js +725 -0
- package/dist/agent-N5BDcge4.js +725 -0
- package/dist/agent-events-COH7NDW2.js +182 -0
- package/dist/agent-scope-CPphqq-U.js +452 -0
- package/dist/agent-scope-DZgptr9J.js +452 -0
- package/dist/agent-scope-cj2QCT6R.js +112 -0
- package/dist/agents-NEudYMdg.js +774 -0
- package/dist/agents.config-Bujs-NIy.js +182 -0
- package/dist/agents.config-jp7OLssr.js +182 -0
- package/dist/argv-BMZMiW7v.js +73 -0
- package/dist/audit-C-UJhfdv.js +2401 -0
- package/dist/audit-CeCO7SK5.js +2401 -0
- package/dist/auth-BNZsOHGF.js +648 -0
- package/dist/auth-DMPZWzEa.js +639 -0
- package/dist/auth-choice-5VnaGMD-.js +2681 -0
- package/dist/auth-choice-DA2k4vs8.js +2681 -0
- package/dist/auth-health-B7FqA26_.js +149 -0
- package/dist/auth-health-VO_MPqVX.js +149 -0
- package/dist/auth-profiles-BDrNYX_n.js +1564 -0
- package/dist/auth-profiles-CxSHydjn.js +2689 -0
- package/dist/banner-BtDZPRzi.js +294 -0
- package/dist/browser-cli-8yQMpxb8.js +1679 -0
- package/dist/browser-cli-Czg3JtDH.js +1676 -0
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +16 -16
- package/dist/bundled/bootstrap-extra-files/handler.js +4 -4
- package/dist/bundled/command-logger/handler.js +1 -1
- package/dist/bundled/session-memory/handler.js +5 -5
- package/dist/call-BIzCaKZb.js +282 -0
- package/dist/call-BYDpTVCZ.js +282 -0
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/catalog-CqKiUgu6.js +185 -0
- package/dist/catalog-DMfEg-oK.js +185 -0
- package/dist/channel-options-BrtCtyrT.js +32 -0
- package/dist/channel-options-CO21Gl8p.js +33 -0
- package/dist/channel-selection-Bbm1lq3P.js +51 -0
- package/dist/channel-selection-CqcX7Ocw.js +51 -0
- package/dist/channel-web-DrsT6OAE.js +2162 -0
- package/dist/channels-cli-Juyh1S6n.js +1304 -0
- package/dist/channels-cli-zNvi1m5c.js +1306 -0
- package/dist/channels-status-issues-CqzqshW4.js +18 -0
- package/dist/channels-status-issues-DdJdO866.js +18 -0
- package/dist/chrome-C4dOMO8z.js +1601 -0
- package/dist/chrome-DdcDzAtH.js +1629 -0
- package/dist/chrome-U3DRzjJD.js +1601 -0
- package/dist/chunk-D2nLsrEW.js +348 -0
- package/dist/clack-prompter-BI3RDW5w.js +92 -0
- package/dist/clack-prompter-Dwr1m_IZ.js +92 -0
- package/dist/cli/daemon-cli.js +1 -1
- package/dist/cli-C3cpDaz8.js +99 -0
- package/dist/cli-CjWUGdGC.js +101 -0
- package/dist/cli-session-BVjY_XrW.js +5463 -0
- package/dist/cli-session-gtuYN2Iq.js +5408 -0
- package/dist/client-Dswwze5_.js +1692 -0
- package/dist/client-LRKFjo4A.js +1692 -0
- package/dist/clipboard-BZKS9O1u.js +31 -0
- package/dist/clipboard-DES8b1AM.js +31 -0
- package/dist/command-format-CP1YTNCl.js +52 -0
- package/dist/command-format-CVL4K5cj.js +52 -0
- package/dist/command-format-G6N2zghg.js +38 -0
- package/dist/command-registry-BBvNvysr.js +248 -0
- package/dist/commands-AZ3n8Y2c.js +726 -0
- package/dist/commands-BMnD_QRY.js +726 -0
- package/dist/commands-registry-cFqZ6Ib4.js +766 -0
- package/dist/commands-registry-q13H7ng5.js +766 -0
- package/dist/common-CX5458fH.js +287 -0
- package/dist/common-DJbnT8ws.js +287 -0
- package/dist/completion-cli-BADRBcIl.js +432 -0
- package/dist/completion-cli-DMQgiObF.js +431 -0
- package/dist/config-CU-Axg8P.js +5704 -0
- package/dist/config-DaqbUdkI.js +5705 -0
- package/dist/config-cli-BPlbwiuA.js +244 -0
- package/dist/config-cli-DXgZJkPU.js +247 -0
- package/dist/config-guard-Ba49JNds.js +76 -0
- package/dist/config-guard-Cu0qMKZJ.js +93 -0
- package/dist/config-kVVm5EYV.js +6523 -0
- package/dist/config-sync-CzLnLTXt.js +91 -0
- package/dist/config-sync-DuydxPWx.js +91 -0
- package/dist/configure-CHgacLyi.js +960 -0
- package/dist/configure-DfHXDa1L.js +959 -0
- package/dist/context-DzgXOckU.js +60 -0
- package/dist/control-service-8_wKHwBa.js +72 -0
- package/dist/control-service-BtL1Jto_.js +72 -0
- package/dist/cron-cli-BCzSR2c0.js +448 -0
- package/dist/cron-cli-CCWNkykU.js +451 -0
- package/dist/daemon-cli-Bjkbu9Vy.js +565 -0
- package/dist/daemon-cli-CmlHcC1J.js +566 -0
- package/dist/daemon-cli.js +16 -16
- package/dist/daemon-runtime-C0tz7VAC.js +460 -0
- package/dist/daemon-runtime-rUTqCVwJ.js +460 -0
- package/dist/deliver-BBggsviM.js +1097 -0
- package/dist/deliver-CePITOl8.js +1162 -0
- package/dist/deliver-DFnVaetP.js +1097 -0
- package/dist/delivery-queue-BJQK3oh5.js +220 -0
- package/dist/deps-CeEKhrp7.js +42 -0
- package/dist/devices-cli-DQrDMrZH.js +198 -0
- package/dist/devices-cli-Oe-A1Dv0.js +195 -0
- package/dist/diagnostics-DxMFrBLO.js +35 -0
- package/dist/diagnostics-m79ZlMmZ.js +35 -0
- package/dist/directory-cli-BL6h8cGF.js +246 -0
- package/dist/directory-cli-Cjgmi_sj.js +243 -0
- package/dist/dispatcher-DAFbQM-c.js +100 -0
- package/dist/dispatcher-DNd40gUn.js +100 -0
- package/dist/dist-CqDI82ei.js +929 -0
- package/dist/dist-DnHRxR5U.js +929 -0
- package/dist/dns-cli-CFtV3BXK.js +200 -0
- package/dist/dns-cli-NyIHvQ5S.js +197 -0
- package/dist/dock-BdXLb5oY.js +753 -0
- package/dist/dock-jYICmNcI.js +753 -0
- package/dist/docs-cli-CrOaIK_H.js +161 -0
- package/dist/docs-cli-D_cmJDSr.js +159 -0
- package/dist/doctor-BpGxKrBl.js +1815 -0
- package/dist/doctor-D12wNQPU.js +1813 -0
- package/dist/doctor-completion-DeOfofek.js +92 -0
- package/dist/doctor-completion-DwjqdEcK.js +92 -0
- package/dist/doctor-config-flow-BI3mpkbd.js +1232 -0
- package/dist/doctor-config-flow-wMHheFkC.js +1232 -0
- package/dist/engine-BCtL-AMw.js +563 -0
- package/dist/engine-Bk_UT413.js +563 -0
- package/dist/entry.js +5 -5
- package/dist/env-v6411I8h.js +32 -0
- package/dist/exec-B7sUS164.js +1167 -0
- package/dist/exec-approvals-CroGJRUg.js +1221 -0
- package/dist/exec-approvals-cli-BTxF_RsH.js +371 -0
- package/dist/exec-approvals-cli-n1gyGwH2.js +368 -0
- package/dist/exec-mhSykkaa.js +255 -0
- package/dist/extensionAPI.js +3 -3
- package/dist/frontmatter-BmHq0vRD.js +204 -0
- package/dist/gateway-cli-DDBadlrS.js +19971 -0
- package/dist/gateway-cli-IZNkOMBe.js +19972 -0
- package/dist/gateway-rpc-Dtx8HN-n.js +28 -0
- package/dist/gateway-rpc-L2PVSqGj.js +28 -0
- package/dist/github-copilot-auth-DKyqDaGU.js +1418 -0
- package/dist/github-copilot-auth-DXpOMSd3.js +1418 -0
- package/dist/gmail-setup-utils-BKNczIJ9.js +428 -0
- package/dist/gmail-setup-utils-co0ppccC.js +428 -0
- package/dist/health-Bm8ZTvC3.js +1253 -0
- package/dist/health-DUf1gt4E.js +1258 -0
- package/dist/health-format-BksT6F68.js +208 -0
- package/dist/health-format-uzh1xYLD.js +208 -0
- package/dist/heartbeat-visibility-1TJb1Zao.js +98 -0
- package/dist/heartbeat-visibility-CwodtdcX.js +98 -0
- package/dist/help-format-C6cv_aZp.js +17 -0
- package/dist/helpers-N-uSFKOn.js +10 -0
- package/dist/hooks-cli-1POsXqOl.js +993 -0
- package/dist/hooks-cli-BGjILbze.js +991 -0
- package/dist/hooks-status-DE07n5RC.js +356 -0
- package/dist/hooks-status-Du-d1jde.js +356 -0
- package/dist/image-ops-B_AYV3tp.js +541 -0
- package/dist/image-ops-Bp0C6Mvr.js +541 -0
- package/dist/index.js +82 -82
- package/dist/init-9A0s7bWG.js +122 -0
- package/dist/init-DoyCHJDC.js +122 -0
- package/dist/installs-D1C9wHAq.js +383 -0
- package/dist/installs-Dh4dHayM.js +383 -0
- package/dist/ipv4-DCItfaJo.js +1964 -0
- package/dist/ipv4-DSOUVx0i.js +1964 -0
- package/dist/lanes-BvSnHq2h.js +232 -0
- package/dist/lifecycle-core-BY4WIf9g.js +388 -0
- package/dist/lifecycle-core-TQKyXO-6.js +387 -0
- package/dist/links-CNu_8RZl.js +15 -0
- package/dist/links-D2tt2ouh.js +15 -0
- package/dist/llm-slug-generator.js +4 -4
- package/dist/logging-BIeRw0WR.js +15 -0
- package/dist/logging-C7lb3Vjc.js +15 -0
- package/dist/login-DXWKewA2.js +59 -0
- package/dist/login-Fhh4uWmf.js +61 -0
- package/dist/login-pPs3UO38.js +61 -0
- package/dist/login-qr-CevLD8cV.js +326 -0
- package/dist/login-qr-GF2JMIy-.js +323 -0
- package/dist/login-qr-ZYYKD6Yt.js +321 -0
- package/dist/logs-cli-CzXbX8HZ.js +242 -0
- package/dist/logs-cli-D9ngH9PF.js +245 -0
- package/dist/manager-BD5rA3w0.js +3244 -0
- package/dist/manager-BDPgBQSH.js +3246 -0
- package/dist/manager-DRWMWM--.js +3244 -0
- package/dist/manifest-registry-DbvPaBXY.js +748 -0
- package/dist/manifest-registry-kHX_MFa1.js +748 -0
- package/dist/markdown-tables-CqwihY2m.js +347 -0
- package/dist/markdown-tables-DJV7eAJZ.js +348 -0
- package/dist/media-lUqN-0O9.js +1342 -0
- package/dist/memory-cli-BLXSpgnN.js +868 -0
- package/dist/memory-cli-BcGVkkRJ.js +869 -0
- package/dist/message-channel-D_jIO87f.js +110 -0
- package/dist/migrate-BpVOar4L.js +157 -0
- package/dist/migrate-CkgGDkWy.js +157 -0
- package/dist/model-selection-Cqt6aJ0G.js +2691 -0
- package/dist/models-CExsNQPH.js +2510 -0
- package/dist/models-cli-Ba3Jmwev.js +2739 -0
- package/dist/models-cli-iDAlsbL2.js +258 -0
- package/dist/net-0A_zcaQD.js +218 -0
- package/dist/node-cli-ATmwCXIk.js +1319 -0
- package/dist/node-cli-DYFR_V25.js +1322 -0
- package/dist/node-service-CN4LqR1A.js +67 -0
- package/dist/node-service-CWt3MdSC.js +67 -0
- package/dist/nodes-cli-BeVmhTz3.js +1197 -0
- package/dist/nodes-cli-QeJIfa18.js +1200 -0
- package/dist/nodes-screen-DHyWAlla.js +234 -0
- package/dist/nodes-screen-qs3jRBPk.js +234 -0
- package/dist/note-CSlg2BnB.js +73 -0
- package/dist/note-Ctvglhp1.js +73 -0
- package/dist/npm-registry-spec-DQd4M22q.js +351 -0
- package/dist/npm-registry-spec-PxisIMts.js +351 -0
- package/dist/onboard-DeruD10m.js +1166 -0
- package/dist/onboard-SAcu5N6N.js +1165 -0
- package/dist/onboard-channels-C4iSfFXR.js +672 -0
- package/dist/onboard-channels-oVTVgoyg.js +672 -0
- package/dist/onboard-helpers-B8roRwLP.js +365 -0
- package/dist/onboard-helpers-Dgh26hgP.js +365 -0
- package/dist/onboarding-Bi-ac8we.js +911 -0
- package/dist/onboarding-C2gjB2u8.js +910 -0
- package/dist/orchestrator-DlbAYMQP.js +357 -0
- package/dist/orchestrator-DlwVRVDA.js +357 -0
- package/dist/outbound-CkKgc6iR.js +2062 -0
- package/dist/outbound-Vfm5yDh3.js +214 -0
- package/dist/outbound-bs_VK51X.js +214 -0
- package/dist/outbound-send-deps-DDjiMfEL.js +55 -0
- package/dist/pairing-cli-CJYeuEik.js +118 -0
- package/dist/pairing-cli-mqopHI8s.js +121 -0
- package/dist/pairing-store-BsXzUDPv.js +388 -0
- package/dist/pairing-store-DoNj00-X.js +388 -0
- package/dist/path-env-C_xpiG8l.js +89 -0
- package/dist/path-env-DSSMHu5A.js +89 -0
- package/dist/paths-B1vRVCad.js +126 -0
- package/dist/paths-BMuHNFxg.js +238 -0
- package/dist/paths-BXQQzXGQ.js +129 -0
- package/dist/paths-Buw_geoe.js +54 -0
- package/dist/paths-DA9WYabg.js +222 -0
- package/dist/paths-DfQGx0_k.js +129 -0
- package/dist/pi-auth-json-DOPW3e4X.js +78 -0
- package/dist/pi-auth-json-MruLmI_X.js +82 -0
- package/dist/pi-auth-json-lae_wwwo.js +80 -0
- package/dist/pi-model-discovery-7q0GxMrp.js +3 -0
- package/dist/pi-tools.policy-Csmla32P.js +200 -0
- package/dist/pi-tools.policy-xYdDLEv9.js +200 -0
- package/dist/plugin-auto-enable-CViVVWgg.js +282 -0
- package/dist/plugin-auto-enable-CjZ238UI.js +282 -0
- package/dist/plugin-registry-B4Aw2hzq.js +32 -0
- package/dist/plugin-registry-DW81arxW.js +32 -0
- package/dist/plugin-sdk/cli/cli-name.d.ts +1 -1
- package/dist/plugin-sdk/config/paths.d.ts +2 -2
- package/dist/plugin-sdk/index.js +7 -7
- package/dist/plugins-DhcGAPDB.js +38 -0
- package/dist/plugins-DtghNRtM.js +168 -0
- package/dist/plugins-cli-4vWTmOAb.js +736 -0
- package/dist/plugins-cli-CdTMbP0X.js +734 -0
- package/dist/polls-D6eCdatA.js +1343 -0
- package/dist/ports-BtZx-JKD.js +96 -0
- package/dist/ports-C8bKN8s0.js +96 -0
- package/dist/ports-DHiKnPRX.js +344 -0
- package/dist/ports-vd93M_Pt.js +317 -0
- package/dist/program-CX3aUVeb.js +176 -0
- package/dist/program-context-BPos0ivo.js +496 -0
- package/dist/progress-oiAjiiNi.js +133 -0
- package/dist/prompt-style-Cm4wOtKm.js +9 -0
- package/dist/pw-ai-4QbK5YFe.js +1865 -0
- package/dist/pw-ai-BWz3Cxt7.js +1868 -0
- package/dist/pw-ai-C83HBue2.js +1867 -0
- package/dist/qmd-manager-BcMeZiGD.js +938 -0
- package/dist/qmd-manager-CPypGJ0P.js +935 -0
- package/dist/qmd-manager-CRrSkfia.js +937 -0
- package/dist/register.agent-DDY8KJhn.js +265 -0
- package/dist/register.agent-DKawm-9d.js +1003 -0
- package/dist/register.anima-CEWUo29k.js +193 -0
- package/dist/register.anima-DBWz2rk_.js +193 -0
- package/dist/register.configure-BX67qV8k.js +103 -0
- package/dist/register.configure-CWsySuiq.js +101 -0
- package/dist/register.maintenance-0k-ZNhDg.js +543 -0
- package/dist/register.maintenance-BIwx1fzX.js +543 -0
- package/dist/register.message-CXPsoakA.js +657 -0
- package/dist/register.message-DA3jvfgI.js +660 -0
- package/dist/register.onboard-C4HG7Hqv.js +170 -0
- package/dist/register.onboard-GOpdif-j.js +170 -0
- package/dist/register.setup-B17vZT7C.js +175 -0
- package/dist/register.setup-GJyUDCqh.js +175 -0
- package/dist/register.status-health-sessions-D5876dGx.js +313 -0
- package/dist/register.status-health-sessions-lOewVIZR.js +142 -0
- package/dist/register.subclis-Dwnujj5C.js +255 -0
- package/dist/reply-CR5T_oQJ.js +32212 -0
- package/dist/reply-prefix-BcrS4Umd.js +100 -0
- package/dist/reply-prefix-Btb5o2NH.js +100 -0
- package/dist/reply-r089HuRA.js +32212 -0
- package/dist/routes-B4czFzIb.js +1820 -0
- package/dist/routes-ucJWAk5O.js +1820 -0
- package/dist/rpc-BnKxnQ0v.js +70 -0
- package/dist/rpc-DgE-xnyx.js +70 -0
- package/dist/run-main-B74kv84C.js +371 -0
- package/dist/runtime-guard-CKFdts2L.js +60 -0
- package/dist/sandbox-CJTS3er6.js +858 -0
- package/dist/sandbox-DBSiVHt_.js +859 -0
- package/dist/sandbox-cli-CrkjyU5M.js +461 -0
- package/dist/sandbox-cli-D1r5y6Sz.js +458 -0
- package/dist/security-cli-BZUdnkhn.js +462 -0
- package/dist/security-cli-DS09ebvA.js +465 -0
- package/dist/server-context-C0xZbYhg.js +824 -0
- package/dist/server-context-DVh2z7om.js +824 -0
- package/dist/server-node-events-bu9lpkMH.js +233 -0
- package/dist/server-node-events-i1Rrww31.js +231 -0
- package/dist/service-CJJwLEor.js +642 -0
- package/dist/service-DxLxBhaU.js +642 -0
- package/dist/service-audit-DB4Y3Ekp.js +488 -0
- package/dist/service-audit-M8y4TXVb.js +488 -0
- package/dist/session-CGxOLFs2.js +179 -0
- package/dist/session-DTTbdKb0.js +181 -0
- package/dist/session-cost-usage-FcdJl9c3.js +600 -0
- package/dist/session-cost-usage-qdfsGU2a.js +600 -0
- package/dist/session-yOhWcsD2.js +181 -0
- package/dist/sessions-B-Cu7JZq.js +1296 -0
- package/dist/sessions-BgLN4KFr.js +180 -0
- package/dist/sessions-CnRjwdVr.js +1296 -0
- package/dist/sessions-wRKla1Qh.js +2038 -0
- package/dist/shared-DS3UaJSP.js +66 -0
- package/dist/shared-DxNHzky3.js +77 -0
- package/dist/shared-Qpt4hUDi.js +66 -0
- package/dist/shared-kzrojZ1B.js +77 -0
- package/dist/skill-scanner-DLJji5Ye.js +263 -0
- package/dist/skills-BWFIEp4j.js +807 -0
- package/dist/skills-DV4zKdCx.js +808 -0
- package/dist/skills-cli-BY53ILm2.js +289 -0
- package/dist/skills-cli-CO3gxl8A.js +286 -0
- package/dist/skills-status-DX5pcqY3.js +166 -0
- package/dist/skills-status-zhcKzGkp.js +166 -0
- package/dist/sqlite-B6MojU1I.js +321 -0
- package/dist/sqlite-CuprTGR7.js +453 -0
- package/dist/sqlite-dzD-jMjs.js +368 -0
- package/dist/start-Cu3aLoSf.js +297 -0
- package/dist/start-Dz7tMAl8.js +296 -0
- package/dist/status-CaSxhxfV.js +2132 -0
- package/dist/status-D2C0JCX3.js +2137 -0
- package/dist/status-DlFMsQzh.js +27 -0
- package/dist/status-G0CITnKR.js +27 -0
- package/dist/status.update-CHjhVxJY.js +79 -0
- package/dist/status.update-DVFelehi.js +79 -0
- package/dist/subagent-registry-3Xb4el-8.js +14 -0
- package/dist/subagent-registry-CdSjz14I.js +2760 -0
- package/dist/subagent-registry-DNDhbHWi.js +2759 -0
- package/dist/subsystem-DfKstnEK.js +860 -0
- package/dist/system-cli-B5mt0FWa.js +82 -0
- package/dist/system-cli-Dg3UQ3Zz.js +79 -0
- package/dist/systemd-B43AvOGx.js +452 -0
- package/dist/systemd-RpPE0XGg.js +452 -0
- package/dist/systemd-hints-DMJT-Bbc.js +36 -0
- package/dist/systemd-hints-vRInKcz9.js +36 -0
- package/dist/systemd-linger-Dzyxqsod.js +75 -0
- package/dist/systemd-linger-EujbmI5A.js +75 -0
- package/dist/table-DhXHfRX2.js +279 -0
- package/dist/table-bWCLW-3P.js +279 -0
- package/dist/timeout-Ddn-5kAO.js +232 -0
- package/dist/tokens-3psI_Qk2.js +14 -0
- package/dist/tokens-BaM53PEx.js +14 -0
- package/dist/trash-Bmxs1Rnm.js +23 -0
- package/dist/trash-C39a6hKA.js +23 -0
- package/dist/tui-BHgBWhHE.js +3894 -0
- package/dist/tui-cli-B9Sq5-cC.js +50 -0
- package/dist/tui-cli-Dw7v4JoJ.js +47 -0
- package/dist/tui-mUwDwqvd.js +3894 -0
- package/dist/update-DF0GHG0j.js +317 -0
- package/dist/update-DoZLVjva.js +317 -0
- package/dist/update-check-Bt1dVPVN.js +400 -0
- package/dist/update-check-D5qAKes7.js +400 -0
- package/dist/update-cli-BNu2Oi7H.js +1105 -0
- package/dist/update-cli-D36AmALA.js +1105 -0
- package/dist/update-runner-CNQQaTwA.js +894 -0
- package/dist/update-runner-CvxZmbu-.js +894 -0
- package/dist/usage-BGCwNnjk.js +4516 -0
- package/dist/utils-DZ8pnOD5.js +243 -0
- package/dist/web-B5QG839O.js +46842 -0
- package/dist/web-Cmnvk9v0.js +2203 -0
- package/dist/web-Cv2KnTnL.js +63 -0
- package/dist/webhooks-cli-B6y89Pj_.js +319 -0
- package/dist/webhooks-cli-BDzHON4w.js +316 -0
- package/dist/whatsapp-actions-C_5MwVxM.js +45 -0
- package/dist/whatsapp-actions-hgYA12To.js +53 -0
- package/dist/whatsapp-actions-zTiVOoOV.js +49 -0
- package/dist/widearea-dns-BeIdnISJ.js +127 -0
- package/dist/widearea-dns-CF1gxpJ-.js +127 -0
- package/dist/workspace-DLna1IxR.js +649 -0
- package/dist/ws-log-Q4wO1Ztb.js +267 -0
- package/dist/ws-log-xF0kxDzp.js +267 -0
- package/package.json +1 -2
- package/dist/accounts-Cc5E4IDO.js +0 -260
- package/dist/accounts-CcVrwKqv.js +0 -259
- package/dist/acp-cli-DvphOKuh.js +0 -1081
- package/dist/acp-cli-p28pQ65a.js +0 -1084
- package/dist/agent-Cj7uDJaZ.js +0 -725
- package/dist/agent-Cuj9-2sT.js +0 -725
- package/dist/agent-events-BEBQsyE5.js +0 -182
- package/dist/agent-scope-BVf4aSwY.js +0 -112
- package/dist/agent-scope-OZi7lb8S.js +0 -452
- package/dist/agent-scope-V1bi9OYL.js +0 -452
- package/dist/agents-BUWqn_Ui.js +0 -774
- package/dist/agents.config-Dvo2ULxs.js +0 -182
- package/dist/agents.config-d6H0_3oj.js +0 -182
- package/dist/argv-DqUHKf0o.js +0 -73
- package/dist/audit-C6okOOSh.js +0 -2401
- package/dist/audit-VWjIdwC7.js +0 -2401
- package/dist/auth-91o2YM96.js +0 -648
- package/dist/auth-choice-CAmACV13.js +0 -2681
- package/dist/auth-choice-p3SeHPj2.js +0 -2681
- package/dist/auth-health-B_jXrWe6.js +0 -149
- package/dist/auth-health-DCicUKYR.js +0 -149
- package/dist/auth-lZ26wsbN.js +0 -639
- package/dist/auth-profiles-CCDD56dU.js +0 -1564
- package/dist/auth-profiles-DxI8L7bs.js +0 -2689
- package/dist/banner-Cohn04J6.js +0 -294
- package/dist/browser-cli-DANzjztE.js +0 -1676
- package/dist/browser-cli-WjsVH741.js +0 -1679
- package/dist/call-BAHvlu2G.js +0 -282
- package/dist/call-Ct7EGP_L.js +0 -282
- package/dist/catalog-BAayBt1L.js +0 -185
- package/dist/catalog-BNsf97BM.js +0 -185
- package/dist/channel-options-Dx9nPlX8.js +0 -33
- package/dist/channel-options-ZdvXrTGs.js +0 -32
- package/dist/channel-selection-CujyiWGM.js +0 -51
- package/dist/channel-selection-DfGpCyh2.js +0 -51
- package/dist/channel-web-CC0hkgkR.js +0 -2162
- package/dist/channels-cli-D7lNBpIb.js +0 -1304
- package/dist/channels-cli-DUPG8WDv.js +0 -1306
- package/dist/channels-status-issues-DBc1pU_R.js +0 -18
- package/dist/channels-status-issues-DjO9MHIG.js +0 -18
- package/dist/chrome-Bi6iZ5sG.js +0 -1601
- package/dist/chrome-DNSv7Cpy.js +0 -1629
- package/dist/chrome-DScZx4Lk.js +0 -1601
- package/dist/chunk-mxPVo000.js +0 -348
- package/dist/clack-prompter-B0kl7shw.js +0 -92
- package/dist/clack-prompter-B1YxZdRy.js +0 -92
- package/dist/cli-CfHUkOD0.js +0 -101
- package/dist/cli-ClMrIh6l.js +0 -99
- package/dist/cli-session-BkPTd9Pk.js +0 -5463
- package/dist/cli-session-Dd8DKb5a.js +0 -5408
- package/dist/client-C1avc0vD.js +0 -1692
- package/dist/client-CC94YZrT.js +0 -1692
- package/dist/clipboard-B2fBy8tG.js +0 -31
- package/dist/clipboard-BbGnZskJ.js +0 -31
- package/dist/command-format-Clp46jkj.js +0 -38
- package/dist/command-format-DELazozB.js +0 -52
- package/dist/command-format-SkzzRqR1.js +0 -52
- package/dist/command-registry-DZ4hkmA0.js +0 -248
- package/dist/commands-DtYZJSPn.js +0 -568
- package/dist/commands-Dujk1JmY.js +0 -568
- package/dist/commands-registry-Bd0xbvwG.js +0 -766
- package/dist/commands-registry-DYfRSVF3.js +0 -766
- package/dist/common-D6bu0zHC.js +0 -287
- package/dist/common-zW9Y2P1B.js +0 -287
- package/dist/completion-cli-tSe7Pmqm.js +0 -431
- package/dist/completion-cli-vn4IScs5.js +0 -432
- package/dist/config-C8rUDJXY.js +0 -5704
- package/dist/config-CLZ_XGVw.js +0 -6523
- package/dist/config-SY8M0kM_.js +0 -5705
- package/dist/config-cli-1V7D2Wsw.js +0 -247
- package/dist/config-cli-CjWEC81L.js +0 -244
- package/dist/config-guard-BW2gpKj_.js +0 -93
- package/dist/config-guard-BvxuzHpo.js +0 -76
- package/dist/config-sync-CoIIbEOe.js +0 -91
- package/dist/config-sync-DvAttep0.js +0 -91
- package/dist/configure-Bf0oupCE.js +0 -959
- package/dist/configure-DRM-7zFf.js +0 -960
- package/dist/context-D5iEFzv9.js +0 -60
- package/dist/control-service-C8m8F9pr.js +0 -72
- package/dist/control-service-DKotCWCg.js +0 -72
- package/dist/cron-cli-DB_FLYHD.js +0 -448
- package/dist/cron-cli-bxm5lrrO.js +0 -451
- package/dist/daemon-cli-1LsOnICv.js +0 -566
- package/dist/daemon-cli-CC2NrJ7a.js +0 -565
- package/dist/daemon-runtime-BXZhtBL9.js +0 -460
- package/dist/daemon-runtime-DW4USC7r.js +0 -460
- package/dist/deliver-B4HuPwJA.js +0 -1162
- package/dist/deliver-LiY5oL52.js +0 -1097
- package/dist/deliver-xrmk7xjh.js +0 -1097
- package/dist/delivery-queue-TnQykYsg.js +0 -220
- package/dist/deps-CMMOiOsF.js +0 -42
- package/dist/devices-cli-Be5he2SA.js +0 -195
- package/dist/devices-cli-z6ecoFe9.js +0 -198
- package/dist/diagnostics-Dj75aEHN.js +0 -35
- package/dist/diagnostics-DlIw6fqD.js +0 -35
- package/dist/directory-cli-CEy-0nxj.js +0 -243
- package/dist/directory-cli-DpzKcigr.js +0 -246
- package/dist/dispatcher-10Shiuz3.js +0 -100
- package/dist/dispatcher-3Jae6AiW.js +0 -100
- package/dist/dns-cli-Bat1pkc-.js +0 -200
- package/dist/dns-cli-NohNyEo0.js +0 -197
- package/dist/dock-DbxBBv30.js +0 -753
- package/dist/dock-cPBY4qGl.js +0 -753
- package/dist/docs-cli-BWp6p-Tq.js +0 -161
- package/dist/docs-cli-x22FnZfL.js +0 -159
- package/dist/doctor-BrT5m_on.js +0 -1815
- package/dist/doctor-Pp2HVnjM.js +0 -1813
- package/dist/doctor-completion-DNTimX9o.js +0 -92
- package/dist/doctor-completion-ylN9QAJ6.js +0 -92
- package/dist/doctor-config-flow-D1w3700T.js +0 -1232
- package/dist/doctor-config-flow-Dq50iE1R.js +0 -1232
- package/dist/engine-B9avUJL5.js +0 -563
- package/dist/engine-BiUQ25D4.js +0 -563
- package/dist/env-0lJfCPsw.js +0 -32
- package/dist/exec-BenD3A5l.js +0 -1167
- package/dist/exec-Bv3pyjeM.js +0 -255
- package/dist/exec-approvals-CdLmKX2R.js +0 -1221
- package/dist/exec-approvals-cli-DXfV6G8H.js +0 -368
- package/dist/exec-approvals-cli-J2cZs10o.js +0 -371
- package/dist/frontmatter-YijVi0FQ.js +0 -204
- package/dist/gateway-cli-DOAbA0pc.js +0 -19972
- package/dist/gateway-cli-QpWtBhQy.js +0 -19971
- package/dist/gateway-rpc-DJKBil9s.js +0 -28
- package/dist/gateway-rpc-DVterpLP.js +0 -28
- package/dist/github-copilot-auth-4IUFp669.js +0 -1418
- package/dist/github-copilot-auth-C9E0IROs.js +0 -1418
- package/dist/gmail-setup-utils-BPo_LkKI.js +0 -428
- package/dist/gmail-setup-utils-D3Yqgor7.js +0 -428
- package/dist/health-BeZnqp6m.js +0 -1258
- package/dist/health-Cn2OoVWZ.js +0 -1253
- package/dist/health-format-CdP99j3Y.js +0 -208
- package/dist/health-format-JEChH08S.js +0 -208
- package/dist/heartbeat-visibility-BL3WAchI.js +0 -98
- package/dist/heartbeat-visibility-CQ9QimI7.js +0 -98
- package/dist/help-format-Dl4bsrLI.js +0 -17
- package/dist/helpers-ZKNRexvX.js +0 -10
- package/dist/hooks-cli-D99hXt7K.js +0 -991
- package/dist/hooks-cli-DMB8RiEO.js +0 -993
- package/dist/hooks-status-B-e96dZj.js +0 -356
- package/dist/hooks-status-C_9sE0ox.js +0 -356
- package/dist/image-ops-Dlt3T7th.js +0 -541
- package/dist/image-ops-omlvdfah.js +0 -541
- package/dist/init-Bm04RagW.js +0 -122
- package/dist/init-CaJBf4p1.js +0 -122
- package/dist/installs-C2iMRBVz.js +0 -383
- package/dist/installs-D-cPGdCw.js +0 -383
- package/dist/ipv4-Bf7NS3QU.js +0 -1964
- package/dist/ipv4-wWNs8IH_.js +0 -1964
- package/dist/lanes-CNxj3tit.js +0 -232
- package/dist/lifecycle-core-B_7XRcvF.js +0 -388
- package/dist/lifecycle-core-By83PVAK.js +0 -387
- package/dist/links-BfjHVTB_.js +0 -15
- package/dist/links-DPGe0OHw.js +0 -15
- package/dist/logging-DB6BQmhi.js +0 -15
- package/dist/logging-mcb66J0p.js +0 -15
- package/dist/login-BDCg6D0N.js +0 -61
- package/dist/login-BDfnbjnZ.js +0 -59
- package/dist/login-BqH1itcg.js +0 -61
- package/dist/login-qr-CyOw3R4r.js +0 -321
- package/dist/login-qr-D8ECtb72.js +0 -323
- package/dist/login-qr-RnR7e4Bw.js +0 -326
- package/dist/logs-cli--j89L74J.js +0 -245
- package/dist/logs-cli-DpEMg_Gq.js +0 -242
- package/dist/manager-B4OyvcxT.js +0 -3244
- package/dist/manager-Cqc1CeH7.js +0 -3246
- package/dist/manager-DUyQPFvj.js +0 -3244
- package/dist/manifest-registry-CW1zCyRF.js +0 -748
- package/dist/manifest-registry-D4lM2RdV.js +0 -748
- package/dist/markdown-tables-BT1X6jqH.js +0 -347
- package/dist/markdown-tables-DHgOK2vI.js +0 -348
- package/dist/media-THyainiE.js +0 -1342
- package/dist/memory-cli-BKocCWXM.js +0 -868
- package/dist/memory-cli-Jmma-xI_.js +0 -869
- package/dist/message-channel-dSTVVCyX.js +0 -110
- package/dist/migrate-BR6iAIjO.js +0 -157
- package/dist/migrate-D0EcMs0f.js +0 -157
- package/dist/model-selection-YcSr9CgC.js +0 -2691
- package/dist/models-1vUQBVfw.js +0 -2510
- package/dist/models-cli-BK3BwUhL.js +0 -2739
- package/dist/models-cli-DECrM8oA.js +0 -258
- package/dist/net-B5lXhYLV.js +0 -218
- package/dist/node-cli-cLHUNpPD.js +0 -1319
- package/dist/node-cli-fO7Y132S.js +0 -1322
- package/dist/node-service-BFxHJsno.js +0 -67
- package/dist/node-service-DUnan4uK.js +0 -67
- package/dist/nodes-cli-BCq35E6N.js +0 -1200
- package/dist/nodes-cli-vD7MwAKP.js +0 -1197
- package/dist/nodes-screen-1YiLkqr5.js +0 -234
- package/dist/nodes-screen-DZeD8hE5.js +0 -234
- package/dist/note-Bi8Wb8DV.js +0 -73
- package/dist/note-uiuPxhyX.js +0 -73
- package/dist/npm-registry-spec-B-XIShkB.js +0 -351
- package/dist/npm-registry-spec-za3itb5Y.js +0 -351
- package/dist/onboard-Ds6w_sWo.js +0 -1165
- package/dist/onboard-SAVx3bp4.js +0 -1166
- package/dist/onboard-channels-Cg_EkBa4.js +0 -672
- package/dist/onboard-channels-D7NbA55V.js +0 -672
- package/dist/onboard-helpers-DO_hgZb9.js +0 -365
- package/dist/onboard-helpers-_XgJgeqh.js +0 -365
- package/dist/onboarding-3hLmDd0r.js +0 -911
- package/dist/onboarding-B4LKLsbU.js +0 -910
- package/dist/orchestrator-BKzmyBWy.js +0 -357
- package/dist/orchestrator-BN3QCz2s.js +0 -357
- package/dist/outbound-BgA9hNlP.js +0 -2062
- package/dist/outbound-CjdvVhUI.js +0 -214
- package/dist/outbound-DOGe6qb2.js +0 -214
- package/dist/outbound-send-deps-Du5aBpd7.js +0 -55
- package/dist/pairing-cli-2vnyg_Nd.js +0 -118
- package/dist/pairing-cli-BH1KQtNV.js +0 -121
- package/dist/pairing-store-DJz_9Gv0.js +0 -388
- package/dist/pairing-store-DmOzxcuk.js +0 -388
- package/dist/path-env-Bu6k0jDQ.js +0 -89
- package/dist/path-env-C0zQSjw8.js +0 -89
- package/dist/paths-BTc4nk-6.js +0 -126
- package/dist/paths-BgUi2Z2G.js +0 -54
- package/dist/paths-C6VCWKo3.js +0 -238
- package/dist/paths-CCxa0o9c.js +0 -222
- package/dist/paths-CxRf2rBG.js +0 -129
- package/dist/paths-hcX1Gqg5.js +0 -129
- package/dist/pi-auth-json-B68R7q7_.js +0 -82
- package/dist/pi-auth-json-CR0jXAgq.js +0 -78
- package/dist/pi-auth-json-ZYzi3nxs.js +0 -80
- package/dist/pi-model-discovery-Cxs4pvC2.js +0 -3
- package/dist/pi-tools.policy-D81U5xy0.js +0 -200
- package/dist/pi-tools.policy-DSHkkb5b.js +0 -200
- package/dist/plugin-auto-enable-CxF4bpDN.js +0 -282
- package/dist/plugin-auto-enable-jNaAeyEh.js +0 -282
- package/dist/plugin-registry-C7XWotZG.js +0 -32
- package/dist/plugin-registry-DcUCbGax.js +0 -32
- package/dist/plugins-B362e77G.js +0 -168
- package/dist/plugins-CmSUIUNi.js +0 -38
- package/dist/plugins-cli-BsCEnoQ7.js +0 -734
- package/dist/plugins-cli-QSIsMUG7.js +0 -736
- package/dist/polls-CItfB1H8.js +0 -1343
- package/dist/ports-BVLMN1Sr.js +0 -96
- package/dist/ports-CqLSlU6Z.js +0 -317
- package/dist/ports-D94CwCrv.js +0 -344
- package/dist/ports-D_NHthOz.js +0 -96
- package/dist/program-DkJHjI0R.js +0 -176
- package/dist/program-context-DnyGM2SC.js +0 -496
- package/dist/progress-Bek_GyWS.js +0 -133
- package/dist/prompt-style-lu0clOOE.js +0 -9
- package/dist/pw-ai-BLVMuSLv.js +0 -1867
- package/dist/pw-ai-DZJWEF_f.js +0 -1865
- package/dist/pw-ai-dzf-ptcn.js +0 -1868
- package/dist/qmd-manager-Cur_Ekn0.js +0 -937
- package/dist/qmd-manager-DNAUuwjK.js +0 -938
- package/dist/qmd-manager-DepEoASu.js +0 -935
- package/dist/register.agent-CSWvzOkR.js +0 -265
- package/dist/register.agent-UeH2NXmH.js +0 -1003
- package/dist/register.anima-DOdee0dh.js +0 -193
- package/dist/register.anima-HHDWsz6r.js +0 -193
- package/dist/register.configure-CSJFxdz9.js +0 -103
- package/dist/register.configure-D84Fvcz4.js +0 -101
- package/dist/register.maintenance-B3pvNbZb.js +0 -543
- package/dist/register.maintenance-BKVOwkw6.js +0 -543
- package/dist/register.message-BAO6CPl2.js +0 -657
- package/dist/register.message-OXoOKE_6.js +0 -660
- package/dist/register.onboard-BK_ixVmD.js +0 -170
- package/dist/register.onboard-cfCaPx6j.js +0 -170
- package/dist/register.setup-BGfDnzph.js +0 -175
- package/dist/register.setup-Y-Q74M-0.js +0 -175
- package/dist/register.status-health-sessions-CT14eitH.js +0 -142
- package/dist/register.status-health-sessions-TfZMzAUn.js +0 -313
- package/dist/register.subclis-BZwdlNHC.js +0 -255
- package/dist/reply-mlsExaZm.js +0 -32212
- package/dist/reply-prefix-B0CfR4bM.js +0 -100
- package/dist/reply-prefix-w4a39ybC.js +0 -100
- package/dist/reply-qalRISe_.js +0 -32212
- package/dist/routes-CENsHJyg.js +0 -1820
- package/dist/routes-DO0HqW2e.js +0 -1820
- package/dist/rpc-C0pjNhBi.js +0 -70
- package/dist/rpc-DZ44PIXE.js +0 -70
- package/dist/run-main-BMpKw8Mp.js +0 -371
- package/dist/runtime-guard-BSUFiAQV.js +0 -60
- package/dist/sandbox-BIGfMYEI.js +0 -858
- package/dist/sandbox-DxP3IpUP.js +0 -859
- package/dist/sandbox-cli-DtLGH8sL.js +0 -461
- package/dist/sandbox-cli-_Tg7lfJ_.js +0 -458
- package/dist/security-cli-BRwgbedo.js +0 -462
- package/dist/security-cli-D3bSuyZt.js +0 -465
- package/dist/server-context-49XFFxFg.js +0 -824
- package/dist/server-context-LrlgrZzS.js +0 -824
- package/dist/server-node-events-Dm52i7NW.js +0 -231
- package/dist/server-node-events-QX523UyF.js +0 -233
- package/dist/service-BNVpYcQe.js +0 -642
- package/dist/service-D56aMXUB.js +0 -642
- package/dist/service-audit-D0X_XAB2.js +0 -488
- package/dist/service-audit-qmf6XMmP.js +0 -488
- package/dist/session-CrQQLLhx.js +0 -179
- package/dist/session-LocsOOWJ.js +0 -181
- package/dist/session-Vlce2BAT.js +0 -181
- package/dist/session-cost-usage-BwiTZuKl.js +0 -600
- package/dist/session-cost-usage-DT9YNXTJ.js +0 -600
- package/dist/sessions-BfV53TbG.js +0 -1296
- package/dist/sessions-BimpX_km.js +0 -180
- package/dist/sessions-DcXpzig0.js +0 -1296
- package/dist/sessions-Wd18dukK.js +0 -2038
- package/dist/shared-Bsr69u_7.js +0 -77
- package/dist/shared-Cgly1vPb.js +0 -66
- package/dist/shared-JOo05hST.js +0 -66
- package/dist/shared-f7dvQsi7.js +0 -77
- package/dist/skill-scanner-CkaVLABv.js +0 -263
- package/dist/skills-B-G7UHOa.js +0 -808
- package/dist/skills-B5LQx4lT.js +0 -807
- package/dist/skills-cli-DUGe2ZWW.js +0 -286
- package/dist/skills-cli-DtOk0bvK.js +0 -289
- package/dist/skills-status-Clq9ZnYu.js +0 -166
- package/dist/skills-status-JQluhU-P.js +0 -166
- package/dist/sqlite-BukcjdJa.js +0 -321
- package/dist/sqlite-CGcOZZ0C.js +0 -368
- package/dist/sqlite-Ck6f9KWc.js +0 -453
- package/dist/start--xmSFepB.js +0 -372
- package/dist/start-BdlZbqrr.js +0 -371
- package/dist/status-BgoeFm6g.js +0 -2137
- package/dist/status-BjjDrUq7.js +0 -27
- package/dist/status-Ct0DgOZ-.js +0 -2132
- package/dist/status-RA_uNmK0.js +0 -27
- package/dist/status.update-BjOH3GlS.js +0 -79
- package/dist/status.update-DLU1qBf0.js +0 -79
- package/dist/subagent-registry-9RLdKxES.js +0 -2760
- package/dist/subagent-registry-Byuex3zp.js +0 -2759
- package/dist/subagent-registry-DOBunBYS.js +0 -14
- package/dist/subsystem-Dowf8fSU.js +0 -860
- package/dist/system-cli-C5oBpzni.js +0 -79
- package/dist/system-cli-DXNKD_Id.js +0 -82
- package/dist/systemd-BSrHDyeU.js +0 -452
- package/dist/systemd-By5xdSB4.js +0 -452
- package/dist/systemd-hints-BtjL_5Rh.js +0 -36
- package/dist/systemd-hints-sJmr6cjb.js +0 -36
- package/dist/systemd-linger-CTmV2Gci.js +0 -75
- package/dist/systemd-linger-CmyqQkeC.js +0 -75
- package/dist/table-BL0lJzsm.js +0 -279
- package/dist/table-DoiRPsn0.js +0 -279
- package/dist/timeout-CswI_K-U.js +0 -232
- package/dist/tokens-C-X7wDKj.js +0 -14
- package/dist/tokens-DkvqA72p.js +0 -14
- package/dist/trash-BJLK1vMn.js +0 -23
- package/dist/trash-_x5UZ94k.js +0 -23
- package/dist/tui-BHjxDFZC.js +0 -3894
- package/dist/tui-CgOocwN8.js +0 -3894
- package/dist/tui-cli-5ANH8dE5.js +0 -47
- package/dist/tui-cli-BQ4P-JW_.js +0 -50
- package/dist/update-LFgxHHPd.js +0 -317
- package/dist/update-TxptCqk7.js +0 -317
- package/dist/update-check-CWc7YXmc.js +0 -400
- package/dist/update-check-IhlWaui6.js +0 -400
- package/dist/update-cli-PtXU62w7.js +0 -1105
- package/dist/update-cli-Va0EtETG.js +0 -1105
- package/dist/update-runner-BLeKFkiB.js +0 -894
- package/dist/update-runner-Iuzpc-_y.js +0 -894
- package/dist/usage-ApGvBLVg.js +0 -4516
- package/dist/utils-Bsw__U-F.js +0 -243
- package/dist/web-B6_Ky60G.js +0 -63
- package/dist/web-EZLQEWXY.js +0 -46842
- package/dist/web-pec8YJUX.js +0 -2203
- package/dist/webhooks-cli-BYQKTHTp.js +0 -319
- package/dist/webhooks-cli-C2_xtsUQ.js +0 -316
- package/dist/whatsapp-actions-C72VCq8f.js +0 -49
- package/dist/whatsapp-actions-Ck9Uv0Nw.js +0 -45
- package/dist/whatsapp-actions-D0reTj2k.js +0 -53
- package/dist/widearea-dns-B6ocX23x.js +0 -127
- package/dist/widearea-dns-NsEUNYwz.js +0 -127
- package/dist/workspace-Dcfoy5JJ.js +0 -649
- package/dist/ws-log-N8R5MvGE.js +0 -267
- package/dist/ws-log-gwFxPxj5.js +0 -267
- /package/dist/{auto-update-CUeF99gI.js → auto-update-CpF0fycd.js} +0 -0
- /package/dist/{auto-update-cgkp9ZTJ.js → auto-update-DNWdO7uF.js} +0 -0
- /package/dist/{brew-CVZkr0GU.js → brew-nqf_MiE4.js} +0 -0
- /package/dist/{budget-DxYQSekw.js → budget-CPedI-qW.js} +0 -0
- /package/dist/{budget-BWBp8Res.js → budget-CRpvqDRX.js} +0 -0
- /package/dist/{cli-utils-DtAxdCte.js → cli-utils-C1YHVD4o.js} +0 -0
- /package/dist/{command-options-CSbuuqHr.js → command-options-BbponVnw.js} +0 -0
- /package/dist/{command-options-Cp1tf96a.js → command-options-s0gnvXnS.js} +0 -0
- /package/dist/{constants-O8yBqCBv.js → constants-Dhb6zSIV.js} +0 -0
- /package/dist/{dangerous-tools-5ObDWy1N.js → dangerous-tools-DGTtJ_JR.js} +0 -0
- /package/dist/{dangerous-tools-Jwr7jqNw.js → dangerous-tools-DxrfTOfT.js} +0 -0
- /package/dist/{delivery-queue-B6IHz4Ry.js → delivery-queue-Bxm0nzw7.js} +0 -0
- /package/dist/{display-BDOsXu8F.js → display-Jy3UdGzA.js} +0 -0
- /package/dist/{errors-CHow2wtt.js → errors-CKaCqKga.js} +0 -0
- /package/dist/{exec-BizYYQgP.js → exec-DDmuVVNq.js} +0 -0
- /package/dist/{format-Mq6iU0_5.js → format-ByEjgyTF.js} +0 -0
- /package/dist/{format-duration-DhWzz_5b.js → format-duration-Aaj5tjJd.js} +0 -0
- /package/dist/{format-relative-C6kUHuOj.js → format-relative-79_Y1n2Y.js} +0 -0
- /package/dist/{help-format-DUBI91Ti.js → help-format-BMKzarov.js} +0 -0
- /package/dist/{helpers-eJFa4K6r.js → helpers-DpEB9Mh0.js} +0 -0
- /package/dist/{helpers-DLgbkcEn.js → helpers-FMld9sBT.js} +0 -0
- /package/dist/{input-provenance-DJBdpeKk.js → input-provenance-Cy_KnBlP.js} +0 -0
- /package/dist/{is-main-Dt9DTcH1.js → is-main-yjaVwMtJ.js} +0 -0
- /package/dist/{loader-l2OBdJ8x.js → loader-Br7Vr0zn.js} +0 -0
- /package/dist/{loader-BoYxRfcW.js → loader-CkmOrXcC.js} +0 -0
- /package/dist/{logging-BdnOSVPD.js → logging-CY-Q5cwf.js} +0 -0
- /package/dist/{message-channel-w4F2b2F6.js → message-channel-dua8OOGJ.js} +0 -0
- /package/dist/{mime-B1ZoR53M.js → mime-CBg4KybI.js} +0 -0
- /package/dist/{model-param-b-DPwyNGn8.js → model-param-b-DW9f0NN8.js} +0 -0
- /package/dist/{node-match-8XZnaid6.js → node-match-BV8bTBd4.js} +0 -0
- /package/dist/{normalize-GDK8JTNW.js → normalize-_lmlBOW9.js} +0 -0
- /package/dist/{openclaw-root-C85WMnVV.js → openclaw-root-JPvmPTf7.js} +0 -0
- /package/dist/{outbound-send-deps-ANnAhImn.js → outbound-send-deps-BfUvuWGa.js} +0 -0
- /package/dist/{parse-6-2MDhdT.js → parse-CZRwKocn.js} +0 -0
- /package/dist/{parse-log-line-Bqh1SSzC.js → parse-log-line-CvrZEK6A.js} +0 -0
- /package/dist/{parse-log-line-DUZCjXbl.js → parse-log-line-mLdat0AH.js} +0 -0
- /package/dist/{parse-port-BKB9Exlg.js → parse-port-BSOOdo7I.js} +0 -0
- /package/dist/{parse-port-DrfvwwiL.js → parse-port-Y0NK62x1.js} +0 -0
- /package/dist/{parse-timeout-Di_tcEmi.js → parse-timeout-DVPQ3n9j.js} +0 -0
- /package/dist/{paths-DcVEkYX5.js → paths-DHjlJ6cn.js} +0 -0
- /package/dist/{pi-model-discovery-DsRqYJLy.js → pi-model-discovery-DzEIEgHL.js} +0 -0
- /package/dist/{plugins-CDJw924T.js → plugins-D6PBOdkn.js} +0 -0
- /package/dist/{program-context-Bvn8046-.js → program-context-Q1hkT73c.js} +0 -0
- /package/dist/{progress-CbZ2D53A.js → progress-C9Ha1NJh.js} +0 -0
- /package/dist/{prompt-style-DKy6qQxR.js → prompt-style-DQi8j03a.js} +0 -0
- /package/dist/{prompts-BI__va99.js → prompts-BEHxUC3w.js} +0 -0
- /package/dist/{prompts-_dDWkCAz.js → prompts-CSOhuiqe.js} +0 -0
- /package/dist/{queue-D_u34pbL.js → queue-BJGo7kAB.js} +0 -0
- /package/dist/{queue-PG591iID.js → queue-DYgUbdoq.js} +0 -0
- /package/dist/{redact-ClVwO7Nn.js → redact-CyKvdFrg.js} +0 -0
- /package/dist/{registry-Bs_DJK9E.js → registry-C5MAYD4V.js} +0 -0
- /package/dist/{registry-D_zlP1U-.js → registry-CRrXXVs0.js} +0 -0
- /package/dist/{requirements-BzZxj2Wu.js → requirements-CGkxTCu4.js} +0 -0
- /package/dist/{requirements-DIW1svgA.js → requirements-CIDaOcbO.js} +0 -0
- /package/dist/{runtime-guard-DeOXA_86.js → runtime-guard-nL3Lp8T-.js} +0 -0
- /package/dist/{secret-equal-Dghy3xsA.js → secret-equal-DJpmLXlG.js} +0 -0
- /package/dist/{send-BhAfdGII.js → send-CTcxgDDU.js} +0 -0
- /package/dist/{send-ga9udK1_.js → send-DPezUR3-.js} +0 -0
- /package/dist/{send-C2t9xpXI.js → send-DZQTaG7-.js} +0 -0
- /package/dist/{send-DigO-i9j.js → send-VDff2gra.js} +0 -0
- /package/dist/{send-Dz2BDHll.js → send-bgQNV8d1.js} +0 -0
- /package/dist/{session-key-BGiG_JcT.js → session-key-CQT-NR6w.js} +0 -0
- /package/dist/{shell-argv-CAq1mLa2.js → shell-argv-n9IueeJQ.js} +0 -0
- /package/dist/{skill-scanner-Coo4QoCd.js → skill-scanner-o6NgVMD9.js} +0 -0
- /package/dist/{status-CMnlcBVc.js → status-C53kTIXF.js} +0 -0
- /package/dist/{status-tDZPwewW.js → status-CZDDA_Sy.js} +0 -0
- /package/dist/{system-run-command-X9lDJIy0.js → system-run-command-BCjUffN9.js} +0 -0
- /package/dist/{system-run-command-DGk7dwQP.js → system-run-command-CqAqKL9K.js} +0 -0
- /package/dist/{tailnet-CuiNECdL.js → tailnet-Ciwjv243.js} +0 -0
- /package/dist/{templates-CeYJjVzw.js → templates-37RKpACb.js} +0 -0
- /package/dist/{templates-I3Z0xplD.js → templates-DPalk30o.js} +0 -0
- /package/dist/{thinking-BXEswx1X.js → thinking-2hxwmvTl.js} +0 -0
- /package/dist/{transcript-events-C1hdue6u.js → transcript-events-Bp7fGnwv.js} +0 -0
- /package/dist/{transcript-tools-DuyYOkUq.js → transcript-tools-D4Lbxlka.js} +0 -0
- /package/dist/{usage-format-BAirWUSO.js → usage-format-6Uar63S0.js} +0 -0
- /package/dist/{utils-C9sj30YY.js → utils-DT8uXjFS.js} +0 -0
- /package/dist/{wsl-CqyuRvtM.js → wsl-CrPvx2kZ.js} +0 -0
- /package/dist/{wsl-ymJYvc9Q.js → wsl-UvJ5dHah.js} +0 -0
|
@@ -0,0 +1,807 @@
|
|
|
1
|
+
import { a as parseBooleanValue, o as createSubsystemLogger } from "./entry.js";
|
|
2
|
+
import { t as CONFIG_DIR, y as resolveUserPath } from "./utils-DT8uXjFS.js";
|
|
3
|
+
import { n as resolveAnimaPackageRootSync } from "./openclaw-root-JPvmPTf7.js";
|
|
4
|
+
import { c as resolveEnableState, f as LEGACY_MANIFEST_KEYS, l as resolveMemorySlotDecision, p as MANIFEST_KEY, s as normalizePluginsConfig, t as loadPluginManifestRegistry } from "./manifest-registry-DbvPaBXY.js";
|
|
5
|
+
import os from "node:os";
|
|
6
|
+
import path from "node:path";
|
|
7
|
+
import fs from "node:fs";
|
|
8
|
+
import JSON5 from "json5";
|
|
9
|
+
import fs$1 from "node:fs/promises";
|
|
10
|
+
import { fileURLToPath } from "node:url";
|
|
11
|
+
import { formatSkillsForPrompt, loadSkillsFromDir } from "@mariozechner/pi-coding-agent";
|
|
12
|
+
import YAML from "yaml";
|
|
13
|
+
|
|
14
|
+
//#region src/shared/config-eval.ts
|
|
15
|
+
function isTruthy(value) {
|
|
16
|
+
if (value === void 0 || value === null) return false;
|
|
17
|
+
if (typeof value === "boolean") return value;
|
|
18
|
+
if (typeof value === "number") return value !== 0;
|
|
19
|
+
if (typeof value === "string") return value.trim().length > 0;
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
function resolveConfigPath(config, pathStr) {
|
|
23
|
+
const parts = pathStr.split(".").filter(Boolean);
|
|
24
|
+
let current = config;
|
|
25
|
+
for (const part of parts) {
|
|
26
|
+
if (typeof current !== "object" || current === null) return;
|
|
27
|
+
current = current[part];
|
|
28
|
+
}
|
|
29
|
+
return current;
|
|
30
|
+
}
|
|
31
|
+
function isConfigPathTruthyWithDefaults(config, pathStr, defaults) {
|
|
32
|
+
const value = resolveConfigPath(config, pathStr);
|
|
33
|
+
if (value === void 0 && pathStr in defaults) return defaults[pathStr] ?? false;
|
|
34
|
+
return isTruthy(value);
|
|
35
|
+
}
|
|
36
|
+
function resolveRuntimePlatform() {
|
|
37
|
+
return process.platform;
|
|
38
|
+
}
|
|
39
|
+
function windowsPathExtensions() {
|
|
40
|
+
const raw = process.env.PATHEXT;
|
|
41
|
+
return ["", ...(raw !== void 0 ? raw.split(";").map((v) => v.trim()) : [
|
|
42
|
+
".EXE",
|
|
43
|
+
".CMD",
|
|
44
|
+
".BAT",
|
|
45
|
+
".COM"
|
|
46
|
+
]).filter(Boolean)];
|
|
47
|
+
}
|
|
48
|
+
let cachedHasBinaryPath;
|
|
49
|
+
let cachedHasBinaryPathExt;
|
|
50
|
+
const hasBinaryCache = /* @__PURE__ */ new Map();
|
|
51
|
+
function hasBinary(bin) {
|
|
52
|
+
const pathEnv = process.env.PATH ?? "";
|
|
53
|
+
const pathExt = process.platform === "win32" ? process.env.PATHEXT ?? "" : "";
|
|
54
|
+
if (cachedHasBinaryPath !== pathEnv || cachedHasBinaryPathExt !== pathExt) {
|
|
55
|
+
cachedHasBinaryPath = pathEnv;
|
|
56
|
+
cachedHasBinaryPathExt = pathExt;
|
|
57
|
+
hasBinaryCache.clear();
|
|
58
|
+
}
|
|
59
|
+
if (hasBinaryCache.has(bin)) return hasBinaryCache.get(bin);
|
|
60
|
+
const parts = pathEnv.split(path.delimiter).filter(Boolean);
|
|
61
|
+
const extensions = process.platform === "win32" ? windowsPathExtensions() : [""];
|
|
62
|
+
for (const part of parts) for (const ext of extensions) {
|
|
63
|
+
const candidate = path.join(part, bin + ext);
|
|
64
|
+
try {
|
|
65
|
+
fs.accessSync(candidate, fs.constants.X_OK);
|
|
66
|
+
hasBinaryCache.set(bin, true);
|
|
67
|
+
return true;
|
|
68
|
+
} catch {}
|
|
69
|
+
}
|
|
70
|
+
hasBinaryCache.set(bin, false);
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
//#endregion
|
|
75
|
+
//#region src/markdown/frontmatter.ts
|
|
76
|
+
function stripQuotes(value) {
|
|
77
|
+
if (value.startsWith("\"") && value.endsWith("\"") || value.startsWith("'") && value.endsWith("'")) return value.slice(1, -1);
|
|
78
|
+
return value;
|
|
79
|
+
}
|
|
80
|
+
function coerceFrontmatterValue(value) {
|
|
81
|
+
if (value === null || value === void 0) return;
|
|
82
|
+
if (typeof value === "string") return value.trim();
|
|
83
|
+
if (typeof value === "number" || typeof value === "boolean") return String(value);
|
|
84
|
+
if (typeof value === "object") try {
|
|
85
|
+
return JSON.stringify(value);
|
|
86
|
+
} catch {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
function parseYamlFrontmatter(block) {
|
|
91
|
+
try {
|
|
92
|
+
const parsed = YAML.parse(block);
|
|
93
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) return null;
|
|
94
|
+
const result = {};
|
|
95
|
+
for (const [rawKey, value] of Object.entries(parsed)) {
|
|
96
|
+
const key = rawKey.trim();
|
|
97
|
+
if (!key) continue;
|
|
98
|
+
const coerced = coerceFrontmatterValue(value);
|
|
99
|
+
if (coerced === void 0) continue;
|
|
100
|
+
result[key] = coerced;
|
|
101
|
+
}
|
|
102
|
+
return result;
|
|
103
|
+
} catch {
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function extractMultiLineValue(lines, startIndex) {
|
|
108
|
+
const match = lines[startIndex].match(/^([\w-]+):\s*(.*)$/);
|
|
109
|
+
if (!match) return {
|
|
110
|
+
value: "",
|
|
111
|
+
linesConsumed: 1
|
|
112
|
+
};
|
|
113
|
+
const inlineValue = match[2].trim();
|
|
114
|
+
if (inlineValue) return {
|
|
115
|
+
value: inlineValue,
|
|
116
|
+
linesConsumed: 1
|
|
117
|
+
};
|
|
118
|
+
const valueLines = [];
|
|
119
|
+
let i = startIndex + 1;
|
|
120
|
+
while (i < lines.length) {
|
|
121
|
+
const line = lines[i];
|
|
122
|
+
if (line.length > 0 && !line.startsWith(" ") && !line.startsWith(" ")) break;
|
|
123
|
+
valueLines.push(line);
|
|
124
|
+
i++;
|
|
125
|
+
}
|
|
126
|
+
return {
|
|
127
|
+
value: valueLines.join("\n").trim(),
|
|
128
|
+
linesConsumed: i - startIndex
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
function parseLineFrontmatter(block) {
|
|
132
|
+
const frontmatter = {};
|
|
133
|
+
const lines = block.split("\n");
|
|
134
|
+
let i = 0;
|
|
135
|
+
while (i < lines.length) {
|
|
136
|
+
const match = lines[i].match(/^([\w-]+):\s*(.*)$/);
|
|
137
|
+
if (!match) {
|
|
138
|
+
i++;
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
const key = match[1];
|
|
142
|
+
const inlineValue = match[2].trim();
|
|
143
|
+
if (!key) {
|
|
144
|
+
i++;
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
if (!inlineValue && i + 1 < lines.length) {
|
|
148
|
+
const nextLine = lines[i + 1];
|
|
149
|
+
if (nextLine.startsWith(" ") || nextLine.startsWith(" ")) {
|
|
150
|
+
const { value, linesConsumed } = extractMultiLineValue(lines, i);
|
|
151
|
+
if (value) frontmatter[key] = value;
|
|
152
|
+
i += linesConsumed;
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
const value = stripQuotes(inlineValue);
|
|
157
|
+
if (value) frontmatter[key] = value;
|
|
158
|
+
i++;
|
|
159
|
+
}
|
|
160
|
+
return frontmatter;
|
|
161
|
+
}
|
|
162
|
+
function parseFrontmatterBlock(content) {
|
|
163
|
+
const normalized = content.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
|
|
164
|
+
if (!normalized.startsWith("---")) return {};
|
|
165
|
+
const endIndex = normalized.indexOf("\n---", 3);
|
|
166
|
+
if (endIndex === -1) return {};
|
|
167
|
+
const block = normalized.slice(4, endIndex);
|
|
168
|
+
const lineParsed = parseLineFrontmatter(block);
|
|
169
|
+
const yamlParsed = parseYamlFrontmatter(block);
|
|
170
|
+
if (yamlParsed === null) return lineParsed;
|
|
171
|
+
const merged = { ...yamlParsed };
|
|
172
|
+
for (const [key, value] of Object.entries(lineParsed)) if (value.startsWith("{") || value.startsWith("[")) merged[key] = value;
|
|
173
|
+
return merged;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
//#endregion
|
|
177
|
+
//#region src/shared/frontmatter.ts
|
|
178
|
+
function normalizeStringList(input) {
|
|
179
|
+
if (!input) return [];
|
|
180
|
+
if (Array.isArray(input)) return input.map((value) => String(value).trim()).filter(Boolean);
|
|
181
|
+
if (typeof input === "string") return input.split(",").map((value) => value.trim()).filter(Boolean);
|
|
182
|
+
return [];
|
|
183
|
+
}
|
|
184
|
+
function getFrontmatterString(frontmatter, key) {
|
|
185
|
+
const raw = frontmatter[key];
|
|
186
|
+
return typeof raw === "string" ? raw : void 0;
|
|
187
|
+
}
|
|
188
|
+
function parseFrontmatterBool(value, fallback) {
|
|
189
|
+
const parsed = parseBooleanValue(value);
|
|
190
|
+
return parsed === void 0 ? fallback : parsed;
|
|
191
|
+
}
|
|
192
|
+
function resolveAnimaManifestBlock(params) {
|
|
193
|
+
const raw = getFrontmatterString(params.frontmatter, params.key ?? "metadata");
|
|
194
|
+
if (!raw) return;
|
|
195
|
+
try {
|
|
196
|
+
const parsed = JSON5.parse(raw);
|
|
197
|
+
if (!parsed || typeof parsed !== "object") return;
|
|
198
|
+
const manifestKeys = [MANIFEST_KEY, ...LEGACY_MANIFEST_KEYS];
|
|
199
|
+
for (const key of manifestKeys) {
|
|
200
|
+
const candidate = parsed[key];
|
|
201
|
+
if (candidate && typeof candidate === "object") return candidate;
|
|
202
|
+
}
|
|
203
|
+
return;
|
|
204
|
+
} catch {
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
//#endregion
|
|
210
|
+
//#region src/agents/skills/frontmatter.ts
|
|
211
|
+
function parseFrontmatter(content) {
|
|
212
|
+
return parseFrontmatterBlock(content);
|
|
213
|
+
}
|
|
214
|
+
function parseInstallSpec(input) {
|
|
215
|
+
if (!input || typeof input !== "object") return;
|
|
216
|
+
const raw = input;
|
|
217
|
+
const kind = (typeof raw.kind === "string" ? raw.kind : typeof raw.type === "string" ? raw.type : "").trim().toLowerCase();
|
|
218
|
+
if (kind !== "brew" && kind !== "node" && kind !== "go" && kind !== "uv" && kind !== "download") return;
|
|
219
|
+
const spec = { kind };
|
|
220
|
+
if (typeof raw.id === "string") spec.id = raw.id;
|
|
221
|
+
if (typeof raw.label === "string") spec.label = raw.label;
|
|
222
|
+
const bins = normalizeStringList(raw.bins);
|
|
223
|
+
if (bins.length > 0) spec.bins = bins;
|
|
224
|
+
const osList = normalizeStringList(raw.os);
|
|
225
|
+
if (osList.length > 0) spec.os = osList;
|
|
226
|
+
if (typeof raw.formula === "string") spec.formula = raw.formula;
|
|
227
|
+
if (typeof raw.package === "string") spec.package = raw.package;
|
|
228
|
+
if (typeof raw.module === "string") spec.module = raw.module;
|
|
229
|
+
if (typeof raw.url === "string") spec.url = raw.url;
|
|
230
|
+
if (typeof raw.archive === "string") spec.archive = raw.archive;
|
|
231
|
+
if (typeof raw.extract === "boolean") spec.extract = raw.extract;
|
|
232
|
+
if (typeof raw.stripComponents === "number") spec.stripComponents = raw.stripComponents;
|
|
233
|
+
if (typeof raw.targetDir === "string") spec.targetDir = raw.targetDir;
|
|
234
|
+
return spec;
|
|
235
|
+
}
|
|
236
|
+
function resolveAnimaMetadata(frontmatter) {
|
|
237
|
+
const metadataObj = resolveAnimaManifestBlock({ frontmatter });
|
|
238
|
+
if (!metadataObj) return;
|
|
239
|
+
const requiresRaw = typeof metadataObj.requires === "object" && metadataObj.requires !== null ? metadataObj.requires : void 0;
|
|
240
|
+
const install = (Array.isArray(metadataObj.install) ? metadataObj.install : []).map((entry) => parseInstallSpec(entry)).filter((entry) => Boolean(entry));
|
|
241
|
+
const osRaw = normalizeStringList(metadataObj.os);
|
|
242
|
+
return {
|
|
243
|
+
always: typeof metadataObj.always === "boolean" ? metadataObj.always : void 0,
|
|
244
|
+
emoji: typeof metadataObj.emoji === "string" ? metadataObj.emoji : void 0,
|
|
245
|
+
homepage: typeof metadataObj.homepage === "string" ? metadataObj.homepage : void 0,
|
|
246
|
+
skillKey: typeof metadataObj.skillKey === "string" ? metadataObj.skillKey : void 0,
|
|
247
|
+
primaryEnv: typeof metadataObj.primaryEnv === "string" ? metadataObj.primaryEnv : void 0,
|
|
248
|
+
os: osRaw.length > 0 ? osRaw : void 0,
|
|
249
|
+
requires: requiresRaw ? {
|
|
250
|
+
bins: normalizeStringList(requiresRaw.bins),
|
|
251
|
+
anyBins: normalizeStringList(requiresRaw.anyBins),
|
|
252
|
+
env: normalizeStringList(requiresRaw.env),
|
|
253
|
+
config: normalizeStringList(requiresRaw.config)
|
|
254
|
+
} : void 0,
|
|
255
|
+
install: install.length > 0 ? install : void 0
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
function resolveSkillInvocationPolicy(frontmatter) {
|
|
259
|
+
return {
|
|
260
|
+
userInvocable: parseFrontmatterBool(getFrontmatterString(frontmatter, "user-invocable"), true),
|
|
261
|
+
disableModelInvocation: parseFrontmatterBool(getFrontmatterString(frontmatter, "disable-model-invocation"), false)
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
function resolveSkillKey(skill, entry) {
|
|
265
|
+
return entry?.metadata?.skillKey ?? skill.name;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
//#endregion
|
|
269
|
+
//#region src/agents/skills/config.ts
|
|
270
|
+
const DEFAULT_CONFIG_VALUES = {
|
|
271
|
+
"browser.enabled": true,
|
|
272
|
+
"browser.evaluateEnabled": true
|
|
273
|
+
};
|
|
274
|
+
function isConfigPathTruthy(config, pathStr) {
|
|
275
|
+
return isConfigPathTruthyWithDefaults(config, pathStr, DEFAULT_CONFIG_VALUES);
|
|
276
|
+
}
|
|
277
|
+
function resolveSkillConfig(config, skillKey) {
|
|
278
|
+
const skills = config?.skills?.entries;
|
|
279
|
+
if (!skills || typeof skills !== "object") return;
|
|
280
|
+
const entry = skills[skillKey];
|
|
281
|
+
if (!entry || typeof entry !== "object") return;
|
|
282
|
+
return entry;
|
|
283
|
+
}
|
|
284
|
+
function normalizeAllowlist(input) {
|
|
285
|
+
if (!input) return;
|
|
286
|
+
if (!Array.isArray(input)) return;
|
|
287
|
+
const normalized = input.map((entry) => String(entry).trim()).filter(Boolean);
|
|
288
|
+
return normalized.length > 0 ? normalized : void 0;
|
|
289
|
+
}
|
|
290
|
+
const BUNDLED_SOURCES = new Set(["anima-bundled"]);
|
|
291
|
+
function isBundledSkill(entry) {
|
|
292
|
+
return BUNDLED_SOURCES.has(entry.skill.source);
|
|
293
|
+
}
|
|
294
|
+
function resolveBundledAllowlist(config) {
|
|
295
|
+
return normalizeAllowlist(config?.skills?.allowBundled);
|
|
296
|
+
}
|
|
297
|
+
function isBundledSkillAllowed(entry, allowlist) {
|
|
298
|
+
if (!allowlist || allowlist.length === 0) return true;
|
|
299
|
+
if (!isBundledSkill(entry)) return true;
|
|
300
|
+
const key = resolveSkillKey(entry.skill, entry);
|
|
301
|
+
return allowlist.includes(key) || allowlist.includes(entry.skill.name);
|
|
302
|
+
}
|
|
303
|
+
function shouldIncludeSkill(params) {
|
|
304
|
+
const { entry, config, eligibility } = params;
|
|
305
|
+
const skillConfig = resolveSkillConfig(config, resolveSkillKey(entry.skill, entry));
|
|
306
|
+
const allowBundled = normalizeAllowlist(config?.skills?.allowBundled);
|
|
307
|
+
const osList = entry.metadata?.os ?? [];
|
|
308
|
+
const remotePlatforms = eligibility?.remote?.platforms ?? [];
|
|
309
|
+
if (skillConfig?.enabled === false) return false;
|
|
310
|
+
if (!isBundledSkillAllowed(entry, allowBundled)) return false;
|
|
311
|
+
if (osList.length > 0 && !osList.includes(resolveRuntimePlatform()) && !remotePlatforms.some((platform) => osList.includes(platform))) return false;
|
|
312
|
+
if (entry.metadata?.always === true) return true;
|
|
313
|
+
const requiredBins = entry.metadata?.requires?.bins ?? [];
|
|
314
|
+
if (requiredBins.length > 0) for (const bin of requiredBins) {
|
|
315
|
+
if (hasBinary(bin)) continue;
|
|
316
|
+
if (eligibility?.remote?.hasBin?.(bin)) continue;
|
|
317
|
+
return false;
|
|
318
|
+
}
|
|
319
|
+
const requiredAnyBins = entry.metadata?.requires?.anyBins ?? [];
|
|
320
|
+
if (requiredAnyBins.length > 0) {
|
|
321
|
+
if (!(requiredAnyBins.some((bin) => hasBinary(bin)) || eligibility?.remote?.hasAnyBin?.(requiredAnyBins))) return false;
|
|
322
|
+
}
|
|
323
|
+
const requiredEnv = entry.metadata?.requires?.env ?? [];
|
|
324
|
+
if (requiredEnv.length > 0) for (const envName of requiredEnv) {
|
|
325
|
+
if (process.env[envName]) continue;
|
|
326
|
+
if (skillConfig?.env?.[envName]) continue;
|
|
327
|
+
if (skillConfig?.apiKey && entry.metadata?.primaryEnv === envName) continue;
|
|
328
|
+
return false;
|
|
329
|
+
}
|
|
330
|
+
const requiredConfig = entry.metadata?.requires?.config ?? [];
|
|
331
|
+
if (requiredConfig.length > 0) {
|
|
332
|
+
for (const configPath of requiredConfig) if (!isConfigPathTruthy(config, configPath)) return false;
|
|
333
|
+
}
|
|
334
|
+
return true;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
//#endregion
|
|
338
|
+
//#region src/agents/sandbox-paths.ts
|
|
339
|
+
const UNICODE_SPACES = /[\u00A0\u2000-\u200A\u202F\u205F\u3000]/g;
|
|
340
|
+
const HTTP_URL_RE = /^https?:\/\//i;
|
|
341
|
+
const DATA_URL_RE = /^data:/i;
|
|
342
|
+
function normalizeUnicodeSpaces(str) {
|
|
343
|
+
return str.replace(UNICODE_SPACES, " ");
|
|
344
|
+
}
|
|
345
|
+
function expandPath(filePath) {
|
|
346
|
+
const normalized = normalizeUnicodeSpaces(filePath);
|
|
347
|
+
if (normalized === "~") return os.homedir();
|
|
348
|
+
if (normalized.startsWith("~/")) return os.homedir() + normalized.slice(1);
|
|
349
|
+
return normalized;
|
|
350
|
+
}
|
|
351
|
+
function resolveToCwd(filePath, cwd) {
|
|
352
|
+
const expanded = expandPath(filePath);
|
|
353
|
+
if (path.isAbsolute(expanded)) return expanded;
|
|
354
|
+
return path.resolve(cwd, expanded);
|
|
355
|
+
}
|
|
356
|
+
function resolveSandboxInputPath(filePath, cwd) {
|
|
357
|
+
return resolveToCwd(filePath, cwd);
|
|
358
|
+
}
|
|
359
|
+
function resolveSandboxPath(params) {
|
|
360
|
+
const resolved = resolveSandboxInputPath(params.filePath, params.cwd);
|
|
361
|
+
const rootResolved = path.resolve(params.root);
|
|
362
|
+
const relative = path.relative(rootResolved, resolved);
|
|
363
|
+
if (!relative || relative === "") return {
|
|
364
|
+
resolved,
|
|
365
|
+
relative: ""
|
|
366
|
+
};
|
|
367
|
+
if (relative.startsWith("..") || path.isAbsolute(relative)) throw new Error(`Path escapes sandbox root (${shortPath(rootResolved)}): ${params.filePath}`);
|
|
368
|
+
return {
|
|
369
|
+
resolved,
|
|
370
|
+
relative
|
|
371
|
+
};
|
|
372
|
+
}
|
|
373
|
+
async function assertSandboxPath(params) {
|
|
374
|
+
const resolved = resolveSandboxPath(params);
|
|
375
|
+
await assertNoSymlinkEscape(resolved.relative, path.resolve(params.root), { allowFinalSymlink: params.allowFinalSymlink });
|
|
376
|
+
return resolved;
|
|
377
|
+
}
|
|
378
|
+
function assertMediaNotDataUrl(media) {
|
|
379
|
+
const raw = media.trim();
|
|
380
|
+
if (DATA_URL_RE.test(raw)) throw new Error("data: URLs are not supported for media. Use buffer instead.");
|
|
381
|
+
}
|
|
382
|
+
async function resolveSandboxedMediaSource(params) {
|
|
383
|
+
const raw = params.media.trim();
|
|
384
|
+
if (!raw) return raw;
|
|
385
|
+
if (HTTP_URL_RE.test(raw)) return raw;
|
|
386
|
+
let candidate = raw;
|
|
387
|
+
if (/^file:\/\//i.test(candidate)) try {
|
|
388
|
+
candidate = fileURLToPath(candidate);
|
|
389
|
+
} catch {
|
|
390
|
+
throw new Error(`Invalid file:// URL for sandboxed media: ${raw}`);
|
|
391
|
+
}
|
|
392
|
+
return (await assertSandboxPath({
|
|
393
|
+
filePath: candidate,
|
|
394
|
+
cwd: params.sandboxRoot,
|
|
395
|
+
root: params.sandboxRoot
|
|
396
|
+
})).resolved;
|
|
397
|
+
}
|
|
398
|
+
async function assertNoSymlinkEscape(relative, root, options) {
|
|
399
|
+
if (!relative) return;
|
|
400
|
+
const rootReal = await tryRealpath(root);
|
|
401
|
+
const parts = relative.split(path.sep).filter(Boolean);
|
|
402
|
+
let current = root;
|
|
403
|
+
for (let idx = 0; idx < parts.length; idx += 1) {
|
|
404
|
+
const part = parts[idx];
|
|
405
|
+
const isLast = idx === parts.length - 1;
|
|
406
|
+
current = path.join(current, part);
|
|
407
|
+
try {
|
|
408
|
+
if ((await fs$1.lstat(current)).isSymbolicLink()) {
|
|
409
|
+
if (options?.allowFinalSymlink && isLast) return;
|
|
410
|
+
const target = await tryRealpath(current);
|
|
411
|
+
if (!isPathInside(rootReal, target)) throw new Error(`Symlink escapes sandbox root (${shortPath(rootReal)}): ${shortPath(current)}`);
|
|
412
|
+
current = target;
|
|
413
|
+
}
|
|
414
|
+
} catch (err) {
|
|
415
|
+
if (err.code === "ENOENT") return;
|
|
416
|
+
throw err;
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
async function tryRealpath(value) {
|
|
421
|
+
try {
|
|
422
|
+
return await fs$1.realpath(value);
|
|
423
|
+
} catch {
|
|
424
|
+
return path.resolve(value);
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
function isPathInside(root, target) {
|
|
428
|
+
const relative = path.relative(root, target);
|
|
429
|
+
if (!relative || relative === "") return true;
|
|
430
|
+
return !(relative.startsWith("..") || path.isAbsolute(relative));
|
|
431
|
+
}
|
|
432
|
+
function shortPath(value) {
|
|
433
|
+
if (value.startsWith(os.homedir())) return `~${value.slice(os.homedir().length)}`;
|
|
434
|
+
return value;
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
//#endregion
|
|
438
|
+
//#region src/agents/skills/bundled-dir.ts
|
|
439
|
+
function looksLikeSkillsDir(dir) {
|
|
440
|
+
try {
|
|
441
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
442
|
+
for (const entry of entries) {
|
|
443
|
+
if (entry.name.startsWith(".")) continue;
|
|
444
|
+
const fullPath = path.join(dir, entry.name);
|
|
445
|
+
if (entry.isFile() && entry.name.endsWith(".md")) return true;
|
|
446
|
+
if (entry.isDirectory()) {
|
|
447
|
+
if (fs.existsSync(path.join(fullPath, "SKILL.md"))) return true;
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
} catch {
|
|
451
|
+
return false;
|
|
452
|
+
}
|
|
453
|
+
return false;
|
|
454
|
+
}
|
|
455
|
+
function resolveBundledSkillsDir(opts = {}) {
|
|
456
|
+
const override = process.env.ANIMA_BUNDLED_SKILLS_DIR?.trim();
|
|
457
|
+
if (override) return override;
|
|
458
|
+
try {
|
|
459
|
+
const execPath = opts.execPath ?? process.execPath;
|
|
460
|
+
const execDir = path.dirname(execPath);
|
|
461
|
+
const sibling = path.join(execDir, "skills");
|
|
462
|
+
if (fs.existsSync(sibling)) return sibling;
|
|
463
|
+
} catch {}
|
|
464
|
+
try {
|
|
465
|
+
const moduleUrl = opts.moduleUrl ?? import.meta.url;
|
|
466
|
+
const moduleDir = path.dirname(fileURLToPath(moduleUrl));
|
|
467
|
+
const packageRoot = resolveAnimaPackageRootSync({
|
|
468
|
+
argv1: opts.argv1 ?? process.argv[1],
|
|
469
|
+
moduleUrl,
|
|
470
|
+
cwd: opts.cwd ?? process.cwd()
|
|
471
|
+
});
|
|
472
|
+
if (packageRoot) {
|
|
473
|
+
const candidate = path.join(packageRoot, "skills");
|
|
474
|
+
if (looksLikeSkillsDir(candidate)) return candidate;
|
|
475
|
+
}
|
|
476
|
+
let current = moduleDir;
|
|
477
|
+
for (let depth = 0; depth < 6; depth += 1) {
|
|
478
|
+
const candidate = path.join(current, "skills");
|
|
479
|
+
if (looksLikeSkillsDir(candidate)) return candidate;
|
|
480
|
+
const next = path.dirname(current);
|
|
481
|
+
if (next === current) break;
|
|
482
|
+
current = next;
|
|
483
|
+
}
|
|
484
|
+
} catch {}
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
//#endregion
|
|
488
|
+
//#region src/agents/skills/plugin-skills.ts
|
|
489
|
+
const log = createSubsystemLogger("skills");
|
|
490
|
+
function resolvePluginSkillDirs(params) {
|
|
491
|
+
const workspaceDir = params.workspaceDir.trim();
|
|
492
|
+
if (!workspaceDir) return [];
|
|
493
|
+
const registry = loadPluginManifestRegistry({
|
|
494
|
+
workspaceDir,
|
|
495
|
+
config: params.config
|
|
496
|
+
});
|
|
497
|
+
if (registry.plugins.length === 0) return [];
|
|
498
|
+
const normalizedPlugins = normalizePluginsConfig(params.config?.plugins);
|
|
499
|
+
const memorySlot = normalizedPlugins.slots.memory;
|
|
500
|
+
let selectedMemoryPluginId = null;
|
|
501
|
+
const seen = /* @__PURE__ */ new Set();
|
|
502
|
+
const resolved = [];
|
|
503
|
+
for (const record of registry.plugins) {
|
|
504
|
+
if (!record.skills || record.skills.length === 0) continue;
|
|
505
|
+
if (!resolveEnableState(record.id, record.origin, normalizedPlugins).enabled) continue;
|
|
506
|
+
const memoryDecision = resolveMemorySlotDecision({
|
|
507
|
+
id: record.id,
|
|
508
|
+
kind: record.kind,
|
|
509
|
+
slot: memorySlot,
|
|
510
|
+
selectedId: selectedMemoryPluginId
|
|
511
|
+
});
|
|
512
|
+
if (!memoryDecision.enabled) continue;
|
|
513
|
+
if (memoryDecision.selected && record.kind === "memory") selectedMemoryPluginId = record.id;
|
|
514
|
+
for (const raw of record.skills) {
|
|
515
|
+
const trimmed = raw.trim();
|
|
516
|
+
if (!trimmed) continue;
|
|
517
|
+
const candidate = path.resolve(record.rootDir, trimmed);
|
|
518
|
+
if (!fs.existsSync(candidate)) {
|
|
519
|
+
log.warn(`plugin skill path not found (${record.id}): ${candidate}`);
|
|
520
|
+
continue;
|
|
521
|
+
}
|
|
522
|
+
if (seen.has(candidate)) continue;
|
|
523
|
+
seen.add(candidate);
|
|
524
|
+
resolved.push(candidate);
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
return resolved;
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
//#endregion
|
|
531
|
+
//#region src/agents/skills/serialize.ts
|
|
532
|
+
const SKILLS_SYNC_QUEUE = /* @__PURE__ */ new Map();
|
|
533
|
+
async function serializeByKey(key, task) {
|
|
534
|
+
const next = (SKILLS_SYNC_QUEUE.get(key) ?? Promise.resolve()).then(task, task);
|
|
535
|
+
SKILLS_SYNC_QUEUE.set(key, next);
|
|
536
|
+
try {
|
|
537
|
+
return await next;
|
|
538
|
+
} finally {
|
|
539
|
+
if (SKILLS_SYNC_QUEUE.get(key) === next) SKILLS_SYNC_QUEUE.delete(key);
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
//#endregion
|
|
544
|
+
//#region src/agents/skills/workspace.ts
|
|
545
|
+
const fsp = fs.promises;
|
|
546
|
+
const skillsLogger = createSubsystemLogger("skills");
|
|
547
|
+
const skillCommandDebugOnce = /* @__PURE__ */ new Set();
|
|
548
|
+
function debugSkillCommandOnce(messageKey, message, meta) {
|
|
549
|
+
if (skillCommandDebugOnce.has(messageKey)) return;
|
|
550
|
+
skillCommandDebugOnce.add(messageKey);
|
|
551
|
+
skillsLogger.debug(message, meta);
|
|
552
|
+
}
|
|
553
|
+
function filterSkillEntries(entries, config, skillFilter, eligibility) {
|
|
554
|
+
let filtered = entries.filter((entry) => shouldIncludeSkill({
|
|
555
|
+
entry,
|
|
556
|
+
config,
|
|
557
|
+
eligibility
|
|
558
|
+
}));
|
|
559
|
+
if (skillFilter !== void 0) {
|
|
560
|
+
const normalized = skillFilter.map((entry) => String(entry).trim()).filter(Boolean);
|
|
561
|
+
const label = normalized.length > 0 ? normalized.join(", ") : "(none)";
|
|
562
|
+
console.log(`[skills] Applying skill filter: ${label}`);
|
|
563
|
+
filtered = normalized.length > 0 ? filtered.filter((entry) => normalized.includes(entry.skill.name)) : [];
|
|
564
|
+
console.log(`[skills] After filter: ${filtered.map((entry) => entry.skill.name).join(", ")}`);
|
|
565
|
+
}
|
|
566
|
+
return filtered;
|
|
567
|
+
}
|
|
568
|
+
const SKILL_COMMAND_MAX_LENGTH = 32;
|
|
569
|
+
const SKILL_COMMAND_FALLBACK = "skill";
|
|
570
|
+
const SKILL_COMMAND_DESCRIPTION_MAX_LENGTH = 100;
|
|
571
|
+
function sanitizeSkillCommandName(raw) {
|
|
572
|
+
return raw.toLowerCase().replace(/[^a-z0-9_]+/g, "_").replace(/_+/g, "_").replace(/^_+|_+$/g, "").slice(0, SKILL_COMMAND_MAX_LENGTH) || SKILL_COMMAND_FALLBACK;
|
|
573
|
+
}
|
|
574
|
+
function resolveUniqueSkillCommandName(base, used) {
|
|
575
|
+
const normalizedBase = base.toLowerCase();
|
|
576
|
+
if (!used.has(normalizedBase)) return base;
|
|
577
|
+
for (let index = 2; index < 1e3; index += 1) {
|
|
578
|
+
const suffix = `_${index}`;
|
|
579
|
+
const maxBaseLength = Math.max(1, SKILL_COMMAND_MAX_LENGTH - suffix.length);
|
|
580
|
+
const candidate = `${base.slice(0, maxBaseLength)}${suffix}`;
|
|
581
|
+
const candidateKey = candidate.toLowerCase();
|
|
582
|
+
if (!used.has(candidateKey)) return candidate;
|
|
583
|
+
}
|
|
584
|
+
return `${base.slice(0, Math.max(1, SKILL_COMMAND_MAX_LENGTH - 2))}_x`;
|
|
585
|
+
}
|
|
586
|
+
function loadSkillEntries(workspaceDir, opts) {
|
|
587
|
+
const loadSkills = (params) => {
|
|
588
|
+
const loaded = loadSkillsFromDir(params);
|
|
589
|
+
if (Array.isArray(loaded)) return loaded;
|
|
590
|
+
if (loaded && typeof loaded === "object" && "skills" in loaded && Array.isArray(loaded.skills)) return loaded.skills;
|
|
591
|
+
return [];
|
|
592
|
+
};
|
|
593
|
+
const managedSkillsDir = opts?.managedSkillsDir ?? path.join(CONFIG_DIR, "skills");
|
|
594
|
+
const workspaceSkillsDir = path.resolve(workspaceDir, "skills");
|
|
595
|
+
const bundledSkillsDir = opts?.bundledSkillsDir ?? resolveBundledSkillsDir();
|
|
596
|
+
const extraDirs = (opts?.config?.skills?.load?.extraDirs ?? []).map((d) => typeof d === "string" ? d.trim() : "").filter(Boolean);
|
|
597
|
+
const pluginSkillDirs = resolvePluginSkillDirs({
|
|
598
|
+
workspaceDir,
|
|
599
|
+
config: opts?.config
|
|
600
|
+
});
|
|
601
|
+
const mergedExtraDirs = [...extraDirs, ...pluginSkillDirs];
|
|
602
|
+
const bundledSkills = bundledSkillsDir ? loadSkills({
|
|
603
|
+
dir: bundledSkillsDir,
|
|
604
|
+
source: "anima-bundled"
|
|
605
|
+
}) : [];
|
|
606
|
+
const extraSkills = mergedExtraDirs.flatMap((dir) => {
|
|
607
|
+
return loadSkills({
|
|
608
|
+
dir: resolveUserPath(dir),
|
|
609
|
+
source: "anima-extra"
|
|
610
|
+
});
|
|
611
|
+
});
|
|
612
|
+
const managedSkills = loadSkills({
|
|
613
|
+
dir: managedSkillsDir,
|
|
614
|
+
source: "anima-managed"
|
|
615
|
+
});
|
|
616
|
+
const personalAgentsSkills = loadSkills({
|
|
617
|
+
dir: path.resolve(os.homedir(), ".agents", "skills"),
|
|
618
|
+
source: "agents-skills-personal"
|
|
619
|
+
});
|
|
620
|
+
const projectAgentsSkills = loadSkills({
|
|
621
|
+
dir: path.resolve(workspaceDir, ".agents", "skills"),
|
|
622
|
+
source: "agents-skills-project"
|
|
623
|
+
});
|
|
624
|
+
const workspaceSkills = loadSkills({
|
|
625
|
+
dir: workspaceSkillsDir,
|
|
626
|
+
source: "anima-workspace"
|
|
627
|
+
});
|
|
628
|
+
const merged = /* @__PURE__ */ new Map();
|
|
629
|
+
for (const skill of extraSkills) merged.set(skill.name, skill);
|
|
630
|
+
for (const skill of bundledSkills) merged.set(skill.name, skill);
|
|
631
|
+
for (const skill of managedSkills) merged.set(skill.name, skill);
|
|
632
|
+
for (const skill of personalAgentsSkills) merged.set(skill.name, skill);
|
|
633
|
+
for (const skill of projectAgentsSkills) merged.set(skill.name, skill);
|
|
634
|
+
for (const skill of workspaceSkills) merged.set(skill.name, skill);
|
|
635
|
+
return Array.from(merged.values()).map((skill) => {
|
|
636
|
+
let frontmatter = {};
|
|
637
|
+
try {
|
|
638
|
+
frontmatter = parseFrontmatter(fs.readFileSync(skill.filePath, "utf-8"));
|
|
639
|
+
} catch {}
|
|
640
|
+
return {
|
|
641
|
+
skill,
|
|
642
|
+
frontmatter,
|
|
643
|
+
metadata: resolveAnimaMetadata(frontmatter),
|
|
644
|
+
invocation: resolveSkillInvocationPolicy(frontmatter)
|
|
645
|
+
};
|
|
646
|
+
});
|
|
647
|
+
}
|
|
648
|
+
function buildWorkspaceSkillSnapshot(workspaceDir, opts) {
|
|
649
|
+
const eligible = filterSkillEntries(opts?.entries ?? loadSkillEntries(workspaceDir, opts), opts?.config, opts?.skillFilter, opts?.eligibility);
|
|
650
|
+
const resolvedSkills = eligible.filter((entry) => entry.invocation?.disableModelInvocation !== true).map((entry) => entry.skill);
|
|
651
|
+
return {
|
|
652
|
+
prompt: [opts?.eligibility?.remote?.note?.trim(), formatSkillsForPrompt(resolvedSkills)].filter(Boolean).join("\n"),
|
|
653
|
+
skills: eligible.map((entry) => ({
|
|
654
|
+
name: entry.skill.name,
|
|
655
|
+
primaryEnv: entry.metadata?.primaryEnv
|
|
656
|
+
})),
|
|
657
|
+
resolvedSkills,
|
|
658
|
+
version: opts?.snapshotVersion
|
|
659
|
+
};
|
|
660
|
+
}
|
|
661
|
+
function loadWorkspaceSkillEntries(workspaceDir, opts) {
|
|
662
|
+
return loadSkillEntries(workspaceDir, opts);
|
|
663
|
+
}
|
|
664
|
+
function resolveUniqueSyncedSkillDirName(base, used) {
|
|
665
|
+
if (!used.has(base)) {
|
|
666
|
+
used.add(base);
|
|
667
|
+
return base;
|
|
668
|
+
}
|
|
669
|
+
for (let index = 2; index < 1e4; index += 1) {
|
|
670
|
+
const candidate = `${base}-${index}`;
|
|
671
|
+
if (!used.has(candidate)) {
|
|
672
|
+
used.add(candidate);
|
|
673
|
+
return candidate;
|
|
674
|
+
}
|
|
675
|
+
}
|
|
676
|
+
let fallbackIndex = 1e4;
|
|
677
|
+
let fallback = `${base}-${fallbackIndex}`;
|
|
678
|
+
while (used.has(fallback)) {
|
|
679
|
+
fallbackIndex += 1;
|
|
680
|
+
fallback = `${base}-${fallbackIndex}`;
|
|
681
|
+
}
|
|
682
|
+
used.add(fallback);
|
|
683
|
+
return fallback;
|
|
684
|
+
}
|
|
685
|
+
function resolveSyncedSkillDestinationPath(params) {
|
|
686
|
+
const sourceDirName = path.basename(params.entry.skill.baseDir).trim();
|
|
687
|
+
if (!sourceDirName || sourceDirName === "." || sourceDirName === "..") return null;
|
|
688
|
+
return resolveSandboxPath({
|
|
689
|
+
filePath: resolveUniqueSyncedSkillDirName(sourceDirName, params.usedDirNames),
|
|
690
|
+
cwd: params.targetSkillsDir,
|
|
691
|
+
root: params.targetSkillsDir
|
|
692
|
+
}).resolved;
|
|
693
|
+
}
|
|
694
|
+
async function syncSkillsToWorkspace(params) {
|
|
695
|
+
const sourceDir = resolveUserPath(params.sourceWorkspaceDir);
|
|
696
|
+
const targetDir = resolveUserPath(params.targetWorkspaceDir);
|
|
697
|
+
if (sourceDir === targetDir) return;
|
|
698
|
+
await serializeByKey(`syncSkills:${targetDir}`, async () => {
|
|
699
|
+
const targetSkillsDir = path.join(targetDir, "skills");
|
|
700
|
+
const entries = loadSkillEntries(sourceDir, {
|
|
701
|
+
config: params.config,
|
|
702
|
+
managedSkillsDir: params.managedSkillsDir,
|
|
703
|
+
bundledSkillsDir: params.bundledSkillsDir
|
|
704
|
+
});
|
|
705
|
+
await fsp.rm(targetSkillsDir, {
|
|
706
|
+
recursive: true,
|
|
707
|
+
force: true
|
|
708
|
+
});
|
|
709
|
+
await fsp.mkdir(targetSkillsDir, { recursive: true });
|
|
710
|
+
const usedDirNames = /* @__PURE__ */ new Set();
|
|
711
|
+
for (const entry of entries) {
|
|
712
|
+
let dest = null;
|
|
713
|
+
try {
|
|
714
|
+
dest = resolveSyncedSkillDestinationPath({
|
|
715
|
+
targetSkillsDir,
|
|
716
|
+
entry,
|
|
717
|
+
usedDirNames
|
|
718
|
+
});
|
|
719
|
+
} catch (error) {
|
|
720
|
+
const message = error instanceof Error ? error.message : JSON.stringify(error);
|
|
721
|
+
console.warn(`[skills] Failed to resolve safe destination for ${entry.skill.name}: ${message}`);
|
|
722
|
+
continue;
|
|
723
|
+
}
|
|
724
|
+
if (!dest) {
|
|
725
|
+
console.warn(`[skills] Failed to resolve safe destination for ${entry.skill.name}: invalid source directory name`);
|
|
726
|
+
continue;
|
|
727
|
+
}
|
|
728
|
+
try {
|
|
729
|
+
await fsp.cp(entry.skill.baseDir, dest, {
|
|
730
|
+
recursive: true,
|
|
731
|
+
force: true
|
|
732
|
+
});
|
|
733
|
+
} catch (error) {
|
|
734
|
+
const message = error instanceof Error ? error.message : JSON.stringify(error);
|
|
735
|
+
console.warn(`[skills] Failed to copy ${entry.skill.name} to sandbox: ${message}`);
|
|
736
|
+
}
|
|
737
|
+
}
|
|
738
|
+
});
|
|
739
|
+
}
|
|
740
|
+
function buildWorkspaceSkillCommandSpecs(workspaceDir, opts) {
|
|
741
|
+
const userInvocable = filterSkillEntries(opts?.entries ?? loadSkillEntries(workspaceDir, opts), opts?.config, opts?.skillFilter, opts?.eligibility).filter((entry) => entry.invocation?.userInvocable !== false);
|
|
742
|
+
const used = /* @__PURE__ */ new Set();
|
|
743
|
+
for (const reserved of opts?.reservedNames ?? []) used.add(reserved.toLowerCase());
|
|
744
|
+
const specs = [];
|
|
745
|
+
for (const entry of userInvocable) {
|
|
746
|
+
const rawName = entry.skill.name;
|
|
747
|
+
const base = sanitizeSkillCommandName(rawName);
|
|
748
|
+
if (base !== rawName) debugSkillCommandOnce(`sanitize:${rawName}:${base}`, `Sanitized skill command name "${rawName}" to "/${base}".`, {
|
|
749
|
+
rawName,
|
|
750
|
+
sanitized: `/${base}`
|
|
751
|
+
});
|
|
752
|
+
const unique = resolveUniqueSkillCommandName(base, used);
|
|
753
|
+
if (unique !== base) debugSkillCommandOnce(`dedupe:${rawName}:${unique}`, `De-duplicated skill command name for "${rawName}" to "/${unique}".`, {
|
|
754
|
+
rawName,
|
|
755
|
+
deduped: `/${unique}`
|
|
756
|
+
});
|
|
757
|
+
used.add(unique.toLowerCase());
|
|
758
|
+
const rawDescription = entry.skill.description?.trim() || rawName;
|
|
759
|
+
const description = rawDescription.length > SKILL_COMMAND_DESCRIPTION_MAX_LENGTH ? rawDescription.slice(0, SKILL_COMMAND_DESCRIPTION_MAX_LENGTH - 1) + "…" : rawDescription;
|
|
760
|
+
const dispatch = (() => {
|
|
761
|
+
const kindRaw = (entry.frontmatter?.["command-dispatch"] ?? entry.frontmatter?.["command_dispatch"] ?? "").trim().toLowerCase();
|
|
762
|
+
if (!kindRaw) return;
|
|
763
|
+
if (kindRaw !== "tool") return;
|
|
764
|
+
const toolName = (entry.frontmatter?.["command-tool"] ?? entry.frontmatter?.["command_tool"] ?? "").trim();
|
|
765
|
+
if (!toolName) {
|
|
766
|
+
debugSkillCommandOnce(`dispatch:missingTool:${rawName}`, `Skill command "/${unique}" requested tool dispatch but did not provide command-tool. Ignoring dispatch.`, {
|
|
767
|
+
skillName: rawName,
|
|
768
|
+
command: unique
|
|
769
|
+
});
|
|
770
|
+
return;
|
|
771
|
+
}
|
|
772
|
+
const argModeRaw = (entry.frontmatter?.["command-arg-mode"] ?? entry.frontmatter?.["command_arg_mode"] ?? "").trim().toLowerCase();
|
|
773
|
+
if (!(!argModeRaw || argModeRaw === "raw" ? "raw" : null)) debugSkillCommandOnce(`dispatch:badArgMode:${rawName}:${argModeRaw}`, `Skill command "/${unique}" requested tool dispatch but has unknown command-arg-mode. Falling back to raw.`, {
|
|
774
|
+
skillName: rawName,
|
|
775
|
+
command: unique,
|
|
776
|
+
argMode: argModeRaw
|
|
777
|
+
});
|
|
778
|
+
return {
|
|
779
|
+
kind: "tool",
|
|
780
|
+
toolName,
|
|
781
|
+
argMode: "raw"
|
|
782
|
+
};
|
|
783
|
+
})();
|
|
784
|
+
specs.push({
|
|
785
|
+
name: unique,
|
|
786
|
+
skillName: rawName,
|
|
787
|
+
description,
|
|
788
|
+
...dispatch ? { dispatch } : {}
|
|
789
|
+
});
|
|
790
|
+
}
|
|
791
|
+
return specs;
|
|
792
|
+
}
|
|
793
|
+
|
|
794
|
+
//#endregion
|
|
795
|
+
//#region src/agents/skills.ts
|
|
796
|
+
function resolveSkillsInstallPreferences(config) {
|
|
797
|
+
const raw = config?.skills?.install;
|
|
798
|
+
const preferBrew = raw?.preferBrew ?? true;
|
|
799
|
+
const manager = (typeof raw?.nodeManager === "string" ? raw.nodeManager.trim() : "").toLowerCase();
|
|
800
|
+
return {
|
|
801
|
+
preferBrew,
|
|
802
|
+
nodeManager: manager === "pnpm" || manager === "yarn" || manager === "bun" || manager === "npm" ? manager : "npm"
|
|
803
|
+
};
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
//#endregion
|
|
807
|
+
export { resolveRuntimePlatform as C, isConfigPathTruthyWithDefaults as S, normalizeStringList as _, syncSkillsToWorkspace as a, parseFrontmatterBlock as b, assertMediaNotDataUrl as c, isBundledSkillAllowed as d, isConfigPathTruthy as f, getFrontmatterString as g, resolveSkillKey as h, loadWorkspaceSkillEntries as i, assertSandboxPath as l, resolveSkillConfig as m, buildWorkspaceSkillCommandSpecs as n, resolvePluginSkillDirs as o, resolveBundledAllowlist as p, buildWorkspaceSkillSnapshot as r, resolveBundledSkillsDir as s, resolveSkillsInstallPreferences as t, resolveSandboxedMediaSource as u, parseFrontmatterBool as v, hasBinary as x, resolveAnimaManifestBlock as y };
|