@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
|
@@ -77,6 +77,13 @@ export interface WorkerPromptInputs {
|
|
|
77
77
|
onPermission: "deny" | "fail" | "escalate";
|
|
78
78
|
/** One stable persona: the recipe body or bounded override, including bound-skill mechanics. */
|
|
79
79
|
persona: RenderedPromptFragment;
|
|
80
|
+
/**
|
|
81
|
+
* The session's `additionalFragments` channel, mirrored for a worker: active
|
|
82
|
+
* project rules scoped to this run's working context and the operator
|
|
83
|
+
* profile, when either renders non-empty. Rendered last, after persona, the
|
|
84
|
+
* same order `compile()` uses for its own `additionalFragments`.
|
|
85
|
+
*/
|
|
86
|
+
additionalFragments?: ReadonlyArray<RenderedPromptFragment>;
|
|
80
87
|
}
|
|
81
88
|
|
|
82
89
|
export interface FragmentManifestEntry {
|
|
@@ -111,6 +118,23 @@ export interface CompiledSessionPrompt {
|
|
|
111
118
|
* selection; the pure compiler leaves it absent.
|
|
112
119
|
*/
|
|
113
120
|
projectPreload?: ProjectPreloadClass | null;
|
|
121
|
+
/**
|
|
122
|
+
* Absolute paths of the effective project handbooks that produced the
|
|
123
|
+
* project context, ancestor to nearest. Set by the prompts extension
|
|
124
|
+
* alongside `projectPreload`; the pure compiler leaves it absent.
|
|
125
|
+
*/
|
|
126
|
+
projectHandbookFiles?: string[];
|
|
127
|
+
/**
|
|
128
|
+
* Repo-relative `.clio-coder/rules/**` ids selected into this compile, in
|
|
129
|
+
* load order. Set only by `compileWorkerPrompt`, which owns rule
|
|
130
|
+
* selection; the pure compiler and `compileSessionPrompt` leave it absent.
|
|
131
|
+
*/
|
|
132
|
+
rulesApplied?: string[];
|
|
133
|
+
/**
|
|
134
|
+
* Whether the operator profile rendered non-empty content into this
|
|
135
|
+
* compile. Set only by `compileWorkerPrompt`.
|
|
136
|
+
*/
|
|
137
|
+
operatorProfileApplied?: boolean;
|
|
114
138
|
}
|
|
115
139
|
|
|
116
140
|
export const FLEET_ROUTING_GUIDANCE_MAX_BYTES = 320;
|
|
@@ -118,7 +142,7 @@ export const FLEET_ROUTING_GUIDANCE_MAX_BYTES = 320;
|
|
|
118
142
|
// `agent:"auto"` baselines by task shape and can still land on a worker whose
|
|
119
143
|
// capability class is wrong for the job, so a pinned id is the reliable path.
|
|
120
144
|
export const FLEET_ROUTING_GUIDANCE =
|
|
121
|
-
'Fleet routing: pin the `agent` id from the Fleet section
|
|
145
|
+
'Fleet routing: pin the `agent` id from the Fleet section; agent:"auto" baselines from the task text and is a fallback, not a router.';
|
|
122
146
|
|
|
123
147
|
/**
|
|
124
148
|
* Worker-side mirror of the parent's `SPOT_CHECK_GUIDANCE`. The parent sentence
|
|
@@ -161,10 +185,19 @@ export function safetyOneLiner(level: string): string {
|
|
|
161
185
|
}
|
|
162
186
|
}
|
|
163
187
|
|
|
188
|
+
/**
|
|
189
|
+
* What "approval-required" resolves to for the session: one operator
|
|
190
|
+
* confirmation per parked call. The level fragments say which calls park;
|
|
191
|
+
* this line says what parking means, and it is role text because a worker's
|
|
192
|
+
* parked call resolves through its `onPermission` routing instead.
|
|
193
|
+
*/
|
|
194
|
+
export const SESSION_APPROVAL_SEMANTICS =
|
|
195
|
+
"Approval-required calls pause for one operator confirmation, which grants only the parked action; cancellation cancels the parked call cleanly.";
|
|
196
|
+
|
|
164
197
|
function renderSafetySection(safetyFragment: LoadedFragment, level: string): string {
|
|
165
198
|
const oneLine = `Autonomy: ${level}. ${safetyOneLiner(level)}`;
|
|
166
199
|
const body = safetyFragment.body.trim();
|
|
167
|
-
return body.length > 0 ? `${oneLine}\n\n${body}` : oneLine;
|
|
200
|
+
return body.length > 0 ? `${oneLine}\n${SESSION_APPROVAL_SEMANTICS}\n\n${body}` : oneLine;
|
|
168
201
|
}
|
|
169
202
|
|
|
170
203
|
function renderRuntimeBlock(inputs: SessionPromptInputs): string {
|
|
@@ -191,9 +224,29 @@ function renderRuntimeBlock(inputs: SessionPromptInputs): string {
|
|
|
191
224
|
*/
|
|
192
225
|
function sessionCanDispatch(inputs: SessionPromptInputs): boolean {
|
|
193
226
|
if (inputs.providerSupportsTools === false) return false;
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
227
|
+
return toolSurfaceHasTool(inputs.toolNames, inputs.toolPromptHints, "dispatch");
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Whether `context` is on the session's surface. The Skills passage, the docs
|
|
232
|
+
* routing directive, and the Tool Contract's skills clause follow the same
|
|
233
|
+
* rule as dispatch: text that teaches a call to `context` renders only when
|
|
234
|
+
* `context` is there to be called.
|
|
235
|
+
*/
|
|
236
|
+
function sessionHasContext(inputs: SessionPromptInputs): boolean {
|
|
237
|
+
if (inputs.providerSupportsTools === false) return false;
|
|
238
|
+
return toolSurfaceHasTool(inputs.toolNames, inputs.toolPromptHints, "context");
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/** One lookup for every "is this tool on the surface" predicate, over names and hints alike. */
|
|
242
|
+
function toolSurfaceHasTool(
|
|
243
|
+
toolNames: ReadonlyArray<string> | undefined,
|
|
244
|
+
toolPromptHints: ReadonlyArray<ToolPromptHint> | undefined,
|
|
245
|
+
tool: string,
|
|
246
|
+
): boolean {
|
|
247
|
+
const names = new Set((toolNames ?? []).map((name) => name.trim()));
|
|
248
|
+
const hinted = new Set((toolPromptHints ?? []).map((entry) => entry.tool.trim()));
|
|
249
|
+
return names.has(tool) || hinted.has(tool);
|
|
197
250
|
}
|
|
198
251
|
|
|
199
252
|
function renderFleetBlock(inputs: SessionPromptInputs): string {
|
|
@@ -212,16 +265,17 @@ function renderToolContractBlock(inputs: SessionPromptInputs): string {
|
|
|
212
265
|
const names = [
|
|
213
266
|
...new Set((inputs.toolNames ?? []).map((name) => name.trim()).filter((name) => name.length > 0)),
|
|
214
267
|
].sort();
|
|
215
|
-
const hintedTools = new Set((inputs.toolPromptHints ?? []).map((entry) => entry.tool.trim()));
|
|
216
268
|
const canDispatch = sessionCanDispatch(inputs);
|
|
217
|
-
const canListSkills =
|
|
269
|
+
const canListSkills = sessionHasContext(inputs);
|
|
218
270
|
const inventoryGuidance = [
|
|
219
271
|
// Asked twice in one session which tools it had, a live model gave two
|
|
220
272
|
// different answers and invented `web_find`. The authoritative list is one
|
|
221
273
|
// line above; pointing at it beats letting the model recall the schemas.
|
|
222
274
|
"When answering capability-inventory questions, copy the Direct tools line above verbatim rather than recalling the attached schemas, and make no calls",
|
|
223
275
|
...(canDispatch ? ["add dispatch(list:true) only if agents or the fleet are requested"] : []),
|
|
224
|
-
...(canListSkills
|
|
276
|
+
...(canListSkills
|
|
277
|
+
? ['add context(scope="skills") only if skills are requested (it lists installed and marketplace skills)']
|
|
278
|
+
: []),
|
|
225
279
|
].join("; ");
|
|
226
280
|
const lines = [
|
|
227
281
|
"# Tool Contract",
|
|
@@ -230,10 +284,14 @@ function renderToolContractBlock(inputs: SessionPromptInputs): string {
|
|
|
230
284
|
"Harness model: direct tools are attached schemas; fleet agents are workers behind dispatch; skills are operator-activated workflows reached through context. Keep these capability sets distinct.",
|
|
231
285
|
`${inventoryGuidance}.`,
|
|
232
286
|
"Call tools only for concrete inspection or changes the task requires. If the user asks for a tool-free answer, simply answer without calling tools.",
|
|
233
|
-
|
|
234
|
-
|
|
287
|
+
// The tool-specific instantiation of the operating contract's "narrow
|
|
288
|
+
// work: inspect directly" rule; the contract cannot name tools.
|
|
289
|
+
// Delegation, the tasks board, and skills are not restated here: the
|
|
290
|
+
// Delegation and Skills passages and the registry hints carry them, and
|
|
291
|
+
// each renders exactly when its tool does.
|
|
292
|
+
'For narrow file or symbol orientation, prefer context(scope="workspace"), code_nav, grep, and read instead of assuming source-tree details were preloaded.',
|
|
293
|
+
"Validate with verify or git diff before final claims.",
|
|
235
294
|
'When a tool call fails or is rejected, do not retry the same shape blindly: re-read the schema, adjust the arguments, or query context(scope="docs") for that tool\'s usage.',
|
|
236
|
-
'List installed skills with context(scope="skills") only when the task is skill-shaped or the operator asks about skills; if one matches, suggest the operator run /skill:<name>, and never load a skill the operator did not request.',
|
|
237
295
|
];
|
|
238
296
|
// One hint per tool, sorted by tool name: deterministic bytes regardless
|
|
239
297
|
// of surface or registration order, and removing a tool from the surface
|
|
@@ -267,32 +325,17 @@ function workerPermissionSentence(mode: WorkerPromptInputs["onPermission"]): str
|
|
|
267
325
|
}
|
|
268
326
|
}
|
|
269
327
|
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
[
|
|
282
|
-
"Safety policy is authoritative for every tool call. Allow decisions run normally.",
|
|
283
|
-
operatingPermission,
|
|
284
|
-
"Hard blocks (destructive git, protected artifacts, project or path policy violations) remain hard blocks. When a call is blocked, pivot to a safer approach or explain the blocker. Do not retry the same blocked action through another tool.",
|
|
285
|
-
].join("\n"),
|
|
286
|
-
);
|
|
287
|
-
return [
|
|
288
|
-
workerBody.trim(),
|
|
289
|
-
"# Assigned Task Contract",
|
|
290
|
-
"The assigned task is authoritative. Role guidance is a persona, not a replacement task.",
|
|
291
|
-
"Do not invent a different task, source tree, file path, or implementation plan.",
|
|
292
|
-
"If the assigned task asks for an exact response, a direct answer, or no tool use, answer it directly without tool calls.",
|
|
293
|
-
"Use tools only when necessary for the assigned task and admitted by the worker tool contract.",
|
|
294
|
-
WORKER_CLAIM_GUIDANCE,
|
|
295
|
-
].join("\n\n");
|
|
328
|
+
/**
|
|
329
|
+
* The constitutional contract renders byte-identical for session and worker.
|
|
330
|
+
* Role text is separate: the coordinator's `operating.delegation` and
|
|
331
|
+
* `operating.skills` never reach a worker (its reply goes to the
|
|
332
|
+
* orchestrator, it cannot suggest a skill to an operator, and no builtin
|
|
333
|
+
* admits `dispatch`), and the worker's `operating.worker` never reaches the
|
|
334
|
+
* session. What "approval-required" resolves to for a worker is stated once,
|
|
335
|
+
* in its safety section, by `workerPermissionSentence`.
|
|
336
|
+
*/
|
|
337
|
+
function renderWorkerOperatingContract(operatingContract: LoadedFragment, workerContract: LoadedFragment): string {
|
|
338
|
+
return [operatingContract.body.trim(), workerContract.body.trim(), WORKER_CLAIM_GUIDANCE].join("\n\n");
|
|
296
339
|
}
|
|
297
340
|
|
|
298
341
|
function renderWorkerToolContractBlock(inputs: WorkerPromptInputs): string {
|
|
@@ -359,41 +402,18 @@ export function workerSafetyOneLiner(level: AutonomyLevel, mode: WorkerPromptInp
|
|
|
359
402
|
}
|
|
360
403
|
}
|
|
361
404
|
|
|
405
|
+
/**
|
|
406
|
+
* The worker reads the same `safety.<level>` fragment the session does; the
|
|
407
|
+
* one-liner (with the run's permission routing) is the only role text. The
|
|
408
|
+
* level fragments speak in action classes and never name a tool, so nothing
|
|
409
|
+
* here can be false for a surface that lacks one; the earlier inline copy of
|
|
410
|
+
* the levels claimed a full-auto worker's "dispatches" ran when no builtin
|
|
411
|
+
* admits dispatch.
|
|
412
|
+
*/
|
|
362
413
|
function renderWorkerSafetySection(safetyFragment: LoadedFragment, inputs: WorkerPromptInputs): string {
|
|
363
|
-
const
|
|
364
|
-
const
|
|
365
|
-
|
|
366
|
-
"",
|
|
367
|
-
heading,
|
|
368
|
-
];
|
|
369
|
-
switch (inputs.autonomy) {
|
|
370
|
-
case "read-only":
|
|
371
|
-
lines.push(
|
|
372
|
-
"Admitted read-class tools run freely. Every mutating call is denied by the harness, and no approval prompt appears.",
|
|
373
|
-
"When a change is needed, propose it concretely instead of attempting it.",
|
|
374
|
-
);
|
|
375
|
-
break;
|
|
376
|
-
case "suggest":
|
|
377
|
-
lines.push(
|
|
378
|
-
"Admitted read-class tools run freely. Every non-read call is approval-required.",
|
|
379
|
-
workerPermissionSentence(inputs.onPermission),
|
|
380
|
-
);
|
|
381
|
-
break;
|
|
382
|
-
case "auto-edit":
|
|
383
|
-
lines.push(
|
|
384
|
-
"Workspace edits and recognized commands run. Other commands and system modifications are approval-required.",
|
|
385
|
-
workerPermissionSentence(inputs.onPermission),
|
|
386
|
-
);
|
|
387
|
-
break;
|
|
388
|
-
case "full-auto":
|
|
389
|
-
lines.push(
|
|
390
|
-
"Writes, dispatches, and ordinary commands run. System modifications and opaque command substitutions remain approval-required.",
|
|
391
|
-
workerPermissionSentence(inputs.onPermission),
|
|
392
|
-
);
|
|
393
|
-
break;
|
|
394
|
-
}
|
|
395
|
-
lines.push("Destructive git and other hard safety blocks remain denied at every autonomy level.");
|
|
396
|
-
return lines.join("\n");
|
|
414
|
+
const oneLine = `Autonomy: ${inputs.autonomy}. ${workerSafetyOneLiner(inputs.autonomy, inputs.onPermission)}`;
|
|
415
|
+
const body = safetyFragment.body.trim();
|
|
416
|
+
return body.length > 0 ? `${oneLine}\n\n${body}` : oneLine;
|
|
397
417
|
}
|
|
398
418
|
|
|
399
419
|
function renderRetrievalHintsBlock(inputs: SessionPromptInputs): string {
|
|
@@ -404,10 +424,13 @@ function renderRetrievalHintsBlock(inputs: SessionPromptInputs): string {
|
|
|
404
424
|
"Use only facts present in the current turn and say what file-specific context would be needed for precise code work.",
|
|
405
425
|
].join("\n");
|
|
406
426
|
}
|
|
427
|
+
// Where to look for skills and when to delegate exploration live in the
|
|
428
|
+
// Skills and Delegation passages; this block only says what is and is not
|
|
429
|
+
// preloaded.
|
|
407
430
|
return [
|
|
408
431
|
"# Retrieval Hints",
|
|
409
432
|
"Compact CLIO-CODER.md project instructions may be preloaded above; everything else about the repository must be fetched, not assumed.",
|
|
410
|
-
"
|
|
433
|
+
"Never invent file paths, automatic tool behavior, or mutable repo details from the system prompt.",
|
|
411
434
|
].join("\n");
|
|
412
435
|
}
|
|
413
436
|
|
|
@@ -450,17 +473,30 @@ export function compile(table: FragmentTable, inputs: CompileInputs): CompiledSe
|
|
|
450
473
|
|
|
451
474
|
let identityBody = identity.body;
|
|
452
475
|
const selfAwareness = identity.id === "identity.clio" ? table.byId.get("identity.self-awareness") : undefined;
|
|
476
|
+
// The routing directive teaches a call to `context`, so like the Skills
|
|
477
|
+
// passage it renders only when `context` is on the surface. The paths and
|
|
478
|
+
// the code-outranks-docs rule name no tool and stay unconditional.
|
|
479
|
+
const docsRouting = selfAwareness && sessionHasContext(session) ? table.byId.get("identity.docs-routing") : undefined;
|
|
453
480
|
if (selfAwareness) {
|
|
454
481
|
const packageRoot = resolvePackageRoot();
|
|
455
482
|
const rendered = selfAwareness.body
|
|
456
483
|
.replace("{CLIO_DOCS_PATH}", join(packageRoot, "docs"))
|
|
457
484
|
.replace("{CLIO_SRC_PATH}", join(packageRoot, "src"))
|
|
458
485
|
.replace("{CLIO_CODEWIKI_PATH}", join(packageRoot, "dist", "assets", "codewiki.json"));
|
|
459
|
-
identityBody =
|
|
486
|
+
identityBody = [identity.body.trim(), rendered.trim(), ...(docsRouting ? [docsRouting.body.trim()] : [])].join(
|
|
487
|
+
"\n\n",
|
|
488
|
+
);
|
|
460
489
|
}
|
|
461
490
|
|
|
491
|
+
// Role text gated on the surface, following the Fleet-block rule: text
|
|
492
|
+
// about a tool renders only when the tool is there to be called.
|
|
493
|
+
const delegation = sessionCanDispatch(session) ? table.byId.get("operating.delegation") : undefined;
|
|
494
|
+
const skills = sessionHasContext(session) ? table.byId.get("operating.skills") : undefined;
|
|
495
|
+
|
|
462
496
|
push("identity", identityBody);
|
|
463
497
|
push("operating-contract", operatingContract.body);
|
|
498
|
+
if (delegation) push("delegation", delegation.body);
|
|
499
|
+
if (skills) push("skills", skills.body);
|
|
464
500
|
push("safety", renderSafetySection(safety, autonomyLevel));
|
|
465
501
|
push("runtime", renderRuntimeBlock(session));
|
|
466
502
|
push("tool-contract", renderToolContractBlock(session));
|
|
@@ -473,7 +509,15 @@ export function compile(table: FragmentTable, inputs: CompileInputs): CompiledSe
|
|
|
473
509
|
}
|
|
474
510
|
|
|
475
511
|
const systemPrompt = parts.join("\n\n");
|
|
476
|
-
const baseFragments = [
|
|
512
|
+
const baseFragments = [
|
|
513
|
+
identity,
|
|
514
|
+
...(selfAwareness ? [selfAwareness] : []),
|
|
515
|
+
...(docsRouting ? [docsRouting] : []),
|
|
516
|
+
operatingContract,
|
|
517
|
+
...(delegation ? [delegation] : []),
|
|
518
|
+
...(skills ? [skills] : []),
|
|
519
|
+
safety,
|
|
520
|
+
];
|
|
477
521
|
const fragmentManifest: FragmentManifestEntry[] = baseFragments.map((f) => ({
|
|
478
522
|
id: f.id,
|
|
479
523
|
relPath: f.relPath,
|
|
@@ -501,7 +545,12 @@ export function compile(table: FragmentTable, inputs: CompileInputs): CompiledSe
|
|
|
501
545
|
/**
|
|
502
546
|
* Compile the canonical stable prompt for one mediated fleet worker.
|
|
503
547
|
* Dynamic task, project, memory, pipeline, and per-run posture messages do
|
|
504
|
-
* not belong here
|
|
548
|
+
* not belong here; those ride in dispatch's `dynamicPromptMessages`. The one
|
|
549
|
+
* exception is `additionalFragments`: the operator-editable layer (project
|
|
550
|
+
* rules scoped to this run, the operator profile) that mirrors the session's
|
|
551
|
+
* own `additionalFragments` channel, so a worker whose task touches a ruled
|
|
552
|
+
* path reads the same rule the session would. The section order is a
|
|
553
|
+
* protocol invariant.
|
|
505
554
|
*/
|
|
506
555
|
export function compileWorker(table: FragmentTable, inputs: WorkerPromptInputs): CompiledSessionPrompt {
|
|
507
556
|
if (inputs.persona.dynamic) {
|
|
@@ -519,6 +568,7 @@ export function compileWorker(table: FragmentTable, inputs: WorkerPromptInputs):
|
|
|
519
568
|
}
|
|
520
569
|
const identity = lookupFragment(table, "identity.clio-worker", "worker identity");
|
|
521
570
|
const operatingContract = lookupFragment(table, "operating.contract", "operating contract");
|
|
571
|
+
const workerContract = lookupFragment(table, "operating.worker", "worker contract");
|
|
522
572
|
const safety = lookupFragment(table, `safety.${inputs.autonomy}`, "safety");
|
|
523
573
|
|
|
524
574
|
const parts: string[] = [];
|
|
@@ -531,20 +581,28 @@ export function compileWorker(table: FragmentTable, inputs: WorkerPromptInputs):
|
|
|
531
581
|
};
|
|
532
582
|
|
|
533
583
|
push("identity", identity.body);
|
|
534
|
-
push("operating-contract", renderWorkerOperatingContract(operatingContract,
|
|
584
|
+
push("operating-contract", renderWorkerOperatingContract(operatingContract, workerContract));
|
|
535
585
|
push("tool-contract", renderWorkerToolContractBlock(inputs));
|
|
536
586
|
push("safety", renderWorkerSafetySection(safety, inputs));
|
|
537
587
|
push("persona", inputs.persona.body);
|
|
588
|
+
for (const fragment of inputs.additionalFragments ?? []) {
|
|
589
|
+
push(fragment.id, fragment.body);
|
|
590
|
+
}
|
|
538
591
|
|
|
539
592
|
const systemPrompt = parts.join("\n\n");
|
|
540
|
-
const fragmentManifest: FragmentManifestEntry[] = [
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
)
|
|
593
|
+
const fragmentManifest: FragmentManifestEntry[] = [
|
|
594
|
+
identity,
|
|
595
|
+
operatingContract,
|
|
596
|
+
workerContract,
|
|
597
|
+
safety,
|
|
598
|
+
inputs.persona,
|
|
599
|
+
...(inputs.additionalFragments ?? []),
|
|
600
|
+
].map((fragment) => ({
|
|
601
|
+
id: fragment.id,
|
|
602
|
+
relPath: fragment.relPath,
|
|
603
|
+
contentHash: fragment.contentHash,
|
|
604
|
+
dynamic: fragment.dynamic,
|
|
605
|
+
}));
|
|
548
606
|
|
|
549
607
|
return {
|
|
550
608
|
systemPrompt,
|
|
@@ -11,7 +11,18 @@ export interface CompileSessionPromptInput {
|
|
|
11
11
|
workingContextPaths?: ReadonlyArray<string>;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
export
|
|
14
|
+
export interface CompileWorkerPromptInput extends WorkerPromptInputs {
|
|
15
|
+
/** Working directory the rule loader and repo-awareness checks run against; defaults to `process.cwd()`. */
|
|
16
|
+
cwd?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Best-effort paths this worker's run actually touches (from `writeRoots`
|
|
19
|
+
* and path-like tokens in the task/briefing text), used the same way the
|
|
20
|
+
* session's `workingContextPaths` selects path-scoped project rules. There
|
|
21
|
+
* is no structured path field on the model-facing dispatch tool, so this is
|
|
22
|
+
* inference, not a guarantee: a rule can be missed, never fabricated.
|
|
23
|
+
*/
|
|
24
|
+
workingContextPaths?: ReadonlyArray<string>;
|
|
25
|
+
}
|
|
15
26
|
|
|
16
27
|
export interface PromptsContract {
|
|
17
28
|
/**
|
|
@@ -22,7 +33,12 @@ export interface PromptsContract {
|
|
|
22
33
|
*/
|
|
23
34
|
compileSessionPrompt(input: CompileSessionPromptInput): Promise<CompiledSessionPrompt>;
|
|
24
35
|
|
|
25
|
-
/**
|
|
36
|
+
/**
|
|
37
|
+
* Compile the canonical stable harness for one mediated fleet worker. The
|
|
38
|
+
* result's `rulesApplied` and `operatorProfileApplied` are the receipt
|
|
39
|
+
* provenance for this run's customization layer: dispatch reads them
|
|
40
|
+
* straight off this return rather than re-deriving them.
|
|
41
|
+
*/
|
|
26
42
|
compileWorkerPrompt(input: CompileWorkerPromptInput): Promise<CompiledSessionPrompt>;
|
|
27
43
|
|
|
28
44
|
/** Reload fragment table (triggered by config.hotReload). */
|
|
@@ -85,6 +85,7 @@ export function createPromptsBundle(
|
|
|
85
85
|
const cwd = input.cwd ?? process.cwd();
|
|
86
86
|
let contextFiles = "";
|
|
87
87
|
let projectPreload: ProjectPreloadClass | null = null;
|
|
88
|
+
let projectHandbookFiles: string[] = [];
|
|
88
89
|
if (!suppressContextFiles) {
|
|
89
90
|
const projectContext = contextDomain()?.renderPromptContext(cwd);
|
|
90
91
|
contextFiles = projectContext
|
|
@@ -95,6 +96,7 @@ export function createPromptsBundle(
|
|
|
95
96
|
hasClioMd: projectContext.clioMd !== null,
|
|
96
97
|
text: projectContext.text,
|
|
97
98
|
});
|
|
99
|
+
projectHandbookFiles = projectContext.handbookFiles;
|
|
98
100
|
}
|
|
99
101
|
for (const warning of projectContext?.warnings ?? []) process.stderr.write(`${warning}\n`);
|
|
100
102
|
}
|
|
@@ -112,17 +114,28 @@ export function createPromptsBundle(
|
|
|
112
114
|
additionalFragments: [
|
|
113
115
|
...workspaceRootFragment(cwd),
|
|
114
116
|
...clioRepoAwarenessFragments(cwd),
|
|
115
|
-
...customizationFragments(cwd, input.workingContextPaths ?? []),
|
|
117
|
+
...customizationFragments(cwd, input.workingContextPaths ?? []).fragments,
|
|
116
118
|
],
|
|
117
119
|
});
|
|
118
|
-
return { ...compiled, projectPreload };
|
|
120
|
+
return { ...compiled, projectPreload, projectHandbookFiles };
|
|
119
121
|
},
|
|
120
122
|
async compileWorkerPrompt(input: CompileWorkerPromptInput) {
|
|
121
123
|
if (!table) throw new Error("prompts domain not started");
|
|
122
124
|
if (table.byId.size === 0) {
|
|
123
125
|
throw new Error("prompts: no fragments loaded, check startup logs");
|
|
124
126
|
}
|
|
125
|
-
|
|
127
|
+
const { cwd: inputCwd, workingContextPaths, ...workerInputs } = input;
|
|
128
|
+
const cwd = inputCwd ?? process.cwd();
|
|
129
|
+
const customization = customizationFragments(cwd, workingContextPaths ?? []);
|
|
130
|
+
const compiled = compileWorker(table, {
|
|
131
|
+
...workerInputs,
|
|
132
|
+
additionalFragments: customization.fragments,
|
|
133
|
+
});
|
|
134
|
+
return {
|
|
135
|
+
...compiled,
|
|
136
|
+
rulesApplied: customization.activeRuleIds,
|
|
137
|
+
operatorProfileApplied: customization.operatorProfileApplied,
|
|
138
|
+
};
|
|
126
139
|
},
|
|
127
140
|
reload,
|
|
128
141
|
};
|
|
@@ -153,6 +166,15 @@ export function createPromptsBundle(
|
|
|
153
166
|
return { extension, contract };
|
|
154
167
|
}
|
|
155
168
|
|
|
169
|
+
/** Fragments plus the provenance of which customization sources actually rendered. */
|
|
170
|
+
export interface CustomizationFragmentsResult {
|
|
171
|
+
fragments: RenderedPromptFragment[];
|
|
172
|
+
/** Rule ids (posix path under `.clio-coder/rules`) selected into `fragments`, in load order. */
|
|
173
|
+
activeRuleIds: string[];
|
|
174
|
+
/** Whether the operator profile rendered non-empty content into `fragments`. */
|
|
175
|
+
operatorProfileApplied: boolean;
|
|
176
|
+
}
|
|
177
|
+
|
|
156
178
|
/**
|
|
157
179
|
* Inline prompt fragments for the project's customization surfaces. Unconditional
|
|
158
180
|
* `.clio-coder/rules/**` rules load with project context here; path-scoped rules stay
|
|
@@ -160,9 +182,17 @@ export function createPromptsBundle(
|
|
|
160
182
|
* file is in working context. The operator profile renders as one capped
|
|
161
183
|
* section. Both are deterministic (rules sort by id), so a local model's cached
|
|
162
184
|
* prompt prefix stays stable. Best-effort: a load failure injects nothing.
|
|
185
|
+
* Callers that seal receipt provenance (dispatch) read `activeRuleIds` and
|
|
186
|
+
* `operatorProfileApplied` off the result rather than re-deriving them, so the
|
|
187
|
+
* receipt can never disagree with what actually rendered.
|
|
163
188
|
*/
|
|
164
|
-
function customizationFragments(
|
|
189
|
+
export function customizationFragments(
|
|
190
|
+
cwd: string,
|
|
191
|
+
workingContextPaths: ReadonlyArray<string>,
|
|
192
|
+
): CustomizationFragmentsResult {
|
|
165
193
|
const fragments: RenderedPromptFragment[] = [];
|
|
194
|
+
let activeRuleIds: string[] = [];
|
|
195
|
+
let operatorProfileApplied = false;
|
|
166
196
|
try {
|
|
167
197
|
const loaded = loadProjectRules(cwd);
|
|
168
198
|
const active = selectActiveRules(loaded.rules, normalizeWorkingContextPaths(cwd, workingContextPaths));
|
|
@@ -175,6 +205,7 @@ function customizationFragments(cwd: string, workingContextPaths: ReadonlyArray<
|
|
|
175
205
|
contentHash: sha256(body),
|
|
176
206
|
dynamic: true,
|
|
177
207
|
});
|
|
208
|
+
activeRuleIds = active.map((rule) => rule.id);
|
|
178
209
|
}
|
|
179
210
|
} catch {
|
|
180
211
|
// Project rules are best-effort; a load failure must not block compilation.
|
|
@@ -190,11 +221,12 @@ function customizationFragments(cwd: string, workingContextPaths: ReadonlyArray<
|
|
|
190
221
|
contentHash: sha256(rendered.text),
|
|
191
222
|
dynamic: true,
|
|
192
223
|
});
|
|
224
|
+
operatorProfileApplied = true;
|
|
193
225
|
}
|
|
194
226
|
} catch {
|
|
195
227
|
// The operator profile is best-effort; a load failure injects nothing.
|
|
196
228
|
}
|
|
197
|
-
return fragments;
|
|
229
|
+
return { fragments, activeRuleIds, operatorProfileApplied };
|
|
198
230
|
}
|
|
199
231
|
|
|
200
232
|
function normalizeWorkingContextPaths(cwd: string, paths: ReadonlyArray<string>): string[] {
|
|
@@ -275,7 +307,7 @@ function renderProjectSynopsis(context: ProjectPromptContext, providerSupportsTo
|
|
|
275
307
|
if (context.clioMd) {
|
|
276
308
|
lines.push(`Project: ${context.clioMd.projectName}`);
|
|
277
309
|
lines.push(
|
|
278
|
-
"
|
|
310
|
+
"Project handbook: available; compact synopsis only because the effective layers are too large for automatic preload.",
|
|
279
311
|
);
|
|
280
312
|
}
|
|
281
313
|
if (hasCodewiki(context.text)) lines.push("Codewiki: available via code_nav.");
|
|
@@ -290,7 +322,7 @@ function renderProjectSynopsis(context: ProjectPromptContext, providerSupportsTo
|
|
|
290
322
|
}
|
|
291
323
|
|
|
292
324
|
/**
|
|
293
|
-
* Project context is selected once per session compile: the full
|
|
325
|
+
* Project context is selected once per session compile: the full effective-handbook
|
|
294
326
|
* preload when it is small enough, a compact synopsis otherwise. No per-turn
|
|
295
327
|
* selection — the session prompt is stable for the session's lifetime. The
|
|
296
328
|
* cliff itself lives in prompts/preload.ts so reporting surfaces classify
|
|
@@ -21,7 +21,5 @@ not Claude, GPT, Qwen, Gemini, Llama, Mistral, or any other vendor's
|
|
|
21
21
|
assistant, and you do not claim to be from Anthropic, OpenAI,
|
|
22
22
|
Alibaba, Google, Meta, or any other model vendor.
|
|
23
23
|
|
|
24
|
-
You
|
|
25
|
-
|
|
26
|
-
capabilities, and you do not bypass confirmations, privilege limits,
|
|
27
|
-
or git safety rails.
|
|
24
|
+
You do not invent capabilities, and you do not bypass confirmations,
|
|
25
|
+
privilege limits, or git safety rails.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: identity.docs-routing
|
|
3
|
+
version: 1
|
|
4
|
+
budgetTokens: 120
|
|
5
|
+
description: Directive to route questions about Clio herself through context(scope="docs"); rendered only when context is on the surface
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Clio documentation routing
|
|
9
|
+
|
|
10
|
+
When the user asks about Clio herself, her commands, configuration, targets, fleet, dispatch, extensions, skills, safety model, or any other Clio behavior, call context (scope="docs", query=<the question>) before answering and before any grep, find, or read: Clio's documentation ships with the package, not in the working tree, so searching the workspace for it finds nothing. Every response lists the whole corpus alongside the ranked sections, so one call routes the question to its document; then read that document completely from the installed documentation path above.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: identity.self-awareness
|
|
3
3
|
version: 1
|
|
4
|
-
budgetTokens:
|
|
4
|
+
budgetTokens: 260
|
|
5
5
|
description: Clio self-awareness, installed documentation, and harness configuration paths
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -15,49 +15,5 @@ Code map: {CLIO_CODEWIKI_PATH} (a structural index of Clio's own files, symbols,
|
|
|
15
15
|
When reading Clio documentation, resolve docs/... there, not in the current working directory.
|
|
16
16
|
Documentation routes, code decides: when precision matters, verify against the installed source, because code outranks docs.
|
|
17
17
|
|
|
18
|
-
Documentation routing:
|
|
19
|
-
- Commands -> docs/commands-and-modes.md
|
|
20
|
-
- Context window resolution -> docs/context-engine.md
|
|
21
|
-
- Runtime targets -> docs/configuration-and-targets.md
|
|
22
|
-
- Every environment variable the runtime reads -> docs/environment-variables.md
|
|
23
|
-
- Argonne ALCF Sophia/Metis inference targets over Globus OAuth -> docs/alcf-provider.md
|
|
24
|
-
- Installation -> docs/installation-and-lifecycle.md
|
|
25
|
-
- Safety posture -> docs/safety-model.md
|
|
26
|
-
- Source layout -> docs/architecture.md
|
|
27
|
-
- Why the dispatch domain is not split -> docs/dispatch-architecture-rationale.md
|
|
28
|
-
- Prompt envelope reuse -> docs/prompt-envelope-and-tools.md
|
|
29
|
-
- In-depth reference for all 20 worker tools -> docs/tool-usage.md
|
|
30
|
-
- Developer guide to implementing custom model runtimes and inference server integrations -> docs/provider-adapter-cookbook.md
|
|
31
|
-
- Built-in agent recipes -> docs/built-in-agents.md
|
|
32
|
-
- Artifact browsing -> docs/observability.md
|
|
33
|
-
- Where every generated file lands -> docs/artifact-placement.md
|
|
34
|
-
- Evidence directory structures -> docs/evidence-and-memory.md
|
|
35
|
-
- Local YAML eval suites -> docs/eval-runner.md
|
|
36
|
-
- Prompt and skill resources -> docs/extensions-and-sharing.md
|
|
37
|
-
- Skills Hub marketplace discovery -> docs/skills-marketplace.md
|
|
38
|
-
- Runtime model refresh -> docs/model-catalog.md
|
|
39
|
-
- Active component snapshots and the experimental middleware hook/effect contract -> docs/middleware-and-components.md
|
|
40
|
-
- Advisory validation-contract patterns for scientific artifacts and HPC assumptions -> docs/scientific-validation.md
|
|
41
|
-
- Falsifiable Change Manifest JSON templates -> docs/evolution.md
|
|
42
|
-
- Source-first docs workflow -> docs/documentation-guide.md
|
|
43
|
-
- Interface layout -> docs/tui-design.md
|
|
44
|
-
- NDJSON parent-child socket protocols -> docs/worker-dispatch-mechanics.md
|
|
45
|
-
- Multi-node fleet dispatch -> docs/fleet-dispatch.md
|
|
46
|
-
- Multi-process capacity leases -> docs/capacity-and-scheduling.md
|
|
47
|
-
- Executable multi-node demo with reviewer gate and receipt provenance walkthrough -> docs/fleet-demo-runbook.md
|
|
48
|
-
- Session lifecycle -> docs/session-lifecycle.md
|
|
49
|
-
- Agent Client Protocol (ACP) server over stdio -> docs/acp.md
|
|
50
|
-
- Version registry and migration policies for all 9 serialized artifact schemas -> docs/artifact-versions.md
|
|
51
|
-
- Process exit code taxonomy -> docs/exit-codes-and-output.md
|
|
52
|
-
- Actionable error remediation and diagnostics keyed by exact user-facing messages -> docs/troubleshooting.md
|
|
53
|
-
- Canonical definitions of 17 core architectural concepts mapped to src/ types -> docs/glossary.md
|
|
54
|
-
- Complete source-to-documentation mapping matrix and subsystem coverage status -> docs/documentation-coverage.md
|
|
55
|
-
- Issue-driven development lifecycle -> docs/development-pipeline.md
|
|
56
|
-
- Proactive task memory architecture -> docs/proactive-memory.md
|
|
57
|
-
- WAL SQLite trace mirror database schema -> docs/trace-store.md
|
|
58
|
-
- Private context index determinism -> docs/evals-internal.md
|
|
59
|
-
- Point-in-time inventory of legacy environment variables (Historical Appendix) -> docs/config-knobs-audit.md
|
|
60
|
-
- Clock and timestamp conventions -> docs/time-conventions.md
|
|
61
|
-
|
|
62
18
|
User configuration lives in ~/.config/clio-coder/settings.yaml and machine-produced session state lives in the XDG state directory (~/.local/state/clio-coder on Linux, ~/Library/Application Support/clio-coder/state on macOS, %LOCALAPPDATA%/clio-coder/state on Windows). Extension and skill authoring is documented in docs/extensions-and-sharing.md and docs/skills-marketplace.md.
|
|
63
19
|
Always read Clio .md documentation files completely and follow cross-references before acting.
|