@iowarp/clio-coder 0.3.0 → 0.3.1
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 +33 -0
- package/README.md +50 -53
- package/dist/acp-FPR54DGL.js +138 -0
- package/dist/{agents-Q4MYPMUW.js → agents-OGPIHPJH.js} +33 -25
- package/dist/assets/codewiki.json +1 -0
- package/dist/assets/grammars/notices/@vscode__tree-sitter-wasm/LICENSE +21 -0
- package/dist/assets/grammars/notices/@vscode__tree-sitter-wasm/cgmanifest.json +16 -0
- package/dist/assets/grammars/notices/tree-sitter-wasms/LICENSE +24 -0
- package/dist/assets/grammars/tree-sitter-c-sharp.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-c.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-cpp.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-go.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-java.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-javascript.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-python.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-ruby.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-rust.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-tsx.wasm +0 -0
- package/dist/assets/grammars/tree-sitter-typescript.wasm +0 -0
- package/dist/assets/grammars/tree-sitter.wasm +0 -0
- package/dist/{auth-O6HYIJ6J.js → auth-IC3K6NIZ.js} +22 -15
- package/dist/{chunk-KKKPTZLM.js → chunk-2STGEDFV.js} +8 -1
- package/dist/chunk-3I7MS7N2.js +40 -0
- package/dist/chunk-3R73A4XB.js +69 -0
- package/dist/{chunk-26BZQOAD.js → chunk-474KN5II.js} +86 -115
- package/dist/{chunk-NI4DEJMC.js → chunk-4QKXUHSR.js} +26 -3
- package/dist/{chunk-X3BR7HWV.js → chunk-5WIGXA4T.js} +7 -1
- package/dist/{chunk-TFSSEXL6.js → chunk-673JJUWJ.js} +14 -4
- package/dist/{chunk-GNGDQYDU.js → chunk-7SS2CTV2.js} +27922 -1249
- package/dist/{chunk-7RBKDI66.js → chunk-ASND7OZK.js} +104 -12
- package/dist/{chunk-X3NE4WVW.js → chunk-BNAZZHFG.js} +7 -1
- package/dist/{chunk-RQDWMVRB.js → chunk-BSU2YIWB.js} +9 -3
- package/dist/{chunk-CLJ5HLUD.js → chunk-C4PTHK7P.js} +24 -5
- package/dist/{chunk-QV47YRF4.js → chunk-CGKSTWHD.js} +7 -1
- package/dist/{chunk-BYEU76JP.js → chunk-DKGKUHFA.js} +34 -9
- package/dist/chunk-EYOKLTMF.js +170 -0
- package/dist/{chunk-PS4PFJQP.js → chunk-FCIH3BIZ.js} +15258 -14130
- package/dist/{chunk-2J63S4SF.js → chunk-FST4FYJB.js} +82 -14
- package/dist/{chunk-3DANZDGR.js → chunk-G34LV2PF.js} +34 -9
- package/dist/{chunk-BBUH4VAA.js → chunk-GAEBEQVI.js} +34 -21
- package/dist/chunk-GB6QRBXN.js +8543 -0
- package/dist/chunk-GEP36Y4X.js +12796 -0
- package/dist/{chunk-TKHQ4DGZ.js → chunk-H6F6BYOH.js} +496 -121
- package/dist/{chunk-UGYAX5YI.js → chunk-HQQID6OA.js} +10 -5
- package/dist/chunk-IHXBNWMM.js +137 -0
- package/dist/{chunk-ME6DNWIU.js → chunk-IS3ONKU3.js} +7 -1
- package/dist/{chunk-DXQNI4PC.js → chunk-IWHMRKLL.js} +8 -1
- package/dist/chunk-K2ITRMHZ.js +642 -0
- package/dist/{chunk-KBR4MZZR.js → chunk-K5XEMXTI.js} +7 -1
- package/dist/{chunk-AMFR5YA3.js → chunk-KKNLWXI6.js} +24 -10
- package/dist/{chunk-JWHCJDCI.js → chunk-KY56HMHH.js} +145 -61
- package/dist/{chunk-E3NYWENM.js → chunk-LU4TK2PR.js} +52 -7
- package/dist/{chunk-UWIJNAOB.js → chunk-M5T5VO65.js} +109 -42
- package/dist/{chunk-JPOWPFCU.js → chunk-MAR7Y6HW.js} +38 -16
- package/dist/chunk-N6F52NLF.js +6951 -0
- package/dist/{chunk-UHTSULZS.js → chunk-NMOX6HFD.js} +20 -7
- package/dist/{chunk-WD6AJM35.js → chunk-OLBBMFRD.js} +30 -13
- package/dist/{chunk-VOO7NYPP.js → chunk-PFEFKVGL.js} +22 -6
- package/dist/{chunk-6CWDTGUC.js → chunk-PIUMUEMV.js} +7 -1
- package/dist/chunk-PV4JUBVJ.js +462 -0
- package/dist/{chunk-527KG6XR.js → chunk-Q3RUPKEJ.js} +22 -4
- package/dist/{chunk-D5YD55AR.js → chunk-Q5WJOSJ7.js} +11 -1
- package/dist/{chunk-5N2FG33Q.js → chunk-R346GLFC.js} +7 -1
- package/dist/{chunk-4UQA7NCT.js → chunk-R5KLMSBV.js} +7 -2
- package/dist/{chunk-PIDUD6M2.js → chunk-RDLVBZEO.js} +11 -6
- package/dist/{chunk-O4EJEDHO.js → chunk-RPTR2H26.js} +40 -31
- package/dist/{chunk-HBU5MTAM.js → chunk-SVNXH4L2.js} +7 -1
- package/dist/{chunk-XNISANGE.js → chunk-TEKV33Q5.js} +122 -57
- package/dist/chunk-TXOTCRLG.js +15 -0
- package/dist/{chunk-VPAWTYLY.js → chunk-WEPFGWHJ.js} +7 -1
- package/dist/{chunk-HMYNFFY4.js → chunk-XPLRXC72.js} +7 -2
- package/dist/{chunk-UU3R62TT.js → chunk-XYWBQRDM.js} +13 -4
- package/dist/{chunk-7BHLZB3A.js → chunk-ZPY3JZ5E.js} +32 -10
- package/dist/cli/index.js +39 -33
- package/dist/clio-BZVGEUFJ.js +58 -0
- package/dist/{components-JVHMUBEB.js → components-DMAOEKFB.js} +26 -9
- package/dist/{config-ZFCDBMDC.js → config-IRUQ7SE4.js} +42 -31
- package/dist/configure-S7S6F6CL.js +32 -0
- package/dist/{context-CDXTP2MP.js → context-3KWFLHJG.js} +17 -11
- package/dist/{context-E3KIFVXI.js → context-5RADCKTR.js} +33 -28
- package/dist/{context-clear-3F4PLXOS.js → context-clear-7TSNPAAI.js} +36 -28
- package/dist/{context-index-Q7YSYTR3.js → context-index-W4RLWOQH.js} +10 -4
- package/dist/{docs-YIETIWZI.js → docs-5AWSPS37.js} +16 -10
- package/dist/doctor-UC5NAJYQ.js +77 -0
- package/dist/{eval-B3KZZESM.js → eval-U6TJHRLX.js} +77 -24
- package/dist/{evidence-V67CHM35.js → evidence-YEGUW4L3.js} +34 -26
- package/dist/{evolve-YDZSUQYA.js → evolve-TXARCTPG.js} +39 -26
- package/dist/{extensions-SRG7XCAH.js → extensions-OZFJ3A3G.js} +13 -7
- package/dist/{fleet-CA2CRTVG.js → fleet-6G3DHNYE.js} +45 -37
- package/dist/fleet-preflight-DSNT37JK.js +23 -0
- package/dist/{init-2OZDJE2D.js → init-KZ5QTF6M.js} +42 -34
- package/dist/{memory-3PIQQAKX.js → memory-73ESV5YC.js} +35 -27
- package/dist/{models-DY35XI7Y.js → models-A4PVNWJK.js} +34 -23
- package/dist/{paths-5OMXW7Z4.js → paths-C4H6IV77.js} +12 -6
- package/dist/preload-6WVMHX3A.js +13 -0
- package/dist/{reset-PIFYNOS3.js → reset-BGW6OGMV.js} +17 -11
- package/dist/{run-3VSPP24F.js → run-YTPEYQOH.js} +60 -48
- package/dist/{share-D36RQCXM.js → share-YIFFV4NQ.js} +16 -10
- package/dist/{skills-F2MRLELY.js → skills-2V6RA3OQ.js} +18 -11
- package/dist/{skills-eval-E2ZTW4PL.js → skills-eval-S2TVJO4F.js} +45 -36
- package/dist/{targets-DZMEZAH4.js → targets-TYXLPB23.js} +61 -59
- package/dist/{trace-7NYCUI2J.js → trace-GGOJ6Q6Z.js} +9 -3
- package/dist/{uninstall-AD3JWHBB.js → uninstall-LLLT4F4W.js} +14 -8
- package/dist/{upgrade-WYYBKGDY.js → upgrade-33G2LMM5.js} +45 -23
- package/dist/{usage-ULIDAGFF.js → usage-ZAFSXKKG.js} +35 -27
- package/dist/version-KGEG7EPO.js +21 -0
- package/dist/{wiki-generate-PKFIX6OB.js → wiki-generate-NUQCVOQ3.js} +55 -45
- package/dist/worker/entry.js +101 -43
- package/docs/README.md +12 -9
- package/docs/acp.md +28 -5
- package/docs/alcf-provider.md +1 -1
- package/docs/architecture.md +23 -2
- package/docs/artifact-placement.md +101 -0
- package/docs/artifact-versions.md +1 -1
- package/docs/built-in-agents.md +4 -2
- package/docs/capacity-and-scheduling.md +1 -1
- package/docs/commands-and-modes.md +125 -41
- package/docs/configuration-and-targets.md +88 -18
- package/docs/context-engine.md +6 -2
- package/docs/development-pipeline.md +77 -0
- package/docs/documentation-coverage.md +4 -4
- package/docs/documentation-guide.md +3 -3
- package/docs/environment-variables.md +2 -1
- package/docs/eval-runner.md +3 -3
- package/docs/evals-internal.md +2 -2
- package/docs/evidence-and-memory.md +6 -2
- package/docs/evolution.md +1 -1
- package/docs/exit-codes-and-output.md +1 -1
- package/docs/extensions-and-sharing.md +18 -11
- package/docs/fleet-demo-runbook.md +22 -23
- package/docs/fleet-dispatch.md +111 -12
- package/docs/glossary.md +107 -15
- package/docs/html/agents_blueprint.html +3 -3
- package/docs/html/alcf_blueprint.html +3 -3
- package/docs/html/architecture_blueprint.html +3 -3
- package/docs/html/commands_blueprint.html +187 -42
- package/docs/html/configuration_blueprint.html +7 -7
- package/docs/html/context_blueprint.html +3 -3
- package/docs/html/documentation_blueprint.html +1 -1
- package/docs/html/environment_blueprint.html +3 -3
- package/docs/html/eval_blueprint.html +4 -4
- package/docs/html/evals_internal_blueprint.html +3 -3
- package/docs/html/evolution_blueprint.html +3 -3
- package/docs/html/extensions_blueprint.html +3 -3
- package/docs/html/fleet_dispatch_blueprint.html +8 -8
- package/docs/html/index.html +5 -5
- package/docs/html/lifecycle_blueprint.html +4 -4
- package/docs/html/memory_blueprint.html +3 -3
- package/docs/html/middleware_blueprint.html +3 -3
- package/docs/html/models_blueprint.html +2 -2
- package/docs/html/observability_blueprint.html +2 -2
- package/docs/html/provider_adapter_blueprint.html +3 -3
- package/docs/html/safety_blueprint.html +3 -3
- package/docs/html/skills_blueprint.html +2 -2
- package/docs/html/soak_blueprint.html +3 -3
- package/docs/html/tool_usage_blueprint.html +4 -4
- package/docs/html/tools_blueprint.html +2 -2
- package/docs/html/trace_blueprint.html +3 -3
- package/docs/html/tui_design_blueprint.html +100 -40
- package/docs/html/validation_blueprint.html +1 -1
- package/docs/html/worker_dispatch_blueprint.html +3 -3
- package/docs/installation-and-lifecycle.md +62 -11
- package/docs/middleware-and-components.md +1 -1
- package/docs/model-catalog.md +2 -2
- package/docs/observability.md +3 -3
- package/docs/proactive-memory.md +12 -12
- package/docs/prompt-envelope-and-tools.md +2 -2
- package/docs/provider-adapter-cookbook.md +1 -1
- package/docs/release-cut-checklist.md +4 -0
- package/docs/safety-model.md +21 -5
- package/docs/scientific-validation.md +3 -3
- package/docs/session-lifecycle.md +2 -2
- package/docs/skills-marketplace.md +1 -1
- package/docs/time-conventions.md +101 -0
- package/docs/tool-usage.md +5 -4
- package/docs/trace-store.md +1 -1
- package/docs/troubleshooting.md +1 -1
- package/docs/tui-design.md +83 -27
- package/docs/worker-dispatch-mechanics.md +3 -3
- package/package.json +16 -16
- package/skills/README.md +5 -6
- package/skills/git/file-ticket/SKILL.md +107 -0
- package/skills/git/file-ticket/evals.md +54 -0
- package/skills/git/fix-issue/SKILL.md +106 -0
- package/skills/git/fix-issue/evals.md +71 -0
- package/skills/git/ship/SKILL.md +92 -0
- package/skills/git/ship/evals.md +72 -0
- package/skills/skill-marketplace.json +12 -20
- package/src/cli/acp.ts +88 -0
- package/src/cli/agents.ts +60 -0
- package/src/cli/args.ts +280 -0
- package/src/cli/argv.ts +170 -0
- package/src/cli/ask.ts +34 -0
- package/src/cli/auth.ts +468 -0
- package/src/cli/bootstrap-generate.ts +498 -0
- package/src/cli/clio.ts +34 -0
- package/src/cli/components.ts +195 -0
- package/src/cli/config-inspect.ts +330 -0
- package/src/cli/config.ts +72 -0
- package/src/cli/configure-interop.ts +67 -0
- package/src/cli/configure-layout.ts +172 -0
- package/src/cli/configure.ts +1487 -0
- package/src/cli/context-clear.ts +76 -0
- package/src/cli/context-index.ts +102 -0
- package/src/cli/context.ts +316 -0
- package/src/cli/default-target.ts +63 -0
- package/src/cli/docs.ts +340 -0
- package/src/cli/doctor.ts +54 -0
- package/src/cli/eval.ts +315 -0
- package/src/cli/evidence.ts +222 -0
- package/src/cli/evolve.ts +219 -0
- package/src/cli/extensions.ts +205 -0
- package/src/cli/fleet.ts +827 -0
- package/src/cli/index.ts +309 -0
- package/src/cli/init.ts +219 -0
- package/src/cli/initial-message.ts +47 -0
- package/src/cli/internal-dispatch.ts +55 -0
- package/src/cli/memory.ts +180 -0
- package/src/cli/models.ts +257 -0
- package/src/cli/modes/json-stream.ts +85 -0
- package/src/cli/modes/jsonl.ts +9 -0
- package/src/cli/modes/print.ts +589 -0
- package/src/cli/oauth-manual-input.ts +72 -0
- package/src/cli/oauth-select.ts +36 -0
- package/src/cli/output-guard.ts +48 -0
- package/src/cli/paths.ts +44 -0
- package/src/cli/provider-target.ts +113 -0
- package/src/cli/removal.ts +72 -0
- package/src/cli/reset.ts +253 -0
- package/src/cli/run.ts +497 -0
- package/src/cli/share.ts +243 -0
- package/src/cli/shared.ts +60 -0
- package/src/cli/skills-eval.ts +1225 -0
- package/src/cli/skills.ts +470 -0
- package/src/cli/steer-channel.ts +86 -0
- package/src/cli/targets.ts +1150 -0
- package/src/cli/text-layout.ts +102 -0
- package/src/cli/trace.ts +274 -0
- package/src/cli/uninstall.ts +405 -0
- package/src/cli/upgrade.ts +270 -0
- package/src/cli/usage.ts +869 -0
- package/src/cli/validate-model.ts +28 -0
- package/src/cli/version.ts +7 -0
- package/src/cli/wiki-generate.ts +509 -0
- package/src/core/artifact-paths.ts +43 -0
- package/src/core/bash-exec.ts +242 -0
- package/src/core/boot-trace.ts +37 -0
- package/src/core/bus-events.ts +728 -0
- package/src/core/bus-trace.ts +53 -0
- package/src/core/c-header-language.ts +265 -0
- package/src/core/clio-repo.ts +78 -0
- package/src/core/config.ts +1593 -0
- package/src/core/context-floor.ts +33 -0
- package/src/core/defaults.ts +625 -0
- package/src/core/domain-loader.ts +170 -0
- package/src/core/event-bus.ts +94 -0
- package/src/core/file-references.ts +282 -0
- package/src/core/guardrails.ts +185 -0
- package/src/core/headless-permission.ts +21 -0
- package/src/core/init.ts +223 -0
- package/src/core/json-payload.ts +58 -0
- package/src/core/package-root.ts +54 -0
- package/src/core/path-canonical.ts +37 -0
- package/src/core/process-identity.ts +41 -0
- package/src/core/recent-models.ts +91 -0
- package/src/core/release.ts +2 -0
- package/src/core/residency-protection.ts +56 -0
- package/src/core/resolve-config-value.ts +88 -0
- package/src/core/response-schema.ts +279 -0
- package/src/core/run-overrides.ts +77 -0
- package/src/core/safe-exec.ts +193 -0
- package/src/core/safe-id.ts +37 -0
- package/src/core/safe-resource-write.ts +162 -0
- package/src/core/session-routing.ts +339 -0
- package/src/core/settings-layers.ts +220 -0
- package/src/core/shared-bus.ts +8 -0
- package/src/core/shell-quote.ts +26 -0
- package/src/core/skill-activation.ts +190 -0
- package/src/core/startup-timer.ts +37 -0
- package/src/core/state-file-lock.ts +207 -0
- package/src/core/termination.ts +202 -0
- package/src/core/timers.ts +38 -0
- package/src/core/tool-names.ts +65 -0
- package/src/core/verification-scripts.ts +13 -0
- package/src/core/workspace-files.ts +492 -0
- package/src/core/xdg.ts +177 -0
- package/src/domains/agents/builtins/architect.md +4 -4
- package/src/domains/agents/builtins/coder.md +3 -2
- package/src/domains/agents/builtins/debugger.md +1 -1
- package/src/domains/agents/builtins/documenter.md +1 -1
- package/src/domains/agents/builtins/git-master.md +3 -3
- package/src/domains/agents/builtins/provenance.md +1 -1
- package/src/domains/agents/builtins/researcher.md +1 -1
- package/src/domains/agents/builtins/scout.md +1 -1
- package/src/domains/agents/builtins/tester.md +1 -1
- package/src/domains/agents/builtins/verifier.md +1 -1
- package/src/domains/agents/builtins/wiki-writer.md +1 -1
- package/src/domains/agents/catalog.ts +172 -0
- package/src/domains/agents/contract.ts +16 -0
- package/src/domains/agents/extension.ts +110 -0
- package/src/domains/agents/fleet-commands.ts +154 -0
- package/src/domains/agents/fleet-contract.ts +797 -0
- package/src/domains/agents/frontmatter.ts +40 -0
- package/src/domains/agents/index.ts +102 -0
- package/src/domains/agents/manifest.ts +6 -0
- package/src/domains/agents/recipe-schema.ts +202 -0
- package/src/domains/agents/recipe.ts +125 -0
- package/src/domains/agents/registry.ts +111 -0
- package/src/domains/agents/result-contract.ts +1265 -0
- package/src/domains/agents/spec.ts +371 -0
- package/src/domains/agents/write-boundary.ts +109 -0
- package/src/domains/components/diff.ts +99 -0
- package/src/domains/components/hash.ts +21 -0
- package/src/domains/components/index.ts +3 -0
- package/src/domains/components/scan.ts +304 -0
- package/src/domains/components/snapshot.ts +108 -0
- package/src/domains/components/types.ts +82 -0
- package/src/domains/config/agent-namespace.ts +13 -0
- package/src/domains/config/classify.ts +94 -0
- package/src/domains/config/contract.ts +22 -0
- package/src/domains/config/extension.ts +136 -0
- package/src/domains/config/index.ts +13 -0
- package/src/domains/config/keybindings.ts +164 -0
- package/src/domains/config/manifest.ts +6 -0
- package/src/domains/config/watcher.ts +41 -0
- package/src/domains/context/adoption.ts +880 -0
- package/src/domains/context/bootstrap-prompt.ts +273 -0
- package/src/domains/context/bootstrap.ts +1409 -0
- package/src/domains/context/clear.ts +86 -0
- package/src/domains/context/clio-md.ts +327 -0
- package/src/domains/context/codewiki/cmake.ts +356 -0
- package/src/domains/context/codewiki/cooperative.ts +46 -0
- package/src/domains/context/codewiki/digest.ts +135 -0
- package/src/domains/context/codewiki/grammar-assets.ts +33 -0
- package/src/domains/context/codewiki/indexer.ts +1614 -0
- package/src/domains/context/codewiki/tree-sitter.ts +771 -0
- package/src/domains/context/contract.ts +62 -0
- package/src/domains/context/excluded-dirs.ts +1 -0
- package/src/domains/context/extension.ts +407 -0
- package/src/domains/context/fingerprint.ts +196 -0
- package/src/domains/context/index.ts +164 -0
- package/src/domains/context/init-options.ts +69 -0
- package/src/domains/context/manifest.ts +6 -0
- package/src/domains/context/operator-profile.ts +157 -0
- package/src/domains/context/project-metadata.ts +510 -0
- package/src/domains/context/project-rules.ts +227 -0
- package/src/domains/context/prompt-context.ts +62 -0
- package/src/domains/context/refresh.ts +170 -0
- package/src/domains/context/sibling-files.ts +10 -0
- package/src/domains/context/state.ts +237 -0
- package/src/domains/context/wiki/assemble.ts +303 -0
- package/src/domains/context/wiki/frontmatter.ts +210 -0
- package/src/domains/context/wiki/generate.ts +590 -0
- package/src/domains/context/wiki/layout.ts +111 -0
- package/src/domains/context/wiki/meta.ts +221 -0
- package/src/domains/context/wiki/plan-store.ts +217 -0
- package/src/domains/context/wiki/plan.ts +250 -0
- package/src/domains/context/wiki/prompts.ts +270 -0
- package/src/domains/context/wiki/staleness.ts +198 -0
- package/src/domains/dispatch/active-route-planner.ts +168 -0
- package/src/domains/dispatch/admission-queue.ts +150 -0
- package/src/domains/dispatch/admission.ts +334 -0
- package/src/domains/dispatch/agent-candidates.ts +307 -0
- package/src/domains/dispatch/agent-ledger-hub.ts +71 -0
- package/src/domains/dispatch/agent-ledger-store.ts +257 -0
- package/src/domains/dispatch/agent-ledger.ts +212 -0
- package/src/domains/dispatch/agent-plan-adapter.ts +85 -0
- package/src/domains/dispatch/assignment-events.ts +132 -0
- package/src/domains/dispatch/assignment-reconcile.ts +76 -0
- package/src/domains/dispatch/assignment-store.ts +162 -0
- package/src/domains/dispatch/assignment.ts +278 -0
- package/src/domains/dispatch/backoff.ts +59 -0
- package/src/domains/dispatch/batch-store.ts +134 -0
- package/src/domains/dispatch/batch-tracker.ts +66 -0
- package/src/domains/dispatch/capability-match.ts +155 -0
- package/src/domains/dispatch/capacity-lease.ts +413 -0
- package/src/domains/dispatch/code-step-store.ts +52 -0
- package/src/domains/dispatch/code-step.ts +368 -0
- package/src/domains/dispatch/contract.ts +278 -0
- package/src/domains/dispatch/dedup.ts +133 -0
- package/src/domains/dispatch/event-pump.ts +251 -0
- package/src/domains/dispatch/execution-handoff.ts +29 -0
- package/src/domains/dispatch/execution-plan.ts +328 -0
- package/src/domains/dispatch/execution-role.ts +277 -0
- package/src/domains/dispatch/execution-scheduler.ts +583 -0
- package/src/domains/dispatch/extension.ts +5869 -0
- package/src/domains/dispatch/failure-classification.ts +141 -0
- package/src/domains/dispatch/fleet-plan.ts +225 -0
- package/src/domains/dispatch/fleet-preflight.ts +394 -0
- package/src/domains/dispatch/gate-decisions.ts +1040 -0
- package/src/domains/dispatch/gate-role-prompts.ts +58 -0
- package/src/domains/dispatch/heartbeat.ts +27 -0
- package/src/domains/dispatch/index.ts +137 -0
- package/src/domains/dispatch/joint-route-adapter.ts +114 -0
- package/src/domains/dispatch/joint-route-resolver.ts +283 -0
- package/src/domains/dispatch/manifest.ts +6 -0
- package/src/domains/dispatch/orphan-recovery.ts +224 -0
- package/src/domains/dispatch/outcome.ts +109 -0
- package/src/domains/dispatch/phase-timing.ts +47 -0
- package/src/domains/dispatch/placement.ts +202 -0
- package/src/domains/dispatch/receipt-findings.ts +255 -0
- package/src/domains/dispatch/receipt-integrity.ts +378 -0
- package/src/domains/dispatch/recovery-candidates.ts +74 -0
- package/src/domains/dispatch/reproducibility.ts +48 -0
- package/src/domains/dispatch/reservation-store.ts +501 -0
- package/src/domains/dispatch/route-approval.ts +177 -0
- package/src/domains/dispatch/route-candidates.ts +57 -0
- package/src/domains/dispatch/route-decision.ts +1079 -0
- package/src/domains/dispatch/route-facts.ts +187 -0
- package/src/domains/dispatch/route-history.ts +238 -0
- package/src/domains/dispatch/route-observer.ts +488 -0
- package/src/domains/dispatch/route-policy.ts +327 -0
- package/src/domains/dispatch/route-quality.ts +256 -0
- package/src/domains/dispatch/route-readiness.ts +120 -0
- package/src/domains/dispatch/routing-intent.ts +287 -0
- package/src/domains/dispatch/run-identity.ts +56 -0
- package/src/domains/dispatch/scout-transition.ts +130 -0
- package/src/domains/dispatch/state.ts +277 -0
- package/src/domains/dispatch/tool-stats.ts +132 -0
- package/src/domains/dispatch/transport.ts +209 -0
- package/src/domains/dispatch/types.ts +785 -0
- package/src/domains/dispatch/validation-grounding.ts +154 -0
- package/src/domains/dispatch/validation.ts +721 -0
- package/src/domains/dispatch/worker-protocol.ts +275 -0
- package/src/domains/dispatch/worker-spawn.ts +566 -0
- package/src/domains/dispatch/write-boundary-enforcer.ts +97 -0
- package/src/domains/dispatch/write-boundary.ts +426 -0
- package/src/domains/eval/artifacts/redact.ts +42 -0
- package/src/domains/eval/artifacts/store.ts +173 -0
- package/src/domains/eval/compare/compare.ts +33 -0
- package/src/domains/eval/compare/gates.ts +66 -0
- package/src/domains/eval/compare/thresholds.ts +92 -0
- package/src/domains/eval/harness-metrics.ts +62 -0
- package/src/domains/eval/index.ts +66 -0
- package/src/domains/eval/metrics/chaos-stream.ts +93 -0
- package/src/domains/eval/metrics/context.ts +34 -0
- package/src/domains/eval/metrics/coverage.ts +21 -0
- package/src/domains/eval/metrics/evidence.ts +182 -0
- package/src/domains/eval/metrics/fleet-loop-stream.ts +196 -0
- package/src/domains/eval/metrics/invariants.ts +736 -0
- package/src/domains/eval/metrics/latency.ts +4 -0
- package/src/domains/eval/metrics/token-stream.ts +139 -0
- package/src/domains/eval/metrics/tokens.ts +51 -0
- package/src/domains/eval/metrics/tool-calls.ts +7 -0
- package/src/domains/eval/proactive-memory.ts +279 -0
- package/src/domains/eval/provenance.ts +35 -0
- package/src/domains/eval/report.ts +234 -0
- package/src/domains/eval/reports/json.ts +5 -0
- package/src/domains/eval/reports/junit.ts +23 -0
- package/src/domains/eval/reports/markdown.ts +20 -0
- package/src/domains/eval/reports/swe-jsonl.ts +16 -0
- package/src/domains/eval/reports/text.ts +25 -0
- package/src/domains/eval/run-compare.ts +274 -0
- package/src/domains/eval/runner.ts +244 -0
- package/src/domains/eval/runners/clio-run.ts +148 -0
- package/src/domains/eval/runners/context-index.ts +56 -0
- package/src/domains/eval/runners/context-init.ts +203 -0
- package/src/domains/eval/runners/external-command.ts +350 -0
- package/src/domains/eval/runtime-paths.ts +171 -0
- package/src/domains/eval/schema/artifact.ts +75 -0
- package/src/domains/eval/schema/suite.ts +235 -0
- package/src/domains/eval/schema/validate.ts +339 -0
- package/src/domains/eval/store.ts +392 -0
- package/src/domains/eval/suites/load.ts +74 -0
- package/src/domains/eval/suites/matrix.ts +19 -0
- package/src/domains/eval/suites/resolve.ts +44 -0
- package/src/domains/eval/suites/run.ts +325 -0
- package/src/domains/eval/task-file.ts +186 -0
- package/src/domains/eval/types.ts +141 -0
- package/src/domains/eval/verifiers/command.ts +27 -0
- package/src/domains/eval/verifiers/file-exists.ts +6 -0
- package/src/domains/eval/verifiers/patch.ts +22 -0
- package/src/domains/eval/workspaces/git.ts +41 -0
- package/src/domains/eval/workspaces/local.ts +17 -0
- package/src/domains/eval/workspaces/temp-copy.ts +29 -0
- package/src/domains/evidence/build.ts +1714 -0
- package/src/domains/evidence/eval.ts +605 -0
- package/src/domains/evidence/failure-attribution.ts +54 -0
- package/src/domains/evidence/finish-contract-map.ts +42 -0
- package/src/domains/evidence/index.ts +55 -0
- package/src/domains/evidence/provenance.ts +200 -0
- package/src/domains/evidence/redact.ts +81 -0
- package/src/domains/evidence/store.ts +291 -0
- package/src/domains/evidence/types.ts +325 -0
- package/src/domains/evolution/SELF_EDIT_GATE.md +91 -0
- package/src/domains/evolution/index.ts +26 -0
- package/src/domains/evolution/manifest.ts +154 -0
- package/src/domains/evolution/validate.ts +304 -0
- package/src/domains/extensions/contract.ts +22 -0
- package/src/domains/extensions/discovery.ts +193 -0
- package/src/domains/extensions/extension.ts +46 -0
- package/src/domains/extensions/index.ts +34 -0
- package/src/domains/extensions/manager.ts +30 -0
- package/src/domains/extensions/manifest.ts +6 -0
- package/src/domains/extensions/resources.ts +38 -0
- package/src/domains/extensions/state.ts +224 -0
- package/src/domains/extensions/types.ts +83 -0
- package/src/domains/interop/consent.ts +185 -0
- package/src/domains/interop/contract.ts +29 -0
- package/src/domains/interop/detect.ts +173 -0
- package/src/domains/interop/extension.ts +59 -0
- package/src/domains/interop/index.ts +34 -0
- package/src/domains/interop/manifest.ts +6 -0
- package/src/domains/interop/registry.ts +139 -0
- package/src/domains/interop/state.ts +92 -0
- package/src/domains/interop/types.ts +109 -0
- package/src/domains/lifecycle/contract.ts +11 -0
- package/src/domains/lifecycle/doctor.ts +536 -0
- package/src/domains/lifecycle/extension.ts +23 -0
- package/src/domains/lifecycle/index.ts +21 -0
- package/src/domains/lifecycle/install-method.ts +51 -0
- package/src/domains/lifecycle/manifest.ts +6 -0
- package/src/domains/lifecycle/migrations/index.ts +94 -0
- package/src/domains/lifecycle/state.ts +93 -0
- package/src/domains/lifecycle/upgrade-notice.ts +35 -0
- package/src/domains/lifecycle/version.ts +35 -0
- package/src/domains/memory/index.ts +128 -0
- package/src/domains/memory/operations.ts +143 -0
- package/src/domains/memory/prompt-section.ts +86 -0
- package/src/domains/memory/proposal.ts +180 -0
- package/src/domains/memory/store.ts +163 -0
- package/src/domains/memory/task-bank.ts +229 -0
- package/src/domains/memory/task-memory-handoff.ts +222 -0
- package/src/domains/memory/task-memory-policy.ts +602 -0
- package/src/domains/memory/task-memory-status.ts +58 -0
- package/src/domains/memory/task-memory-telemetry.ts +346 -0
- package/src/domains/memory/task-memory-trace.ts +89 -0
- package/src/domains/memory/types.ts +74 -0
- package/src/domains/memory/validate.ts +297 -0
- package/src/domains/middleware/budget.ts +216 -0
- package/src/domains/middleware/contract.ts +35 -0
- package/src/domains/middleware/dispatch-nudge.ts +469 -0
- package/src/domains/middleware/extension.ts +129 -0
- package/src/domains/middleware/hook-receipts.ts +70 -0
- package/src/domains/middleware/hooks-io.ts +174 -0
- package/src/domains/middleware/hooks.ts +432 -0
- package/src/domains/middleware/index.ts +154 -0
- package/src/domains/middleware/manifest.ts +6 -0
- package/src/domains/middleware/memory-intervention.ts +701 -0
- package/src/domains/middleware/rules.ts +42 -0
- package/src/domains/middleware/runtime.ts +333 -0
- package/src/domains/middleware/skills-reminder.ts +187 -0
- package/src/domains/middleware/snapshot.ts +71 -0
- package/src/domains/middleware/stalled-turn.ts +71 -0
- package/src/domains/middleware/task-board-reminder.ts +87 -0
- package/src/domains/middleware/task-nudge.ts +77 -0
- package/src/domains/middleware/tool-choice-control.ts +42 -0
- package/src/domains/middleware/types.ts +131 -0
- package/src/domains/middleware/validate.ts +329 -0
- package/src/domains/observability/accountability.ts +67 -0
- package/src/domains/observability/contract.ts +168 -0
- package/src/domains/observability/cost.ts +206 -0
- package/src/domains/observability/evidence-index.ts +123 -0
- package/src/domains/observability/extension.ts +281 -0
- package/src/domains/observability/index.ts +78 -0
- package/src/domains/observability/manifest.ts +10 -0
- package/src/domains/observability/metrics.ts +37 -0
- package/src/domains/observability/projection.ts +477 -0
- package/src/domains/observability/telemetry.ts +89 -0
- package/src/domains/observability/trace-store.ts +1454 -0
- package/src/domains/prompts/compiler.ts +556 -0
- package/src/domains/prompts/contract.ts +30 -0
- package/src/domains/prompts/extension.ts +304 -0
- package/src/domains/prompts/fragment-loader.ts +139 -0
- package/src/domains/prompts/fragments/identity/clio.md +3 -2
- package/src/domains/prompts/fragments/identity/self-awareness.md +63 -0
- package/src/domains/prompts/fragments/operating/contract.md +10 -1
- package/src/domains/prompts/hash.ts +73 -0
- package/src/domains/prompts/index.ts +32 -0
- package/src/domains/prompts/manifest.ts +8 -0
- package/src/domains/prompts/memory-intervention.ts +57 -0
- package/src/domains/prompts/preload.ts +82 -0
- package/src/domains/providers/auth/api-key.ts +47 -0
- package/src/domains/providers/auth/backend-file.ts +69 -0
- package/src/domains/providers/auth/backend-memory.ts +17 -0
- package/src/domains/providers/auth/index.ts +37 -0
- package/src/domains/providers/auth/oauth.ts +36 -0
- package/src/domains/providers/auth/storage.ts +667 -0
- package/src/domains/providers/capabilities.ts +50 -0
- package/src/domains/providers/catalog.ts +162 -0
- package/src/domains/providers/contract.ts +151 -0
- package/src/domains/providers/credentials.ts +20 -0
- package/src/domains/providers/eligibility.ts +24 -0
- package/src/domains/providers/errors.ts +64 -0
- package/src/domains/providers/extension.ts +536 -0
- package/src/domains/providers/index.ts +142 -0
- package/src/domains/providers/knowledge-base-path.ts +102 -0
- package/src/domains/providers/manifest.ts +6 -0
- package/src/domains/providers/model-capabilities.ts +136 -0
- package/src/domains/providers/model-discovery.ts +144 -0
- package/src/domains/providers/model-family.ts +32 -0
- package/src/domains/providers/model-runtime-capabilities.ts +712 -0
- package/src/domains/providers/models/local-models/clio-local-coding-targets.yaml +2 -2
- package/src/domains/providers/plugins.ts +59 -0
- package/src/domains/providers/probe/fingerprint.ts +44 -0
- package/src/domains/providers/probe/http.ts +114 -0
- package/src/domains/providers/probe/reasoning.ts +111 -0
- package/src/domains/providers/registry.ts +166 -0
- package/src/domains/providers/resolver.ts +156 -0
- package/src/domains/providers/runtime-resolution.ts +720 -0
- package/src/domains/providers/runtimes/antigravity/antigravity-code.ts +90 -0
- package/src/domains/providers/runtimes/builtins.ts +78 -0
- package/src/domains/providers/runtimes/claude/claude-code.ts +38 -0
- package/src/domains/providers/runtimes/claude/claude-sdk.ts +38 -0
- package/src/domains/providers/runtimes/claude/common.ts +55 -0
- package/src/domains/providers/runtimes/cloud/alcf.ts +171 -0
- package/src/domains/providers/runtimes/cloud/anthropic-max.ts +71 -0
- package/src/domains/providers/runtimes/cloud/anthropic.ts +43 -0
- package/src/domains/providers/runtimes/cloud/bedrock.ts +35 -0
- package/src/domains/providers/runtimes/cloud/deepseek.ts +50 -0
- package/src/domains/providers/runtimes/cloud/google.ts +41 -0
- package/src/domains/providers/runtimes/cloud/groq.ts +46 -0
- package/src/domains/providers/runtimes/cloud/mistral.ts +46 -0
- package/src/domains/providers/runtimes/cloud/openai-codex.ts +49 -0
- package/src/domains/providers/runtimes/cloud/openai.ts +46 -0
- package/src/domains/providers/runtimes/cloud/openrouter.ts +111 -0
- package/src/domains/providers/runtimes/common/lmstudio-logger.ts +32 -0
- package/src/domains/providers/runtimes/common/local-synth.ts +165 -0
- package/src/domains/providers/runtimes/common/probe-helpers.ts +474 -0
- package/src/domains/providers/runtimes/local-native/lemonade-anthropic.ts +27 -0
- package/src/domains/providers/runtimes/local-native/lemonade-openai.ts +26 -0
- package/src/domains/providers/runtimes/local-native/llamacpp-anthropic.ts +88 -0
- package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +207 -0
- package/src/domains/providers/runtimes/local-native/llamacpp-embed.ts +180 -0
- package/src/domains/providers/runtimes/local-native/llamacpp-rerank.ts +126 -0
- package/src/domains/providers/runtimes/local-native/llamacpp.ts +98 -0
- package/src/domains/providers/runtimes/local-native/lmstudio-native.ts +491 -0
- package/src/domains/providers/runtimes/local-native/ollama-native.ts +117 -0
- package/src/domains/providers/runtimes/local-native/sglang.ts +26 -0
- package/src/domains/providers/runtimes/local-native/vllm.ts +27 -0
- package/src/domains/providers/runtimes/protocol/anthropic-compat.ts +104 -0
- package/src/domains/providers/runtimes/protocol/anthropic-messages.ts +28 -0
- package/src/domains/providers/runtimes/protocol/bedrock.ts +26 -0
- package/src/domains/providers/runtimes/protocol/google.ts +27 -0
- package/src/domains/providers/runtimes/protocol/openai-compat.ts +145 -0
- package/src/domains/providers/support.ts +238 -0
- package/src/domains/providers/thinking-control-policy.ts +85 -0
- package/src/domains/providers/types/capability-flags.ts +114 -0
- package/src/domains/providers/types/cost-provenance.ts +7 -0
- package/src/domains/providers/types/inference.ts +41 -0
- package/src/domains/providers/types/knowledge-base.ts +156 -0
- package/src/domains/providers/types/local-model-quirks.ts +218 -0
- package/src/domains/providers/types/runtime-descriptor.ts +170 -0
- package/src/domains/providers/types/target-descriptor.ts +38 -0
- package/src/domains/resources/collision.ts +92 -0
- package/src/domains/resources/common-loader.ts +140 -0
- package/src/domains/resources/contract.ts +25 -0
- package/src/domains/resources/extension.ts +61 -0
- package/src/domains/resources/index.ts +74 -0
- package/src/domains/resources/loader.ts +86 -0
- package/src/domains/resources/manifest.ts +6 -0
- package/src/domains/resources/prompts/loader.ts +232 -0
- package/src/domains/resources/prompts/substitute.ts +65 -0
- package/src/domains/resources/skills/content-hash.ts +105 -0
- package/src/domains/resources/skills/evals.ts +175 -0
- package/src/domains/resources/skills/install.ts +410 -0
- package/src/domains/resources/skills/loader.ts +978 -0
- package/src/domains/resources/skills/marketplace.ts +255 -0
- package/src/domains/resources/skills/provenance-pin.ts +115 -0
- package/src/domains/safety/action-classifier.ts +268 -0
- package/src/domains/safety/approval-axis.ts +23 -0
- package/src/domains/safety/audit.ts +487 -0
- package/src/domains/safety/autonomy.ts +174 -0
- package/src/domains/safety/call-target.ts +59 -0
- package/src/domains/safety/contract.ts +65 -0
- package/src/domains/safety/damage-control.ts +44 -0
- package/src/domains/safety/default-path-policy.ts +117 -0
- package/src/domains/safety/extension.ts +383 -0
- package/src/domains/safety/finish-contract-registration.ts +128 -0
- package/src/domains/safety/finish-contract.ts +554 -0
- package/src/domains/safety/index.ts +44 -0
- package/src/domains/safety/loop-detector.ts +143 -0
- package/src/domains/safety/manifest.ts +6 -0
- package/src/domains/safety/path-policy.ts +164 -0
- package/src/domains/safety/policy-engine.ts +994 -0
- package/src/domains/safety/project-policy.ts +391 -0
- package/src/domains/safety/protected-artifacts-registration.ts +189 -0
- package/src/domains/safety/protected-artifacts.ts +993 -0
- package/src/domains/safety/rejection-feedback.ts +102 -0
- package/src/domains/safety/rigor.ts +72 -0
- package/src/domains/safety/rule-compiler.ts +48 -0
- package/src/domains/safety/rule-pack-loader.ts +92 -0
- package/src/domains/safety/run-effects.ts +197 -0
- package/src/domains/safety/scope.ts +61 -0
- package/src/domains/scheduling/budget.ts +35 -0
- package/src/domains/scheduling/cluster.ts +175 -0
- package/src/domains/scheduling/contract.ts +30 -0
- package/src/domains/scheduling/extension.ts +91 -0
- package/src/domains/scheduling/index.ts +12 -0
- package/src/domains/scheduling/manifest.ts +6 -0
- package/src/domains/session/archive-readers.ts +208 -0
- package/src/domains/session/checkpoint.ts +38 -0
- package/src/domains/session/compaction/auto.ts +89 -0
- package/src/domains/session/compaction/branch-summary.ts +186 -0
- package/src/domains/session/compaction/compact.ts +493 -0
- package/src/domains/session/compaction/cut-point.ts +171 -0
- package/src/domains/session/compaction/defaults.ts +34 -0
- package/src/domains/session/compaction/mask-observations.ts +265 -0
- package/src/domains/session/compaction/session-entries.ts +18 -0
- package/src/domains/session/compaction/tokens.ts +147 -0
- package/src/domains/session/context-accounting.ts +583 -0
- package/src/domains/session/context-ledger.ts +348 -0
- package/src/domains/session/contract.ts +144 -0
- package/src/domains/session/cwd-fallback.ts +65 -0
- package/src/domains/session/entries.ts +509 -0
- package/src/domains/session/extension.ts +322 -0
- package/src/domains/session/history.ts +172 -0
- package/src/domains/session/index.ts +84 -0
- package/src/domains/session/manager.ts +128 -0
- package/src/domains/session/manifest.ts +6 -0
- package/src/domains/session/migrations/index.ts +27 -0
- package/src/domains/session/prompt-manifest.ts +173 -0
- package/src/domains/session/protected-artifact-journal.ts +241 -0
- package/src/domains/session/protected-artifacts.ts +90 -0
- package/src/domains/session/retry.ts +238 -0
- package/src/domains/session/task-board.ts +375 -0
- package/src/domains/session/tree/active-path.ts +98 -0
- package/src/domains/session/tree/fork.ts +160 -0
- package/src/domains/session/tree/manager.ts +128 -0
- package/src/domains/session/tree/navigator.ts +177 -0
- package/src/domains/session/tree/preview.ts +259 -0
- package/src/domains/session/usage.ts +148 -0
- package/src/domains/session/workspace/git-probe.ts +161 -0
- package/src/domains/session/workspace/index.ts +4 -0
- package/src/domains/session/workspace/project-type.ts +217 -0
- package/src/domains/session/workspace/snapshot.ts +74 -0
- package/src/domains/share/archive.ts +684 -0
- package/src/domains/share/contract.ts +9 -0
- package/src/domains/share/extension.ts +26 -0
- package/src/domains/share/index.ts +28 -0
- package/src/domains/share/manifest.ts +6 -0
- package/src/engine/acp/adapter.ts +397 -0
- package/src/engine/acp/errors.ts +32 -0
- package/src/engine/acp/event-mapper.ts +154 -0
- package/src/engine/acp/server.ts +656 -0
- package/src/engine/acp/tool-mediator.ts +686 -0
- package/src/engine/acp/transport.ts +654 -0
- package/src/engine/acp/types.ts +170 -0
- package/src/engine/agent.ts +29 -0
- package/src/engine/ai.ts +202 -0
- package/src/engine/alcf-oauth.ts +198 -0
- package/src/engine/antigravity/subprocess-runtime.ts +205 -0
- package/src/engine/apis/degraded-inference.ts +95 -0
- package/src/engine/apis/index.ts +20 -0
- package/src/engine/apis/llamacpp-residency.ts +252 -0
- package/src/engine/apis/lmstudio-native.ts +1438 -0
- package/src/engine/apis/lmstudio-residency.ts +92 -0
- package/src/engine/apis/ollama-native.ts +507 -0
- package/src/engine/apis/openai-completions.ts +716 -0
- package/src/engine/apis/output-budget.ts +99 -0
- package/src/engine/apis/residency-lock.ts +29 -0
- package/src/engine/apis/residency.ts +640 -0
- package/src/engine/apis/resident-models.ts +42 -0
- package/src/engine/apis/sampling-overrides.ts +38 -0
- package/src/engine/apis/thinking-replay.ts +11 -0
- package/src/engine/claude/sdk-runtime.ts +685 -0
- package/src/engine/claude/session-id.ts +5 -0
- package/src/engine/claude/subprocess-runtime.ts +316 -0
- package/src/engine/claude/tool-safety.ts +400 -0
- package/src/engine/external-subprocess.ts +23 -0
- package/src/engine/harmony-response.ts +165 -0
- package/src/engine/loop-guard.ts +1127 -0
- package/src/engine/oauth.ts +192 -0
- package/src/engine/pi-mono-names.ts +13 -0
- package/src/engine/provider-payload.ts +315 -0
- package/src/engine/select-list.ts +53 -0
- package/src/engine/session.ts +834 -0
- package/src/engine/strip-tokenizer-sentinels.ts +125 -0
- package/src/engine/tui.ts +103 -0
- package/src/engine/types.ts +66 -0
- package/src/engine/worker-events.ts +100 -0
- package/src/engine/worker-runtime.ts +1022 -0
- package/src/engine/worker-tools.ts +203 -0
- package/src/entry/orchestrator.ts +1873 -0
- package/src/interactive/application-controller.ts +346 -0
- package/src/interactive/bus-notices.ts +265 -0
- package/src/interactive/chat-loop-messages.ts +626 -0
- package/src/interactive/chat-loop-policy.ts +18 -0
- package/src/interactive/chat-loop.ts +865 -0
- package/src/interactive/chat-panel.ts +1694 -0
- package/src/interactive/chat-renderer.ts +1038 -0
- package/src/interactive/clio-editor.ts +166 -0
- package/src/interactive/command-fallbacks.ts +23 -0
- package/src/interactive/command-output.ts +85 -0
- package/src/interactive/context-activity.ts +203 -0
- package/src/interactive/context-meter.ts +223 -0
- package/src/interactive/context-overlay.ts +220 -0
- package/src/interactive/cost-overlay.ts +279 -0
- package/src/interactive/dispatch-board.ts +1319 -0
- package/src/interactive/dispatch-steering.ts +86 -0
- package/src/interactive/editor-bash.ts +46 -0
- package/src/interactive/editor-steer.ts +51 -0
- package/src/interactive/editor-submit.ts +303 -0
- package/src/interactive/external-editor.ts +67 -0
- package/src/interactive/follow-up-queue-panel.ts +75 -0
- package/src/interactive/footer/dashboard.ts +534 -0
- package/src/interactive/footer/notifications.ts +275 -0
- package/src/interactive/footer/widgets.ts +1246 -0
- package/src/interactive/footer-panel.ts +187 -0
- package/src/interactive/format-time.ts +85 -0
- package/src/interactive/index.ts +11 -0
- package/src/interactive/interactive-application.ts +755 -0
- package/src/interactive/interactive-event-projection.ts +380 -0
- package/src/interactive/interactive-input-runtime.ts +261 -0
- package/src/interactive/interactive-presentation.ts +452 -0
- package/src/interactive/interactive-shell.ts +134 -0
- package/src/interactive/interactive-slash-runtime.ts +492 -0
- package/src/interactive/interactive-subscriptions.ts +111 -0
- package/src/interactive/interactive-tickers.ts +152 -0
- package/src/interactive/keybinding-manager.ts +496 -0
- package/src/interactive/layout.ts +20 -0
- package/src/interactive/leader-key.ts +143 -0
- package/src/interactive/loop-guard-interrupt.ts +101 -0
- package/src/interactive/memory-overlay.ts +280 -0
- package/src/interactive/overlay-ask-user-lifecycle.ts +110 -0
- package/src/interactive/overlay-auth-lifecycle.ts +308 -0
- package/src/interactive/overlay-frame.ts +502 -0
- package/src/interactive/overlay-general-openers.ts +217 -0
- package/src/interactive/overlay-key-routing.ts +213 -0
- package/src/interactive/overlay-lifecycle.ts +413 -0
- package/src/interactive/overlay-model-selectors.ts +127 -0
- package/src/interactive/overlay-permission-lifecycle.ts +344 -0
- package/src/interactive/overlay-resource-openers.ts +112 -0
- package/src/interactive/overlay-session-lifecycle.ts +270 -0
- package/src/interactive/overlay-transitions.ts +57 -0
- package/src/interactive/overlays/agents.ts +69 -0
- package/src/interactive/overlays/ask-user.ts +921 -0
- package/src/interactive/overlays/auth-dialog.ts +221 -0
- package/src/interactive/overlays/context-reset.ts +108 -0
- package/src/interactive/overlays/cwd-fallback.ts +141 -0
- package/src/interactive/overlays/extensions.ts +54 -0
- package/src/interactive/overlays/help-reference.ts +140 -0
- package/src/interactive/overlays/interop.ts +139 -0
- package/src/interactive/overlays/keybinding-detail.ts +90 -0
- package/src/interactive/overlays/list-overlay.ts +606 -0
- package/src/interactive/overlays/message-picker.ts +155 -0
- package/src/interactive/overlays/model-selector.ts +1091 -0
- package/src/interactive/overlays/prompts.ts +72 -0
- package/src/interactive/overlays/session-selector-search.ts +31 -0
- package/src/interactive/overlays/session-selector.ts +266 -0
- package/src/interactive/overlays/settings.ts +3363 -0
- package/src/interactive/overlays/skills-hub.ts +237 -0
- package/src/interactive/overlays/tree-selector.ts +387 -0
- package/src/interactive/permission-overlay.ts +170 -0
- package/src/interactive/render-trace.ts +125 -0
- package/src/interactive/renderers/branch-summary.ts +86 -0
- package/src/interactive/renderers/code-ink.ts +420 -0
- package/src/interactive/renderers/compaction-summary.ts +112 -0
- package/src/interactive/renderers/diff.ts +126 -0
- package/src/interactive/renderers/notice.ts +28 -0
- package/src/interactive/renderers/retry-status.ts +31 -0
- package/src/interactive/renderers/structured.ts +89 -0
- package/src/interactive/renderers/tool-execution.ts +1104 -0
- package/src/interactive/renderers/worker-entry.ts +264 -0
- package/src/interactive/session-last-turn.ts +186 -0
- package/src/interactive/session-transcript.ts +105 -0
- package/src/interactive/session-usage-reseed.ts +74 -0
- package/src/interactive/slash-autocomplete.ts +364 -0
- package/src/interactive/slash-commands.ts +1319 -0
- package/src/interactive/slash-spec.ts +453 -0
- package/src/interactive/status/controller.ts +256 -0
- package/src/interactive/status/index.ts +23 -0
- package/src/interactive/status/state-machine.ts +530 -0
- package/src/interactive/status/summary.ts +170 -0
- package/src/interactive/status/types.ts +121 -0
- package/src/interactive/status/verbs.ts +163 -0
- package/src/interactive/status/watchdog.ts +24 -0
- package/src/interactive/tasks-overlay.ts +186 -0
- package/src/interactive/theme/components.ts +55 -0
- package/src/interactive/theme/glyphs.ts +70 -0
- package/src/interactive/theme/index.ts +15 -0
- package/src/interactive/theme/labels.ts +88 -0
- package/src/interactive/theme/rules.ts +138 -0
- package/src/interactive/theme/segments.ts +88 -0
- package/src/interactive/theme/tokens.ts +121 -0
- package/src/interactive/thinking-level-policy.ts +6 -0
- package/src/interactive/tool-prose-loop.ts +122 -0
- package/src/interactive/tool-prose-registration.ts +48 -0
- package/src/interactive/turn-context.ts +854 -0
- package/src/interactive/turn-middleware.ts +283 -0
- package/src/interactive/turn-persistence.ts +441 -0
- package/src/interactive/turn-queues.ts +169 -0
- package/src/interactive/turn-recovery.ts +306 -0
- package/src/interactive/turn-runtime.ts +802 -0
- package/src/interactive/turn-state.ts +123 -0
- package/src/interactive/view/artifacts.ts +1342 -0
- package/src/interactive/view/view-overlay.ts +732 -0
- package/src/interactive/welcome-dashboard.ts +536 -0
- package/src/interactive/worker-receipts.ts +94 -0
- package/src/interactive/worker-replay.ts +111 -0
- package/src/interactive/worker-share.ts +100 -0
- package/src/interactive/worker-stream.ts +442 -0
- package/src/interactive/workspace-facts.ts +141 -0
- package/src/tools/agent-tools.ts +382 -0
- package/src/tools/artifact.ts +103 -0
- package/src/tools/ask-user.ts +656 -0
- package/src/tools/bash.ts +176 -0
- package/src/tools/bootstrap.ts +474 -0
- package/src/tools/codewiki/code-nav.ts +563 -0
- package/src/tools/codewiki/shared.ts +115 -0
- package/src/tools/compete-worktrees.ts +898 -0
- package/src/tools/context/docs-engine.ts +619 -0
- package/src/tools/context/index.ts +435 -0
- package/src/tools/credential-present.ts +151 -0
- package/src/tools/dispatch-arguments.ts +228 -0
- package/src/tools/dispatch-plan.ts +741 -0
- package/src/tools/dispatch-scout.ts +461 -0
- package/src/tools/dispatch.ts +3338 -0
- package/src/tools/edit-diff.ts +534 -0
- package/src/tools/edit.ts +128 -0
- package/src/tools/executables.ts +22 -0
- package/src/tools/file-mutation-queue.ts +35 -0
- package/src/tools/find.ts +292 -0
- package/src/tools/grep.ts +495 -0
- package/src/tools/ignore-policy.ts +169 -0
- package/src/tools/ledger.ts +206 -0
- package/src/tools/ls.ts +110 -0
- package/src/tools/monitor.ts +797 -0
- package/src/tools/network-policy.ts +29 -0
- package/src/tools/observation.ts +421 -0
- package/src/tools/observers.ts +99 -0
- package/src/tools/path-utils.ts +79 -0
- package/src/tools/policy.ts +154 -0
- package/src/tools/profiles.ts +108 -0
- package/src/tools/read.ts +173 -0
- package/src/tools/registry.ts +1157 -0
- package/src/tools/result-shaping.ts +204 -0
- package/src/tools/safe-exec.ts +128 -0
- package/src/tools/spawn-hygiene.ts +182 -0
- package/src/tools/steer.ts +88 -0
- package/src/tools/string-enum.ts +15 -0
- package/src/tools/tasks.ts +168 -0
- package/src/tools/truncate-utf8.ts +17 -0
- package/src/tools/truncate.ts +202 -0
- package/src/tools/verify/frontend.ts +685 -0
- package/src/tools/verify/index.ts +66 -0
- package/src/tools/verify/scripts.ts +108 -0
- package/src/tools/web-fetch.ts +777 -0
- package/src/tools/worker-evidence.ts +215 -0
- package/src/tools/write.ts +52 -0
- package/src/utils/exif-orientation.ts +192 -0
- package/src/utils/git.ts +24 -0
- package/src/utils/image-resize.ts +148 -0
- package/src/utils/photon.ts +103 -0
- package/src/worker/control-lane.ts +22 -0
- package/src/worker/entry.ts +257 -0
- package/src/worker/event-projection.ts +56 -0
- package/src/worker/heartbeat.ts +24 -0
- package/src/worker/ledger-mirror.ts +95 -0
- package/src/worker/ndjson.ts +40 -0
- package/src/worker/protocol.ts +529 -0
- package/src/worker/resource-facts.ts +79 -0
- package/src/worker/runtime-registry.ts +12 -0
- package/src/worker/spec-contract.ts +654 -0
- package/src/worker/stdin-demux.ts +316 -0
- package/dist/acp-UMLFVA3F.js +0 -92
- package/dist/chunk-262G75JS.js +0 -35
- package/dist/chunk-5LDRNKX2.js +0 -1063
- package/dist/chunk-67MTHP2E.js +0 -135
- package/dist/chunk-GOTUR54M.js +0 -9
- package/dist/chunk-TPOCL34A.js +0 -2876
- package/dist/chunk-XV4ZJ6ZM.js +0 -3177
- package/dist/clio-KIQ5SNDS.js +0 -53
- package/dist/configure-G4E3A2PG.js +0 -27
- package/dist/doctor-M5HJJZOL.js +0 -61
- package/dist/domains/agents/builtins/architect.md +0 -33
- package/dist/domains/agents/builtins/coder.md +0 -31
- package/dist/domains/agents/builtins/context-bootstrap.md +0 -38
- package/dist/domains/agents/builtins/debugger.md +0 -30
- package/dist/domains/agents/builtins/documenter.md +0 -31
- package/dist/domains/agents/builtins/git-master.md +0 -30
- package/dist/domains/agents/builtins/provenance.md +0 -30
- package/dist/domains/agents/builtins/researcher.md +0 -71
- package/dist/domains/agents/builtins/scout.md +0 -42
- package/dist/domains/agents/builtins/tester.md +0 -31
- package/dist/domains/agents/builtins/verifier.md +0 -30
- package/dist/domains/agents/builtins/wiki-writer.md +0 -41
- package/dist/fleet-preflight-CLIAX7YR.js +0 -21
- package/dist/preload-KZVHET2B.js +0 -11
- package/dist/version-ROZ6CZKH.js +0 -16
- package/skills/git/commit-crafting/SKILL.md +0 -79
- package/skills/git/commit-crafting/evals.md +0 -92
- package/skills/git/create-pr/SKILL.md +0 -116
- package/skills/git/create-pr/evals.md +0 -114
- package/skills/git/investigate-issue/SKILL.md +0 -139
- package/skills/git/investigate-issue/evals.md +0 -94
- package/skills/git/review-changes/SKILL.md +0 -103
- package/skills/git/review-changes/evals.md +0 -85
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Holistic context-window accounting.
|
|
3
|
+
*
|
|
4
|
+
* `context-accounting.ts` answers "how full is the window" with a coarse four
|
|
5
|
+
* way split that the footer bar consumes. This module answers the richer
|
|
6
|
+
* question the `/context` overlay asks: where does every occupied token live?
|
|
7
|
+
* It folds the compiled prompt segment manifest, the active tool schemas, the
|
|
8
|
+
* conversation, and the autocompact reserve into a single categorized ledger
|
|
9
|
+
* whose content groups always sum to one authoritative `usedTokens` figure.
|
|
10
|
+
*
|
|
11
|
+
* The total respects two floors so the breakdown never lies to the user:
|
|
12
|
+
* - the decomposed estimate (sum of every category we can name), and
|
|
13
|
+
* - the live anchored total (provider-measured usage when one exists).
|
|
14
|
+
* When the measured total exceeds the decomposition, the delta is attributed
|
|
15
|
+
* to Messages — the only category that grows turn over turn — mirroring the
|
|
16
|
+
* proportional reconciliation the footer bar already performs.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
import type { ContextWindowSource } from "../providers/index.js";
|
|
20
|
+
import { DEFAULT_COMPACTION_THRESHOLD } from "./compaction/auto.js";
|
|
21
|
+
|
|
22
|
+
/** Distinct buckets a context window is divided into for display. */
|
|
23
|
+
export type ContextLedgerCategory =
|
|
24
|
+
| "system"
|
|
25
|
+
| "tools"
|
|
26
|
+
| "agents"
|
|
27
|
+
| "skills"
|
|
28
|
+
| "memory"
|
|
29
|
+
| "project"
|
|
30
|
+
| "messages"
|
|
31
|
+
| "pending"
|
|
32
|
+
| "reserve"
|
|
33
|
+
| "free"
|
|
34
|
+
| "streaming";
|
|
35
|
+
|
|
36
|
+
/** A compiled-prompt segment with its estimated token cost. */
|
|
37
|
+
export interface ContextLedgerSegment {
|
|
38
|
+
id: string;
|
|
39
|
+
tokenEstimate: number;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export interface BuildContextLedgerInput {
|
|
43
|
+
provider: string | null;
|
|
44
|
+
model: string | null;
|
|
45
|
+
/** Reported model context window in tokens; 0 or null when unknown. */
|
|
46
|
+
contextWindow: number | null;
|
|
47
|
+
/** Which layer answered `contextWindow`; omitted before a runtime resolves. */
|
|
48
|
+
contextWindowSource?: ContextWindowSource | null;
|
|
49
|
+
/**
|
|
50
|
+
* Per-segment token estimates from the prompt compiler's segment manifest.
|
|
51
|
+
* When empty, `systemPromptTokens` is used as a single opaque system bucket.
|
|
52
|
+
*/
|
|
53
|
+
promptSegments?: ReadonlyArray<ContextLedgerSegment>;
|
|
54
|
+
/** Fallback opaque system-prompt estimate when no segment manifest exists. */
|
|
55
|
+
systemPromptTokens?: number;
|
|
56
|
+
/** Serialized active tool-schema token estimate (the JSON the provider sees). */
|
|
57
|
+
toolSchemaTokens?: number;
|
|
58
|
+
/** Number of active tool schemas this turn. */
|
|
59
|
+
toolCount?: number;
|
|
60
|
+
/** Conversation message token estimate. */
|
|
61
|
+
messageTokens?: number;
|
|
62
|
+
/** Tokens for text the user has typed but not yet submitted. */
|
|
63
|
+
pendingTokens?: number;
|
|
64
|
+
/** In-flight streaming output tokens. */
|
|
65
|
+
streamingTokens?: number;
|
|
66
|
+
agentsTokens?: number;
|
|
67
|
+
skillsTokens?: number;
|
|
68
|
+
memoryTokens?: number;
|
|
69
|
+
projectTokens?: number;
|
|
70
|
+
/**
|
|
71
|
+
* Authoritative live total, already anchored to the latest provider usage
|
|
72
|
+
* when one is available. Acts as the measured floor for `usedTokens`.
|
|
73
|
+
*/
|
|
74
|
+
liveTotalTokens?: number | null;
|
|
75
|
+
/** True when `liveTotalTokens` is anchored to real provider-reported usage. */
|
|
76
|
+
measured?: boolean;
|
|
77
|
+
/** Compaction trigger ratio (0..1); null when compaction is unconfigured. */
|
|
78
|
+
compactionThreshold?: number | null;
|
|
79
|
+
/** Whether automatic compaction is enabled. */
|
|
80
|
+
compactionAuto?: boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Project-context preload class label from the compiled session prompt,
|
|
83
|
+
* e.g. "full (5.2kB, 130 lines)" or "synopsis (reason: size)". Null before
|
|
84
|
+
* a prompt has compiled.
|
|
85
|
+
*/
|
|
86
|
+
projectPreload?: string | null;
|
|
87
|
+
lastCompaction?: {
|
|
88
|
+
stage: string;
|
|
89
|
+
tokensBefore: number;
|
|
90
|
+
tokensAfter: number;
|
|
91
|
+
trigger: string;
|
|
92
|
+
} | null;
|
|
93
|
+
/** Prompt-cache honesty line; null until a turn has compiled and settled. */
|
|
94
|
+
promptCache?: PromptCacheStats | null;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Shell reuse and provider cache reuse are different facts and the overlay
|
|
99
|
+
* shows both: `shellReused` only means Clio's session-shell hash matched the
|
|
100
|
+
* previous turn; `cacheReadTokens` is what the provider actually reused.
|
|
101
|
+
* A reused shell with zero cache reads is the dishonest case this surfaces.
|
|
102
|
+
*/
|
|
103
|
+
export interface PromptCacheStats {
|
|
104
|
+
/** Compiled session-shell hash matched the previous turn. */
|
|
105
|
+
shellReused: boolean;
|
|
106
|
+
/** Provider-reported cache-read tokens for the last run; null when the provider reports no cache usage. */
|
|
107
|
+
cacheReadTokens: number | null;
|
|
108
|
+
/** Provider-reported cache-write tokens for the last run. */
|
|
109
|
+
cacheWriteTokens: number | null;
|
|
110
|
+
/** Provider-reported uncached input tokens for the last run. */
|
|
111
|
+
uncachedInputTokens: number | null;
|
|
112
|
+
/**
|
|
113
|
+
* Cache verdict of the run's first API call, classified from the
|
|
114
|
+
* provider-reported usage by `backendCacheVerdict`. Null before any
|
|
115
|
+
* settled run. "Shell reused but backend cold" is the dishonest
|
|
116
|
+
* combination the overlay renders as a warning.
|
|
117
|
+
*/
|
|
118
|
+
backendVerdict: "hot" | "partial" | "cold" | "small" | null;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
export interface ContextLedgerGroup {
|
|
122
|
+
category: ContextLedgerCategory;
|
|
123
|
+
label: string;
|
|
124
|
+
tokens: number;
|
|
125
|
+
/** Share of the context window (0..100); null when the window is unknown. */
|
|
126
|
+
percent: number | null;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export interface ContextLedger {
|
|
130
|
+
provider: string | null;
|
|
131
|
+
model: string | null;
|
|
132
|
+
/** Context window in tokens; 0 when unknown. */
|
|
133
|
+
contextWindow: number;
|
|
134
|
+
/**
|
|
135
|
+
* Which layer answered `contextWindow`. Null when the ledger was built
|
|
136
|
+
* without a resolved runtime. The overlay states it: a window read off a
|
|
137
|
+
* loaded instance and one assumed from a catalog are different claims, and
|
|
138
|
+
* the difference decides whether autocompact fires in time.
|
|
139
|
+
*/
|
|
140
|
+
contextWindowSource: ContextWindowSource | null;
|
|
141
|
+
/** Sum of every content category (system..pending). */
|
|
142
|
+
usedTokens: number;
|
|
143
|
+
/** Autocompact headroom held in reserve above the conversation. */
|
|
144
|
+
reserveTokens: number;
|
|
145
|
+
/** Window left after used + reserve; 0 when the window is unknown. */
|
|
146
|
+
freeTokens: number;
|
|
147
|
+
/** used/window as a percentage; null when the window is unknown. */
|
|
148
|
+
percent: number | null;
|
|
149
|
+
/** True when `usedTokens` is anchored to provider-measured usage. */
|
|
150
|
+
measured: boolean;
|
|
151
|
+
compactionThreshold: number | null;
|
|
152
|
+
compactionAuto: boolean;
|
|
153
|
+
/** Preload class label for the project category detail line; null when unknown. */
|
|
154
|
+
projectPreload: string | null;
|
|
155
|
+
toolCount: number;
|
|
156
|
+
/** Non-empty content categories in display order (excludes reserve/free). */
|
|
157
|
+
groups: ReadonlyArray<ContextLedgerGroup>;
|
|
158
|
+
/** Every category including reserve and free, for the proportional meter. */
|
|
159
|
+
meter: ReadonlyArray<ContextLedgerGroup>;
|
|
160
|
+
lastCompaction?: {
|
|
161
|
+
stage: string;
|
|
162
|
+
tokensBefore: number;
|
|
163
|
+
tokensAfter: number;
|
|
164
|
+
trigger: string;
|
|
165
|
+
} | null;
|
|
166
|
+
promptCache: PromptCacheStats | null;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/** Maps a prompt segment id to the ledger bucket it belongs to. */
|
|
170
|
+
const SEGMENT_CATEGORY: Readonly<Record<string, ContextLedgerCategory>> = {
|
|
171
|
+
identity: "system",
|
|
172
|
+
"operating-contract": "system",
|
|
173
|
+
safety: "system",
|
|
174
|
+
runtime: "system",
|
|
175
|
+
"tool-contract": "system",
|
|
176
|
+
"retrieval-hints": "system",
|
|
177
|
+
"tool-catalog": "tools",
|
|
178
|
+
"tools-and-agents": "agents",
|
|
179
|
+
"agent-fleet-deltas": "agents",
|
|
180
|
+
"skills-catalog": "skills",
|
|
181
|
+
memory: "memory",
|
|
182
|
+
"project-context": "project",
|
|
183
|
+
"context.project-rules": "project",
|
|
184
|
+
"context.operator-profile": "memory",
|
|
185
|
+
"context.clio-repo-awareness": "system",
|
|
186
|
+
"history-summary": "messages",
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
/** Human labels for each bucket, shown verbatim in the overlay legend. */
|
|
190
|
+
export const CONTEXT_CATEGORY_LABEL: Readonly<Record<ContextLedgerCategory, string>> = {
|
|
191
|
+
system: "System prompt",
|
|
192
|
+
tools: "Tool definitions",
|
|
193
|
+
agents: "Agent fleet",
|
|
194
|
+
skills: "Skills",
|
|
195
|
+
memory: "Memory",
|
|
196
|
+
project: "Project context",
|
|
197
|
+
messages: "Messages",
|
|
198
|
+
pending: "Pending input",
|
|
199
|
+
reserve: "Autocompact reserve",
|
|
200
|
+
free: "Free space",
|
|
201
|
+
streaming: "Streaming output",
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
/** Display order for the content categories and the meter. */
|
|
205
|
+
const CONTENT_ORDER: ReadonlyArray<ContextLedgerCategory> = [
|
|
206
|
+
"system",
|
|
207
|
+
"tools",
|
|
208
|
+
"agents",
|
|
209
|
+
"skills",
|
|
210
|
+
"memory",
|
|
211
|
+
"project",
|
|
212
|
+
"messages",
|
|
213
|
+
"pending",
|
|
214
|
+
"streaming",
|
|
215
|
+
];
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Single source of truth for the segment-id → bucket mapping. The snapshot
|
|
219
|
+
* ledger in `context-accounting.ts` reuses this so the overlay and the
|
|
220
|
+
* persisted JSONL accounting can never disagree about where a segment lives.
|
|
221
|
+
*/
|
|
222
|
+
export function categoryForSegment(id: string): ContextLedgerCategory {
|
|
223
|
+
return SEGMENT_CATEGORY[id] ?? "system";
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
function finiteNonNegative(value: number | null | undefined): number {
|
|
227
|
+
return typeof value === "number" && Number.isFinite(value) && value > 0 ? value : 0;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
function percentOf(tokens: number, window: number): number | null {
|
|
231
|
+
if (window <= 0) return null;
|
|
232
|
+
return Math.min(100, (tokens / window) * 100);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Fold all context sources into a categorized ledger. Pure and synchronous so
|
|
237
|
+
* it can be unit-tested and called on every overlay open without side effects.
|
|
238
|
+
*/
|
|
239
|
+
export function buildContextLedger(input: BuildContextLedgerInput): ContextLedger {
|
|
240
|
+
const window = finiteNonNegative(input.contextWindow);
|
|
241
|
+
|
|
242
|
+
const raw: Record<ContextLedgerCategory, number> = {
|
|
243
|
+
system: 0,
|
|
244
|
+
tools: 0,
|
|
245
|
+
agents: 0,
|
|
246
|
+
skills: 0,
|
|
247
|
+
memory: 0,
|
|
248
|
+
project: 0,
|
|
249
|
+
messages: 0,
|
|
250
|
+
pending: 0,
|
|
251
|
+
reserve: 0,
|
|
252
|
+
free: 0,
|
|
253
|
+
streaming: 0,
|
|
254
|
+
};
|
|
255
|
+
|
|
256
|
+
const segments = input.promptSegments ?? [];
|
|
257
|
+
if (segments.length > 0) {
|
|
258
|
+
for (const segment of segments) {
|
|
259
|
+
raw[categoryForSegment(segment.id)] += finiteNonNegative(segment.tokenEstimate);
|
|
260
|
+
}
|
|
261
|
+
} else {
|
|
262
|
+
raw.system += finiteNonNegative(input.systemPromptTokens);
|
|
263
|
+
}
|
|
264
|
+
raw.tools += finiteNonNegative(input.toolSchemaTokens);
|
|
265
|
+
raw.messages += finiteNonNegative(input.messageTokens);
|
|
266
|
+
raw.pending += finiteNonNegative(input.pendingTokens);
|
|
267
|
+
raw.streaming += finiteNonNegative(input.streamingTokens);
|
|
268
|
+
raw.agents += finiteNonNegative(input.agentsTokens);
|
|
269
|
+
raw.skills += finiteNonNegative(input.skillsTokens);
|
|
270
|
+
raw.memory += finiteNonNegative(input.memoryTokens);
|
|
271
|
+
raw.project += finiteNonNegative(input.projectTokens);
|
|
272
|
+
|
|
273
|
+
const decomposed = CONTENT_ORDER.reduce((sum, category) => sum + raw[category], 0);
|
|
274
|
+
const liveTotal = finiteNonNegative(input.liveTotalTokens);
|
|
275
|
+
|
|
276
|
+
// Reconcile against the measured floor: attribute any excess the provider
|
|
277
|
+
// counted beyond our decomposition to the conversation, the one category
|
|
278
|
+
// that grows each turn.
|
|
279
|
+
if (liveTotal > decomposed) {
|
|
280
|
+
raw.messages += liveTotal - decomposed;
|
|
281
|
+
}
|
|
282
|
+
const usedTokens = Math.max(decomposed, liveTotal);
|
|
283
|
+
|
|
284
|
+
const effectiveThreshold =
|
|
285
|
+
typeof input.compactionThreshold === "number" && input.compactionThreshold > 0 && input.compactionThreshold < 1
|
|
286
|
+
? input.compactionThreshold
|
|
287
|
+
: input.compactionAuto
|
|
288
|
+
? DEFAULT_COMPACTION_THRESHOLD
|
|
289
|
+
: null;
|
|
290
|
+
|
|
291
|
+
let reserveTokens = 0;
|
|
292
|
+
let freeTokens = 0;
|
|
293
|
+
if (window > 0) {
|
|
294
|
+
const remaining = Math.max(0, window - usedTokens);
|
|
295
|
+
reserveTokens = effectiveThreshold !== null ? Math.min(Math.round(window * (1 - effectiveThreshold)), remaining) : 0;
|
|
296
|
+
freeTokens = Math.max(0, window - usedTokens - reserveTokens);
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
const groups: ContextLedgerGroup[] = [];
|
|
300
|
+
for (const category of CONTENT_ORDER) {
|
|
301
|
+
const tokens = raw[category];
|
|
302
|
+
if (tokens <= 0) continue;
|
|
303
|
+
groups.push({
|
|
304
|
+
category,
|
|
305
|
+
label: CONTEXT_CATEGORY_LABEL[category],
|
|
306
|
+
tokens,
|
|
307
|
+
percent: percentOf(tokens, window),
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
const meter: ContextLedgerGroup[] = [...groups];
|
|
312
|
+
if (reserveTokens > 0) {
|
|
313
|
+
meter.push({
|
|
314
|
+
category: "reserve",
|
|
315
|
+
label: CONTEXT_CATEGORY_LABEL.reserve,
|
|
316
|
+
tokens: reserveTokens,
|
|
317
|
+
percent: percentOf(reserveTokens, window),
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
if (window > 0) {
|
|
321
|
+
meter.push({
|
|
322
|
+
category: "free",
|
|
323
|
+
label: CONTEXT_CATEGORY_LABEL.free,
|
|
324
|
+
tokens: freeTokens,
|
|
325
|
+
percent: percentOf(freeTokens, window),
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
return {
|
|
330
|
+
provider: input.provider ?? null,
|
|
331
|
+
model: input.model ?? null,
|
|
332
|
+
contextWindow: window,
|
|
333
|
+
contextWindowSource: input.contextWindowSource ?? null,
|
|
334
|
+
usedTokens,
|
|
335
|
+
reserveTokens,
|
|
336
|
+
freeTokens,
|
|
337
|
+
percent: percentOf(usedTokens, window),
|
|
338
|
+
measured: input.measured === true && liveTotal > 0,
|
|
339
|
+
compactionThreshold: effectiveThreshold,
|
|
340
|
+
compactionAuto: input.compactionAuto === true,
|
|
341
|
+
projectPreload: input.projectPreload ?? null,
|
|
342
|
+
toolCount: Math.max(0, Math.floor(input.toolCount ?? 0)),
|
|
343
|
+
groups,
|
|
344
|
+
meter,
|
|
345
|
+
lastCompaction: input.lastCompaction ?? null,
|
|
346
|
+
promptCache: input.promptCache ?? null,
|
|
347
|
+
};
|
|
348
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import type { SkillActivation } from "../../core/skill-activation.js";
|
|
2
|
+
import type { ClioSessionMeta, ClioTurnRecord } from "../../engine/session.js";
|
|
3
|
+
import type { SessionEntry } from "./entries.js";
|
|
4
|
+
import type { TreeSnapshot } from "./tree/navigator.js";
|
|
5
|
+
import type { WorkspaceSnapshot } from "./workspace/index.js";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Domain-level session metadata. Extends the engine's on-disk meta with
|
|
9
|
+
* optional fork pointers and checkpoint bookkeeping. The extra fields live
|
|
10
|
+
* alongside the engine's keys in the same meta.json; readers that only know
|
|
11
|
+
* about ClioSessionMeta simply ignore them.
|
|
12
|
+
*/
|
|
13
|
+
export type ClioSessionMetaExtension = {
|
|
14
|
+
parentSessionId?: string | null;
|
|
15
|
+
parentTurnId?: string | null;
|
|
16
|
+
lastCheckpointAt?: string | null;
|
|
17
|
+
lastCheckpointReason?: string | null;
|
|
18
|
+
/** Latest display name discovered from sessionInfo entries. */
|
|
19
|
+
name?: string;
|
|
20
|
+
/** Latest non-empty turn labels discovered from sessionInfo entries. */
|
|
21
|
+
labels?: string[];
|
|
22
|
+
/**
|
|
23
|
+
* First user-message text discovered while scanning current.jsonl. Used
|
|
24
|
+
* by the /resume picker as the row's primary identifier so users can
|
|
25
|
+
* recognize a session by its opening prompt instead of by uuid prefix.
|
|
26
|
+
* Whitespace-collapsed but otherwise unmodified; the renderer truncates.
|
|
27
|
+
*/
|
|
28
|
+
firstMessagePreview?: string;
|
|
29
|
+
/**
|
|
30
|
+
* Count of structured user-role message entries. Approximates "how
|
|
31
|
+
* many things did I ask?" for the picker; tool calls and bookkeeping
|
|
32
|
+
* entries do not contribute. Discovered alongside firstMessagePreview.
|
|
33
|
+
*/
|
|
34
|
+
messageCount?: number;
|
|
35
|
+
/**
|
|
36
|
+
* Latest entry timestamp seen in current.jsonl, falling back to the
|
|
37
|
+
* file's mtime. Lets the picker rank sessions by last-activity rather
|
|
38
|
+
* than creation time so a long-running session moves up after each
|
|
39
|
+
* turn.
|
|
40
|
+
*/
|
|
41
|
+
lastActivityAt?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Workspace snapshot captured at session bind. Populated by probeWorkspace
|
|
44
|
+
* during create(); read-only thereafter. Omitted on resumed sessions that
|
|
45
|
+
* pre-date this field; context(scope="workspace") lazy-fills then.
|
|
46
|
+
*/
|
|
47
|
+
workspace?: WorkspaceSnapshot;
|
|
48
|
+
/** Ordered record of skills activated in this session. */
|
|
49
|
+
skillActivations?: SkillActivation[];
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export type SessionMeta = ClioSessionMeta & ClioSessionMetaExtension;
|
|
53
|
+
|
|
54
|
+
export type TurnInput = Omit<ClioTurnRecord, "id" | "at"> & { id?: string; at?: string };
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Rich entry input: caller may omit turnId and timestamp so the manager can
|
|
58
|
+
* fill them with a uuid v7 + now(). parentTurnId still has to be supplied
|
|
59
|
+
* (or null for the first entry in a branch). Distributes across the union
|
|
60
|
+
* so every kind keeps its discriminant + kind-specific fields.
|
|
61
|
+
*/
|
|
62
|
+
export type SessionEntryInput = SessionEntry extends infer T
|
|
63
|
+
? T extends SessionEntry
|
|
64
|
+
? Omit<T, "turnId" | "timestamp"> & { turnId?: string; timestamp?: string }
|
|
65
|
+
: never
|
|
66
|
+
: never;
|
|
67
|
+
|
|
68
|
+
/** Options for SessionContract.deleteSession. */
|
|
69
|
+
export interface DeleteSessionOptions {
|
|
70
|
+
/**
|
|
71
|
+
* When true, retain current.jsonl + tree.json on disk and only tombstone
|
|
72
|
+
* the meta.json (renamed to meta.deleted.json) so `history()` drops the
|
|
73
|
+
* session from listings without destroying the transcript. Default false
|
|
74
|
+
* wipes the entire session directory.
|
|
75
|
+
*/
|
|
76
|
+
keepFiles?: boolean;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export interface SessionContract {
|
|
80
|
+
current(): SessionMeta | null;
|
|
81
|
+
/** Create a new session for the given cwd. */
|
|
82
|
+
create(input?: { cwd?: string; model?: string; target?: string }): SessionMeta;
|
|
83
|
+
/** Append a turn to the current session. */
|
|
84
|
+
append(turn: TurnInput): ClioTurnRecord;
|
|
85
|
+
/**
|
|
86
|
+
* Append a rich SessionEntry to the current session. Complements
|
|
87
|
+
* `append(turn)` for Phase 12+ entry kinds (compactionSummary,
|
|
88
|
+
* branchSummary, modelChange, etc.). Old callers keep using `append`.
|
|
89
|
+
*/
|
|
90
|
+
appendEntry(entry: SessionEntryInput): SessionEntry;
|
|
91
|
+
/**
|
|
92
|
+
* Atomically replace the current session's rich entry list. Used by
|
|
93
|
+
* observation masking to rewrite persisted payload bodies without
|
|
94
|
+
* changing turn ids or tree shape.
|
|
95
|
+
*/
|
|
96
|
+
replaceEntries(entries: ReadonlyArray<SessionEntry>): void;
|
|
97
|
+
/** Append a skill activation ledger entry and mirror it into meta.json. */
|
|
98
|
+
recordSkillActivation(activation: SkillActivation): SkillActivation;
|
|
99
|
+
/** Write atomic checkpoint (current.jsonl flush, tree.json persist, meta update). */
|
|
100
|
+
checkpoint(reason?: string): Promise<void>;
|
|
101
|
+
/** Synchronously make current.jsonl appends durable; used by write-ahead safety journals. */
|
|
102
|
+
flushAppends?(): void;
|
|
103
|
+
/** Load an existing session and make it current. */
|
|
104
|
+
resume(sessionId: string): SessionMeta;
|
|
105
|
+
/** Fork from a parent turn, producing a new session with parentId pointer. */
|
|
106
|
+
fork(parentTurnId: string, input?: { cwd?: string }): SessionMeta;
|
|
107
|
+
/**
|
|
108
|
+
* Return a serializable snapshot of the tree for a given session (defaults
|
|
109
|
+
* to the current session). Built from `tree.json` + resolved labels via
|
|
110
|
+
* `tree/navigator.ts`; the underlying on-disk artifacts stay engine-owned.
|
|
111
|
+
*/
|
|
112
|
+
tree(sessionId?: string): TreeSnapshot;
|
|
113
|
+
/**
|
|
114
|
+
* Switch the active session to `sessionId`. Semantically mirrors `resume`:
|
|
115
|
+
* the /tree overlay uses this to rewire the chat-loop when the user picks
|
|
116
|
+
* a different branch. Returns the new SessionMeta.
|
|
117
|
+
*/
|
|
118
|
+
switchBranch(sessionId: string): SessionMeta;
|
|
119
|
+
/**
|
|
120
|
+
* Move the current session's active append point to a turn in its tree.
|
|
121
|
+
* The interactive chat loop uses this id as the next parent while the
|
|
122
|
+
* on-disk tree keeps all sibling branches intact.
|
|
123
|
+
*/
|
|
124
|
+
switchTurn(turnId: string): SessionMeta;
|
|
125
|
+
/**
|
|
126
|
+
* Persist a display-only label for `turnId`. The marker is a
|
|
127
|
+
* SessionInfoEntry with `targetTurnId` + `label` written to the target
|
|
128
|
+
* session's current.jsonl. Empty `label` clears the marker. If the target
|
|
129
|
+
* session is the current one, writes flow through the live writer;
|
|
130
|
+
* otherwise the helper appends directly to that session's transcript.
|
|
131
|
+
*/
|
|
132
|
+
editLabel(turnId: string, label: string, sessionId?: string): void;
|
|
133
|
+
/**
|
|
134
|
+
* Remove the given session. By default, wipes the session directory.
|
|
135
|
+
* `opts.keepFiles` preserves the transcript and only tombstones meta.json.
|
|
136
|
+
* Refuses to delete a session that is currently open; call `close()` first
|
|
137
|
+
* or target a different id.
|
|
138
|
+
*/
|
|
139
|
+
deleteSession(id: string, opts?: DeleteSessionOptions): void;
|
|
140
|
+
/** List sessions for current cwd (most-recent first). */
|
|
141
|
+
history(): ReadonlyArray<SessionMeta>;
|
|
142
|
+
/** End current session. */
|
|
143
|
+
close(): Promise<void>;
|
|
144
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session cwd fallback resolver (Phase 12 slice 12d).
|
|
3
|
+
*
|
|
4
|
+
* Pure guard used by the interactive layer when a session is resumed.
|
|
5
|
+
* `meta.cwd` is captured at session creation time; by the time the user
|
|
6
|
+
* runs `/resume`, that directory may no longer exist (repo deleted,
|
|
7
|
+
* external drive unmounted, user renamed the project directory). This
|
|
8
|
+
* helper answers "is the recorded cwd still usable?" without touching
|
|
9
|
+
* clio's orchestrator or the TUI; the caller pops `cwd-fallback` overlay
|
|
10
|
+
* on a negative answer.
|
|
11
|
+
*
|
|
12
|
+
* Injectable `fsProbe` so that the resumption path can be verified.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { existsSync, statSync } from "node:fs";
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Minimal filesystem surface `resolveSessionCwd` consults. Production
|
|
19
|
+
* callers use `defaultFsProbe`; tests inject a deterministic stub.
|
|
20
|
+
*/
|
|
21
|
+
export interface FsProbe {
|
|
22
|
+
exists(path: string): boolean;
|
|
23
|
+
isDirectory(path: string): boolean;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export const defaultFsProbe: FsProbe = {
|
|
27
|
+
exists: (p) => existsSync(p),
|
|
28
|
+
isDirectory: (p) => {
|
|
29
|
+
try {
|
|
30
|
+
return statSync(p).isDirectory();
|
|
31
|
+
} catch {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Discriminated result the overlay layer branches on.
|
|
39
|
+
* - `no-cwd`: the meta record has no cwd field or it is blank after
|
|
40
|
+
* trimming. Pre-Phase-12 sessions occasionally land here.
|
|
41
|
+
* - `missing`: cwd string is set but the directory does not exist on
|
|
42
|
+
* disk (fsProbe.exists returned false).
|
|
43
|
+
* - `not-a-directory`: the path exists but resolves to a file or a
|
|
44
|
+
* symlink target that is not a directory.
|
|
45
|
+
*/
|
|
46
|
+
export type ResolveSessionCwdResult =
|
|
47
|
+
| { ok: true; cwd: string }
|
|
48
|
+
| { ok: false; reason: "no-cwd" | "missing" | "not-a-directory" };
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Check whether a resumed session's recorded cwd still points at a live
|
|
52
|
+
* directory on disk. Returns `{ok: true, cwd}` when the path resolves and
|
|
53
|
+
* is a directory; a typed reason otherwise. No side effects. Callers
|
|
54
|
+
* persist nothing here; they decide how to react based on the reason.
|
|
55
|
+
*/
|
|
56
|
+
export function resolveSessionCwd(
|
|
57
|
+
meta: { cwd?: string | null },
|
|
58
|
+
fsProbe: FsProbe = defaultFsProbe,
|
|
59
|
+
): ResolveSessionCwdResult {
|
|
60
|
+
const raw = typeof meta.cwd === "string" ? meta.cwd.trim() : "";
|
|
61
|
+
if (raw.length === 0) return { ok: false, reason: "no-cwd" };
|
|
62
|
+
if (!fsProbe.exists(raw)) return { ok: false, reason: "missing" };
|
|
63
|
+
if (!fsProbe.isDirectory(raw)) return { ok: false, reason: "not-a-directory" };
|
|
64
|
+
return { ok: true, cwd: raw };
|
|
65
|
+
}
|