@iowarp/clio-coder 0.3.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +90 -2
- package/CONTRIBUTING.md +23 -23
- package/README.md +284 -613
- package/dist/{acp-FPR54DGL.js → acp-BIYHVZIM.js} +43 -53
- package/dist/{agents-OGPIHPJH.js → agents-YT6SSRIT.js} +43 -26
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-IC3K6NIZ.js → auth-5TWEIYDN.js} +20 -12
- package/dist/{chunk-PV4JUBVJ.js → chunk-2EHAIA3X.js} +40 -21
- package/dist/{chunk-IS3ONKU3.js → chunk-2IR2NMPA.js} +6 -4
- package/dist/chunk-2SFS6XQE.js +122 -0
- package/dist/chunk-2VTFPG5O.js +48 -0
- package/dist/{chunk-MAR7Y6HW.js → chunk-3ZXDFGR5.js} +23 -16
- package/dist/chunk-4BJ5BYCE.js +61 -0
- package/dist/{chunk-474KN5II.js → chunk-4BPJXDWC.js} +111 -181
- package/dist/chunk-4KLWL3UC.js +18 -0
- package/dist/chunk-4VP4KH3K.js +962 -0
- package/dist/chunk-4ZG3XFUR.js +77 -0
- package/dist/chunk-5B2AEOW5.js +5407 -0
- package/dist/{chunk-K2ITRMHZ.js → chunk-5TSRNF4G.js} +6 -138
- package/dist/{chunk-OLBBMFRD.js → chunk-5UUP6MWO.js} +24 -62
- package/dist/chunk-65DEGPJ6.js +52 -0
- package/dist/chunk-6EJMN2Y3.js +17 -0
- package/dist/chunk-6EJV5X2W.js +16405 -0
- package/dist/chunk-6N5PTWMY.js +136 -0
- package/dist/chunk-6XLNIQDB.js +27 -0
- package/dist/{chunk-TEKV33Q5.js → chunk-77VKQEHF.js} +65 -33
- package/dist/chunk-7CR24IG7.js +242 -0
- package/dist/{chunk-M5T5VO65.js → chunk-7EYHLWU7.js} +837 -635
- package/dist/chunk-7MNJORFF.js +22 -0
- package/dist/{chunk-KY56HMHH.js → chunk-A3CYT5EX.js} +125 -31
- package/dist/chunk-AGYYIBLL.js +1069 -0
- package/dist/chunk-AO4RKG4M.js +277 -0
- package/dist/{chunk-GB6QRBXN.js → chunk-APJ265NV.js} +54 -1187
- package/dist/chunk-ARBGF5F7.js +174 -0
- package/dist/{chunk-673JJUWJ.js → chunk-BMEMKKIT.js} +2 -2
- package/dist/chunk-CBCAPZAA.js +229 -0
- package/dist/chunk-CMZWFGD2.js +352 -0
- package/dist/chunk-ECH6PKUQ.js +39 -0
- package/dist/chunk-ED4KHGC3.js +143 -0
- package/dist/chunk-EKMEHE4H.js +340 -0
- package/dist/{chunk-RPTR2H26.js → chunk-EPVUXGXG.js} +21 -15
- package/dist/chunk-FCSXB6T2.js +338 -0
- package/dist/chunk-FJ3H4MN5.js +48 -0
- package/dist/chunk-FQ4SKYE4.js +29 -0
- package/dist/chunk-G2DE3C7R.js +644 -0
- package/dist/chunk-G4BMMOKF.js +182 -0
- package/dist/{chunk-ZPY3JZ5E.js → chunk-GGXXDWE4.js} +183 -1233
- package/dist/chunk-HC4CLZ2Y.js +68 -0
- package/dist/{chunk-LU4TK2PR.js → chunk-HFSBBKSQ.js} +5 -56
- package/dist/{chunk-PIUMUEMV.js → chunk-HKIYEGME.js} +10 -6
- package/dist/chunk-I4HZDVNP.js +73 -0
- package/dist/{chunk-4QKXUHSR.js → chunk-IGLFWIYI.js} +70 -20
- package/dist/chunk-IKCO5N3L.js +162 -0
- package/dist/chunk-IR4CFBFN.js +56 -0
- package/dist/{chunk-PFEFKVGL.js → chunk-J5HN4RYU.js} +13 -11
- package/dist/{chunk-R5KLMSBV.js → chunk-J5Q24KAG.js} +2 -2
- package/dist/{chunk-K5XEMXTI.js → chunk-JVCV3ICN.js} +1 -1
- package/dist/chunk-KJ5LWLOE.js +1077 -0
- package/dist/chunk-LBMZMYH2.js +285 -0
- package/dist/{chunk-G34LV2PF.js → chunk-LBNRH5WM.js} +84 -170
- package/dist/{chunk-H6F6BYOH.js → chunk-LZSJBIVT.js} +7003 -7434
- package/dist/{chunk-HQQID6OA.js → chunk-M6SHUN7Q.js} +5 -5
- package/dist/chunk-MAW544W2.js +1882 -0
- package/dist/chunk-MBS4V7ZP.js +217 -0
- package/dist/{chunk-FST4FYJB.js → chunk-MFFY33HR.js} +99 -140
- package/dist/chunk-MNA4JGU4.js +255 -0
- package/dist/chunk-MQSRRFWA.js +3428 -0
- package/dist/{chunk-BSU2YIWB.js → chunk-MVVUPGPW.js} +131 -136
- package/dist/chunk-OAO4GE4M.js +619 -0
- package/dist/chunk-OHHN2SO4.js +5135 -0
- package/dist/chunk-OKGUZO2U.js +34 -0
- package/dist/{chunk-GAEBEQVI.js → chunk-OOJYHWRB.js} +32 -346
- package/dist/{chunk-Q5WJOSJ7.js → chunk-OQ33BKR3.js} +2 -1
- package/dist/chunk-OQE5J4C6.js +73 -0
- package/dist/{chunk-KKNLWXI6.js → chunk-ORBHGJC5.js} +8 -8
- package/dist/chunk-POHLU5DW.js +1186 -0
- package/dist/chunk-QKMUKYO7.js +4961 -0
- package/dist/{chunk-ASND7OZK.js → chunk-QTYWRVRA.js} +13 -13
- package/dist/{chunk-EYOKLTMF.js → chunk-SRF2PJNW.js} +17 -3
- package/dist/chunk-SST6Z5JA.js +80 -0
- package/dist/chunk-STBPMHSX.js +2456 -0
- package/dist/chunk-T6YILFSB.js +80 -0
- package/dist/chunk-TZTZS7QK.js +227 -0
- package/dist/chunk-UOV2BYIW.js +107 -0
- package/dist/{chunk-Q3RUPKEJ.js → chunk-V4RXGQ5Q.js} +58 -189
- package/dist/chunk-VAKQQHWR.js +434 -0
- package/dist/chunk-VG7TBQIY.js +128 -0
- package/dist/chunk-VJWL6YS5.js +244 -0
- package/dist/chunk-WEH5XRJQ.js +32 -0
- package/dist/chunk-WMSVI4G2.js +2095 -0
- package/dist/chunk-WVO7V2QY.js +797 -0
- package/dist/chunk-X4RCMKVQ.js +641 -0
- package/dist/chunk-X75S7HFS.js +374 -0
- package/dist/chunk-XN3L4EYL.js +46 -0
- package/dist/{chunk-RDLVBZEO.js → chunk-YCWGATWI.js} +6 -4
- package/dist/chunk-YHZX5GEU.js +193 -0
- package/dist/chunk-YXLYO42X.js +91 -0
- package/dist/{chunk-NMOX6HFD.js → chunk-ZDOOVTXZ.js} +29 -77
- package/dist/chunk-ZI647VB5.js +37 -0
- package/dist/{chunk-C4PTHK7P.js → chunk-ZWLZP4ZT.js} +5 -5
- package/dist/cli/index.js +62 -54
- package/dist/clio-4LY5K2AC.js +25 -0
- package/dist/code-nav-7AX6FYE6.js +600 -0
- package/dist/codewiki/build-worker.js +66 -0
- package/dist/compile-cache-CVJMMODC.js +18 -0
- package/dist/{components-DMAOEKFB.js → components-KELWS457.js} +11 -6
- package/dist/{config-IRUQ7SE4.js → config-GTLUW2PR.js} +92 -55
- package/dist/configure-R6A64DHX.js +42 -0
- package/dist/context-5VKGUVJJ.js +866 -0
- package/dist/{context-3KWFLHJG.js → context-JFZEJ7W5.js} +15 -13
- package/dist/{context-5RADCKTR.js → context-RW5HC47S.js} +71 -35
- package/dist/{context-clear-7TSNPAAI.js → context-clear-6ZHBAZZT.js} +54 -28
- package/dist/{context-index-W4RLWOQH.js → context-index-BZ4UYMTC.js} +30 -24
- package/dist/dispatch-runner-VKBRCWQC.js +1997 -0
- package/dist/{docs-5AWSPS37.js → docs-2C2LTVT2.js} +23 -10
- package/dist/{doctor-UC5NAJYQ.js → doctor-KI767GSN.js} +27 -17
- package/dist/{eval-U6TJHRLX.js → eval-XSSNATB4.js} +29 -16
- package/dist/{evidence-YEGUW4L3.js → evidence-UA6AWDQQ.js} +46 -26
- package/dist/{evolve-TXARCTPG.js → evolve-QNTFGV6Z.js} +45 -25
- package/dist/{extensions-OZFJ3A3G.js → extensions-QVDOHDGJ.js} +16 -7
- package/dist/{fleet-6G3DHNYE.js → fleet-Q7UOMUSG.js} +163 -54
- package/dist/{fleet-preflight-DSNT37JK.js → fleet-preflight-DDN536IT.js} +7 -4
- package/dist/{init-KZ5QTF6M.js → init-WBB65ZHQ.js} +69 -32
- package/dist/{memory-73ESV5YC.js → memory-MD3O64RI.js} +48 -27
- package/dist/{models-A4PVNWJK.js → models-BZU34YWD.js} +39 -25
- package/dist/monitor-MEQA5C3I.js +661 -0
- package/dist/{chunk-FCIH3BIZ.js → orchestrator-CGFKEP27.js} +11832 -8687
- package/dist/{paths-C4H6IV77.js → paths-UXLN5YYZ.js} +10 -5
- package/dist/{preload-6WVMHX3A.js → preload-P6DGH2PZ.js} +2 -2
- package/dist/{reset-BGW6OGMV.js → reset-L2FQEE3E.js} +16 -10
- package/dist/{run-YTPEYQOH.js → run-IV4Q6RLN.js} +101 -61
- package/dist/{share-YIFFV4NQ.js → share-S5BZQC5I.js} +15 -8
- package/dist/{skills-2V6RA3OQ.js → skills-LQEKRDTN.js} +34 -14
- package/dist/{skills-eval-S2TVJO4F.js → skills-eval-3DC4HEWS.js} +70 -34
- package/dist/steer-GGWFUJUD.js +77 -0
- package/dist/{targets-TYXLPB23.js → targets-C4SSGQOB.js} +43 -27
- package/dist/terminal-lease-IT5JW2NR.js +395 -0
- package/dist/{trace-GGOJ6Q6Z.js → trace-PNCASAXC.js} +41 -16
- package/dist/{chunk-N6F52NLF.js → tree-sitter-HGKH6LG4.js} +28 -2306
- package/dist/{uninstall-LLLT4F4W.js → uninstall-FZCQCDKC.js} +10 -5
- package/dist/{upgrade-33G2LMM5.js → upgrade-7TT7SQ3G.js} +45 -25
- package/dist/{usage-ZAFSXKKG.js → usage-GV4PKT3M.js} +62 -31
- package/dist/verify-G6V4D2G7.js +716 -0
- package/dist/web-fetch-2YHJ3KTG.js +638 -0
- package/dist/{wiki-generate-NUQCVOQ3.js → wiki-generate-DQF6Z66B.js} +74 -34
- package/dist/worker/entry.js +221 -36
- package/dist/workspace-G4ZWUIPR.js +22 -0
- package/docs/README.md +22 -17
- package/docs/acp.md +168 -16
- package/docs/alcf-provider.md +1 -1
- package/docs/architecture.md +136 -7
- package/docs/artifact-versions.md +1 -1
- package/docs/built-in-agents.md +1 -1
- package/docs/capacity-and-scheduling.md +1 -1
- package/docs/commands-and-modes.md +114 -71
- package/docs/config-knobs-audit.md +1 -3
- package/docs/configuration-and-targets.md +174 -46
- package/docs/context-engine.md +29 -6
- package/docs/development-pipeline.md +26 -1
- package/docs/dispatch-architecture-rationale.md +1 -1
- package/docs/documentation-coverage.md +2 -2
- package/docs/documentation-guide.md +1 -1
- package/docs/environment-variables.md +13 -5
- package/docs/eval-runner.md +1 -1
- package/docs/evals-internal.md +1 -1
- package/docs/evidence-and-memory.md +6 -2
- package/docs/evolution.md +2 -2
- package/docs/exit-codes-and-output.md +15 -9
- package/docs/extensions-and-sharing.md +9 -9
- package/docs/fleet-dispatch.md +7 -5
- package/docs/git-commit-provenance.md +120 -0
- package/docs/glossary.md +1 -1
- package/docs/installation-and-lifecycle.md +34 -27
- package/docs/middleware-and-components.md +1 -1
- package/docs/model-catalog.md +45 -14
- package/docs/observability.md +8 -5
- package/docs/performance-methodology.md +491 -0
- package/docs/pi-boundary.md +72 -0
- package/docs/proactive-memory.md +3 -3
- package/docs/prompt-envelope-and-tools.md +24 -3
- package/docs/provider-adapter-cookbook.md +57 -4
- package/docs/release-cut-checklist.md +129 -115
- package/docs/safety-model.md +9 -5
- package/docs/scientific-validation.md +3 -3
- package/docs/session-lifecycle.md +55 -12
- package/docs/skills-marketplace.md +12 -8
- package/docs/time-conventions.md +1 -1
- package/docs/tool-usage.md +3 -3
- package/docs/trace-store.md +1 -1
- package/docs/troubleshooting.md +10 -7
- package/docs/tui-design.md +47 -10
- package/docs/worker-dispatch-mechanics.md +1 -1
- package/package.json +19 -22
- package/skills/coding/ast-grep/SKILL.md +136 -0
- package/skills/coding/ast-grep/evals.md +56 -0
- package/skills/coding/ast-grep/references/rule_reference.md +297 -0
- package/skills/coding/coding-standards/SKILL.md +113 -0
- package/skills/coding/coding-standards/evals.md +34 -0
- package/skills/coding/prototype/SKILL.md +86 -0
- package/skills/coding/prototype/evals.md +42 -0
- package/skills/coding/prototype/references/LOGIC.md +67 -0
- package/skills/coding/prototype/references/UI.md +112 -0
- package/skills/coding/tdd/SKILL.md +101 -0
- package/skills/coding/tdd/evals.md +41 -0
- package/skills/coding/tdd/references/mocking.md +59 -0
- package/skills/coding/tdd/references/tests.md +77 -0
- package/skills/context/context-handoff/SKILL.md +126 -0
- package/skills/context/context-handoff/evals.md +57 -0
- package/skills/context/context-handoff/scripts/new-handoff.sh +26 -0
- package/skills/context/context-prime/SKILL.md +95 -0
- package/skills/context/context-prime/evals.md +54 -0
- package/skills/meta/clio-dev/SKILL.md +91 -0
- package/skills/meta/clio-dev/evals.md +45 -0
- package/skills/meta/clio-test/SKILL.md +130 -0
- package/skills/meta/clio-test/evals.md +43 -0
- package/skills/meta/clio-test/references/harness.md +97 -0
- package/skills/meta/clio-test/references/test-map.md +59 -0
- package/skills/meta/credentials/SKILL.md +125 -0
- package/skills/meta/credentials/evals.md +104 -0
- package/skills/meta/find-skills/SKILL.md +72 -0
- package/skills/meta/find-skills/evals.md +47 -0
- package/skills/meta/herdr/SKILL.md +127 -0
- package/skills/meta/herdr/evals.md +38 -0
- package/skills/meta/skill-craft/SKILL.md +102 -0
- package/skills/meta/skill-craft/evals.md +41 -0
- package/skills/planning/architecture/SKILL.md +129 -0
- package/skills/planning/architecture/evals.md +36 -0
- package/skills/planning/backlog/SKILL.md +90 -0
- package/skills/planning/backlog/evals.md +43 -0
- package/skills/planning/prd/SKILL.md +82 -0
- package/skills/planning/prd/evals.md +49 -0
- package/skills/planning/product-intent/SKILL.md +112 -0
- package/skills/planning/product-intent/evals.md +36 -0
- package/skills/planning/tech-spec/SKILL.md +115 -0
- package/skills/planning/tech-spec/evals.md +47 -0
- package/skills/registry.yaml +136 -0
- package/skills/research/arxiv-literature/SKILL.md +104 -0
- package/skills/research/arxiv-literature/evals.md +58 -0
- package/skills/research/experiment-protocol/SKILL.md +122 -0
- package/skills/research/experiment-protocol/evals.md +91 -0
- package/skills/research/scientific-debugging/SKILL.md +119 -0
- package/skills/research/scientific-debugging/evals.md +138 -0
- package/skills/research/scientific-modernization/SKILL.md +138 -0
- package/skills/research/scientific-modernization/evals.md +84 -0
- package/skills/workflow/design-council/SKILL.md +139 -0
- package/skills/workflow/design-council/evals.md +97 -0
- package/skills/workflow/grill-me/SKILL.md +186 -0
- package/skills/workflow/grill-me/evals.md +78 -0
- package/skills/workflow/workflow-distiller/SKILL.md +136 -0
- package/skills/workflow/workflow-distiller/evals.md +107 -0
- package/src/cli/acp.ts +31 -4
- package/src/cli/clio.ts +68 -6
- package/src/cli/config-inspect.ts +28 -22
- package/src/cli/configure.ts +47 -9
- package/src/cli/context-clear.ts +2 -2
- package/src/cli/context-index.ts +21 -23
- package/src/cli/context.ts +13 -8
- package/src/cli/default-target.ts +9 -17
- package/src/cli/docs.ts +11 -5
- package/src/cli/evidence.ts +4 -1
- package/src/cli/extensions.ts +10 -1
- package/src/cli/fleet.ts +47 -6
- package/src/cli/index.ts +55 -26
- package/src/cli/memory.ts +3 -1
- package/src/cli/models.ts +1 -1
- package/src/cli/modes/json-stream.ts +37 -1
- package/src/cli/modes/print.ts +24 -9
- package/src/cli/run.ts +2 -2
- package/src/cli/skills-eval.ts +23 -8
- package/src/cli/skills.ts +19 -4
- package/src/cli/targets.ts +4 -0
- package/src/cli/text-layout.ts +15 -5
- package/src/cli/trace.ts +62 -14
- package/src/cli/upgrade.ts +18 -2
- package/src/cli/usage.ts +10 -3
- package/src/cli/wiki-generate.ts +2 -1
- package/src/core/agent-environment.ts +7 -0
- package/src/core/bash-exec.ts +72 -1
- package/src/core/boot-trace.ts +9 -4
- package/src/core/bus-events.ts +20 -4
- package/src/core/commit-attribution.ts +157 -0
- package/src/core/compile-cache.ts +159 -0
- package/src/core/config.ts +131 -2
- package/src/core/defaults.ts +39 -5
- package/src/core/domain-loader.ts +12 -5
- package/src/core/git-commit-attribution.ts +362 -0
- package/src/core/incomplete-installation.ts +45 -0
- package/src/core/response-schema.ts +1 -1
- package/src/core/safe-exec.ts +13 -1
- package/src/core/settings-layers.ts +155 -21
- package/src/core/skill-activation.ts +1 -1
- package/src/core/startup-timer.ts +3 -3
- package/src/core/state-file-lock.ts +13 -1
- package/src/core/termination.ts +78 -5
- package/src/domains/config/classify.ts +15 -3
- package/src/domains/config/extension.ts +19 -13
- package/src/domains/config/index.ts +10 -0
- package/src/domains/config/keybindings.ts +42 -6
- package/src/domains/context/bootstrap-prompt.ts +1 -1
- package/src/domains/context/bootstrap.ts +111 -18
- package/src/domains/context/clear.ts +16 -11
- package/src/domains/context/clio-md.ts +111 -9
- package/src/domains/context/codewiki/artifact.ts +400 -0
- package/src/domains/context/codewiki/build-worker-protocol.ts +24 -0
- package/src/domains/context/codewiki/build-worker.ts +54 -0
- package/src/domains/context/codewiki/coordinator.ts +182 -0
- package/src/domains/context/codewiki/indexer.ts +59 -144
- package/src/domains/context/codewiki/paths.ts +67 -0
- package/src/domains/context/codewiki/schema.ts +80 -0
- package/src/domains/context/codewiki/tree-sitter.ts +1 -1
- package/src/domains/context/contract.ts +11 -5
- package/src/domains/context/extension.ts +94 -143
- package/src/domains/context/fingerprint.ts +3 -1
- package/src/domains/context/index.ts +12 -22
- package/src/domains/context/project-metadata.ts +19 -0
- package/src/domains/context/prompt-context.ts +9 -10
- package/src/domains/context/refresh.ts +29 -21
- package/src/domains/context/runtime.ts +17 -0
- package/src/domains/context/wiki/generate.ts +39 -34
- package/src/domains/context/wiki/plan.ts +1 -1
- package/src/domains/context/wiki/prompts.ts +21 -8
- package/src/domains/dispatch/code-step.ts +20 -1
- package/src/domains/dispatch/extension.ts +158 -21
- package/src/domains/dispatch/failure-classification.ts +6 -0
- package/src/domains/dispatch/fleet-commit-attribution.ts +56 -0
- package/src/domains/dispatch/orphan-recovery.ts +50 -8
- package/src/domains/dispatch/receipt-integrity.ts +5 -0
- package/src/domains/dispatch/state.ts +31 -6
- package/src/domains/dispatch/transport.ts +2 -1
- package/src/domains/dispatch/types.ts +14 -0
- package/src/domains/dispatch/worker-spawn.ts +21 -2
- package/src/domains/eval/metrics/context.ts +1 -1
- package/src/domains/eval/types.ts +0 -1
- package/src/domains/evidence/build.ts +41 -1
- package/src/domains/lifecycle/migrations/2026-08-18-lmstudio-runtime-id.ts +52 -0
- package/src/domains/lifecycle/migrations/index.ts +24 -4
- package/src/domains/middleware/hooks-io.ts +12 -0
- package/src/domains/middleware/skills-reminder.ts +30 -15
- package/src/domains/prompts/compiler.ts +142 -84
- package/src/domains/prompts/contract.ts +18 -2
- package/src/domains/prompts/extension.ts +39 -7
- package/src/domains/prompts/fragment-loader.ts +0 -1
- package/src/domains/prompts/fragments/identity/clio.md +2 -4
- package/src/domains/prompts/fragments/identity/docs-routing.md +10 -0
- package/src/domains/prompts/fragments/identity/self-awareness.md +1 -45
- package/src/domains/prompts/fragments/operating/contract.md +4 -50
- package/src/domains/prompts/fragments/operating/delegation.md +42 -0
- package/src/domains/prompts/fragments/operating/skills.md +26 -0
- package/src/domains/prompts/fragments/operating/worker.md +16 -0
- package/src/domains/prompts/fragments/safety/auto-edit.md +5 -5
- package/src/domains/prompts/fragments/safety/full-auto.md +3 -3
- package/src/domains/prompts/fragments/safety/read-only.md +4 -4
- package/src/domains/prompts/fragments/safety/suggest.md +2 -2
- package/src/domains/prompts/fragments/wiki/page.md +10 -0
- package/src/domains/prompts/fragments/wiki/plan.md +10 -0
- package/src/domains/prompts/preload.ts +3 -3
- package/src/domains/providers/auth/api-key.ts +1 -1
- package/src/domains/providers/auth/backend-file.ts +20 -10
- package/src/domains/providers/auth/backend-memory.ts +59 -4
- package/src/domains/providers/auth/boot-status.ts +65 -0
- package/src/domains/providers/auth/oauth.ts +2 -1
- package/src/domains/providers/auth/storage.ts +97 -38
- package/src/domains/providers/capabilities.ts +12 -4
- package/src/domains/providers/contract.ts +15 -4
- package/src/domains/providers/extension.ts +18 -6
- package/src/domains/providers/model-runtime-capabilities.ts +15 -4
- package/src/domains/providers/models/local-models/clio-local-coding-targets.yaml +118 -35
- package/src/domains/providers/plugins.ts +5 -3
- package/src/domains/providers/probe/fingerprint.ts +25 -5
- package/src/domains/providers/registry.ts +31 -10
- package/src/domains/providers/runtimes/boot-manifest.ts +55 -0
- package/src/domains/providers/runtimes/builtins.ts +2 -2
- package/src/domains/providers/runtimes/common/lmstudio-http.ts +423 -0
- package/src/domains/providers/runtimes/common/local-synth.ts +6 -7
- package/src/domains/providers/runtimes/local-native/lmstudio.ts +241 -0
- package/src/domains/providers/support.ts +6 -3
- package/src/domains/providers/types/local-model-quirks.ts +7 -9
- package/src/domains/providers/types/runtime-descriptor.ts +12 -1
- package/src/domains/providers/types/target-descriptor.ts +22 -0
- package/src/domains/resources/contract.ts +0 -1
- package/src/domains/resources/extension.ts +1 -3
- package/src/domains/resources/loader.ts +3 -4
- package/src/domains/resources/prompts/loader.ts +16 -2
- package/src/domains/resources/prompts/substitute.ts +1 -65
- package/src/domains/resources/skills/content-hash.ts +2 -0
- package/src/domains/resources/skills/install.ts +17 -0
- package/src/domains/resources/skills/loader.ts +17 -10
- package/src/domains/resources/skills/marketplace.ts +55 -9
- package/src/domains/safety/action-classifier.ts +4 -2
- package/src/domains/safety/audit.ts +8 -2
- package/src/domains/safety/extension.ts +1 -1
- package/src/domains/session/compaction/branch-summary.ts +3 -2
- package/src/domains/session/compaction/cut-point.ts +2 -1
- package/src/domains/session/compaction/tokens.ts +2 -1
- package/src/domains/session/context-ledger.ts +14 -0
- package/src/domains/session/contract.ts +15 -0
- package/src/domains/session/decision-board.ts +190 -0
- package/src/domains/session/entries.ts +66 -3
- package/src/domains/session/extension.ts +93 -12
- package/src/domains/session/retry.ts +10 -18
- package/src/domains/session/session-artifacts.ts +107 -0
- package/src/domains/session/task-board.ts +207 -13
- package/src/domains/session/tree/active-path.ts +44 -5
- package/src/domains/session/tree/fork.ts +26 -27
- package/src/domains/session/tree/preview.ts +2 -2
- package/src/domains/session/workspace/git-probe.ts +17 -11
- package/src/domains/user-tasks/store.ts +297 -0
- package/src/engine/acp/errors.ts +96 -0
- package/src/engine/acp/server.ts +1728 -146
- package/src/engine/acp/transport.ts +135 -14
- package/src/engine/acp/types.ts +26 -0
- package/src/engine/agent.ts +3 -3
- package/src/engine/ai.ts +32 -27
- package/src/engine/alcf-oauth.ts +26 -19
- package/src/engine/api-registry.ts +223 -0
- package/src/engine/apis/index.ts +3 -7
- package/src/engine/apis/llamacpp-residency.ts +49 -9
- package/src/engine/apis/lmstudio-residency.ts +5 -21
- package/src/engine/apis/lmstudio.ts +243 -0
- package/src/engine/apis/ollama-native.ts +24 -3
- package/src/engine/apis/openai-completions.ts +170 -91
- package/src/engine/apis/residency.ts +139 -3
- package/src/engine/apis/types.ts +16 -0
- package/src/engine/env-api-keys.ts +98 -0
- package/src/engine/gemma-channel-filter.ts +223 -0
- package/src/engine/instrumented-tui.ts +192 -0
- package/src/engine/messages.ts +14 -0
- package/src/engine/models.ts +42 -0
- package/src/engine/oauth.ts +16 -12
- package/src/engine/prompt-templates.ts +1 -0
- package/src/engine/provider-payload.ts +16 -59
- package/src/engine/strip-tokenizer-sentinels.ts +1 -1
- package/src/engine/truncate.ts +9 -0
- package/src/engine/tui.ts +17 -9
- package/src/engine/types.ts +3 -6
- package/src/engine/worker-runtime-capabilities.ts +5 -0
- package/src/engine/worker-runtime.ts +1 -1
- package/src/engine/worker-tools.ts +9 -4
- package/src/entry/boot-options.ts +50 -0
- package/src/entry/orchestrator.ts +288 -150
- package/src/interactive/application-controller.ts +89 -2
- package/src/interactive/chat-loop.ts +266 -41
- package/src/interactive/chat-panel.ts +173 -47
- package/src/interactive/chat-renderer.ts +262 -72
- package/src/interactive/clio-editor.ts +3 -8
- package/src/interactive/command-fallbacks.ts +2 -2
- package/src/interactive/context-overlay.ts +27 -1
- package/src/interactive/editor-submit.ts +228 -24
- package/src/interactive/export-html/ansi-to-html.ts +161 -0
- package/src/interactive/export-html/index.ts +51 -0
- package/src/interactive/export-html/template.ts +45 -0
- package/src/interactive/export-html/tool-renderer.ts +54 -0
- package/src/interactive/footer/dashboard.ts +4 -0
- package/src/interactive/footer/notifications.ts +1 -1
- package/src/interactive/footer/widgets.ts +20 -2
- package/src/interactive/footer-panel.ts +2 -2
- package/src/interactive/format-time.ts +14 -2
- package/src/interactive/interactive-application.ts +201 -17
- package/src/interactive/interactive-event-projection.ts +6 -1
- package/src/interactive/interactive-input-runtime.ts +50 -4
- package/src/interactive/interactive-presentation.ts +151 -19
- package/src/interactive/interactive-shell.ts +268 -14
- package/src/interactive/interactive-slash-runtime.ts +176 -114
- package/src/interactive/interactive-tickers.ts +38 -7
- package/src/interactive/keybinding-manager.ts +1 -1
- package/src/interactive/layout.ts +40 -3
- package/src/interactive/overlay-frame.ts +1 -1
- package/src/interactive/overlay-general-openers.ts +58 -1
- package/src/interactive/overlay-key-routing.ts +3 -0
- package/src/interactive/overlay-lifecycle.ts +13 -0
- package/src/interactive/overlay-permission-lifecycle.ts +2 -1
- package/src/interactive/overlay-session-lifecycle.ts +69 -12
- package/src/interactive/overlays/decisions.ts +300 -0
- package/src/interactive/overlays/help-reference.ts +15 -10
- package/src/interactive/overlays/model-selector.ts +34 -16
- package/src/interactive/overlays/session-selector.ts +18 -0
- package/src/interactive/overlays/settings.ts +105 -17
- package/src/interactive/overlays/skills-hub.ts +4 -4
- package/src/interactive/overlays/tree-selector.ts +41 -6
- package/src/interactive/render-trace.ts +499 -90
- package/src/interactive/renderers/compaction-summary.ts +2 -2
- package/src/interactive/renderers/diff.ts +115 -104
- package/src/interactive/renderers/mermaid.ts +53 -0
- package/src/interactive/renderers/tool-execution.ts +386 -133
- package/src/interactive/renderers/worker-entry.ts +20 -4
- package/src/interactive/session-switch-settlement.ts +10 -0
- package/src/interactive/slash-autocomplete.ts +6 -114
- package/src/interactive/slash-commands.ts +135 -47
- package/src/interactive/slash-spec.ts +9 -38
- package/src/interactive/status/controller.ts +5 -1
- package/src/interactive/stdout-backpressure.ts +99 -0
- package/src/interactive/stream-pacer.ts +530 -0
- package/src/interactive/stream-pacing-policy.ts +66 -0
- package/src/interactive/tasks-overlay.ts +368 -14
- package/src/interactive/terminal-lease.ts +485 -0
- package/src/interactive/theme/tokens.ts +1 -1
- package/src/interactive/turn-context.ts +4 -3
- package/src/interactive/turn-persistence.ts +30 -13
- package/src/interactive/turn-queues.ts +12 -0
- package/src/interactive/turn-recovery.ts +25 -8
- package/src/interactive/turn-runtime.ts +79 -12
- package/src/interactive/turn-state.ts +10 -0
- package/src/interactive/view/artifacts.ts +114 -4
- package/src/interactive/view/view-overlay.ts +3 -0
- package/src/interactive/welcome-dashboard.ts +17 -16
- package/src/interactive/worker-receipts.ts +52 -3
- package/src/interactive/worker-stream.ts +5 -1
- package/src/tools/agent-tools.ts +23 -3
- package/src/tools/artifact.ts +2 -2
- package/src/tools/ask-user.ts +23 -13
- package/src/tools/bash.ts +30 -2
- package/src/tools/bootstrap.ts +34 -431
- package/src/tools/builtin-tool-catalog.ts +265 -0
- package/src/tools/codewiki/code-nav-surface.ts +29 -0
- package/src/tools/codewiki/code-nav.ts +8 -22
- package/src/tools/codewiki/shared.ts +41 -38
- package/src/tools/context/docs-engine.ts +14 -3
- package/src/tools/context/index.ts +107 -28
- package/src/tools/context/surface.ts +19 -0
- package/src/tools/core-bootstrap.ts +168 -0
- package/src/tools/credential-present.ts +5 -5
- package/src/tools/dispatch-admission.ts +533 -0
- package/src/tools/dispatch-background.ts +54 -0
- package/src/tools/dispatch-event-text.ts +6 -0
- package/src/tools/dispatch-plan.ts +9 -4
- package/src/tools/dispatch-run-events.ts +238 -0
- package/src/tools/dispatch-runner.ts +2370 -0
- package/src/tools/dispatch-scout-admission.ts +295 -0
- package/src/tools/dispatch-types.ts +77 -0
- package/src/tools/dispatch.ts +67 -3161
- package/src/tools/find.ts +4 -2
- package/src/tools/grep.ts +2 -2
- package/src/tools/lazy-tool.ts +60 -0
- package/src/tools/ledger.ts +3 -3
- package/src/tools/monitor-surface.ts +36 -0
- package/src/tools/monitor.ts +2 -32
- package/src/tools/observers.ts +2 -2
- package/src/tools/registry.ts +39 -27
- package/src/tools/safe-exec.ts +2 -2
- package/src/tools/steer-surface.ts +17 -0
- package/src/tools/steer.ts +2 -13
- package/src/tools/tasks.ts +108 -11
- package/src/tools/truncate.ts +25 -184
- package/src/tools/verify/frontend.ts +3 -1
- package/src/tools/verify/index.ts +3 -38
- package/src/tools/verify/surface.ts +46 -0
- package/src/tools/web-fetch-surface.ts +23 -0
- package/src/tools/web-fetch.ts +2 -20
- package/src/tools/write.ts +7 -2
- package/src/worker/entry.ts +39 -2
- package/src/worker/spec-contract.ts +26 -5
- package/dist/chunk-7SS2CTV2.js +0 -61361
- package/dist/chunk-DKGKUHFA.js +0 -924
- package/dist/chunk-GEP36Y4X.js +0 -12796
- package/dist/chunk-XYWBQRDM.js +0 -137
- package/dist/clio-BZVGEUFJ.js +0 -58
- package/dist/configure-S7S6F6CL.js +0 -32
- package/docs/html/agents_blueprint.html +0 -936
- package/docs/html/alcf_blueprint.html +0 -324
- package/docs/html/architecture_blueprint.html +0 -850
- package/docs/html/commands_blueprint.html +0 -939
- package/docs/html/config_knobs_audit_blueprint.html +0 -178
- package/docs/html/configuration_blueprint.html +0 -1080
- package/docs/html/context_blueprint.html +0 -603
- package/docs/html/documentation_blueprint.html +0 -832
- package/docs/html/environment_blueprint.html +0 -404
- package/docs/html/eval_blueprint.html +0 -743
- package/docs/html/evals_internal_blueprint.html +0 -190
- package/docs/html/evolution_blueprint.html +0 -674
- package/docs/html/extensions_blueprint.html +0 -2065
- package/docs/html/fleet_dispatch_blueprint.html +0 -286
- package/docs/html/index.html +0 -919
- package/docs/html/lifecycle_blueprint.html +0 -723
- package/docs/html/memory_blueprint.html +0 -699
- package/docs/html/middleware_blueprint.html +0 -664
- package/docs/html/models_blueprint.html +0 -2366
- package/docs/html/observability_blueprint.html +0 -683
- package/docs/html/provider_adapter_blueprint.html +0 -245
- package/docs/html/safety_blueprint.html +0 -1386
- package/docs/html/shared.css +0 -571
- package/docs/html/shared.js +0 -143
- package/docs/html/skills_blueprint.html +0 -671
- package/docs/html/soak_blueprint.html +0 -182
- package/docs/html/tool_usage_blueprint.html +0 -350
- package/docs/html/tools_blueprint.html +0 -2249
- package/docs/html/trace_blueprint.html +0 -235
- package/docs/html/tui_design_blueprint.html +0 -374
- package/docs/html/validation_blueprint.html +0 -961
- package/docs/html/worker_dispatch_blueprint.html +0 -231
- package/src/core/release.ts +0 -2
- package/src/domains/providers/runtimes/common/lmstudio-logger.ts +0 -32
- package/src/domains/providers/runtimes/local-native/lmstudio-native.ts +0 -491
- package/src/engine/apis/lmstudio-native.ts +0 -1438
- package/src/engine/apis/thinking-replay.ts +0 -11
- package/src/tools/string-enum.ts +0 -15
|
@@ -1,25 +1,29 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
readRootEntries,
|
|
4
|
+
splitYamlFrontmatter,
|
|
5
|
+
stringField
|
|
6
|
+
} from "./chunk-2SFS6XQE.js";
|
|
5
7
|
import {
|
|
6
8
|
enabledExtensionResourceRoots
|
|
7
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-ZWLZP4ZT.js";
|
|
10
|
+
import {
|
|
11
|
+
ToolNames
|
|
12
|
+
} from "./chunk-CGKSTWHD.js";
|
|
8
13
|
import {
|
|
9
14
|
INTEROP_AGENT_KINDS,
|
|
10
15
|
interopSourceRank
|
|
11
16
|
} from "./chunk-IHXBNWMM.js";
|
|
12
17
|
import {
|
|
13
|
-
|
|
14
|
-
} from "./chunk-
|
|
18
|
+
clioConfigDir
|
|
19
|
+
} from "./chunk-BNAZZHFG.js";
|
|
15
20
|
import {
|
|
16
21
|
fsyncDirectory
|
|
17
22
|
} from "./chunk-WEPFGWHJ.js";
|
|
18
23
|
import {
|
|
19
|
-
|
|
20
|
-
} from "./chunk-
|
|
24
|
+
resolvePackageRoot
|
|
25
|
+
} from "./chunk-IWHMRKLL.js";
|
|
21
26
|
import {
|
|
22
|
-
__toESM,
|
|
23
27
|
init_esm_shims
|
|
24
28
|
} from "./chunk-3R73A4XB.js";
|
|
25
29
|
|
|
@@ -28,17 +32,17 @@ init_esm_shims();
|
|
|
28
32
|
import { execFileSync } from "node:child_process";
|
|
29
33
|
import {
|
|
30
34
|
cpSync,
|
|
31
|
-
existsSync as
|
|
35
|
+
existsSync as existsSync3,
|
|
32
36
|
mkdirSync,
|
|
33
37
|
mkdtempSync,
|
|
34
38
|
readFileSync as readFileSync3,
|
|
35
39
|
renameSync,
|
|
36
40
|
rmSync,
|
|
37
|
-
statSync
|
|
41
|
+
statSync,
|
|
38
42
|
writeFileSync
|
|
39
43
|
} from "node:fs";
|
|
40
44
|
import { homedir as homedir2, tmpdir } from "node:os";
|
|
41
|
-
import
|
|
45
|
+
import path3 from "node:path";
|
|
42
46
|
|
|
43
47
|
// src/domains/resources/skills/content-hash.ts
|
|
44
48
|
init_esm_shims();
|
|
@@ -53,7 +57,9 @@ var PROVENANCE_KEYS = /* @__PURE__ */ new Set([
|
|
|
53
57
|
"updatedAt",
|
|
54
58
|
"installed-hash",
|
|
55
59
|
"installedHash",
|
|
56
|
-
"audit"
|
|
60
|
+
"audit",
|
|
61
|
+
"installed-by",
|
|
62
|
+
"installedBy"
|
|
57
63
|
]);
|
|
58
64
|
function frontmatterRegion(rawText) {
|
|
59
65
|
const opening = rawText.match(/^---\r?\n/);
|
|
@@ -110,119 +116,37 @@ function normalizedSkillHash(rawText) {
|
|
|
110
116
|
// src/domains/resources/skills/loader.ts
|
|
111
117
|
init_esm_shims();
|
|
112
118
|
import { createHash as createHash2 } from "node:crypto";
|
|
113
|
-
import { existsSync as
|
|
119
|
+
import { existsSync as existsSync2, readdirSync as readdirSync2, readFileSync as readFileSync2, realpathSync } from "node:fs";
|
|
114
120
|
import { homedir } from "node:os";
|
|
115
|
-
import
|
|
121
|
+
import path2 from "node:path";
|
|
116
122
|
|
|
117
|
-
// src/domains/resources/
|
|
123
|
+
// src/domains/resources/skills/marketplace.ts
|
|
118
124
|
init_esm_shims();
|
|
119
|
-
|
|
120
|
-
import { existsSync, readdirSync, statSync } from "node:fs";
|
|
125
|
+
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
121
126
|
import path from "node:path";
|
|
122
|
-
var
|
|
123
|
-
|
|
124
|
-
userCompat: 20,
|
|
125
|
-
user: 30,
|
|
126
|
-
projectCompat: 40,
|
|
127
|
-
project: 50
|
|
128
|
-
};
|
|
129
|
-
function defaultScopedResourceRoots(kind, cwd) {
|
|
130
|
-
return [
|
|
131
|
-
...enabledExtensionResourceRoots(kind, cwd).map((root) => ({
|
|
132
|
-
path: root.path,
|
|
133
|
-
scope: "package",
|
|
134
|
-
source: root.source,
|
|
135
|
-
precedence: COMPAT_RESOURCE_PRECEDENCE.extension
|
|
136
|
-
})),
|
|
137
|
-
{
|
|
138
|
-
path: path.join(clioConfigDir(), kind),
|
|
139
|
-
scope: "user",
|
|
140
|
-
source: "config",
|
|
141
|
-
precedence: COMPAT_RESOURCE_PRECEDENCE.user
|
|
142
|
-
},
|
|
143
|
-
{
|
|
144
|
-
path: path.join(cwd, ".clio-coder", kind),
|
|
145
|
-
scope: "project",
|
|
146
|
-
source: "project",
|
|
147
|
-
precedence: COMPAT_RESOURCE_PRECEDENCE.project
|
|
148
|
-
}
|
|
149
|
-
];
|
|
150
|
-
}
|
|
151
|
-
function sourceInfoForRoot(root, filePath) {
|
|
152
|
-
return {
|
|
153
|
-
path: filePath,
|
|
154
|
-
scope: root.scope,
|
|
155
|
-
...root.source ? { source: root.source } : {},
|
|
156
|
-
...root.precedence !== void 0 ? { precedence: root.precedence } : {}
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
function readRootEntries(root, label, diagnostics) {
|
|
160
|
-
if (!existsSync(root.path)) return [];
|
|
161
|
-
let stat;
|
|
162
|
-
try {
|
|
163
|
-
stat = statSync(root.path);
|
|
164
|
-
} catch (err) {
|
|
165
|
-
const reason = err instanceof Error ? err.message : String(err);
|
|
166
|
-
diagnostics.push({
|
|
167
|
-
type: "warning",
|
|
168
|
-
message: `${label} root could not be stat'ed: ${reason}`,
|
|
169
|
-
path: root.path
|
|
170
|
-
});
|
|
171
|
-
return [];
|
|
172
|
-
}
|
|
173
|
-
if (!stat.isDirectory()) {
|
|
174
|
-
diagnostics.push({ type: "warning", message: `${label} root is not a directory`, path: root.path });
|
|
175
|
-
return [];
|
|
176
|
-
}
|
|
127
|
+
var MARKETPLACE_UNCONFIGURED = "no local skill marketplace catalog or index configured";
|
|
128
|
+
function packageCatalogDir() {
|
|
177
129
|
try {
|
|
178
|
-
return
|
|
179
|
-
} catch
|
|
180
|
-
|
|
181
|
-
diagnostics.push({ type: "warning", message: `${label} root could not be read: ${reason}`, path: root.path });
|
|
182
|
-
return [];
|
|
130
|
+
return path.join(resolvePackageRoot(), "skills");
|
|
131
|
+
} catch {
|
|
132
|
+
return null;
|
|
183
133
|
}
|
|
184
134
|
}
|
|
185
|
-
function
|
|
186
|
-
const opening = raw.match(/^---\r?\n/);
|
|
187
|
-
if (!opening) return { ok: false, reason: "missing", body: raw };
|
|
188
|
-
const closeRegex = /\r?\n---(?:\r?\n|$)/g;
|
|
189
|
-
closeRegex.lastIndex = opening[0].length;
|
|
190
|
-
const closing = closeRegex.exec(raw);
|
|
191
|
-
if (!closing) return { ok: false, reason: "missing closing delimiter", body: raw };
|
|
192
|
-
const body = raw.slice(closing.index + closing[0].length);
|
|
193
|
-
const frontmatterText = raw.slice(opening[0].length, closing.index);
|
|
194
|
-
let parsed;
|
|
135
|
+
function packageIndexPath() {
|
|
195
136
|
try {
|
|
196
|
-
|
|
197
|
-
} catch
|
|
198
|
-
|
|
199
|
-
return { ok: false, reason: `invalid YAML: ${reason}`, body };
|
|
200
|
-
}
|
|
201
|
-
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
202
|
-
return { ok: false, reason: "must be a YAML object", body };
|
|
137
|
+
return path.join(resolvePackageRoot(), "skills", "skill-marketplace.json");
|
|
138
|
+
} catch {
|
|
139
|
+
return null;
|
|
203
140
|
}
|
|
204
|
-
return {
|
|
205
|
-
ok: true,
|
|
206
|
-
frontmatter: parsed,
|
|
207
|
-
body
|
|
208
|
-
};
|
|
209
141
|
}
|
|
210
|
-
function stringField(frontmatter, key) {
|
|
211
|
-
const value = frontmatter[key];
|
|
212
|
-
return typeof value === "string" && value.trim().length > 0 ? value.trim() : null;
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
// src/domains/resources/skills/marketplace.ts
|
|
216
|
-
init_esm_shims();
|
|
217
|
-
import { existsSync as existsSync2, readdirSync as readdirSync2, readFileSync } from "node:fs";
|
|
218
|
-
import path2 from "node:path";
|
|
219
|
-
var MARKETPLACE_UNCONFIGURED = "no local skill marketplace catalog or index configured";
|
|
220
142
|
function defaultIndexPath() {
|
|
221
143
|
try {
|
|
222
|
-
|
|
144
|
+
const configured = path.join(clioConfigDir(), "skill-marketplace.json");
|
|
145
|
+
if (existsSync(configured)) return configured;
|
|
223
146
|
} catch {
|
|
224
|
-
return null;
|
|
225
147
|
}
|
|
148
|
+
const bundled = packageIndexPath();
|
|
149
|
+
return bundled && existsSync(bundled) ? bundled : null;
|
|
226
150
|
}
|
|
227
151
|
function isIndexSkill(value) {
|
|
228
152
|
if (!value || typeof value !== "object" || Array.isArray(value)) return false;
|
|
@@ -260,15 +184,15 @@ function indexSkills(indexPath, diagnostics) {
|
|
|
260
184
|
}
|
|
261
185
|
}
|
|
262
186
|
function looksLikeSkillCatalog(dir) {
|
|
263
|
-
if (!
|
|
187
|
+
if (!existsSync(dir)) return false;
|
|
264
188
|
try {
|
|
265
|
-
return
|
|
189
|
+
return readdirSync(dir, { withFileTypes: true }).some((entry) => {
|
|
266
190
|
if (!entry.isDirectory()) return false;
|
|
267
|
-
const child =
|
|
268
|
-
if (
|
|
191
|
+
const child = path.join(dir, entry.name);
|
|
192
|
+
if (existsSync(path.join(child, "SKILL.md"))) return true;
|
|
269
193
|
try {
|
|
270
|
-
return
|
|
271
|
-
(inner) => inner.isDirectory() &&
|
|
194
|
+
return readdirSync(child, { withFileTypes: true }).some(
|
|
195
|
+
(inner) => inner.isDirectory() && existsSync(path.join(child, inner.name, "SKILL.md"))
|
|
272
196
|
);
|
|
273
197
|
} catch {
|
|
274
198
|
return false;
|
|
@@ -280,15 +204,17 @@ function looksLikeSkillCatalog(dir) {
|
|
|
280
204
|
}
|
|
281
205
|
function resolveCatalogDir(options) {
|
|
282
206
|
if (options.catalogDir === null) return null;
|
|
283
|
-
if (options.catalogDir) return
|
|
207
|
+
if (options.catalogDir) return path.resolve(options.catalogDir);
|
|
284
208
|
const fromEnv = process.env.CLIO_CODER_SKILL_CATALOG_DIR;
|
|
285
|
-
if (fromEnv && fromEnv.trim().length > 0) return
|
|
286
|
-
const repoCatalog =
|
|
287
|
-
|
|
209
|
+
if (fromEnv && fromEnv.trim().length > 0) return path.resolve(fromEnv.trim());
|
|
210
|
+
const repoCatalog = path.join(options.cwd ?? process.cwd(), "skills");
|
|
211
|
+
if (looksLikeSkillCatalog(repoCatalog)) return repoCatalog;
|
|
212
|
+
const bundled = packageCatalogDir();
|
|
213
|
+
return bundled && looksLikeSkillCatalog(bundled) ? bundled : null;
|
|
288
214
|
}
|
|
289
215
|
function catalogCategory(catalogDir, baseDir) {
|
|
290
|
-
const rel =
|
|
291
|
-
const category =
|
|
216
|
+
const rel = path.relative(catalogDir, baseDir);
|
|
217
|
+
const category = path.dirname(rel);
|
|
292
218
|
if (rel.length === 0 || rel.startsWith("..") || category === "." || category.startsWith("..")) return void 0;
|
|
293
219
|
return category;
|
|
294
220
|
}
|
|
@@ -326,7 +252,7 @@ function discoverMarketplaceSkills(options = {}) {
|
|
|
326
252
|
}
|
|
327
253
|
const indexPath = options.indexPath === null ? null : options.indexPath ?? process.env.CLIO_CODER_SKILL_MARKETPLACE_INDEX ?? null;
|
|
328
254
|
const resolvedIndexPath = indexPath ?? defaultIndexPath();
|
|
329
|
-
if (options.indexPath !== null && resolvedIndexPath &&
|
|
255
|
+
if (options.indexPath !== null && resolvedIndexPath && existsSync(resolvedIndexPath)) {
|
|
330
256
|
for (const skill of indexSkills(resolvedIndexPath, diagnostics)) {
|
|
331
257
|
if (seen.has(skill.name)) continue;
|
|
332
258
|
seen.add(skill.name);
|
|
@@ -344,7 +270,7 @@ function getMarketplaceSkills(options = {}) {
|
|
|
344
270
|
function installSkill(input) {
|
|
345
271
|
const source = input.source.trim();
|
|
346
272
|
const spec = parseSkillSourceSpec(source);
|
|
347
|
-
if (spec?.kind === "local" && isSkillName(source) && !
|
|
273
|
+
if (spec?.kind === "local" && isSkillName(source) && !existsSync(spec.path)) {
|
|
348
274
|
const skill = getMarketplaceSkills({ ...input.cwd ? { cwd: input.cwd } : {} }).find(
|
|
349
275
|
(entry) => entry.name === source
|
|
350
276
|
);
|
|
@@ -414,7 +340,7 @@ function defaultSkillRoots(input = {}) {
|
|
|
414
340
|
for (const kind of INTEROP_AGENT_KINDS) {
|
|
415
341
|
if (kind.userSkillRoot === void 0 || kind.skillSource === void 0) continue;
|
|
416
342
|
roots.push({
|
|
417
|
-
path:
|
|
343
|
+
path: path2.join(home, kind.userSkillRoot),
|
|
418
344
|
scope: "user",
|
|
419
345
|
source: kind.skillSource,
|
|
420
346
|
origin: `${kind.skillSource}-user`,
|
|
@@ -425,7 +351,7 @@ function defaultSkillRoots(input = {}) {
|
|
|
425
351
|
}
|
|
426
352
|
if (configDir) {
|
|
427
353
|
roots.push({
|
|
428
|
-
path:
|
|
354
|
+
path: path2.join(configDir, "skills"),
|
|
429
355
|
scope: "user",
|
|
430
356
|
source: "clio",
|
|
431
357
|
origin: "config",
|
|
@@ -437,7 +363,7 @@ function defaultSkillRoots(input = {}) {
|
|
|
437
363
|
for (const kind of INTEROP_AGENT_KINDS) {
|
|
438
364
|
if (kind.projectSkillRoot === void 0 || kind.skillSource === void 0) continue;
|
|
439
365
|
roots.push({
|
|
440
|
-
path:
|
|
366
|
+
path: path2.join(cwd, kind.projectSkillRoot),
|
|
441
367
|
scope: "project",
|
|
442
368
|
source: kind.skillSource,
|
|
443
369
|
origin: `${kind.skillSource}-project`,
|
|
@@ -447,7 +373,7 @@ function defaultSkillRoots(input = {}) {
|
|
|
447
373
|
});
|
|
448
374
|
}
|
|
449
375
|
roots.push({
|
|
450
|
-
path:
|
|
376
|
+
path: path2.join(cwd, ".clio-coder", "skills"),
|
|
451
377
|
scope: "project",
|
|
452
378
|
source: "clio",
|
|
453
379
|
origin: "project",
|
|
@@ -521,7 +447,7 @@ function declaredToolSurface(frontmatter, key, filePath, diagnostics) {
|
|
|
521
447
|
return tools.length > 0 ? tools : void 0;
|
|
522
448
|
}
|
|
523
449
|
function validationSubject(filePath) {
|
|
524
|
-
return
|
|
450
|
+
return path2.basename(filePath) === "SKILL.md" ? path2.basename(path2.dirname(filePath)) : path2.basename(filePath, ".md");
|
|
525
451
|
}
|
|
526
452
|
function validateNameFormat(name) {
|
|
527
453
|
const errors = [];
|
|
@@ -572,7 +498,9 @@ function extractProvenance(frontmatter) {
|
|
|
572
498
|
const installedHash = field("installed-hash", "installedHash");
|
|
573
499
|
const auditRaw = field("audit");
|
|
574
500
|
const audit = auditRaw === "pass" || auditRaw === "warn" || auditRaw === "fail" || auditRaw === "unknown" ? auditRaw : void 0;
|
|
575
|
-
|
|
501
|
+
const installedByRaw = field("installed-by", "installedBy");
|
|
502
|
+
const installedBy = installedByRaw === "worker" ? installedByRaw : void 0;
|
|
503
|
+
if (!installUrl && !registryId && !registryUrl && !installedAt && !updatedAt && !installedHash && !audit && !installedBy)
|
|
576
504
|
return void 0;
|
|
577
505
|
return {
|
|
578
506
|
...installUrl ? { installUrl } : {},
|
|
@@ -581,18 +509,19 @@ function extractProvenance(frontmatter) {
|
|
|
581
509
|
...installedAt ? { installedAt } : {},
|
|
582
510
|
...updatedAt ? { updatedAt } : {},
|
|
583
511
|
...installedHash ? { installedHash } : {},
|
|
584
|
-
...audit ? { audit } : {}
|
|
512
|
+
...audit ? { audit } : {},
|
|
513
|
+
...installedBy ? { installedBy } : {}
|
|
585
514
|
};
|
|
586
515
|
}
|
|
587
516
|
function canonicalizePath(filePath) {
|
|
588
517
|
try {
|
|
589
518
|
return realpathSync.native(filePath);
|
|
590
519
|
} catch {
|
|
591
|
-
return
|
|
520
|
+
return path2.resolve(filePath);
|
|
592
521
|
}
|
|
593
522
|
}
|
|
594
523
|
function pathIsInside(candidate, anchor) {
|
|
595
|
-
return candidate === anchor || candidate.startsWith(anchor +
|
|
524
|
+
return candidate === anchor || candidate.startsWith(anchor + path2.sep);
|
|
596
525
|
}
|
|
597
526
|
function containmentAnchor(root) {
|
|
598
527
|
if (root.containment === void 0) return null;
|
|
@@ -676,7 +605,7 @@ function loadSkillFile(filePath, root) {
|
|
|
676
605
|
}
|
|
677
606
|
for (const message of validateNameFormat(name)) diagnostics.push({ type: "warning", message, path: filePath });
|
|
678
607
|
if (!description) return { candidate: null, diagnostics };
|
|
679
|
-
const baseDir =
|
|
608
|
+
const baseDir = path2.dirname(filePath);
|
|
680
609
|
const scope = root.scope;
|
|
681
610
|
const sourceInfo = {
|
|
682
611
|
path: filePath,
|
|
@@ -713,11 +642,11 @@ function isSkillMarkdownFile(entryName) {
|
|
|
713
642
|
return entryName === "SKILL.md" || entryName.endsWith(".md");
|
|
714
643
|
}
|
|
715
644
|
function collectSkills(root, dir, diagnostics, includeRootFiles, anchor = containmentAnchor(root)) {
|
|
716
|
-
if (!
|
|
645
|
+
if (!existsSync2(dir)) return [];
|
|
717
646
|
if (escapesContainment(dir, anchor, diagnostics)) return [];
|
|
718
647
|
let entries;
|
|
719
648
|
try {
|
|
720
|
-
entries =
|
|
649
|
+
entries = readdirSync2(dir, { withFileTypes: true });
|
|
721
650
|
} catch (err) {
|
|
722
651
|
const reason = err instanceof Error ? err.message : String(err);
|
|
723
652
|
diagnostics.push({ type: "warning", message: `skill root could not be read: ${reason}`, path: dir });
|
|
@@ -725,7 +654,7 @@ function collectSkills(root, dir, diagnostics, includeRootFiles, anchor = contai
|
|
|
725
654
|
}
|
|
726
655
|
const skillEntry = entries.find((entry) => entry.name === "SKILL.md" && entry.isFile());
|
|
727
656
|
if (skillEntry) {
|
|
728
|
-
const skillPath =
|
|
657
|
+
const skillPath = path2.join(dir, skillEntry.name);
|
|
729
658
|
if (escapesContainment(skillPath, anchor, diagnostics)) return [];
|
|
730
659
|
const loaded = loadSkillFile(skillPath, root);
|
|
731
660
|
diagnostics.push(...loaded.diagnostics);
|
|
@@ -734,8 +663,8 @@ function collectSkills(root, dir, diagnostics, includeRootFiles, anchor = contai
|
|
|
734
663
|
const candidates = [];
|
|
735
664
|
for (const entry of entries.sort((a, b) => a.name.localeCompare(b.name))) {
|
|
736
665
|
if (entry.name.startsWith(".") || entry.name === "node_modules") continue;
|
|
737
|
-
const fullPath =
|
|
738
|
-
if (entry.isDirectory() || entry.isSymbolicLink() &&
|
|
666
|
+
const fullPath = path2.join(dir, entry.name);
|
|
667
|
+
if (entry.isDirectory() || entry.isSymbolicLink() && existsSync2(path2.join(fullPath, "SKILL.md"))) {
|
|
739
668
|
candidates.push(...collectSkills(root, fullPath, diagnostics, false, anchor));
|
|
740
669
|
continue;
|
|
741
670
|
}
|
|
@@ -763,14 +692,14 @@ function explicitSkillRoot(filePath) {
|
|
|
763
692
|
};
|
|
764
693
|
}
|
|
765
694
|
function loadExplicitSkillPath(inputPath, diagnostics) {
|
|
766
|
-
const resolved =
|
|
695
|
+
const resolved = path2.resolve(inputPath);
|
|
767
696
|
const root = explicitSkillRoot(resolved);
|
|
768
|
-
if (!
|
|
697
|
+
if (!existsSync2(resolved)) {
|
|
769
698
|
diagnostics.push({ type: "warning", message: `explicit skill path does not exist: ${resolved}`, path: resolved });
|
|
770
699
|
return [];
|
|
771
700
|
}
|
|
772
|
-
const skillFile =
|
|
773
|
-
if (!
|
|
701
|
+
const skillFile = path2.basename(resolved) === "SKILL.md" || resolved.endsWith(".md") ? resolved : path2.join(resolved, "SKILL.md");
|
|
702
|
+
if (!existsSync2(skillFile)) {
|
|
774
703
|
const packages = collectSkills(root, resolved, diagnostics, false);
|
|
775
704
|
if (packages.length > 0) return packages;
|
|
776
705
|
diagnostics.push({
|
|
@@ -891,9 +820,8 @@ function modelVisibleSkills(skills) {
|
|
|
891
820
|
}
|
|
892
821
|
function parseSkillCommand(input) {
|
|
893
822
|
const trimmed = input.trim();
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
const rest = trimmed.slice(prefix.length).trim();
|
|
823
|
+
if (!trimmed.startsWith("/skill ")) return null;
|
|
824
|
+
const rest = trimmed.slice("/skill ".length).trim();
|
|
897
825
|
const separator = rest.search(/\s/);
|
|
898
826
|
const name = separator === -1 ? rest : rest.slice(0, separator);
|
|
899
827
|
if (name.length === 0) return null;
|
|
@@ -975,11 +903,11 @@ function isSkillName(value) {
|
|
|
975
903
|
return value.length > 0 && value.length <= 64 && SKILL_NAME_PATTERN.test(value);
|
|
976
904
|
}
|
|
977
905
|
function repoRelativePath(filePath) {
|
|
978
|
-
if (
|
|
906
|
+
if (path3.isAbsolute(filePath) || filePath.includes("\0")) return null;
|
|
979
907
|
const segments = filePath.split("/");
|
|
980
908
|
if (segments.some((segment) => segment === "..")) return null;
|
|
981
|
-
const normalized =
|
|
982
|
-
if (normalized.startsWith("..") ||
|
|
909
|
+
const normalized = path3.posix.normalize(filePath);
|
|
910
|
+
if (normalized.startsWith("..") || path3.posix.isAbsolute(normalized)) return null;
|
|
983
911
|
return normalized;
|
|
984
912
|
}
|
|
985
913
|
function parseSkillSourceSpec(source) {
|
|
@@ -1010,8 +938,11 @@ function parseSkillSourceSpec(source) {
|
|
|
1010
938
|
};
|
|
1011
939
|
}
|
|
1012
940
|
if (trimmed.startsWith("http://") || trimmed.startsWith("https://")) return null;
|
|
1013
|
-
const expanded = trimmed.startsWith("~/") ?
|
|
1014
|
-
return { kind: "local", path:
|
|
941
|
+
const expanded = trimmed.startsWith("~/") ? path3.join(homedir2(), trimmed.slice(2)) : trimmed;
|
|
942
|
+
return { kind: "local", path: path3.resolve(expanded), original: trimmed };
|
|
943
|
+
}
|
|
944
|
+
function installingAsWorker() {
|
|
945
|
+
return process.env.CLIO_CODER_WORKER_RUN === "1";
|
|
1015
946
|
}
|
|
1016
947
|
function yamlQuote(value) {
|
|
1017
948
|
return `"${value.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`;
|
|
@@ -1026,7 +957,8 @@ function injectProvenanceFrontmatter(rawText, fields) {
|
|
|
1026
957
|
...fields.updatedAt ? [`updated-at: ${yamlQuote(fields.updatedAt)}`] : [],
|
|
1027
958
|
`installed-hash: ${yamlQuote(fields.installedHash)}`,
|
|
1028
959
|
// Audit is a human decision; installs always land unreviewed.
|
|
1029
|
-
"audit: unknown"
|
|
960
|
+
"audit: unknown",
|
|
961
|
+
...fields.installedBy ? [`installed-by: ${yamlQuote(fields.installedBy)}`] : []
|
|
1030
962
|
];
|
|
1031
963
|
const clioIndex = kept.findIndex((line) => /^clio:/.test(line));
|
|
1032
964
|
if (clioIndex >= 0 && !/^clio:\s*$/.test(kept[clioIndex])) {
|
|
@@ -1045,13 +977,13 @@ function injectProvenanceFrontmatter(rawText, fields) {
|
|
|
1045
977
|
return `${region.head}${[...kept.slice(0, blockEnd), ...nested, ...kept.slice(blockEnd)].join("\n")}${region.tail}`;
|
|
1046
978
|
}
|
|
1047
979
|
function resolveSkillDir(target) {
|
|
1048
|
-
if (!
|
|
1049
|
-
const stat =
|
|
980
|
+
if (!existsSync3(target)) throw new Error(`skill source path does not exist: ${target}`);
|
|
981
|
+
const stat = statSync(target);
|
|
1050
982
|
if (stat.isFile()) {
|
|
1051
983
|
if (!target.endsWith(".md")) throw new Error(`skill source must be a SKILL.md file or directory: ${target}`);
|
|
1052
|
-
return
|
|
984
|
+
return path3.dirname(target);
|
|
1053
985
|
}
|
|
1054
|
-
if (!
|
|
986
|
+
if (!existsSync3(path3.join(target, "SKILL.md"))) {
|
|
1055
987
|
throw new Error(`skill source directory has no SKILL.md: ${target}`);
|
|
1056
988
|
}
|
|
1057
989
|
return target;
|
|
@@ -1061,15 +993,15 @@ function fetchSource(spec) {
|
|
|
1061
993
|
return { skillDir: resolveSkillDir(spec.path), cleanup: () => {
|
|
1062
994
|
} };
|
|
1063
995
|
}
|
|
1064
|
-
const tmp = mkdtempSync(
|
|
996
|
+
const tmp = mkdtempSync(path3.join(tmpdir(), "clio-skill-"));
|
|
1065
997
|
const cleanup = () => rmSync(tmp, { recursive: true, force: true });
|
|
1066
998
|
try {
|
|
1067
999
|
execFileSync("git", ["clone", "--depth", "1", "--branch", spec.branch, spec.cloneUrl, tmp], {
|
|
1068
1000
|
stdio: "pipe",
|
|
1069
1001
|
timeout: CLONE_TIMEOUT_MS
|
|
1070
1002
|
});
|
|
1071
|
-
const target =
|
|
1072
|
-
if (!
|
|
1003
|
+
const target = path3.join(tmp, spec.filePath);
|
|
1004
|
+
if (!existsSync3(target)) {
|
|
1073
1005
|
throw new Error(
|
|
1074
1006
|
`${spec.cloneUrl} (branch ${spec.branch}) has no ${spec.filePath}; the source-url may name a path that branch does not carry`
|
|
1075
1007
|
);
|
|
@@ -1081,11 +1013,11 @@ function fetchSource(spec) {
|
|
|
1081
1013
|
}
|
|
1082
1014
|
}
|
|
1083
1015
|
function copySkillDir(from, to) {
|
|
1084
|
-
mkdirSync(
|
|
1016
|
+
mkdirSync(path3.dirname(to), { recursive: true });
|
|
1085
1017
|
cpSync(from, to, {
|
|
1086
1018
|
recursive: true,
|
|
1087
1019
|
filter: (source) => {
|
|
1088
|
-
const base =
|
|
1020
|
+
const base = path3.basename(source);
|
|
1089
1021
|
return base !== ".git" && base !== "node_modules";
|
|
1090
1022
|
}
|
|
1091
1023
|
});
|
|
@@ -1102,7 +1034,7 @@ function swapSkillDir(stage, dest) {
|
|
|
1102
1034
|
rmSync(staging, { recursive: true, force: true });
|
|
1103
1035
|
throw err;
|
|
1104
1036
|
}
|
|
1105
|
-
const hadPrevious =
|
|
1037
|
+
const hadPrevious = existsSync3(dest);
|
|
1106
1038
|
if (hadPrevious) renameSync(dest, backup);
|
|
1107
1039
|
try {
|
|
1108
1040
|
renameSync(staging, dest);
|
|
@@ -1112,10 +1044,10 @@ function swapSkillDir(stage, dest) {
|
|
|
1112
1044
|
throw err;
|
|
1113
1045
|
}
|
|
1114
1046
|
if (hadPrevious) rmSync(backup, { recursive: true, force: true });
|
|
1115
|
-
fsyncDirectory(
|
|
1047
|
+
fsyncDirectory(path3.dirname(dest));
|
|
1116
1048
|
}
|
|
1117
1049
|
function destinationRoot(scope, cwd, configDir) {
|
|
1118
|
-
return scope === "user" ?
|
|
1050
|
+
return scope === "user" ? path3.join(configDir ?? clioConfigDir(), "skills") : path3.join(cwd, ".clio-coder", "skills");
|
|
1119
1051
|
}
|
|
1120
1052
|
function validateSourceSkill(skillDir) {
|
|
1121
1053
|
const list = loadSkills({ disableDiscovery: true, explicitSkillPaths: [skillDir] });
|
|
@@ -1141,27 +1073,28 @@ function installSkillFromSource(input) {
|
|
|
1141
1073
|
if (!isSkillName(name)) {
|
|
1142
1074
|
throw new Error(`invalid skill name "${name}": use lowercase letters, numbers, and single hyphens`);
|
|
1143
1075
|
}
|
|
1144
|
-
const dest =
|
|
1145
|
-
if (
|
|
1076
|
+
const dest = path3.join(destinationRoot(scope, cwd, input.configDir), name);
|
|
1077
|
+
if (existsSync3(dest) && input.force !== true) {
|
|
1146
1078
|
throw new Error(`skill already installed at ${dest} (use --force to overwrite)`);
|
|
1147
1079
|
}
|
|
1148
1080
|
const sourceRaw = readFileSync3(skill.filePath, "utf8");
|
|
1149
1081
|
const installedHash = normalizedSkillHash(sourceRaw);
|
|
1150
|
-
const destFile =
|
|
1082
|
+
const destFile = path3.join(dest, "SKILL.md");
|
|
1151
1083
|
swapSkillDir((staging) => {
|
|
1152
1084
|
copySkillDir(fetched.skillDir, staging);
|
|
1153
1085
|
writeFileSync(
|
|
1154
|
-
|
|
1086
|
+
path3.join(staging, "SKILL.md"),
|
|
1155
1087
|
injectProvenanceFrontmatter(sourceRaw, {
|
|
1156
1088
|
sourceUrl: spec.original,
|
|
1157
1089
|
installedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
1158
|
-
installedHash
|
|
1090
|
+
installedHash,
|
|
1091
|
+
...installingAsWorker() ? { installedBy: "worker" } : {}
|
|
1159
1092
|
}),
|
|
1160
1093
|
"utf8"
|
|
1161
1094
|
);
|
|
1162
1095
|
}, dest);
|
|
1163
1096
|
const after = loadSkills({ cwd, ...scope === "user" && input.configDir ? { configDir: input.configDir } : {} });
|
|
1164
|
-
const installWarnings = after.diagnostics.filter((diag) => diag.path &&
|
|
1097
|
+
const installWarnings = after.diagnostics.filter((diag) => diag.path && path3.resolve(diag.path).startsWith(dest)).map((diag) => diag.message);
|
|
1165
1098
|
return {
|
|
1166
1099
|
name,
|
|
1167
1100
|
scope,
|
|
@@ -1186,7 +1119,7 @@ function updateOne(skill, force) {
|
|
|
1186
1119
|
const fetched = fetchSource(spec);
|
|
1187
1120
|
try {
|
|
1188
1121
|
validateSourceSkill(fetched.skillDir);
|
|
1189
|
-
const remoteFile =
|
|
1122
|
+
const remoteFile = path3.join(fetched.skillDir, "SKILL.md");
|
|
1190
1123
|
const remoteRaw = readFileSync3(remoteFile, "utf8");
|
|
1191
1124
|
const remoteHash = normalizedSkillHash(remoteRaw);
|
|
1192
1125
|
const localRaw = readFileSync3(skill.filePath, "utf8");
|
|
@@ -1200,12 +1133,15 @@ function updateOne(skill, force) {
|
|
|
1200
1133
|
swapSkillDir((staging) => {
|
|
1201
1134
|
copySkillDir(fetched.skillDir, staging);
|
|
1202
1135
|
writeFileSync(
|
|
1203
|
-
|
|
1136
|
+
path3.join(staging, "SKILL.md"),
|
|
1204
1137
|
injectProvenanceFrontmatter(remoteRaw, {
|
|
1205
1138
|
sourceUrl,
|
|
1206
1139
|
installedAt: skill.provenance?.installedAt ?? (/* @__PURE__ */ new Date()).toISOString(),
|
|
1207
1140
|
updatedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
1208
|
-
installedHash: remoteHash
|
|
1141
|
+
installedHash: remoteHash,
|
|
1142
|
+
// Who installed a skill is set once; an update, worker- or
|
|
1143
|
+
// operator-run, does not change who put it there originally.
|
|
1144
|
+
...skill.provenance?.installedBy ? { installedBy: skill.provenance.installedBy } : {}
|
|
1209
1145
|
}),
|
|
1210
1146
|
"utf8"
|
|
1211
1147
|
);
|
|
@@ -1231,12 +1167,6 @@ function updateSkills(input = {}) {
|
|
|
1231
1167
|
}
|
|
1232
1168
|
|
|
1233
1169
|
export {
|
|
1234
|
-
COMPAT_RESOURCE_PRECEDENCE,
|
|
1235
|
-
defaultScopedResourceRoots,
|
|
1236
|
-
sourceInfoForRoot,
|
|
1237
|
-
readRootEntries,
|
|
1238
|
-
splitYamlFrontmatter,
|
|
1239
|
-
stringField,
|
|
1240
1170
|
updateSkills,
|
|
1241
1171
|
MARKETPLACE_UNCONFIGURED,
|
|
1242
1172
|
discoverMarketplaceSkills,
|
|
@@ -1249,4 +1179,4 @@ export {
|
|
|
1249
1179
|
expandSkillInvocationInput,
|
|
1250
1180
|
parsePendingSkillRequests
|
|
1251
1181
|
};
|
|
1252
|
-
//# sourceMappingURL=chunk-
|
|
1182
|
+
//# sourceMappingURL=chunk-4BPJXDWC.js.map
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
durableAssistantTextFromEvent
|
|
4
|
+
} from "./chunk-6EJV5X2W.js";
|
|
5
|
+
import {
|
|
6
|
+
init_esm_shims
|
|
7
|
+
} from "./chunk-3R73A4XB.js";
|
|
8
|
+
|
|
9
|
+
// src/tools/dispatch-event-text.ts
|
|
10
|
+
init_esm_shims();
|
|
11
|
+
function assistantTextFromEvent(event) {
|
|
12
|
+
return durableAssistantTextFromEvent(event).trim();
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export {
|
|
16
|
+
assistantTextFromEvent
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=chunk-4KLWL3UC.js.map
|