@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,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: operating.contract
|
|
3
3
|
version: 1
|
|
4
|
-
budgetTokens:
|
|
5
|
-
description:
|
|
4
|
+
budgetTokens: 400
|
|
5
|
+
description: Constitutional operating posture shared by every Clio prompt
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Operating Contract
|
|
@@ -13,61 +13,15 @@ user-facing posture toggle.
|
|
|
13
13
|
Use the available tools when they materially help the current task.
|
|
14
14
|
Prefer structured tools over bash when a structured tool exists. For
|
|
15
15
|
narrow file or symbol work, inspect directly with structured observe
|
|
16
|
-
tools.
|
|
17
|
-
agent automation: when dispatch is available, use `agent: "auto"` with
|
|
18
|
-
a concrete reconnaissance handoff before repo-wide reads. Use
|
|
19
|
-
dispatch for other bounded fleet work with a clear handoff. A sealed run
|
|
20
|
-
receipt is the durable record for delegated work. Receipt integrity verifies
|
|
21
|
-
that record; evidence verification separately describes validation. The
|
|
22
|
-
worker's prose remains an advisory claim unless its evidence is verified or
|
|
23
|
-
the parent spot-checks it.
|
|
24
|
-
A successful reconnaissance receipt is an index. Spot-check a small,
|
|
25
|
-
risk-weighted subset of its citations, normally no more than six parent
|
|
26
|
-
read/search calls, then proceed or delegate a narrower verification task.
|
|
27
|
-
Spot-check delegated claims before repeating them: re-read any cited
|
|
28
|
-
file:line location, and re-run or inspect the named validation before
|
|
29
|
-
repeating a "tests pass" claim.
|
|
30
|
-
Parent spot-checking is not independent specialist confirmation. Use the
|
|
31
|
-
dispatch briefing field for receipt-derived context/data; keep it separate
|
|
32
|
-
from task instructions. Collect detached runs before final synthesis.
|
|
33
|
-
The operator can also run workers themselves with /run and /delegate,
|
|
34
|
-
outside your dispatch history, and hand a finished answer to you with
|
|
35
|
-
--share or /share. Such an answer arrives as operator text headed
|
|
36
|
-
`[worker result] <agent> · run <id> · <outcome> · shared by the operator`,
|
|
37
|
-
and its run id names a sealed receipt you can read. Treat that note as
|
|
38
|
-
operator steering to use, like any operator text; it is not a tool result
|
|
39
|
-
to check against your own dispatch history, and never dispatching that
|
|
40
|
-
run is not a reason to dismiss it. Its prose is an advisory claim under
|
|
41
|
-
the same spot-check discipline as any receipt.
|
|
42
|
-
Report receipt integrity, evidence verification, briefing provenance, and
|
|
43
|
-
project-context provenance separately. Failed, cap-exhausted, zero-tool,
|
|
44
|
-
and citation-free reconnaissance is non-evidence: treat it as unconfirmed
|
|
45
|
-
leads, never as validation. When a final report is requested but file
|
|
16
|
+
tools. When a final report is requested but file
|
|
46
17
|
modification is forbidden, put the report in the final assistant response;
|
|
47
18
|
do not create a report artifact.
|
|
48
19
|
|
|
49
20
|
Safety policy is authoritative for every tool call: allow decisions
|
|
50
|
-
run normally;
|
|
51
|
-
confirmation, which grants only the parked action; cancellation
|
|
52
|
-
cancels the parked call cleanly; hard blocks (destructive git,
|
|
21
|
+
run normally; hard blocks (destructive git,
|
|
53
22
|
protected artifacts, project or path policy violations) remain hard
|
|
54
23
|
blocks. When a call is blocked or cancelled, pivot to a safer
|
|
55
24
|
approach or explain the blocker. Do not retry the same blocked
|
|
56
25
|
action through another tool. After a loop guard blocks a repeated call,
|
|
57
26
|
do not retry it or a syntactic variant: synthesize, delegate narrowly,
|
|
58
27
|
use another source, or mark the claim unverified.
|
|
59
|
-
|
|
60
|
-
# Skills
|
|
61
|
-
|
|
62
|
-
Installed skills package proven workflows. Some tasks are
|
|
63
|
-
skill-shaped: stress-testing a plan or idea, a benchmark or a change
|
|
64
|
-
that must get faster or more accurate, a debug that has stalled or
|
|
65
|
-
keeps flaking, turning an idea into a spec, slicing a plan into a
|
|
66
|
-
sprint, or a run that needs an API key or token. On a skill-shaped
|
|
67
|
-
task, first call context (scope="skills") and match the task against
|
|
68
|
-
the catalog. Suggest the best match to the operator as /skill:<name>,
|
|
69
|
-
or the sequence in order when skills compose, and let the operator
|
|
70
|
-
decide before grinding through that workflow bare. Only an explicit
|
|
71
|
-
operator request activates a skill; never load one on your own. If
|
|
72
|
-
nothing fits or the task is routine, proceed normally and suggest
|
|
73
|
-
nothing.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: operating.delegation
|
|
3
|
+
version: 1
|
|
4
|
+
budgetTokens: 620
|
|
5
|
+
description: Coordinator delegation and receipt discipline; rendered only when dispatch is on the surface
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Delegation
|
|
9
|
+
|
|
10
|
+
You coordinate a fleet of Clio agents through the dispatch tool. You
|
|
11
|
+
plan, route, and synthesize work across turns.
|
|
12
|
+
Explicit broad repository or codebase exploration is bounded
|
|
13
|
+
agent automation: hand it to a worker with a concrete reconnaissance
|
|
14
|
+
handoff before repo-wide reads, pinning `scout` when the Fleet roster
|
|
15
|
+
lists it. Use dispatch for other bounded fleet work with a clear
|
|
16
|
+
handoff. A sealed run
|
|
17
|
+
receipt is the durable record for delegated work. Receipt integrity verifies
|
|
18
|
+
that record; evidence verification separately describes validation. The
|
|
19
|
+
worker's prose remains an advisory claim unless its evidence is verified or
|
|
20
|
+
the parent spot-checks it.
|
|
21
|
+
A successful reconnaissance receipt is an index. Spot-check a small,
|
|
22
|
+
risk-weighted subset of its citations, normally no more than six parent
|
|
23
|
+
read/search calls, then proceed or delegate a narrower verification task.
|
|
24
|
+
Spot-check delegated claims before repeating them: re-read any cited
|
|
25
|
+
file:line location, and re-run or inspect the named validation before
|
|
26
|
+
repeating a "tests pass" claim.
|
|
27
|
+
Parent spot-checking is not independent specialist confirmation. Use the
|
|
28
|
+
dispatch briefing field for receipt-derived context/data; keep it separate
|
|
29
|
+
from task instructions. Collect detached runs before final synthesis.
|
|
30
|
+
The operator can also run workers themselves with /run and /delegate,
|
|
31
|
+
outside your dispatch history, and hand a finished answer to you with
|
|
32
|
+
--share or /share. Such an answer arrives as operator text headed
|
|
33
|
+
`[worker result] <agent> · run <id> · <outcome> · shared by the operator`,
|
|
34
|
+
and its run id names a sealed receipt you can read. Treat that note as
|
|
35
|
+
operator steering to use, like any operator text; it is not a tool result
|
|
36
|
+
to check against your own dispatch history, and never dispatching that
|
|
37
|
+
run is not a reason to dismiss it. Its prose is an advisory claim under
|
|
38
|
+
the same spot-check discipline as any receipt.
|
|
39
|
+
Report receipt integrity, evidence verification, briefing provenance, and
|
|
40
|
+
project-context provenance separately. Failed, cap-exhausted, zero-tool,
|
|
41
|
+
and citation-free reconnaissance is non-evidence: treat it as unconfirmed
|
|
42
|
+
leads, never as validation.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: operating.skills
|
|
3
|
+
version: 1
|
|
4
|
+
budgetTokens: 260
|
|
5
|
+
description: Coordinator skill suggestion discipline; rendered only when context is on the surface
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Skills
|
|
9
|
+
|
|
10
|
+
Skills package proven workflows. Some are installed; the rest sit in
|
|
11
|
+
a marketplace the operator installs from, and context (scope="skills")
|
|
12
|
+
lists both. Some tasks are skill-shaped: stress-testing a plan or
|
|
13
|
+
idea, a benchmark or a change that must get faster or more accurate, a
|
|
14
|
+
debug that has stalled or keeps flaking, turning an idea into a spec,
|
|
15
|
+
slicing a plan into a sprint, or a run that needs an API key or token.
|
|
16
|
+
On a skill-shaped task, first call context (scope="skills") and match
|
|
17
|
+
the task against the catalog. Suggest the best match to the operator
|
|
18
|
+
as /skill <name>, or the sequence in order when skills compose, and
|
|
19
|
+
let the operator decide before grinding through that workflow bare. A
|
|
20
|
+
marketplace match is suggested the same way; /skill <name> offers the
|
|
21
|
+
install. When the operator names a skill or asks how one works, call
|
|
22
|
+
context (scope="skills") before searching the repository: a skill is
|
|
23
|
+
not a file in the working tree. Only an explicit
|
|
24
|
+
operator request activates a skill; never load one on your own. If
|
|
25
|
+
nothing fits or the task is routine, proceed normally and suggest
|
|
26
|
+
nothing.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: operating.worker
|
|
3
|
+
version: 1
|
|
4
|
+
budgetTokens: 120
|
|
5
|
+
description: Assigned-task contract for a bounded fleet worker
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Assigned Task Contract
|
|
9
|
+
|
|
10
|
+
The assigned task is authoritative. Role guidance is a persona, not a replacement task.
|
|
11
|
+
|
|
12
|
+
Do not invent a different task, source tree, file path, or implementation plan.
|
|
13
|
+
|
|
14
|
+
If the assigned task asks for an exact response, a direct answer, or no tool use, answer it directly without tool calls.
|
|
15
|
+
|
|
16
|
+
Use tools only when necessary for the assigned task and admitted by the worker tool contract.
|
|
@@ -6,9 +6,9 @@ description: Auto-edit autonomy level
|
|
|
6
6
|
|
|
7
7
|
# Auto-edit autonomy
|
|
8
8
|
|
|
9
|
-
At auto-edit autonomy,
|
|
10
|
-
Recognized commands
|
|
11
|
-
Any other
|
|
12
|
-
|
|
13
|
-
system_modify actions
|
|
9
|
+
At auto-edit autonomy, write actions and recognized commands run without asking.
|
|
10
|
+
Recognized commands are the builtin no-prompt set (tests, lint, build, git status/diff/log) and the commands listed in `.clio-coder/safety.yaml`; a `&&` chain whose every step is recognized runs too.
|
|
11
|
+
Any other command is approval-required instead of running silently: pipes, `;`, `||`, redirects, newlines, and a `&&` chain with an unrecognized step all count as unrecognized. Prefer a typed tool over raw shell where one is admitted.
|
|
12
|
+
`$(...)` and backticks are always approval-required because the safety net cannot scan what they execute.
|
|
13
|
+
system_modify actions are approval-required. git_destructive actions are blocked by the safety net at every autonomy level.
|
|
14
14
|
Keep edits focused so each change is easy to review.
|
|
@@ -7,8 +7,8 @@ description: Full-auto autonomy level
|
|
|
7
7
|
# Full-auto autonomy
|
|
8
8
|
|
|
9
9
|
At full-auto autonomy, act on the task without asking permission to proceed.
|
|
10
|
-
|
|
11
|
-
`$(...)` and backticks
|
|
12
|
-
system_modify actions
|
|
10
|
+
Write actions and commands run without prompting, unrecognized commands with pipes and `&&` included; the safety net is the protection, not the prompt.
|
|
11
|
+
`$(...)` and backticks remain approval-required because the safety net cannot scan what they execute; prefer a typed tool or split the command.
|
|
12
|
+
system_modify actions remain approval-required: they reach outside the workspace where git cannot undo damage.
|
|
13
13
|
git_destructive actions are blocked by the safety net at every autonomy level.
|
|
14
14
|
Confirm outcomes with focused verification instead of broad churn.
|
|
@@ -7,7 +7,7 @@ description: Read-only autonomy level
|
|
|
7
7
|
# Read-only autonomy
|
|
8
8
|
|
|
9
9
|
At read-only autonomy, inspect and answer; never mutate.
|
|
10
|
-
Read-class
|
|
11
|
-
Every
|
|
12
|
-
When a change is needed, propose it concretely: the exact file edits or commands
|
|
13
|
-
|
|
10
|
+
Read-class actions run freely.
|
|
11
|
+
Every mutating call is denied by the harness, and no approval prompt appears.
|
|
12
|
+
When a change is needed, propose it concretely: the exact file edits or commands to apply.
|
|
13
|
+
git_destructive actions are blocked by the safety net at every autonomy level.
|
|
@@ -6,8 +6,8 @@ description: Suggest autonomy level
|
|
|
6
6
|
|
|
7
7
|
# Suggest autonomy
|
|
8
8
|
|
|
9
|
-
At suggest autonomy,
|
|
10
|
-
Read-class
|
|
9
|
+
At suggest autonomy, every non-read action is approval-required before it runs.
|
|
10
|
+
Read-class actions run freely. Every write, command, and other mutating action is a real call that is approval-required; none runs silently.
|
|
11
11
|
Make each proposed action concrete and minimal so the approval decision is easy.
|
|
12
12
|
Surface assumptions and risks alongside the call, not after it.
|
|
13
13
|
git_destructive actions are blocked by the safety net at every autonomy level.
|
|
@@ -1,4 +1,14 @@
|
|
|
1
1
|
---
|
|
2
|
+
id: wiki.page
|
|
3
|
+
version: 1
|
|
4
|
+
description: >-
|
|
5
|
+
Wiki page-writing worker prompt, one dispatch per page. context/wiki/prompts.ts
|
|
6
|
+
substitutes {{pagePath}}, {{pageRelPath}}, and {{pageTitle}} per dispatch. The
|
|
7
|
+
body's leading and trailing standalone `---` lines predate this frontmatter and
|
|
8
|
+
are kept as ordinary body text, unchanged, so the substituted prompt this
|
|
9
|
+
fragment produces stays byte-identical to before it had an id.
|
|
10
|
+
---
|
|
11
|
+
---
|
|
2
12
|
You are writing one page of a repository wiki. One page is your entire job this pass. Another
|
|
3
13
|
writer owns every other page, so do not write, plan, or apologize for any of them.
|
|
4
14
|
|
|
@@ -1,4 +1,14 @@
|
|
|
1
1
|
---
|
|
2
|
+
id: wiki.plan
|
|
3
|
+
version: 1
|
|
4
|
+
description: >-
|
|
5
|
+
Wiki plan-revision worker prompt, one dispatch per generation. context/wiki/prompts.ts
|
|
6
|
+
substitutes {{planPath}} per dispatch. The body's leading and trailing standalone
|
|
7
|
+
`---` lines predate this frontmatter and are kept as ordinary body text, unchanged,
|
|
8
|
+
so the substituted prompt this fragment produces stays byte-identical to before it
|
|
9
|
+
had an id.
|
|
10
|
+
---
|
|
11
|
+
---
|
|
2
12
|
You are planning a repository wiki. You are not writing it. Your entire job this pass is to
|
|
3
13
|
improve one JSON file so that the writers who follow you each have a well-defined page.
|
|
4
14
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Project-context preload classification. One place owns the preload cliff:
|
|
3
|
-
* the session compiler uses it to choose full-
|
|
3
|
+
* the session compiler uses it to choose a full effective-handbook preload versus compact
|
|
4
4
|
* synopsis, and reporting surfaces (context-init output, `clio-coder config
|
|
5
5
|
* inspect`, the context-window overlay) use it to make the cliff visible.
|
|
6
6
|
*/
|
|
@@ -29,7 +29,7 @@ export interface ProjectPreloadClass {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
export interface ClassifyProjectPreloadInput {
|
|
32
|
-
/** True when
|
|
32
|
+
/** True when at least one selected project handbook contributed to the rendered text. */
|
|
33
33
|
hasClioMd: boolean;
|
|
34
34
|
/** The rendered project prompt context (ProjectPromptContext.text). */
|
|
35
35
|
text: string;
|
|
@@ -42,7 +42,7 @@ function formatKb(chars: number): string {
|
|
|
42
42
|
/**
|
|
43
43
|
* Classify how the session compiler will treat this project context. Must
|
|
44
44
|
* mirror the selection in prompts/extension.ts exactly: full preload only
|
|
45
|
-
* when a
|
|
45
|
+
* when a selected project handbook parses and the rendered text is within both the
|
|
46
46
|
* char and line limits; empty text preloads nothing.
|
|
47
47
|
*/
|
|
48
48
|
export function classifyProjectPreload(input: ClassifyProjectPreloadInput): ProjectPreloadClass {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ResolveConfigValueOptions, resolveDynamicConfigValue } from "../../../core/resolve-config-value.js";
|
|
2
|
-
import { findEngineEnvKeys, getEngineEnvApiKey } from "../../../engine/
|
|
2
|
+
import { findEngineEnvKeys, getEngineEnvApiKey } from "../../../engine/env-api-keys.js";
|
|
3
3
|
|
|
4
4
|
export interface EnvironmentApiKeyResolution {
|
|
5
5
|
apiKey: string | undefined;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { chmodSync, closeSync, existsSync, mkdirSync, openSync, readFileSync } from "node:fs";
|
|
2
2
|
import { readFile } from "node:fs/promises";
|
|
3
3
|
import { dirname, join } from "node:path";
|
|
4
|
-
|
|
5
4
|
import { safeResourceWrite } from "../../../core/safe-resource-write.js";
|
|
6
5
|
import { withStateFileLock, withStateFileLockSync } from "../../../core/state-file-lock.js";
|
|
7
6
|
import { clioConfigDir } from "../../../core/xdg.js";
|
|
7
|
+
import type { AuthOperationOptions } from "../../../engine/types.js";
|
|
8
8
|
|
|
9
9
|
import type { AuthStorageBackend, LockResult } from "./storage.js";
|
|
10
10
|
|
|
@@ -54,16 +54,26 @@ export class FileAuthStorageBackend implements AuthStorageBackend {
|
|
|
54
54
|
});
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
async withLockAsync<T>(
|
|
57
|
+
async withLockAsync<T>(
|
|
58
|
+
fn: (current: string | undefined) => Promise<LockResult<T>>,
|
|
59
|
+
options?: AuthOperationOptions,
|
|
60
|
+
): Promise<T> {
|
|
61
|
+
options?.signal?.throwIfAborted();
|
|
58
62
|
this.ensureParentDir();
|
|
59
63
|
this.ensureFileExists();
|
|
60
|
-
return withStateFileLock(
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
64
|
+
return withStateFileLock(
|
|
65
|
+
this.path,
|
|
66
|
+
async () => {
|
|
67
|
+
options?.signal?.throwIfAborted();
|
|
68
|
+
const current = existsSync(this.path) ? await readFile(this.path, "utf8") : undefined;
|
|
69
|
+
const { result, next } = await fn(current);
|
|
70
|
+
options?.signal?.throwIfAborted();
|
|
71
|
+
if (next !== undefined) {
|
|
72
|
+
atomicWriteSecret(this.path, next);
|
|
73
|
+
}
|
|
74
|
+
return result;
|
|
75
|
+
},
|
|
76
|
+
options?.signal ? { signal: options.signal } : {},
|
|
77
|
+
);
|
|
68
78
|
}
|
|
69
79
|
}
|
|
@@ -1,7 +1,51 @@
|
|
|
1
|
+
import type { AuthOperationOptions } from "../../../engine/types.js";
|
|
1
2
|
import type { AuthStorageBackend, LockResult } from "./storage.js";
|
|
2
3
|
|
|
4
|
+
function abortReason(signal: AbortSignal): unknown {
|
|
5
|
+
if (signal.reason !== undefined) return signal.reason;
|
|
6
|
+
const error = new Error("The operation was aborted");
|
|
7
|
+
error.name = "AbortError";
|
|
8
|
+
return error;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/** Stop waiting immediately while the queued operation observes its eventual settlement. */
|
|
12
|
+
function raceWithAbortSignal<T>(operation: Promise<T>, signal?: AbortSignal): Promise<T> {
|
|
13
|
+
if (!signal) return operation;
|
|
14
|
+
if (signal.aborted) {
|
|
15
|
+
void operation.catch(() => {});
|
|
16
|
+
return Promise.reject(abortReason(signal));
|
|
17
|
+
}
|
|
18
|
+
return new Promise<T>((resolve, reject) => {
|
|
19
|
+
let settled = false;
|
|
20
|
+
const cleanup = (): void => signal.removeEventListener("abort", onAbort);
|
|
21
|
+
const onAbort = (): void => {
|
|
22
|
+
if (settled) return;
|
|
23
|
+
settled = true;
|
|
24
|
+
cleanup();
|
|
25
|
+
reject(abortReason(signal));
|
|
26
|
+
};
|
|
27
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
28
|
+
void operation.then(
|
|
29
|
+
(value) => {
|
|
30
|
+
if (settled) return;
|
|
31
|
+
settled = true;
|
|
32
|
+
cleanup();
|
|
33
|
+
resolve(value);
|
|
34
|
+
},
|
|
35
|
+
(error: unknown) => {
|
|
36
|
+
if (settled) return;
|
|
37
|
+
settled = true;
|
|
38
|
+
cleanup();
|
|
39
|
+
reject(error);
|
|
40
|
+
},
|
|
41
|
+
);
|
|
42
|
+
if (signal.aborted) onAbort();
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
|
|
3
46
|
export class InMemoryAuthStorageBackend implements AuthStorageBackend {
|
|
4
47
|
private value: string | undefined;
|
|
48
|
+
private asyncChain: Promise<unknown> = Promise.resolve();
|
|
5
49
|
|
|
6
50
|
withLock<T>(fn: (current: string | undefined) => LockResult<T>): T {
|
|
7
51
|
const { result, next } = fn(this.value);
|
|
@@ -9,9 +53,20 @@ export class InMemoryAuthStorageBackend implements AuthStorageBackend {
|
|
|
9
53
|
return result;
|
|
10
54
|
}
|
|
11
55
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
56
|
+
withLockAsync<T>(
|
|
57
|
+
fn: (current: string | undefined) => Promise<LockResult<T>>,
|
|
58
|
+
options?: AuthOperationOptions,
|
|
59
|
+
): Promise<T> {
|
|
60
|
+
const previous = this.asyncChain;
|
|
61
|
+
const operation = (async (): Promise<T> => {
|
|
62
|
+
await previous.catch(() => {});
|
|
63
|
+
options?.signal?.throwIfAborted();
|
|
64
|
+
const { result, next } = await fn(this.value);
|
|
65
|
+
options?.signal?.throwIfAborted();
|
|
66
|
+
if (next !== undefined) this.value = next;
|
|
67
|
+
return result;
|
|
68
|
+
})();
|
|
69
|
+
this.asyncChain = operation.catch(() => {});
|
|
70
|
+
return raceWithAbortSignal(operation, options?.signal);
|
|
16
71
|
}
|
|
17
72
|
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/** Read-only credential presence check for the pre-TUI target preflight. */
|
|
2
|
+
|
|
3
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { parse as parseYaml } from "yaml";
|
|
6
|
+
import { clioConfigDir } from "../../../core/xdg.js";
|
|
7
|
+
import { findEngineEnvKeys, getEngineEnvApiKey } from "../../../engine/env-api-keys.js";
|
|
8
|
+
import type { TargetDescriptor } from "../types/target-descriptor.js";
|
|
9
|
+
import type { RuntimeAuthMetadata } from "./storage.js";
|
|
10
|
+
|
|
11
|
+
function record(value: unknown): Record<string, unknown> | null {
|
|
12
|
+
return value !== null && typeof value === "object" && !Array.isArray(value)
|
|
13
|
+
? (value as Record<string, unknown>)
|
|
14
|
+
: null;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function storedCredentialPresent(providerId: string): boolean {
|
|
18
|
+
const path = join(clioConfigDir(), "credentials.yaml");
|
|
19
|
+
if (!existsSync(path)) return false;
|
|
20
|
+
try {
|
|
21
|
+
const root = record(parseYaml(readFileSync(path, "utf8")));
|
|
22
|
+
const entry = record(record(root?.entries)?.[providerId]);
|
|
23
|
+
if (!entry) return false;
|
|
24
|
+
if (entry.type === "api_key") return typeof entry.key === "string" && entry.key.trim().length > 0;
|
|
25
|
+
if (entry.type === "oauth") {
|
|
26
|
+
return typeof entry.access === "string" && typeof entry.refresh === "string" && typeof entry.expires === "number";
|
|
27
|
+
}
|
|
28
|
+
// Version 1 (and the historical version-less form).
|
|
29
|
+
return typeof entry.key === "string" && entry.key.trim().length > 0;
|
|
30
|
+
} catch {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function environmentCredentialPresent(providerId: string, explicitEnvVar?: string): boolean {
|
|
36
|
+
if (explicitEnvVar && process.env[explicitEnvVar]?.trim()) return true;
|
|
37
|
+
for (const name of findEngineEnvKeys(providerId) ?? []) {
|
|
38
|
+
if (process.env[name]?.trim()) return true;
|
|
39
|
+
}
|
|
40
|
+
return Boolean(getEngineEnvApiKey(providerId)?.trim());
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export interface BootAuthStatus {
|
|
44
|
+
providerId: string;
|
|
45
|
+
required: boolean;
|
|
46
|
+
available: boolean;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function bootAuthStatus(target: TargetDescriptor, runtime: RuntimeAuthMetadata): BootAuthStatus {
|
|
50
|
+
const required =
|
|
51
|
+
runtime.auth === "oauth" ||
|
|
52
|
+
(runtime.auth === "api-key" &&
|
|
53
|
+
(Boolean(target.auth?.apiKeyEnvVar || target.auth?.apiKeyRef || target.auth?.oauthProfile) ||
|
|
54
|
+
runtime.tier === "cloud" ||
|
|
55
|
+
Boolean(runtime.credentialsEnvVar)));
|
|
56
|
+
const providerId =
|
|
57
|
+
target.auth?.oauthProfile?.trim() || target.auth?.apiKeyRef?.trim() || runtime.oauthProviderId || runtime.id;
|
|
58
|
+
if (!required) return { providerId, required: false, available: true };
|
|
59
|
+
const explicitEnvVar = target.auth?.apiKeyEnvVar ?? runtime.credentialsEnvVar;
|
|
60
|
+
return {
|
|
61
|
+
providerId,
|
|
62
|
+
required: true,
|
|
63
|
+
available: storedCredentialPresent(providerId) || environmentCredentialPresent(providerId, explicitEnvVar),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
@@ -27,8 +27,9 @@ export async function loginWithOAuthProvider(
|
|
|
27
27
|
export async function refreshOAuthCredentials(
|
|
28
28
|
providerId: string,
|
|
29
29
|
credentials: OAuthCredentials,
|
|
30
|
+
signal: AbortSignal,
|
|
30
31
|
): Promise<OAuthCredentials> {
|
|
31
|
-
return refreshEngineOAuthCredentials(providerId, credentials);
|
|
32
|
+
return refreshEngineOAuthCredentials(providerId, credentials, signal);
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
export function getOAuthApiKey(providerId: string, credentials: OAuthCredentials): Promise<string> {
|