@iowarp/clio-coder 0.3.1 → 0.3.3
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 +233 -373
- package/CONTRIBUTING.md +23 -23
- package/README.md +284 -613
- package/dist/{acp-FPR54DGL.js → acp-P2AQILE2.js} +43 -53
- package/dist/{agents-OGPIHPJH.js → agents-72W3BI7I.js} +43 -26
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-IC3K6NIZ.js → auth-5TWEIYDN.js} +20 -12
- package/dist/chunk-2DJ2KNFG.js +2095 -0
- package/dist/{chunk-IS3ONKU3.js → chunk-2IR2NMPA.js} +6 -4
- package/dist/chunk-2SFS6XQE.js +122 -0
- package/dist/{chunk-PV4JUBVJ.js → chunk-2TLUCQVG.js} +40 -21
- package/dist/chunk-2VTFPG5O.js +48 -0
- package/dist/chunk-4BJ5BYCE.js +61 -0
- package/dist/{chunk-474KN5II.js → chunk-4BPJXDWC.js} +111 -181
- package/dist/chunk-4VP4KH3K.js +962 -0
- package/dist/chunk-4XUGQOHA.js +797 -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-4QKXUHSR.js → chunk-5UFT4SUX.js} +70 -20
- 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-6N5PTWMY.js +136 -0
- package/dist/chunk-6SGHMWE3.js +277 -0
- package/dist/chunk-6XLNIQDB.js +27 -0
- package/dist/chunk-7CR24IG7.js +242 -0
- 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-GB6QRBXN.js → chunk-APJ265NV.js} +54 -1187
- 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-COU2UHX6.js +400 -0
- package/dist/chunk-DSELYM6W.js +1077 -0
- package/dist/chunk-DUYJ5IO6.js +644 -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-FCSXB6T2.js +338 -0
- package/dist/chunk-FJ3H4MN5.js +48 -0
- package/dist/{chunk-RPTR2H26.js → chunk-FNTMWMX5.js} +21 -15
- package/dist/chunk-FQ4SKYE4.js +29 -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-IKCO5N3L.js +162 -0
- package/dist/chunk-IR4CFBFN.js +56 -0
- package/dist/{chunk-R5KLMSBV.js → chunk-J5Q24KAG.js} +2 -2
- package/dist/chunk-J7CWMCQD.js +255 -0
- package/dist/{chunk-K5XEMXTI.js → chunk-JVCV3ICN.js} +1 -1
- package/dist/chunk-KZWTDYJF.js +217 -0
- package/dist/chunk-LBMZMYH2.js +285 -0
- package/dist/{chunk-G34LV2PF.js → chunk-LM5TQCJZ.js} +84 -170
- package/dist/chunk-LW6DSM3M.js +5135 -0
- package/dist/chunk-LWLEKMDQ.js +3482 -0
- package/dist/{chunk-H6F6BYOH.js → chunk-LZSJBIVT.js} +7003 -7434
- package/dist/{chunk-HQQID6OA.js → chunk-M6SHUN7Q.js} +5 -5
- package/dist/{chunk-FST4FYJB.js → chunk-MFFY33HR.js} +99 -140
- package/dist/{chunk-BSU2YIWB.js → chunk-MVVUPGPW.js} +131 -136
- package/dist/chunk-OAO4GE4M.js +619 -0
- package/dist/{chunk-Q3RUPKEJ.js → chunk-OC7FIQPC.js} +58 -189
- 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-MAR7Y6HW.js → chunk-PAJK6MAQ.js} +23 -16
- package/dist/{chunk-M5T5VO65.js → chunk-PIWWS5BL.js} +837 -635
- package/dist/chunk-POHLU5DW.js +1186 -0
- package/dist/chunk-QKMUKYO7.js +4961 -0
- package/dist/chunk-SRDMMSEP.js +16405 -0
- package/dist/chunk-SST6Z5JA.js +80 -0
- package/dist/chunk-STBPMHSX.js +2456 -0
- package/dist/chunk-T6YILFSB.js +80 -0
- package/dist/chunk-TZK7PACC.js +174 -0
- package/dist/chunk-TZTZS7QK.js +227 -0
- package/dist/{chunk-ASND7OZK.js → chunk-UFIIWP2H.js} +13 -13
- package/dist/chunk-UOV2BYIW.js +107 -0
- package/dist/{chunk-PFEFKVGL.js → chunk-V6RTAOC2.js} +13 -11
- package/dist/chunk-VAKQQHWR.js +434 -0
- package/dist/chunk-VG7TBQIY.js +128 -0
- package/dist/chunk-VJWL6YS5.js +244 -0
- package/dist/{chunk-EYOKLTMF.js → chunk-VPAYEGVX.js} +17 -3
- package/dist/chunk-WEH5XRJQ.js +32 -0
- package/dist/chunk-X4RCMKVQ.js +641 -0
- package/dist/{chunk-TEKV33Q5.js → chunk-X6IAEBZR.js} +65 -33
- package/dist/chunk-XBXAASKX.js +18 -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/chunk-ZWMF7253.js +1882 -0
- package/dist/cli/index.js +62 -54
- package/dist/clio-JOU4FXVA.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-XCDVKR23.js} +92 -55
- package/dist/configure-4GAP54ZW.js +42 -0
- package/dist/{context-5RADCKTR.js → context-4UOGGLQ5.js} +71 -35
- package/dist/context-5VKGUVJJ.js +866 -0
- package/dist/{context-3KWFLHJG.js → context-77FM5DV5.js} +15 -13
- package/dist/{context-clear-7TSNPAAI.js → context-clear-XXJRLCJJ.js} +54 -28
- package/dist/{context-index-W4RLWOQH.js → context-index-BZ4UYMTC.js} +30 -24
- package/dist/dispatch-runner-QPRDDBDX.js +1997 -0
- package/dist/{docs-5AWSPS37.js → docs-2C2LTVT2.js} +23 -10
- package/dist/{doctor-UC5NAJYQ.js → doctor-HR46URBJ.js} +27 -17
- package/dist/{eval-U6TJHRLX.js → eval-XSSNATB4.js} +29 -16
- package/dist/{evidence-YEGUW4L3.js → evidence-6HG2PY2B.js} +46 -26
- package/dist/{evolve-TXARCTPG.js → evolve-K7YU3NCY.js} +45 -25
- package/dist/{extensions-OZFJ3A3G.js → extensions-QVDOHDGJ.js} +16 -7
- package/dist/{fleet-6G3DHNYE.js → fleet-VY3HHKN6.js} +163 -54
- package/dist/{fleet-preflight-DSNT37JK.js → fleet-preflight-DDN536IT.js} +7 -4
- package/dist/{init-KZ5QTF6M.js → init-JYGXI3FK.js} +69 -32
- package/dist/{memory-73ESV5YC.js → memory-WFZMGYHX.js} +48 -27
- package/dist/{models-A4PVNWJK.js → models-I5QWSEOM.js} +39 -25
- package/dist/monitor-GE4ID3IA.js +661 -0
- package/dist/{chunk-FCIH3BIZ.js → orchestrator-EM5MC3HM.js} +15979 -12407
- 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-ZU3QMZPZ.js} +101 -61
- package/dist/{share-YIFFV4NQ.js → share-S5BZQC5I.js} +15 -8
- package/dist/{skills-2V6RA3OQ.js → skills-X5VXCRNQ.js} +34 -14
- package/dist/{skills-eval-S2TVJO4F.js → skills-eval-WKIHWTHR.js} +70 -34
- package/dist/steer-GGWFUJUD.js +77 -0
- package/dist/{targets-TYXLPB23.js → targets-SNCPI2NR.js} +43 -27
- package/dist/terminal-lease-BNAHVHBS.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-JQHHPQ4K.js} +45 -25
- package/dist/{usage-ZAFSXKKG.js → usage-OR4O5SMZ.js} +62 -31
- package/dist/verify-375KUB3Y.js +716 -0
- package/dist/web-fetch-2YHJ3KTG.js +638 -0
- package/dist/{wiki-generate-NUQCVOQ3.js → wiki-generate-UEXP2ARI.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 +387 -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 +45 -9
- 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 +715 -278
- package/src/interactive/chat-renderer.ts +306 -85
- 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 +253 -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 +42 -22
- package/src/interactive/footer-panel.ts +8 -3
- package/src/interactive/format-time.ts +14 -2
- package/src/interactive/interactive-application.ts +203 -17
- package/src/interactive/interactive-event-projection.ts +18 -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 +184 -117
- 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/ask-user.ts +146 -24
- 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 +516 -168
- 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/status/index.ts +12 -1
- package/src/interactive/status/reasoning.ts +87 -0
- package/src/interactive/status/summary.ts +13 -2
- 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/transcript-detail.ts +120 -0
- 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 +271 -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/presentation.ts +107 -0
- package/src/tools/registry.ts +45 -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,11 +1,11 @@
|
|
|
1
1
|
# Configuration, Targets, Runtimes, and Auth
|
|
2
2
|
|
|
3
3
|
> [!TIP]
|
|
4
|
-
> **Interactive Spec Available:** An interactive configuration validator, target resolver, and CLI command generator is located at [docs/html/configuration_blueprint.html](html/configuration_blueprint.html) (Version: 0.3.
|
|
4
|
+
> **Interactive Spec Available:** An interactive configuration validator, target resolver, and CLI command generator is located at [docs/html/configuration_blueprint.html](html/configuration_blueprint.html) (Version: 0.3.3).
|
|
5
5
|
|
|
6
|
-
Clio Coder is target-first: chat and fleet dispatch resolve through configured targets in `settings.yaml`, not through provider-specific ad hoc flags. Chat and print targets are HTTP
|
|
6
|
+
Clio Coder is target-first: chat and fleet dispatch resolve through configured targets in `settings.yaml`, not through provider-specific ad hoc flags. Chat and print targets are HTTP and native engine-backed runtimes. Fleet dispatch can also target the sanctioned Claude Code subscription runtimes described below.
|
|
7
7
|
|
|
8
|
-
Clio is built on
|
|
8
|
+
Clio's engine is built on the pi SDK (see [docs/pi-boundary.md](pi-boundary.md)). Broad provider/model support comes from engine-backed descriptors and from the generic `openai-compat` and `anthropic-compat` targets. Clio adds orchestration, local/native runtime ergonomics, target configuration, dispatch, safety, and receipts rather than creating a first-class descriptor for every provider.
|
|
9
9
|
|
|
10
10
|
Source of truth: `src/core/defaults.ts`, `src/core/config.ts`, `src/domains/providers/**`, `src/cli/configure.ts`, `src/cli/targets.ts`, `src/cli/models.ts`, and `src/cli/auth.ts`.
|
|
11
11
|
|
|
@@ -56,7 +56,7 @@ clio-coder configure --list
|
|
|
56
56
|
```
|
|
57
57
|
|
|
58
58
|
Start one local runtime and register exactly one target first. Clio integrates with popular local inference engines:
|
|
59
|
-
- **[LM Studio](https://lmstudio.ai):** A desktop application to run LLMs locally. Target runtime ID: `lmstudio
|
|
59
|
+
- **[LM Studio](https://lmstudio.ai):** A desktop application to run LLMs locally. Target runtime ID: `lmstudio`.
|
|
60
60
|
- **[Ollama](https://ollama.com):** A lightweight, extensible framework for building and running LLMs locally. Target runtime ID: `ollama-native`.
|
|
61
61
|
- **[llama.cpp](https://github.com/ggerganov/llama.cpp):** A minimal C/C++ implementation for local LLM inference. Target runtime ID: `llamacpp`.
|
|
62
62
|
- **[vLLM](https://github.com/vllm-project/vllm):** A high-throughput and memory-efficient LLM serving engine. Target runtime ID: `vllm`.
|
|
@@ -66,7 +66,7 @@ Common local runtime IDs and default URLs are:
|
|
|
66
66
|
|
|
67
67
|
| Runtime | Target runtime id | Example local URL |
|
|
68
68
|
| --- | --- | --- |
|
|
69
|
-
| LM Studio | `lmstudio
|
|
69
|
+
| LM Studio | `lmstudio` | `http://127.0.0.1:1234` |
|
|
70
70
|
| Ollama | `ollama-native` | `http://127.0.0.1:11434` |
|
|
71
71
|
| llama.cpp server | `llamacpp` | `http://127.0.0.1:8080` |
|
|
72
72
|
| vLLM | `vllm` | `http://127.0.0.1:8000` |
|
|
@@ -78,7 +78,7 @@ Example registration:
|
|
|
78
78
|
```bash
|
|
79
79
|
clio-coder configure \
|
|
80
80
|
--id local-lmstudio \
|
|
81
|
-
--runtime lmstudio
|
|
81
|
+
--runtime lmstudio \
|
|
82
82
|
--url http://127.0.0.1:1234 \
|
|
83
83
|
--model your-model-id \
|
|
84
84
|
--set-orchestrator \
|
|
@@ -119,9 +119,9 @@ Terminology used in code and receipts:
|
|
|
119
119
|
| `RuntimeDescriptor` | Executable adapter, transport, or protocol implementation, for example `openai-codex`, `anthropic`, `openai-compat`, `llamacpp`, `claude-sdk`, or `claude-code`. |
|
|
120
120
|
| Target / `TargetDescriptor` | Persisted user-configured target plus runtime id, model defaults, auth metadata, and capability overrides. |
|
|
121
121
|
| Resolved target | Target spec combined with the runtime descriptor, model catalog/probe data, wire model id, and effective capabilities. |
|
|
122
|
-
| Orchestrator target | Main chat/print target. HTTP/native
|
|
122
|
+
| Orchestrator target | Main chat/print target. HTTP/native engine-backed. |
|
|
123
123
|
| Background target | Optional proactive-memory model target. Unset means deterministic rules-only memory. |
|
|
124
|
-
| Worker target | Fleet dispatch target. HTTP/native
|
|
124
|
+
| Worker target | Fleet dispatch target. HTTP/native engine-backed, or one of the sanctioned subscription worker runtimes such as `claude-sdk`, `claude-code`, or `antigravity-code`. |
|
|
125
125
|
|
|
126
126
|
```yaml
|
|
127
127
|
version: 1
|
|
@@ -129,11 +129,23 @@ autonomy: auto-edit # read-only | suggest | auto-edit | full-auto (enfor
|
|
|
129
129
|
|
|
130
130
|
targets:
|
|
131
131
|
- id: local-lmstudio
|
|
132
|
-
runtime: lmstudio
|
|
132
|
+
runtime: lmstudio
|
|
133
133
|
url: http://127.0.0.1:1234
|
|
134
134
|
defaultModel: your-model-id
|
|
135
135
|
capabilities:
|
|
136
136
|
reasoning: true # optional; only if your model/runtime supports it
|
|
137
|
+
lmstudio:
|
|
138
|
+
# Omit load entirely to use LM Studio's just-in-time load defaults.
|
|
139
|
+
load:
|
|
140
|
+
contextLength: 131072
|
|
141
|
+
flashAttention: true
|
|
142
|
+
evalBatchSize: 512
|
|
143
|
+
numExperts: 8
|
|
144
|
+
offloadKvCacheToGpu: true
|
|
145
|
+
request:
|
|
146
|
+
ttlSeconds: 600
|
|
147
|
+
draftModel: your-draft-model-id
|
|
148
|
+
reasoning: auto # auto | off | on | low | medium | high
|
|
137
149
|
|
|
138
150
|
runtimePlugins: []
|
|
139
151
|
|
|
@@ -193,6 +205,9 @@ theme: default
|
|
|
193
205
|
terminal:
|
|
194
206
|
showTerminalProgress: false
|
|
195
207
|
outputVerbosity: default
|
|
208
|
+
tuiMode: regular # regular terminal scrollback or fullscreen sticky layout
|
|
209
|
+
fullscreenScrollbar: auto # hidden, auto, or always in fullscreen mode
|
|
210
|
+
smoothStreaming: off # off, conservative auto, or explicit on
|
|
196
211
|
skills:
|
|
197
212
|
trustProjectCompatRoots: false
|
|
198
213
|
delegation:
|
|
@@ -226,6 +241,71 @@ guardrails:
|
|
|
226
241
|
|
|
227
242
|
Target capability overrides may include `chat`, `tools`, `toolCallFormat`, `reasoning`, `thinkingFormat`, `structuredOutputs`, `vision`, `audio`, `embeddings`, `rerank`, `fim`, `contextWindow`, and `maxTokens`.
|
|
228
243
|
|
|
244
|
+
### LM Studio transport and settings
|
|
245
|
+
|
|
246
|
+
The canonical runtime id is `lmstudio`. The former `lmstudio-native` id remains an accepted alias,
|
|
247
|
+
and `clio-coder upgrade` rewrites persisted targets to the canonical id. It also converts `ws:` URLs
|
|
248
|
+
to `http:` and `wss:` URLs to `https:` because this adapter is entirely HTTP. Chat uses LM Studio's
|
|
249
|
+
OpenAI-compatible `POST /v1/chat/completions` endpoint
|
|
250
|
+
(<https://lmstudio.ai/docs/developer/openai-compat/chat-completions>). Model discovery and residency
|
|
251
|
+
use the native REST API, with `GET /api/v1/models` as the preferred catalog
|
|
252
|
+
(<https://lmstudio.ai/docs/developer/rest/list>), `GET /api/v0/models` for older servers, and
|
|
253
|
+
`GET /v1/models` as the final listing fallback.
|
|
254
|
+
|
|
255
|
+
Leave `lmstudio.load` absent to preserve LM Studio's just-in-time loading behavior. Clio then observes
|
|
256
|
+
residency but sends no explicit load request. When `lmstudio.load` is present and the selected model
|
|
257
|
+
is unloaded, Clio calls `POST /api/v1/models/load` with `echo_load_config: true`; LM Studio documents
|
|
258
|
+
the load operation at <https://lmstudio.ai/docs/developer/rest/load>. Clio sends only fields that the
|
|
259
|
+
target explicitly configured:
|
|
260
|
+
|
|
261
|
+
| Settings key | REST load field |
|
|
262
|
+
| --- | --- |
|
|
263
|
+
| `contextLength` | `context_length` |
|
|
264
|
+
| `flashAttention` | `flash_attention` |
|
|
265
|
+
| `evalBatchSize` | `eval_batch_size` |
|
|
266
|
+
| `numExperts` | `num_experts` |
|
|
267
|
+
| `offloadKvCacheToGpu` | `offload_kv_cache_to_gpu` |
|
|
268
|
+
|
|
269
|
+
Loaded instances are addressed by their instance ids when Clio calls
|
|
270
|
+
`POST /api/v1/models/unload` (<https://lmstudio.ai/docs/developer/rest/unload>). Clio records the
|
|
271
|
+
instance id returned by each successful load in this process and refuses to unload every other
|
|
272
|
+
instance. Models that were already resident and instances reported through LM Link remain
|
|
273
|
+
observe-only. Model selection remains permissive: `defaultModel` and `wireModels` may name either
|
|
274
|
+
the model key or one of its loaded instance ids. The probe reports both forms and exposes each
|
|
275
|
+
instance's echoed load configuration from the native model listing
|
|
276
|
+
(<https://lmstudio.ai/docs/developer/rest/list>).
|
|
277
|
+
|
|
278
|
+
The request settings map as follows:
|
|
279
|
+
|
|
280
|
+
| Settings key | Chat request behavior |
|
|
281
|
+
| --- | --- |
|
|
282
|
+
| `ttlSeconds` | Sends `ttl`, using LM Studio's auto-eviction TTL (<https://lmstudio.ai/docs/developer/core/ttl-and-auto-evict>). |
|
|
283
|
+
| `draftModel` | Sends `draft_model` on the OpenAI-compatible chat request (<https://lmstudio.ai/docs/developer/openai-compat/chat-completions>). |
|
|
284
|
+
| `reasoning` | `off` sends `reasoning_effort: none`; `on` sends `low`; a literal `low`, `medium`, or `high` outranks the thinking dial but is still clamped to the efforts the model advertises (a model reporting only `[off, on]` receives `low`); `auto` maps the active Clio thinking level. |
|
|
285
|
+
|
|
286
|
+
Clio maps the active thinking level through the model family's runtime resolver map. If the model family specifies an explicit effort map (such as mapping `max` to `xhigh`), Clio sends that exact effort; otherwise it falls back to the default `off` to `none`, `minimal`/`low` to `low`, `medium` to `medium`, and `high`/`xhigh`/`max` to `high`. For model families that declare a `none` or `always-on` reasoning mechanism, the `reasoning_effort` field is omitted. A model reporting only `[off,on]` clamps every
|
|
287
|
+
non-off level to `low`. Clio uses only `reasoning_effort` on LM Studio's documented chat surface
|
|
288
|
+
(<https://lmstudio.ai/docs/developer/openai-compat/chat-completions>) and never sends
|
|
289
|
+
`chat_template_kwargs` to LM Studio.
|
|
290
|
+
|
|
291
|
+
LM Studio can require bearer authentication for its HTTP APIs
|
|
292
|
+
(<https://lmstudio.ai/docs/developer/core/authentication>). Clio sends the resolved target API key as
|
|
293
|
+
`Authorization: Bearer ...` on chat, listing, load, and unload calls. Configure validates the exact
|
|
294
|
+
`/lmstudio-greeting` response before saving a direct `lmstudio` target.
|
|
295
|
+
|
|
296
|
+
### Loaded instances and LM Link peers
|
|
297
|
+
|
|
298
|
+
A model id on an LM Studio target is resolved against that host's loaded instances. A key with a loaded instance is never sent bare (which would JIT-load a second copy). An instance id reported loaded by two configured LM Studio targets on different hosts is an LM Link peer projection. When a bare model key is requested and multiple instances of it are loaded, Clio selects an instance in this order: the target's configured `defaultModel`, then an instance not cross-listed by another configured LM Studio target, and finally the first loaded instance. This behavior tracks issue #113.
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
Prompt-template overrides, system prompts, GPU-offload ratios, KV-cache quantization, parallel slots,
|
|
302
|
+
context checkpoints, and speculative-decoding variants are not writable through this Clio settings
|
|
303
|
+
block. Set them in LM Studio's My Models load settings or with `lms load`; the CLI is documented at
|
|
304
|
+
<https://lmstudio.ai/docs/cli>, and the broader load-config vocabulary is documented at
|
|
305
|
+
<https://lmstudio.ai/docs/typescript/api-reference/llm-load-model-config>. Clio reads back the load
|
|
306
|
+
configuration that `GET /api/v1/models` exposes instead of pretending it applied settings the REST
|
|
307
|
+
load endpoint did not accept (<https://lmstudio.ai/docs/developer/rest/list>).
|
|
308
|
+
|
|
229
309
|
`defaults.maxTokens` is a global output budget requested for every turn (default `32768`). At request time it is always clamped down to the model's known max-output cap and the remaining context window, so a model that supports less automatically gets less and no per-model tuning is required. A per-target `capabilities.maxTokens` override still records the model's true cap; the request never exceeds it. Set `defaults.maxTokens: 0` to disable the global default and fall back to per-model caps only.
|
|
230
310
|
|
|
231
311
|
The setting `workers.maxRetries` controls the maximum number of automated retries for retryable failures during fleet dispatch. Setting this value to `0` disables retries entirely.
|
|
@@ -262,7 +342,7 @@ slower even though the target still responds.
|
|
|
262
342
|
For llama.cpp router targets, Clio observes `/v1/models` and `/props`. It can
|
|
263
343
|
tell which models are loaded and whether the resident count is within the
|
|
264
344
|
router's `max_instances`, so an allowed two-model setup is reported as an
|
|
265
|
-
informational co-residency notice. The router response does not expose free
|
|
345
|
+
informational co-residency notice. A model reporting a `sleeping` state counts as resident, because the router wakes it on the next inference request. Clio's residency manager never evicts a resident model when the requested replacement model is not in the router's catalog. The router response does not expose free
|
|
266
346
|
VRAM or per-model loaded footprint, so Clio cannot prove the loaded set fits.
|
|
267
347
|
Use host tools such as `nvidia-smi`, `rocm-smi`, Vulkan memory telemetry, or
|
|
268
348
|
the runtime's own dashboard to confirm headroom after loading the main coding
|
|
@@ -284,16 +364,21 @@ at CPU speed instead of failing.
|
|
|
284
364
|
warning naming the co-resident models. Raise or disable the ceiling with
|
|
285
365
|
`CLIO_CODER_LMSTUDIO_CORESIDENT_CONTEXT`. A target serving one model alone is
|
|
286
366
|
never clamped.
|
|
287
|
-
- **
|
|
367
|
+
- **Reuse an existing instance.** A load config is never sent for a model that is
|
|
288
368
|
already resident, because LM Studio answers that with a second instance
|
|
289
369
|
holding another copy of the weights and KV cache. A resident model is reused
|
|
290
370
|
as loaded, and the output budget follows the window the server actually has
|
|
291
|
-
open.
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
371
|
+
open. Same-key instances reported by separate LM Link nodes are independent,
|
|
372
|
+
not duplicates, and remain untouched.
|
|
373
|
+
- **Unload only process-owned instances.** Clio may release an instance only
|
|
374
|
+
when this adapter process loaded it and recorded the exact returned instance
|
|
375
|
+
id. Every pre-existing local instance and every LM Link instance is
|
|
376
|
+
observe-only. A fallback swap can therefore release an earlier Clio load but
|
|
377
|
+
cannot disturb the operator's resident models.
|
|
378
|
+
- **Roles remain visible.** Every model the configuration references carries
|
|
379
|
+
the plane it serves (chat, memory, worker, target default). Notices name that
|
|
380
|
+
role and describe co-residency without claiming that an operator-owned model
|
|
381
|
+
can be evicted.
|
|
297
382
|
|
|
298
383
|
A turn whose token rate collapses below 2 tokens per second for 30 seconds
|
|
299
384
|
surfaces a `degraded` notice listing what is resident on the target. That is
|
|
@@ -325,7 +410,7 @@ The routing keys in `settings.yaml` (`orchestrator.*`, `background.*`, `workers.
|
|
|
325
410
|
|
|
326
411
|
- Interactive changes (`/model`, Alt+L, `/settings`, Shift+Tab, `/thinking`, Alt+J / Alt+K, `/scoped-models`) apply to the current session immediately and are written back as the defaults for sessions launched later.
|
|
327
412
|
- Writes from other processes, such as a second Clio session, `clio-coder targets use`, `clio-coder configure`, or a manual edit, update the defaults and the shared target catalog. These writes never redirect a running session's chat or fleet routing. The running session shows a notice when the saved defaults diverge from its active routing.
|
|
328
|
-
- Non-routing settings (theme, keybindings, autonomy level, retry, compaction, target catalog entries) still hot-reload into running sessions as before.
|
|
413
|
+
- Non-routing settings (theme, keybindings, autonomy level, retry, compaction, commit attribution, target catalog entries) still hot-reload into running sessions as before.
|
|
329
414
|
- `/resume` and `/new` switch sessions, not routing: the terminal keeps its active target/model/thinking across session switches.
|
|
330
415
|
|
|
331
416
|
This is what makes several concurrent Clio terminals safe: each one routes through its own state, and `settings.yaml` only decides where the *next* session starts.
|
|
@@ -348,58 +433,86 @@ Every value change in Settings is transactional: selecting an editable row and p
|
|
|
348
433
|
- `Apply and save globally`
|
|
349
434
|
- `Cancel` (or `Esc`)
|
|
350
435
|
|
|
351
|
-
For restart-required settings (`budget.concurrency`, `runtimePlugins`), the session-only option is suppressed and global saving announces `Saved to settings.yaml · restart Clio to apply`. For destructive actions (removing a target or fleet profile), the confirmation preflight details affected chat, fleet, and memory routes before execution.
|
|
436
|
+
For restart-required settings (`budget.concurrency`, `runtimePlugins`, `terminal.tuiMode`, `terminal.fullscreenScrollbar`), the session-only option is suppressed and global saving announces `Saved to settings.yaml · restart Clio to apply`. For destructive actions (removing a target or fleet profile), the confirmation preflight details affected chat, fleet, and memory routes before execution.
|
|
352
437
|
|
|
353
438
|
The Settings Center organizes all configuration under four non-selectable group headers:
|
|
354
439
|
|
|
355
|
-
| Group | Section |
|
|
440
|
+
| Group | Section | Rows, in order |
|
|
356
441
|
| --- | --- | --- |
|
|
357
|
-
| **CORE** | Autonomy & Safety (`safety`) |
|
|
358
|
-
| **CORE** | Orchestrator (`orchestrator`) |
|
|
359
|
-
| **ROUTING** | Fleet (`fleet`) |
|
|
360
|
-
| **ROUTING** | Targets (`targets`) |
|
|
361
|
-
| **ROUTING** | Models (`models`) |
|
|
362
|
-
| **RUNTIME** | Budget (`budget`) |
|
|
363
|
-
| **RUNTIME** | Compaction (`compaction`) |
|
|
364
|
-
| **RUNTIME** | Retry (`retry`) |
|
|
365
|
-
| **EXPERIENCE** | Terminal (`terminal`) |
|
|
366
|
-
| **EXPERIENCE** | Advanced (`advanced`) |
|
|
442
|
+
| **CORE** | Autonomy & Safety (`safety`) | `autonomy`, `workers.onPermission`, `delegation.defaults.toolGovernance`, `skills.trustProjectCompatRoots`, and the read-only safety-net fact. |
|
|
443
|
+
| **CORE** | Orchestrator (`orchestrator`) | `orchestrator.thinkingLevel`, `orchestrator.target`, `orchestrator.model`, the memory plane (`background.target`, `background.model`, `background.thinkingLevel`), and the proactive-memory knobs (`memory.intervention.enabled`, `.everyNTools`, `.windowSteps`, `.maxTokens`, `.timeoutMs`). Changing target rebases model and thinking choices. |
|
|
444
|
+
| **ROUTING** | Fleet (`fleet`) | `workers.default.target`, `workers.default.model`, `workers.default.thinkingLevel`, `workers.maxRetries`, `workers.profiles`, and `workers.agentBindings`, rendered under the group headers `Defaults`, `Profiles`, `Agent routes`, and `Placement`. Profile rows carry a `◆ Edit` drill-down and a destructive removal preflight; placement rows are read-only node status. |
|
|
445
|
+
| **ROUTING** | Targets (`targets`) | The `targets` console table (`HEALTH`, `ID`, `ROLES`, `RUNTIME`, `LATENCY`) with an in-place action and detail drawer for URL, default model, last probe, and failure reason. Actions include `Use`, `Connect`, `Probe`, and `Remove`. |
|
|
446
|
+
| **ROUTING** | Models (`models`) | `scope`, `modelSelector.recentLimit`, and `modelSelector.favorites`, rendered as a provider-backed checklist with target-level and target/model entries, `Space` toggle, capability inspector, and a preserved `Unavailable` group. Deep link `/scoped-models`. |
|
|
447
|
+
| **RUNTIME** | Budget (`budget`) | `budget.sessionCeilingUsd`, `defaults.maxTokens`, and `budget.concurrency` (restart required). |
|
|
448
|
+
| **RUNTIME** | Compaction (`compaction`) | `compaction.auto`, `compaction.threshold`, and `compaction.excludeLastTurns`. |
|
|
449
|
+
| **RUNTIME** | Retry (`retry`) | `retry.enabled`, `retry.maxRetries`, `retry.baseDelayMs`, and `retry.maxDelayMs`. |
|
|
450
|
+
| **EXPERIENCE** | Terminal (`terminal`) | `terminal.showTerminalProgress`, `terminal.outputVerbosity` (`minimal`, `default`, `verbose`), `terminal.tuiMode` (`regular`, `fullscreen`), `terminal.fullscreenScrollbar` (`hidden`, `auto`, `always`), `terminal.smoothStreaming` (`off`, `auto`, `on`), and `theme`. |
|
|
451
|
+
| **EXPERIENCE** | Advanced (`advanced`) | `runtimePlugins`, `attribution.gitCommits`, `compaction.model`, `compaction.systemPrompt`, `delegation.defaults.connectTimeoutMs`, `delegation.defaults.turnTimeoutMs`, `delegation.defaults.permissionTimeoutMs`, `keybindings`, and `delegation.agents`. |
|
|
452
|
+
|
|
453
|
+
`retry.streamStallMs` has no Settings Center row; edit it in `settings.yaml`.
|
|
367
454
|
|
|
368
455
|
Label to config path mapping:
|
|
369
456
|
|
|
370
457
|
| Label | Config path |
|
|
371
458
|
| --- | --- |
|
|
372
459
|
| Autonomy level | `autonomy` |
|
|
373
|
-
|
|
|
460
|
+
| Fleet approvals routing | `workers.onPermission` |
|
|
374
461
|
| Delegation governance | `delegation.defaults.toolGovernance` |
|
|
462
|
+
| Trust project skill roots | `skills.trustProjectCompatRoots` |
|
|
463
|
+
| Safety net | read-only fact, no config path |
|
|
375
464
|
| Thinking level | `orchestrator.thinkingLevel` |
|
|
376
465
|
| Target | `orchestrator.target` |
|
|
377
466
|
| Model | `orchestrator.model` |
|
|
467
|
+
| Memory target | `background.target` |
|
|
468
|
+
| Memory model | `background.model` |
|
|
469
|
+
| Memory thinking level | `background.thinkingLevel` |
|
|
470
|
+
| Proactive memory | `memory.intervention.enabled` |
|
|
471
|
+
| Memory cadence (tools) | `memory.intervention.everyNTools` |
|
|
472
|
+
| Memory trajectory steps | `memory.intervention.windowSteps` |
|
|
473
|
+
| Memory reminder tokens | `memory.intervention.maxTokens` |
|
|
474
|
+
| Memory timeout (ms) | `memory.intervention.timeoutMs` |
|
|
378
475
|
| Default target | `workers.default.target` |
|
|
379
476
|
| Default model | `workers.default.model` |
|
|
380
477
|
| Default thinking level | `workers.default.thinkingLevel` |
|
|
381
|
-
|
|
|
382
|
-
|
|
|
383
|
-
|
|
|
384
|
-
|
|
|
478
|
+
| Fleet retries | `workers.maxRetries` |
|
|
479
|
+
| Add profile | `workers.profiles` |
|
|
480
|
+
| Add agent route | `workers.agentBindings` |
|
|
481
|
+
| Configured targets | `targets` |
|
|
482
|
+
| Model cycle set | `scope` |
|
|
483
|
+
| Recent models kept | `modelSelector.recentLimit` |
|
|
484
|
+
| Pinned favorites | `modelSelector.favorites` |
|
|
385
485
|
| Session ceiling (USD) | `budget.sessionCeilingUsd` |
|
|
386
|
-
| Output
|
|
387
|
-
|
|
|
486
|
+
| Output budget (tokens) | `defaults.maxTokens` |
|
|
487
|
+
| Fleet concurrency | `budget.concurrency` (restart required) |
|
|
388
488
|
| Auto-compact | `compaction.auto` |
|
|
389
|
-
| Protected recent turns | `compaction.excludeLastTurns` |
|
|
390
489
|
| Compaction threshold | `compaction.threshold` |
|
|
490
|
+
| Protected recent turns | `compaction.excludeLastTurns` |
|
|
391
491
|
| Retry transient errors | `retry.enabled` |
|
|
392
492
|
| Max retries | `retry.maxRetries` |
|
|
393
493
|
| Base delay (ms) | `retry.baseDelayMs` |
|
|
394
494
|
| Max delay (ms) | `retry.maxDelayMs` |
|
|
395
495
|
| Terminal progress badges | `terminal.showTerminalProgress` |
|
|
396
|
-
|
|
|
496
|
+
| Output detail | `terminal.outputVerbosity` (`minimal`, `default`, or `verbose`) |
|
|
497
|
+
| TUI mode | `terminal.tuiMode` (`regular` or `fullscreen`, restart required) |
|
|
498
|
+
| Fullscreen scrollbar | `terminal.fullscreenScrollbar` (`hidden`, `auto`, or `always`, restart required) |
|
|
499
|
+
| Smooth streaming | `terminal.smoothStreaming` (`off`, `auto`, or `on`, live) |
|
|
500
|
+
| Theme | `theme` |
|
|
501
|
+
| Runtime plugins | `runtimePlugins` |
|
|
502
|
+
| Clio commit provenance | `attribution.gitCommits` (`enabled` or `disabled`, live) |
|
|
503
|
+
| Compaction model | `compaction.model` |
|
|
504
|
+
| Compaction prompt | `compaction.systemPrompt` |
|
|
505
|
+
| Delegate connect (ms) | `delegation.defaults.connectTimeoutMs` |
|
|
506
|
+
| Delegate turn (ms) | `delegation.defaults.turnTimeoutMs` |
|
|
507
|
+
| Delegate permission (ms) | `delegation.defaults.permissionTimeoutMs` |
|
|
508
|
+
| Keybinding overrides | `keybindings` |
|
|
509
|
+
| Delegation agents | `delegation.agents` |
|
|
397
510
|
|
|
398
511
|
---
|
|
399
512
|
|
|
400
513
|
## Settings inventory
|
|
401
514
|
|
|
402
|
-
Every key `settings.yaml` accepts, with its shipped default, what validation admits, and when a change takes effect. `DEFAULT_SETTINGS` in `src/core/defaults.ts` is the one place a default is written; validation lives in `src/core/config.ts`. A key absent from this table is an unknown-key error, not a silently ignored typo.
|
|
515
|
+
Every key `settings.yaml` accepts, with its shipped default, what validation admits, and when a change takes effect. `DEFAULT_SETTINGS` in `src/core/defaults.ts` is the one place a default is written; validation lives in `src/core/config.ts`. A key absent from this table is an unknown-key error, not a silently ignored typo. The one exception is `identity`, which pre-0.3.1 files carry: it is accepted and ignored so those files keep loading.
|
|
403
516
|
|
|
404
517
|
"When it applies" has four values. **Immediately** means a running session picks the change up from the config watcher. **Next turn** means the running turn finishes on the old value. **Next session** means `settings.yaml` is a saved default that a launched session copies and then owns, so writing it never redirects a session already running. **Restart** means the process reads it once at boot.
|
|
405
518
|
|
|
@@ -425,7 +538,7 @@ These are saved defaults, not a live control surface. See [Live routing vs saved
|
|
|
425
538
|
| Key | Default | Validation | When it applies |
|
|
426
539
|
| --- | --- | --- | --- |
|
|
427
540
|
| `autonomy` | `auto-edit` | `read-only`, `suggest`, `auto-edit`, `full-auto` | immediately |
|
|
428
|
-
| `workers.onPermission` | `deny` | `deny`, `escalate` | next dispatch |
|
|
541
|
+
| `workers.onPermission` | `deny` | `deny`, `fail`, `escalate` | next dispatch |
|
|
429
542
|
| `workers.escalation.timeoutMs` | `120000` | integer ≥ 1 | next dispatch |
|
|
430
543
|
| `workers.escalation.fallback` | `deny` | `deny`, `fail` | next dispatch |
|
|
431
544
|
| `workers.maxRetries` | `2` | integer ≥ 0 | next dispatch |
|
|
@@ -434,6 +547,14 @@ These are saved defaults, not a live control surface. See [Live routing vs saved
|
|
|
434
547
|
| `workers.agentBindings` | `{}` | map of agent id to a key present in `workers.profiles` | next dispatch |
|
|
435
548
|
| `skills.trustProjectCompatRoots` | `false` | boolean | restart |
|
|
436
549
|
|
|
550
|
+
### Git commit provenance
|
|
551
|
+
|
|
552
|
+
| Key | Default | Validation | When it applies |
|
|
553
|
+
| --- | --- | --- | --- |
|
|
554
|
+
| `attribution.gitCommits` | `true` | boolean | immediately for subsequent commits |
|
|
555
|
+
|
|
556
|
+
Enabled attribution adds the compiled identity `Clio Coder <clio-coder@iowarp.ai>` only through evidence-justified role trailers. Assistance requires material creation or editing, testing requires a successful recorded validation command, and review requires a passing independent verifier. `Co-authored-by` is the GitHub/GitLab contributor and avatar compatibility trailer and appears only for material authorship, never for testing or review alone. Disabling the setting leaves commit messages entirely unchanged. Full hook behavior, evidence semantics, and how GitHub and GitLab render the identity and avatar once maintainers verify the email are in [git-commit-provenance.md](git-commit-provenance.md).
|
|
557
|
+
|
|
437
558
|
### Guardrails
|
|
438
559
|
|
|
439
560
|
Every one of these has an environment override for a single process; see [environment-variables.md](environment-variables.md). Resolution is env, then settings, then the built-in default.
|
|
@@ -454,7 +575,7 @@ Every one of these has an environment override for a single process; see [enviro
|
|
|
454
575
|
| `compaction.auto` | `true` | boolean | next turn |
|
|
455
576
|
| `compaction.threshold` | `0.8` | number in 0 to 1 | next turn |
|
|
456
577
|
| `compaction.excludeLastTurns` | `6` | integer ≥ 1 | next turn |
|
|
457
|
-
| `defaults.maxTokens` | `32768` | integer ≥
|
|
578
|
+
| `defaults.maxTokens` | `32768` | integer ≥ 0 | next turn |
|
|
458
579
|
| `budget.sessionCeilingUsd` | `5` | number ≥ 0 | immediately |
|
|
459
580
|
| `budget.concurrency` | `auto` | `auto` or integer ≥ 1 | next dispatch |
|
|
460
581
|
| `retry.enabled` | `true` | boolean | next turn |
|
|
@@ -465,6 +586,8 @@ Every one of these has an environment override for a single process; see [enviro
|
|
|
465
586
|
|
|
466
587
|
`retry.streamStallMs` covers the failure a request error never reports: the backend answers `/health` while the slot behind the stream is dead. A run whose stream produces nothing for that long is aborted and handed to the same retry ladder as any transient error, so a headless run or a fleet worker recovers without a human pressing Esc. Time inside a tool call and inside the post-tool compaction guard does not count against it, so a long build is never mistaken for a wedged stream. Set it to `0` to keep the old behavior, where a stalled stream waits forever.
|
|
467
588
|
|
|
589
|
+
Generic provider and transport errors are classified by transient retry rules, including DNS and WebSocket failures while excluding quota, usage-limit, and billing exhaustion even when the message also contains `429` or `500`. Clio adds only its local-runtime policy: model-loading errors receive a longer bounded delay, the TUI shows a cancellable countdown, and recovery resumes through the existing agent loop.
|
|
590
|
+
|
|
468
591
|
### Proactive memory
|
|
469
592
|
|
|
470
593
|
| Key | Default | Validation | When it applies |
|
|
@@ -483,7 +606,7 @@ Every one of these has an environment override for a single process; see [enviro
|
|
|
483
606
|
| `delegation.defaults.connectTimeoutMs` | `30000` | integer ≥ 1 | next dispatch |
|
|
484
607
|
| `delegation.defaults.turnTimeoutMs` | `300000` | integer ≥ 1 | next dispatch |
|
|
485
608
|
| `delegation.defaults.permissionTimeoutMs` | `120000` | integer ≥ 1 | next dispatch |
|
|
486
|
-
| `delegation.defaults.toolGovernance` | `clio-policy` | `clio-policy`, `
|
|
609
|
+
| `delegation.defaults.toolGovernance` | `clio-policy` | `clio-policy`, `agent-managed`, `deny-all` | next dispatch |
|
|
487
610
|
|
|
488
611
|
`delegation.agents` is the one settings key Clio itself appends to, and only after an explicit answer in `clio-coder configure --interop` or `/interop`. Everything else here is operator-authored.
|
|
489
612
|
|
|
@@ -494,6 +617,9 @@ Every one of these has an environment override for a single process; see [enviro
|
|
|
494
617
|
| `theme` | `default` | string naming a registered theme | immediately |
|
|
495
618
|
| `terminal.showTerminalProgress` | `false` | boolean | immediately |
|
|
496
619
|
| `terminal.outputVerbosity` | `default` | `minimal`, `default`, `verbose` | immediately |
|
|
620
|
+
| `terminal.tuiMode` | `regular` | `regular`, `fullscreen` | restart |
|
|
621
|
+
| `terminal.fullscreenScrollbar` | `auto` | `hidden`, `auto`, `always` | restart |
|
|
622
|
+
| `terminal.smoothStreaming` | `off` | `off`, `auto`, `on` | immediately |
|
|
497
623
|
| `modelSelector.favorites` | `[]` | list of strings | immediately |
|
|
498
624
|
| `modelSelector.recentLimit` | `12` | integer ≥ 1 | immediately |
|
|
499
625
|
| `keybindings` | `{}` | map of binding id to a key string or list of them | restart |
|
|
@@ -529,7 +655,7 @@ clio-coder configure --list
|
|
|
529
655
|
clio-coder configure --list --all
|
|
530
656
|
```
|
|
531
657
|
|
|
532
|
-
`clio-coder configure --list` outputs every registered runtime across all categories (local, cloud, subscription, worker-only) along with its auth type and catalog status. For catalog-backed runtimes, it reports the catalog size (for example, `models=38 in
|
|
658
|
+
`clio-coder configure --list` outputs every registered runtime across all categories (local, cloud, subscription, worker-only) along with its auth type and catalog status. For catalog-backed runtimes, it reports the catalog size (for example, `models=38 in catalog`). It also includes a reference to `clio-coder auth list` for runtimes that require authentication.
|
|
533
659
|
|
|
534
660
|
When configuring a catalog-backed runtime non-interactively, `clio-coder configure` requires the `--model` flag to specify an explicit model from the catalog; it will not silently seed a generic default model.
|
|
535
661
|
|
|
@@ -824,12 +950,12 @@ Representative built-in runtime IDs:
|
|
|
824
950
|
| Protocol-compatible | `openai-compat`, `anthropic-compat` generic surfaces for additional OpenAI-compatible or Anthropic-compatible APIs, including APIs such as InceptionAI when configured with the appropriate base URL and credentials. |
|
|
825
951
|
| Cloud | `alcf`, `anthropic`, `bedrock`, `deepseek`, `google`, `groq`, `mistral`, `openai`, `openrouter` |
|
|
826
952
|
| Subscription and worker harnesses | `openai-codex` for ChatGPT OAuth, `anthropic-max` for Anthropic OAuth, `claude-sdk` for Claude Agent SDK workers, `claude-code` for `claude -p` subprocess workers, and `antigravity-code` for `agy --print` subprocess workers |
|
|
827
|
-
| Local native | `llamacpp`, `lmstudio
|
|
953
|
+
| Local native | `llamacpp`, `lmstudio`, `ollama-native`, `vllm`, `sglang`, `lemonade`, `lemonade-anthropic` |
|
|
828
954
|
|
|
829
955
|
Some hidden aliases exist for backward compatibility or special surfaces; use `clio-coder configure --list --all` to see them.
|
|
830
956
|
|
|
831
957
|
> [!NOTE]
|
|
832
|
-
> Chat and print targets are HTTP
|
|
958
|
+
> Chat and print targets are HTTP and native engine-backed adapters. Dispatch workers also admit the sanctioned subscription worker runtimes: `claude-sdk`, `claude-code`, and `antigravity-code`.
|
|
833
959
|
|
|
834
960
|
---
|
|
835
961
|
|
|
@@ -864,6 +990,8 @@ You have two ways to give Clio an API key:
|
|
|
864
990
|
- **Environment variable** (`--api-key-env <VAR>`, or the env choice in `clio-coder configure`). Clio stores nothing and reads `$VAR` at call time. This is the recommended default. The wizard suggests it for new credentials and offers `keep` first when a stored credential already exists.
|
|
865
991
|
- **Stored credential** (`--api-key <literal>`, or `clio-coder auth login`). The key is written to `credentials.yaml` (see directory locations) as **plaintext**, protected only by file mode `0600`. There is no encryption and no OS-keychain integration. Any process running as your user, plus backups and dotfile sync, can read it. Clio prints a warning whenever it writes a literal key for this reason.
|
|
866
992
|
|
|
993
|
+
OAuth refresh follows signal-aware credential mutation. Clio serializes the read, token exchange, and atomic `credentials.yaml` write under one lock, forwards the active agent or background-request abort signal through `providers.auth`, and cancels a queued lock wait immediately. A cancelled refresh neither continues later nor publishes an uncommitted token into the process-local credential view.
|
|
994
|
+
|
|
867
995
|
Prefer `--api-key-env` for shared machines, HPC login nodes, and CI. Avoid committing literal secrets in settings or share archives. Stored keys are never printed back by `clio-coder auth status`, `clio-coder targets`, or `clio-coder configure`; only the source (env var name or `stored-api-key`) is shown.
|
|
868
996
|
|
|
869
997
|
For interactive auth, open `/targets`, select the row, and press `c`. For a stored credential cleanup, use `clio-coder auth logout <target-or-runtime>`.
|
package/docs/context-engine.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Context Engine
|
|
2
2
|
|
|
3
3
|
> [!TIP]
|
|
4
|
-
> **Interactive Spec Available:** An interactive dashboard is located at [docs/html/context_blueprint.html](html/context_blueprint.html) (Version: 0.3.
|
|
4
|
+
> **Interactive Spec Available:** An interactive dashboard is located at [docs/html/context_blueprint.html](html/context_blueprint.html) (Version: 0.3.3).
|
|
5
5
|
|
|
6
6
|
Clio Coder tracks context pressure, records per-turn snapshots, and protects the provider context with bounded tool results plus single-threshold compaction.
|
|
7
7
|
|
|
@@ -41,6 +41,8 @@ Marker format:
|
|
|
41
41
|
|
|
42
42
|
Already-compacted entries are not masked again. Recent turns keep their full observations and thinking. If masking drops pressure below the threshold, Clio sends the request without an LLM summary. If pressure remains above the threshold, Clio runs the summary compaction path, appends a compaction summary entry, refreshes replay messages from the session, and continues.
|
|
43
43
|
|
|
44
|
+
When the ledger is replayed to the model, compaction summaries, branch summaries, and bash executions become standardized user-role message text. Clio imports `COMPACTION_SUMMARY_PREFIX`, `BRANCH_SUMMARY_PREFIX`, their suffixes, and `bashExecutionToText` through `src/engine/messages.ts`; `src/interactive/chat-renderer.ts` maps Clio's entry shapes onto them and applies replay truncation.
|
|
45
|
+
|
|
44
46
|
Manual `/context compact`, `CLIO_CODER_FORCE_COMPACT=1`, and overflow recovery force the LLM summary path directly. The overflow guard runs before the user turn is committed, so a blocked oversized request does not leave an unanswered user entry in the ledger.
|
|
45
47
|
|
|
46
48
|
## Cache-divergence honesty
|
|
@@ -70,26 +72,47 @@ Settings validation is strict: an older file still carrying the removed `compact
|
|
|
70
72
|
|
|
71
73
|
---
|
|
72
74
|
|
|
75
|
+
## Directory-scoped project handbooks
|
|
76
|
+
|
|
77
|
+
Project guidance is resolved from the filesystem root to the working directory. An ordinary `CLIO-CODER.md` adds a layer for its directory and descendants. `CLIO-CODER.override.md` starts a replacement boundary: it wins over `CLIO-CODER.md` in the same directory, discards all handbook layers inherited from ancestors, and remains effective below that directory. Ordinary handbooks in deeper directories may add new layers after the override. A sibling outside the override's subtree keeps its own inherited chain.
|
|
78
|
+
|
|
79
|
+
For example, a session in `repo/src/parser/` loads `repo/src/CLIO-CODER.override.md` followed by `repo/src/parser/CLIO-CODER.md`; it does not load `repo/CLIO-CODER.md`. A session in `repo/docs/` still loads `repo/CLIO-CODER.md`. Surviving files are rendered in ancestor-to-descendant order as separate `<project-context path="...">` blocks, preserving the source of every instruction. The nearest surviving handbook supplies the project name used by compact reporting, while conventions, hard invariants, imported context, and custom sections layer in order.
|
|
80
|
+
|
|
81
|
+
An unreadable or malformed override fails closed. Clio warns about that file but does not reactivate the inherited or same-directory handbook it replaced. `clio-coder config inspect` lists every effective handbook and its layer number.
|
|
82
|
+
|
|
83
|
+
Handbook resolution is read-only. `/context init` and its CLI form are the only commands that author or update the exact `CLIO-CODER.md` in the current directory; `/context refresh` touches neither standard nor override handbooks. Neither command rewrites an inherited file or an override. A same-directory override therefore continues to shadow a standard handbook created or updated by init until the operator removes the override. Normal reset preserves both handbook names; `context reset --all` may remove the local standard `CLIO-CODER.md` after its second confirmation but always preserves `CLIO-CODER.override.md` as operator-authored context.
|
|
84
|
+
|
|
73
85
|
## Project-context preload class
|
|
74
86
|
|
|
75
|
-
The compiled session prompt preloads the full rendered project context (the
|
|
87
|
+
The compiled session prompt preloads the full rendered project context (the effective handbook fragments plus project-type and codewiki markers) only when at least one selected handbook parses and the rendered text stays within 8000 characters and 220 lines; otherwise it preloads a compact synopsis. The rule lives in `src/domains/prompts/preload.ts` and every reporting surface classifies with it:
|
|
76
88
|
|
|
77
89
|
- `/context init` and `clio-coder context init` print `preload: full (N.NkB, N lines)` or `preload: synopsis (reason: size|lines)` after the summary, and warn when a full preload is within 10% of either limit.
|
|
78
|
-
- `clio-coder config inspect` shows the preload class
|
|
79
|
-
- The `/context` overlay shows a `project preload:` line under the category legend once a session prompt has compiled.
|
|
90
|
+
- `clio-coder config inspect` shows the shared preload class and layer position on every effective handbook entry.
|
|
91
|
+
- The `/context` overlay shows a `project preload:` line under the category legend once a session prompt has compiled, followed by the effective handbook path(s): one `handbook:` line for a single file, or a `handbooks (ancestor → nearest):` list when layered handbooks apply. Paths render workspace-relative; a handbook above the workspace keeps a `~`-shortened or absolute path.
|
|
80
92
|
|
|
81
93
|
## Context refresh
|
|
82
94
|
|
|
83
95
|
`/context refresh` and `clio-coder context refresh` rebuild the structural codewiki
|
|
84
|
-
and restamp `.clio-coder/state.json` without reading or writing
|
|
96
|
+
and restamp `.clio-coder/state.json` without reading or writing inherited handbooks or overrides. The CLI
|
|
85
97
|
flag `--wiki` is the only refresh path that may update the Markdown wiki, and
|
|
86
98
|
it only runs when an existing wiki metadata file is present. Regenerating or
|
|
87
|
-
updating handbook
|
|
99
|
+
updating the exact local standard handbook stays with `/context init`.
|
|
88
100
|
|
|
89
101
|
`clio-coder context init` is model-driven by default. The `--heuristic` flag is the sole deterministic flag for offline handbook generation. The `--propose` flag writes ignored drafts to `.clio-coder/proposals/`, `--apply` updates from the existing handbook, and `--rewrite` generates a fresh handbook.
|
|
90
102
|
|
|
91
103
|
When bootstrapping across local runtimes such as `llamacpp` where strict grammar/schema enforcement might be rejected by the endpoint, generator logic retries automatically using a bounded prompt-parser fallback. If `--rewrite` was requested but the model generation fails to produce a valid handbook rewrite, `clio-coder context init` prints a notice and exits with code 1 rather than leaving an inconsistent state.
|
|
92
104
|
|
|
105
|
+
## Generated handbook structure and verification expectations
|
|
106
|
+
|
|
107
|
+
During handbook generation (`context init` and `clio-coder context init`), Clio derives structural sections directly from workspace manifests and toolchains:
|
|
108
|
+
|
|
109
|
+
- **Context retrieval**: Derived from the codewiki index, naming primary entry points and directing agents to use `code_nav` for navigation. To prevent staleness across repository mutations, exact volatile file counts are omitted.
|
|
110
|
+
- **Verification expectations**: Synthesized from declared toolchain configuration and manifest files:
|
|
111
|
+
- **Node.js**: Detects the active package manager (`npm`, `pnpm`, `yarn`, or `bun`) and names declared non-mutating scripts (`typecheck`, `lint`, `format`, `build`, `test`, `ci`, `test:contracts`, `test:smoke`, `check:boundaries`).
|
|
112
|
+
- **CMake**: Inspects `CMakePresets.json` and emits declared configure, build, and test presets independently.
|
|
113
|
+
- **Rust / Cargo**: Names `cargo build` and `cargo test` when `Cargo.toml` is present.
|
|
114
|
+
- **Go**: Names `go build ./...` and `go test ./...` when `go.mod` is present.
|
|
115
|
+
- **Python**: Detects declared runners (`tox` via `tox.ini` or `[tool.tox]` in `pyproject.toml`; `pytest` via `pytest.ini` or `[tool.pytest.ini_options]` in `pyproject.toml`) and names them without guessing undeclared runners.
|
|
93
116
|
|
|
94
117
|
---
|
|
95
118
|
|
|
@@ -31,6 +31,31 @@ hard bugs, not a mandatory toll booth. Batch ticket creation from a PRD
|
|
|
31
31
|
bypasses stage 1 and uses [`backlog`](../skills/planning/backlog/)
|
|
32
32
|
instead; everything downstream is identical.
|
|
33
33
|
|
|
34
|
+
## Inheriting a Pi release
|
|
35
|
+
|
|
36
|
+
Pi dependency upgrades use a fixed five-step review so that upstream fixes
|
|
37
|
+
replace Clio copies without crossing the product boundary:
|
|
38
|
+
|
|
39
|
+
1. Read the release notes or package changelogs for `pi-ai`, `pi-agent-core`,
|
|
40
|
+
and `pi-tui`.
|
|
41
|
+
2. Run `npm run pi:surface-diff`. A changed or removed symbol that Clio imports
|
|
42
|
+
is an error; a new export is review input.
|
|
43
|
+
3. Run `npm run ci`, then explicitly run the wire-capture fixtures and
|
|
44
|
+
`tests/smoke/tui-width-matrix.test.ts` from the
|
|
45
|
+
[Pi regression net](pi-boundary.md#pi-regression-net).
|
|
46
|
+
4. Walk Pi's fixed-issue list against the
|
|
47
|
+
[Pi SDK boundary table](pi-boundary.md). For every fix in a surface Clio
|
|
48
|
+
still owns, either delete Clio's copy in favor of Pi or add a dated reason
|
|
49
|
+
for keeping the delta.
|
|
50
|
+
5. Review the matching pi-coding-agent release diff for application features
|
|
51
|
+
worth a Clio ticket.
|
|
52
|
+
|
|
53
|
+
After review, regenerate `docs/pi-surface.json` with
|
|
54
|
+
`npm run pi:surface-snapshot`, inspect the symbol and signature changes, and
|
|
55
|
+
commit the dependency pins, snapshot, boundary notes, and proving contracts
|
|
56
|
+
together. `npm run lint` invokes the surface check automatically when the
|
|
57
|
+
installed Pi versions differ from the checked-in snapshot.
|
|
58
|
+
|
|
34
59
|
## Issue conventions
|
|
35
60
|
|
|
36
61
|
- **Title**: conventional tag plus imperative summary (`fix: memory overlay
|
|
@@ -55,7 +80,7 @@ New `area:*` labels are proposed in an issue, not created ad hoc.
|
|
|
55
80
|
|
|
56
81
|
## Milestones are releases
|
|
57
82
|
|
|
58
|
-
Each open milestone is the next version (`v0.3.
|
|
83
|
+
Each open milestone is the next version (`v0.3.3`, `v0.4.0`). Triage means
|
|
59
84
|
assigning an issue to a milestone or explicitly leaving it in the backlog.
|
|
60
85
|
A release cut requires every issue in its milestone to be closed
|
|
61
86
|
or bumped; the milestone closes when the tag is published.
|
|
@@ -123,4 +123,4 @@ affected import site for no behavioral gain. A boundary rule should protect an
|
|
|
123
123
|
invariant. "Always import through the barrel" protects a preference.
|
|
124
124
|
|
|
125
125
|
What is *not* permitted is anything the five direction rules forbid, and those
|
|
126
|
-
stay enforced by `npm run
|
|
126
|
+
stay enforced by the boundary checker that `npm run lint` runs.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Clio Coder Documentation Coverage Matrix
|
|
2
2
|
|
|
3
|
-
This matrix maps every top-level directory in `src/` and every domain directory under `src/domains/` to its authoritative documentation page. It records coverage status (`documented`, `partial`, `undocumented`), missing concepts, and key source contracts for `v0.3.
|
|
3
|
+
This matrix maps every top-level directory in `src/` and every domain directory under `src/domains/` to its authoritative documentation page. It records coverage status (`documented`, `partial`, `undocumented`), missing concepts, and key source contracts for `v0.3.3`.
|
|
4
4
|
|
|
5
5
|
## Coverage Matrix
|
|
6
6
|
|
|
@@ -35,7 +35,7 @@ This matrix maps every top-level directory in `src/` and every domain directory
|
|
|
35
35
|
| `src/domains/scheduling/` | Capacity lease acquisition, heartbeats, expiry, cross-process locks, cluster scheduling | [capacity-and-scheduling.md](capacity-and-scheduling.md), [fleet-dispatch.md](fleet-dispatch.md) | `documented` | Dedicated capacity leasing, heartbeat TTL, and cross-process lock reference. |
|
|
36
36
|
| `src/domains/session/` | Context ledger v3, tree branching (`/tree`), `/fork`, `/resume`, checkpoints, protected-artifact journal | [session-lifecycle.md](session-lifecycle.md) | `documented` | Dedicated session lifecycle guide covering ledger format v3, branching, journal, and recovery. |
|
|
37
37
|
| `src/domains/share/` | Portable share archive bundles, manifest verification, import/export flows | [extensions-and-sharing.md](extensions-and-sharing.md) | `documented` | Share archives and portable bundle formats documented in extensions guide. |
|
|
38
|
-
| `src/domains/webhook/` | Empty directory | None (Inert) | `inert` | Directory contains no active modules or exports in v0.3.
|
|
38
|
+
| `src/domains/webhook/` | Empty directory | None (Inert) | `inert` | Directory contains no active modules or exports in v0.3.3. |
|
|
39
39
|
|
|
40
40
|
## Cross-Cutting Reference Guides
|
|
41
41
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Documentation Standards and Codebase Alignment
|
|
2
2
|
|
|
3
3
|
> [!TIP]
|
|
4
|
-
> **Interactive Spec Available:** An interactive documentation link linter, phrasing/claim evaluator, and alignment portal is located at [docs/html/documentation_blueprint.html](html/documentation_blueprint.html) (Version: 0.3.
|
|
4
|
+
> **Interactive Spec Available:** An interactive documentation link linter, phrasing/claim evaluator, and alignment portal is located at [docs/html/documentation_blueprint.html](html/documentation_blueprint.html) (Version: 0.3.3).
|
|
5
5
|
|
|
6
6
|
Clio Coder is an experimental community alpha. Documentation should help contributors and early users work from the source of truth without overstating maturity. When docs drift, prefer the current source and tests over older prose or aspirational roadmap notes.
|
|
7
7
|
|