@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
package/src/core/config.ts
CHANGED
|
@@ -433,6 +433,75 @@ function validatePricing(
|
|
|
433
433
|
return out;
|
|
434
434
|
}
|
|
435
435
|
|
|
436
|
+
function validateLmStudioSettings(
|
|
437
|
+
issues: Issues,
|
|
438
|
+
path: string,
|
|
439
|
+
value: unknown,
|
|
440
|
+
): ClioSettings["targets"][number]["lmstudio"] | undefined {
|
|
441
|
+
if (!isPlainObject(value)) {
|
|
442
|
+
issues.add(path, `expected a map, got ${describe(value)}`);
|
|
443
|
+
return undefined;
|
|
444
|
+
}
|
|
445
|
+
issues.unknownKeys(path, value, ["load", "request"]);
|
|
446
|
+
const out: NonNullable<ClioSettings["targets"][number]["lmstudio"]> = {};
|
|
447
|
+
if ("load" in value) {
|
|
448
|
+
if (!isPlainObject(value.load)) {
|
|
449
|
+
issues.add(`${path}.load`, `expected a map, got ${describe(value.load)}`);
|
|
450
|
+
} else {
|
|
451
|
+
issues.unknownKeys(`${path}.load`, value.load, [
|
|
452
|
+
"contextLength",
|
|
453
|
+
"flashAttention",
|
|
454
|
+
"evalBatchSize",
|
|
455
|
+
"numExperts",
|
|
456
|
+
"offloadKvCacheToGpu",
|
|
457
|
+
]);
|
|
458
|
+
const load: NonNullable<typeof out.load> = {};
|
|
459
|
+
for (const key of ["contextLength", "evalBatchSize", "numExperts"] as const) {
|
|
460
|
+
if (key in value.load) {
|
|
461
|
+
const parsed = expectInteger(issues, `${path}.load.${key}`, value.load[key], { min: 1 });
|
|
462
|
+
if (parsed !== undefined) load[key] = parsed;
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
for (const key of ["flashAttention", "offloadKvCacheToGpu"] as const) {
|
|
466
|
+
if (key in value.load) {
|
|
467
|
+
const parsed = expectBoolean(issues, `${path}.load.${key}`, value.load[key]);
|
|
468
|
+
if (parsed !== undefined) load[key] = parsed;
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
if (Object.keys(load).length > 0) out.load = load;
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
if ("request" in value) {
|
|
475
|
+
if (!isPlainObject(value.request)) {
|
|
476
|
+
issues.add(`${path}.request`, `expected a map, got ${describe(value.request)}`);
|
|
477
|
+
} else {
|
|
478
|
+
issues.unknownKeys(`${path}.request`, value.request, ["ttlSeconds", "draftModel", "reasoning"]);
|
|
479
|
+
const request: NonNullable<typeof out.request> = {};
|
|
480
|
+
if ("ttlSeconds" in value.request) {
|
|
481
|
+
const parsed = expectInteger(issues, `${path}.request.ttlSeconds`, value.request.ttlSeconds, { min: 1 });
|
|
482
|
+
if (parsed !== undefined) request.ttlSeconds = parsed;
|
|
483
|
+
}
|
|
484
|
+
if ("draftModel" in value.request) {
|
|
485
|
+
const parsed = expectString(issues, `${path}.request.draftModel`, value.request.draftModel);
|
|
486
|
+
if (parsed !== undefined) request.draftModel = parsed;
|
|
487
|
+
}
|
|
488
|
+
if ("reasoning" in value.request) {
|
|
489
|
+
const parsed = expectEnum(issues, `${path}.request.reasoning`, value.request.reasoning, [
|
|
490
|
+
"auto",
|
|
491
|
+
"off",
|
|
492
|
+
"on",
|
|
493
|
+
"low",
|
|
494
|
+
"medium",
|
|
495
|
+
"high",
|
|
496
|
+
] as const);
|
|
497
|
+
if (parsed !== undefined) request.reasoning = parsed;
|
|
498
|
+
}
|
|
499
|
+
if (Object.keys(request).length > 0) out.request = request;
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
return Object.keys(out).length > 0 ? out : undefined;
|
|
503
|
+
}
|
|
504
|
+
|
|
436
505
|
function validateTarget(issues: Issues, path: string, value: unknown): ClioSettings["targets"][number] | null {
|
|
437
506
|
if (!isPlainObject(value)) {
|
|
438
507
|
issues.add(path, `expected a map, got ${describe(value)}`);
|
|
@@ -449,6 +518,7 @@ function validateTarget(issues: Issues, path: string, value: unknown): ClioSetti
|
|
|
449
518
|
"lifecycle",
|
|
450
519
|
"gateway",
|
|
451
520
|
"pricing",
|
|
521
|
+
"lmstudio",
|
|
452
522
|
]);
|
|
453
523
|
const id = "id" in value ? expectString(issues, `${path}.id`, value.id) : undefined;
|
|
454
524
|
const runtime = "runtime" in value ? expectString(issues, `${path}.runtime`, value.runtime) : undefined;
|
|
@@ -490,6 +560,10 @@ function validateTarget(issues: Issues, path: string, value: unknown): ClioSetti
|
|
|
490
560
|
const v = validatePricing(issues, `${path}.pricing`, value.pricing);
|
|
491
561
|
if (v !== undefined) target.pricing = v;
|
|
492
562
|
}
|
|
563
|
+
if ("lmstudio" in value) {
|
|
564
|
+
const v = validateLmStudioSettings(issues, `${path}.lmstudio`, value.lmstudio);
|
|
565
|
+
if (v !== undefined) target.lmstudio = v;
|
|
566
|
+
}
|
|
493
567
|
return target;
|
|
494
568
|
}
|
|
495
569
|
|
|
@@ -890,6 +964,7 @@ const TOP_LEVEL_KEYS = [
|
|
|
890
964
|
"theme",
|
|
891
965
|
"terminal",
|
|
892
966
|
"skills",
|
|
967
|
+
"attribution",
|
|
893
968
|
"delegation",
|
|
894
969
|
"keybindings",
|
|
895
970
|
"compaction",
|
|
@@ -1236,7 +1311,13 @@ export function validateSettings(raw: unknown): SettingsValidationResult {
|
|
|
1236
1311
|
if (!isPlainObject(raw.terminal)) {
|
|
1237
1312
|
issues.add("terminal", `expected a map, got ${describe(raw.terminal)}`);
|
|
1238
1313
|
} else {
|
|
1239
|
-
issues.unknownKeys("terminal", raw.terminal, [
|
|
1314
|
+
issues.unknownKeys("terminal", raw.terminal, [
|
|
1315
|
+
"showTerminalProgress",
|
|
1316
|
+
"outputVerbosity",
|
|
1317
|
+
"tuiMode",
|
|
1318
|
+
"fullscreenScrollbar",
|
|
1319
|
+
"smoothStreaming",
|
|
1320
|
+
]);
|
|
1240
1321
|
if ("showTerminalProgress" in raw.terminal) {
|
|
1241
1322
|
const v = expectBoolean(issues, "terminal.showTerminalProgress", raw.terminal.showTerminalProgress);
|
|
1242
1323
|
if (v !== undefined) settings.terminal.showTerminalProgress = v;
|
|
@@ -1246,6 +1327,21 @@ export function validateSettings(raw: unknown): SettingsValidationResult {
|
|
|
1246
1327
|
if (v === "minimal" || v === "default" || v === "verbose") settings.terminal.outputVerbosity = v;
|
|
1247
1328
|
else if (v !== undefined) issues.add("terminal.outputVerbosity", "expected minimal, default, or verbose");
|
|
1248
1329
|
}
|
|
1330
|
+
if ("tuiMode" in raw.terminal) {
|
|
1331
|
+
const v = expectString(issues, "terminal.tuiMode", raw.terminal.tuiMode);
|
|
1332
|
+
if (v === "regular" || v === "fullscreen") settings.terminal.tuiMode = v;
|
|
1333
|
+
else if (v !== undefined) issues.add("terminal.tuiMode", "expected regular or fullscreen");
|
|
1334
|
+
}
|
|
1335
|
+
if ("fullscreenScrollbar" in raw.terminal) {
|
|
1336
|
+
const v = expectString(issues, "terminal.fullscreenScrollbar", raw.terminal.fullscreenScrollbar);
|
|
1337
|
+
if (v === "hidden" || v === "auto" || v === "always") settings.terminal.fullscreenScrollbar = v;
|
|
1338
|
+
else if (v !== undefined) issues.add("terminal.fullscreenScrollbar", "expected hidden, auto, or always");
|
|
1339
|
+
}
|
|
1340
|
+
if ("smoothStreaming" in raw.terminal) {
|
|
1341
|
+
const v = expectString(issues, "terminal.smoothStreaming", raw.terminal.smoothStreaming);
|
|
1342
|
+
if (v === "off" || v === "auto" || v === "on") settings.terminal.smoothStreaming = v;
|
|
1343
|
+
else if (v !== undefined) issues.add("terminal.smoothStreaming", "expected off, auto, or on");
|
|
1344
|
+
}
|
|
1249
1345
|
}
|
|
1250
1346
|
}
|
|
1251
1347
|
|
|
@@ -1261,6 +1357,18 @@ export function validateSettings(raw: unknown): SettingsValidationResult {
|
|
|
1261
1357
|
}
|
|
1262
1358
|
}
|
|
1263
1359
|
|
|
1360
|
+
if ("attribution" in raw) {
|
|
1361
|
+
if (!isPlainObject(raw.attribution)) {
|
|
1362
|
+
issues.add("attribution", `expected a map, got ${describe(raw.attribution)}`);
|
|
1363
|
+
} else {
|
|
1364
|
+
issues.unknownKeys("attribution", raw.attribution, ["gitCommits"]);
|
|
1365
|
+
if ("gitCommits" in raw.attribution) {
|
|
1366
|
+
const v = expectBoolean(issues, "attribution.gitCommits", raw.attribution.gitCommits);
|
|
1367
|
+
if (v !== undefined) settings.attribution.gitCommits = v;
|
|
1368
|
+
}
|
|
1369
|
+
}
|
|
1370
|
+
}
|
|
1371
|
+
|
|
1264
1372
|
if ("delegation" in raw) {
|
|
1265
1373
|
settings.delegation = validateDelegation(issues, raw.delegation);
|
|
1266
1374
|
}
|
|
@@ -1413,7 +1521,7 @@ function readSavedDocument(): unknown {
|
|
|
1413
1521
|
* (or stay absent), so materialized defaults such as `workers.profiles: {}`
|
|
1414
1522
|
* never leak into a file that never had them.
|
|
1415
1523
|
*/
|
|
1416
|
-
function applySettingsDelta(saved: unknown, before: unknown, after: unknown): unknown {
|
|
1524
|
+
export function applySettingsDelta(saved: unknown, before: unknown, after: unknown): unknown {
|
|
1417
1525
|
if (!isPlainObject(before) || !isPlainObject(after)) return cloneValue(after);
|
|
1418
1526
|
const out: Record<string, unknown> = isPlainObject(saved) ? { ...saved } : {};
|
|
1419
1527
|
for (const [key, next] of Object.entries(after)) {
|
|
@@ -1452,6 +1560,27 @@ export interface SettingsUpdateOptions {
|
|
|
1452
1560
|
timeoutMs?: number;
|
|
1453
1561
|
}
|
|
1454
1562
|
|
|
1563
|
+
/**
|
|
1564
|
+
* Replace the raw user settings document under the same cross-process lock as
|
|
1565
|
+
* `updateSettings`. Workspace-aware layering owns the only current caller: it
|
|
1566
|
+
* computes and validates the candidate against the project layers before this
|
|
1567
|
+
* helper commits the raw user-layer delta.
|
|
1568
|
+
*/
|
|
1569
|
+
export function updateSavedSettingsDocument(
|
|
1570
|
+
mutate: (saved: unknown) => unknown,
|
|
1571
|
+
options: SettingsUpdateOptions = {},
|
|
1572
|
+
): void {
|
|
1573
|
+
withSettingsLock(() => {
|
|
1574
|
+
// Keep the strict gate updateSettings has always used. readSavedDocument
|
|
1575
|
+
// deliberately degrades parse/read failures to `{}` for recovery callers;
|
|
1576
|
+
// writing through that degraded value would erase a malformed, null, or
|
|
1577
|
+
// transiently unreadable operator document.
|
|
1578
|
+
readSettings();
|
|
1579
|
+
const saved = readSavedDocument();
|
|
1580
|
+
persistSettings(mutate(cloneValue(saved)));
|
|
1581
|
+
}, options);
|
|
1582
|
+
}
|
|
1583
|
+
|
|
1455
1584
|
export function settingsLockPath(): string {
|
|
1456
1585
|
return `${settingsPath()}.lock`;
|
|
1457
1586
|
}
|
package/src/core/defaults.ts
CHANGED
|
@@ -78,7 +78,7 @@ export interface WorkersSettings {
|
|
|
78
78
|
*
|
|
79
79
|
* Fields:
|
|
80
80
|
* - auto: master switch for the chat-loop's pre-request trigger. Manual
|
|
81
|
-
* /compact still runs when auto=false.
|
|
81
|
+
* /context compact still runs when auto=false.
|
|
82
82
|
* - threshold: context pressure (estimated_tokens / context_window, 0..1)
|
|
83
83
|
* at which compaction acts: stale observations are masked first, and a
|
|
84
84
|
* full LLM summary runs if pressure stays above the threshold.
|
|
@@ -113,11 +113,20 @@ export interface RetrySettings {
|
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
export type OutputVerbosity = "minimal" | "default" | "verbose";
|
|
116
|
+
export type TuiMode = "regular" | "fullscreen";
|
|
117
|
+
export type FullscreenScrollbar = "hidden" | "auto" | "always";
|
|
118
|
+
export type SmoothStreaming = "off" | "auto" | "on";
|
|
116
119
|
|
|
117
120
|
export interface TerminalSettings {
|
|
118
121
|
showTerminalProgress: boolean;
|
|
119
122
|
/** Transcript detail: collapsed, balanced, or fully transparent. */
|
|
120
123
|
outputVerbosity: OutputVerbosity;
|
|
124
|
+
/** Regular scrollback-preserving renderer or alternate-screen sticky layout. */
|
|
125
|
+
tuiMode: TuiMode;
|
|
126
|
+
/** Fullscreen transcript scrollbar visibility. */
|
|
127
|
+
fullscreenScrollbar: FullscreenScrollbar;
|
|
128
|
+
/** Presentation-only pacing for streamed assistant text and thinking. */
|
|
129
|
+
smoothStreaming: SmoothStreaming;
|
|
121
130
|
}
|
|
122
131
|
|
|
123
132
|
export interface ModelSelectorSettings {
|
|
@@ -131,6 +140,11 @@ export interface SkillsSettings {
|
|
|
131
140
|
trustProjectCompatRoots: boolean;
|
|
132
141
|
}
|
|
133
142
|
|
|
143
|
+
export interface AttributionSettings {
|
|
144
|
+
/** Evidence-aware role trailers on commits created through Clio. */
|
|
145
|
+
gitCommits: boolean;
|
|
146
|
+
}
|
|
147
|
+
|
|
134
148
|
export type DelegationToolGovernance = "clio-policy" | "agent-managed" | "deny-all";
|
|
135
149
|
|
|
136
150
|
/**
|
|
@@ -314,10 +328,16 @@ export const DEFAULT_SETTINGS = {
|
|
|
314
328
|
terminal: {
|
|
315
329
|
showTerminalProgress: false,
|
|
316
330
|
outputVerbosity: "default",
|
|
331
|
+
tuiMode: "regular",
|
|
332
|
+
fullscreenScrollbar: "auto",
|
|
333
|
+
smoothStreaming: "off",
|
|
317
334
|
} as TerminalSettings,
|
|
318
335
|
skills: {
|
|
319
336
|
trustProjectCompatRoots: false,
|
|
320
337
|
} as SkillsSettings,
|
|
338
|
+
attribution: {
|
|
339
|
+
gitCommits: true,
|
|
340
|
+
} as AttributionSettings,
|
|
321
341
|
delegation: {
|
|
322
342
|
agents: [] as DelegationAgentConfig[],
|
|
323
343
|
defaults: {
|
|
@@ -391,7 +411,7 @@ autonomy: auto-edit # read-only | suggest | auto-edit | full-auto
|
|
|
391
411
|
# directory next to this file).
|
|
392
412
|
targets: []
|
|
393
413
|
# Local runtime examples (uncomment/adapt one; replace your-model-id):
|
|
394
|
-
# clio-coder configure --id local-lmstudio --runtime lmstudio
|
|
414
|
+
# clio-coder configure --id local-lmstudio --runtime lmstudio --url http://localhost:1234 --model your-model-id --set-orchestrator --set-fleet-default
|
|
395
415
|
# clio-coder configure --id local-ollama --runtime ollama-native --url http://localhost:11434 --model your-model-id --set-orchestrator --set-fleet-default
|
|
396
416
|
# clio-coder configure --id local-llamacpp --runtime llamacpp --url http://127.0.0.1:8080 --model your-model-id --set-orchestrator --set-fleet-default
|
|
397
417
|
# clio-coder configure --id local-vllm --runtime vllm --url http://localhost:8000 --model your-model-id --set-orchestrator --set-fleet-default
|
|
@@ -402,7 +422,7 @@ targets: []
|
|
|
402
422
|
# Example target block equivalent to one configured local runtime:
|
|
403
423
|
# targets:
|
|
404
424
|
# - id: local-lmstudio
|
|
405
|
-
# runtime: lmstudio
|
|
425
|
+
# runtime: lmstudio
|
|
406
426
|
# url: http://localhost:1234
|
|
407
427
|
# defaultModel: your-model-id
|
|
408
428
|
# capabilities:
|
|
@@ -498,7 +518,7 @@ routing:
|
|
|
498
518
|
# Alt+J / Alt+K cycling order: plain target ids or "target/model" refs.
|
|
499
519
|
scope: []
|
|
500
520
|
|
|
501
|
-
# /
|
|
521
|
+
# /model focused picker. Favorites are exact "target/model" refs shown before
|
|
502
522
|
# the full search catalog. Recently selected models are runtime state and live
|
|
503
523
|
# in the state dir (recent-models.json), not in this file.
|
|
504
524
|
modelSelector:
|
|
@@ -525,6 +545,15 @@ terminal:
|
|
|
525
545
|
showTerminalProgress: false
|
|
526
546
|
# Transcript detail: minimal, default, or verbose. Also changeable with /output.
|
|
527
547
|
outputVerbosity: default
|
|
548
|
+
# regular preserves terminal scrollback; fullscreen keeps the editor/footer
|
|
549
|
+
# sticky above an independently scrollable alternate-screen transcript.
|
|
550
|
+
tuiMode: regular
|
|
551
|
+
# hidden, auto (visible while scrolling), or always in fullscreen mode.
|
|
552
|
+
fullscreenScrollbar: auto
|
|
553
|
+
# off preserves immediate 16ms coalescing; auto paces only on a capable,
|
|
554
|
+
# accessibility-safe local TTY; on requests pacing but still honors stdout
|
|
555
|
+
# backpressure. CLIO_CODER_SMOOTH_STREAM overrides this for one process.
|
|
556
|
+
smoothStreaming: off
|
|
528
557
|
|
|
529
558
|
# Skills are local prompt resources. Project-local compatibility roots such as
|
|
530
559
|
# .agents/skills, .claude/skills, .codex/skills, .github/skills, and
|
|
@@ -533,6 +562,11 @@ terminal:
|
|
|
533
562
|
skills:
|
|
534
563
|
trustProjectCompatRoots: false
|
|
535
564
|
|
|
565
|
+
# Evidence-aware Git commit provenance. The identity and trailer semantics are
|
|
566
|
+
# compiled into Clio; this switch only enables or disables attribution.
|
|
567
|
+
attribution:
|
|
568
|
+
gitCommits: true
|
|
569
|
+
|
|
536
570
|
# External coding agents that speak Agent Client Protocol v1 over stdio.
|
|
537
571
|
# These are delegated harnesses, not model targets, so they stay outside
|
|
538
572
|
# targets[], orchestrator, workers, and model pickers.
|
|
@@ -574,7 +608,7 @@ keybindings: {}
|
|
|
574
608
|
|
|
575
609
|
# Context compaction controls.
|
|
576
610
|
# auto master switch for the pre-request compaction trigger.
|
|
577
|
-
# Manual /compact always runs the LLM summary.
|
|
611
|
+
# Manual /context compact always runs the LLM summary.
|
|
578
612
|
# threshold pressure = estimated_tokens / context_window. Crossing
|
|
579
613
|
# it masks stale tool observations first, then runs a
|
|
580
614
|
# full LLM summary if pressure stays above the threshold.
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
import { BusChannels } from "./bus-events.js";
|
|
18
18
|
import type { SafeEventBus } from "./event-bus.js";
|
|
19
19
|
import { getSharedBus } from "./shared-bus.js";
|
|
20
|
-
import { resolveShutdownHookBudgetMs, runWithBudget } from "./termination.js";
|
|
20
|
+
import { resolveShutdownHookBudgetMs, runWithBudget, writeShutdownNotice } from "./termination.js";
|
|
21
21
|
|
|
22
22
|
export interface DomainManifest {
|
|
23
23
|
name: string;
|
|
@@ -60,7 +60,10 @@ export interface LoadResult {
|
|
|
60
60
|
stop(): Promise<void>;
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
export async function loadDomains(
|
|
63
|
+
export async function loadDomains(
|
|
64
|
+
modules: ReadonlyArray<DomainModule>,
|
|
65
|
+
options: { diagnostic?: (text: string) => void } = {},
|
|
66
|
+
): Promise<LoadResult> {
|
|
64
67
|
const order = topoSort(modules);
|
|
65
68
|
const contracts = new Map<string, DomainContract>();
|
|
66
69
|
const extensions = new Map<string, DomainExtension>();
|
|
@@ -91,7 +94,9 @@ export async function loadDomains(modules: ReadonlyArray<DomainModule>): Promise
|
|
|
91
94
|
// The throw below aborts boot; nothing downstream gets a chance to
|
|
92
95
|
// render the failure, so the structured line must land first.
|
|
93
96
|
const message = error instanceof Error ? error.message : String(error);
|
|
94
|
-
process.stderr.write(
|
|
97
|
+
(options.diagnostic ?? ((text: string) => process.stderr.write(text)))(
|
|
98
|
+
`[clio:domain] load failed: ${name}: ${message}\n`,
|
|
99
|
+
);
|
|
95
100
|
throw new DomainLoadError(name, error);
|
|
96
101
|
}
|
|
97
102
|
}
|
|
@@ -105,10 +110,12 @@ export async function loadDomains(modules: ReadonlyArray<DomainModule>): Promise
|
|
|
105
110
|
const stopFn = ext.stop.bind(ext);
|
|
106
111
|
const t0 = debug ? process.hrtime.bigint() : 0n;
|
|
107
112
|
const completed = await runWithBudget(stopFn, budgetMs, (err) => {
|
|
108
|
-
|
|
113
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
114
|
+
writeShutdownNotice(`[clio:domain-loader] ${name}.stop() failed: ${message}`);
|
|
115
|
+
if (debug && err instanceof Error && err.stack) process.stderr.write(`${err.stack}\n`);
|
|
109
116
|
});
|
|
110
117
|
if (!completed) {
|
|
111
|
-
|
|
118
|
+
writeShutdownNotice(`[clio:domain-loader] ${name}.stop() exceeded ${budgetMs}ms budget; abandoning`);
|
|
112
119
|
}
|
|
113
120
|
if (debug) {
|
|
114
121
|
const dt = Number(process.hrtime.bigint() - t0) / 1e6;
|