@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,55 @@
|
|
|
1
|
+
import type { EditorTheme, MarkdownTheme, SelectListTheme, SettingsListTheme } from "../../engine/tui.js";
|
|
2
|
+
import { GLYPH } from "./glyphs.js";
|
|
3
|
+
import { screenTitle } from "./segments.js";
|
|
4
|
+
import type { ClioTheme } from "./tokens.js";
|
|
5
|
+
|
|
6
|
+
const identity = (text: string): string => text;
|
|
7
|
+
|
|
8
|
+
export function markdownTheme(theme: ClioTheme, highlightCode?: MarkdownTheme["highlightCode"]): MarkdownTheme {
|
|
9
|
+
return {
|
|
10
|
+
heading: (text) => screenTitle(theme, text),
|
|
11
|
+
link: (text) => theme.fg("info", text),
|
|
12
|
+
linkUrl: (text) => theme.fg("dim", text),
|
|
13
|
+
code: (text) => theme.fg("muted", text),
|
|
14
|
+
codeBlock: (text) => text,
|
|
15
|
+
codeBlockBorder: (text) => theme.fg("frame", text),
|
|
16
|
+
quote: (text) => theme.fg("muted", text),
|
|
17
|
+
quoteBorder: (text) => theme.fg("frame", text),
|
|
18
|
+
hr: (text) => theme.fg("frame", text),
|
|
19
|
+
listBullet: (text) => theme.fg("accent", text),
|
|
20
|
+
bold: (text) => theme.paint(text, { bold: true }),
|
|
21
|
+
italic: (text) => theme.paint(text, { italic: true }),
|
|
22
|
+
strikethrough: identity,
|
|
23
|
+
underline: (text) => theme.paint(text, { underline: true }),
|
|
24
|
+
...(highlightCode ? { highlightCode } : {}),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function selectListTheme(theme: ClioTheme): SelectListTheme {
|
|
29
|
+
return {
|
|
30
|
+
// The design cursor the engine SelectList swaps in for pi-tui's arrow.
|
|
31
|
+
cursor: GLYPH.cursor,
|
|
32
|
+
selectedPrefix: (text) => theme.fg("accent", text),
|
|
33
|
+
selectedText: (text) => theme.style("accent", text, { bold: true }),
|
|
34
|
+
description: (text) => theme.fg("muted", text),
|
|
35
|
+
scrollInfo: (text) => theme.fg("dim", text),
|
|
36
|
+
noMatch: (text) => theme.fg("warning", text),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export function settingsListTheme(theme: ClioTheme): SettingsListTheme {
|
|
41
|
+
return {
|
|
42
|
+
label: (text, selected) => (selected ? theme.style("accent", text, { bold: true }) : text),
|
|
43
|
+
value: (text, selected) => (selected ? theme.fg("success", text) : theme.fg("muted", text)),
|
|
44
|
+
description: (text) => theme.fg("muted", text),
|
|
45
|
+
cursor: GLYPH.cursor,
|
|
46
|
+
hint: (text) => theme.fg("dim", text),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export function editorTheme(theme: ClioTheme): EditorTheme {
|
|
51
|
+
return {
|
|
52
|
+
borderColor: (text) => theme.style("frameStrong", text, { bold: true }),
|
|
53
|
+
selectList: selectListTheme(theme),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
export const GLYPH = {
|
|
2
|
+
// Clio wordmark, shown in the welcome and dashboard headers only.
|
|
3
|
+
brand: ">C_",
|
|
4
|
+
// Agent voice glyph for the chat reply prefix. It renders in accent on a
|
|
5
|
+
// normal turn and error red on a failed one. The `>C_` wordmark is no longer
|
|
6
|
+
// the reply prefix; it survives only in the two headers above.
|
|
7
|
+
agent: "✦",
|
|
8
|
+
user: "›",
|
|
9
|
+
// Selection focus marker for list overlays. It is deliberately distinct from
|
|
10
|
+
// the tool ledger's toolHeader so a focused row never reads as a tool line.
|
|
11
|
+
cursor: "❯",
|
|
12
|
+
toolHeader: "▸",
|
|
13
|
+
running: "●",
|
|
14
|
+
queued: "◌",
|
|
15
|
+
speed: "⚡",
|
|
16
|
+
ok: "✓",
|
|
17
|
+
error: "✗",
|
|
18
|
+
cancelled: "⊘",
|
|
19
|
+
active: "◆",
|
|
20
|
+
scoped: "◇",
|
|
21
|
+
up: "↑",
|
|
22
|
+
down: "↓",
|
|
23
|
+
rail: "│",
|
|
24
|
+
innerDivider: "╌",
|
|
25
|
+
barFull: "█",
|
|
26
|
+
barEmpty: "░",
|
|
27
|
+
contextFull: "▰",
|
|
28
|
+
contextFree: "▱",
|
|
29
|
+
// Autocompact reserve cells: held-back headroom is neither used nor free,
|
|
30
|
+
// so it carries its own glyph and never reads as filled when only color is
|
|
31
|
+
// lost. The medium-shade block is single-width in the same fonts that carry
|
|
32
|
+
// the barFull/barEmpty fallbacks.
|
|
33
|
+
contextReserve: "▒",
|
|
34
|
+
info: "ℹ",
|
|
35
|
+
warn: "⚠",
|
|
36
|
+
warnInline: "!",
|
|
37
|
+
phaseWaiting: "◔",
|
|
38
|
+
phaseThinking: "◐",
|
|
39
|
+
phaseWriting: "◑",
|
|
40
|
+
phaseTool: "⚙",
|
|
41
|
+
phaseBlocked: "⏸",
|
|
42
|
+
phaseRetry: "↻",
|
|
43
|
+
phaseCompact: "♻",
|
|
44
|
+
phaseDispatch: "⇲",
|
|
45
|
+
// Marks a run that Clio started for itself (a shadow worker or an internal
|
|
46
|
+
// harness run) so internal activity reads as a sub-process of the current
|
|
47
|
+
// turn. It replaces the old `sh:`/`in:` agent-name prefixes; the two
|
|
48
|
+
// audiences are told apart by tone, not by a second glyph.
|
|
49
|
+
subProcess: "↳",
|
|
50
|
+
// Who asked for a dispatched run. Hollow is the operator's own (/run,
|
|
51
|
+
// /delegate); filled is one the model started by calling a dispatch tool.
|
|
52
|
+
// The transcript block, the board row, and the footer count share the pair,
|
|
53
|
+
// so a running ◇ anywhere is work the operator started themselves.
|
|
54
|
+
workerHuman: "◇",
|
|
55
|
+
workerAgent: "◆",
|
|
56
|
+
// A run neither the operator nor the model asked for: wiki documenting, a
|
|
57
|
+
// bootstrap scout, a judge. It stays off the transcript entirely, so the
|
|
58
|
+
// board is the only surface that shows it and it gets the quietest mark
|
|
59
|
+
// that still holds the origin column.
|
|
60
|
+
workerInternal: "·",
|
|
61
|
+
ellipsis: "…",
|
|
62
|
+
favorite: "★",
|
|
63
|
+
} as const;
|
|
64
|
+
|
|
65
|
+
export const SPINNER_FRAMES = ["⣾", "⣽", "⣻", "⢿", "⡿", "⣟", "⣯", "⣷"] as const;
|
|
66
|
+
|
|
67
|
+
export function spinnerFrame(tick: number): string {
|
|
68
|
+
const index = ((tick % SPINNER_FRAMES.length) + SPINNER_FRAMES.length) % SPINNER_FRAMES.length;
|
|
69
|
+
return SPINNER_FRAMES[index] ?? SPINNER_FRAMES[0];
|
|
70
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type ClioTheme, createClioTheme } from "./tokens.js";
|
|
2
|
+
|
|
3
|
+
let sharedTheme: ClioTheme | null = null;
|
|
4
|
+
|
|
5
|
+
export function clioTheme(): ClioTheme {
|
|
6
|
+
sharedTheme ??= createClioTheme();
|
|
7
|
+
return sharedTheme;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export * from "./components.js";
|
|
11
|
+
export * from "./glyphs.js";
|
|
12
|
+
export * from "./labels.js";
|
|
13
|
+
export * from "./rules.js";
|
|
14
|
+
export * from "./segments.js";
|
|
15
|
+
export * from "./tokens.js";
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Abbreviate a wire model id for chips and dashboards without amputating a
|
|
3
|
+
* version suffix. Whole dash-separated parts are kept while the joined result
|
|
4
|
+
* stays within 18 characters, so `claude-sonnet-5` and `claude-opus-4-8`
|
|
5
|
+
* survive intact and `qwen3-coder-30b-a3b-instruct` collapses to
|
|
6
|
+
* `qwen3-coder-30b`. A single part longer than 18 characters is hard-clipped.
|
|
7
|
+
*/
|
|
8
|
+
export function abbreviateModelId(modelId: string | null | undefined): string {
|
|
9
|
+
const base = (modelId ?? "").trim().split("/").filter(Boolean).pop() ?? "";
|
|
10
|
+
if (base.length === 0) return "model";
|
|
11
|
+
const parts = base.split("-").filter((part) => part.length > 0);
|
|
12
|
+
if (parts.length <= 1) return base.length > 18 ? base.slice(0, 18) : base;
|
|
13
|
+
const kept: string[] = [];
|
|
14
|
+
for (const part of parts) {
|
|
15
|
+
const next = [...kept, part].join("-");
|
|
16
|
+
if (kept.length > 0 && next.length > 18) break;
|
|
17
|
+
kept.push(part);
|
|
18
|
+
}
|
|
19
|
+
const joined = kept.join("-");
|
|
20
|
+
return joined.length > 18 ? joined.slice(0, 18) : joined;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface TargetLabelOptions {
|
|
24
|
+
/** Separator between the target id and the model. The narrow rail omits the spaces. */
|
|
25
|
+
separator?: string;
|
|
26
|
+
/** Off for surfaces with room for the whole wire id. */
|
|
27
|
+
abbreviate?: boolean;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* The chat target as one label, with one spelling for the state where there
|
|
32
|
+
* isn't one.
|
|
33
|
+
*
|
|
34
|
+
* Five surfaces answered the same question five different ways: the banner read
|
|
35
|
+
* `not configured/not configured`, the editor rail `no model`, the footer
|
|
36
|
+
* `none · none`, the settings overlay `(unset)`, and the providers overlay
|
|
37
|
+
* `(no model)`. A user comparing them is checking whether Clio knows what it is
|
|
38
|
+
* talking to, and four spellings read as four states.
|
|
39
|
+
*
|
|
40
|
+
* A target with no model and a model with no target are distinct from having
|
|
41
|
+
* neither, so each says which half is missing rather than collapsing to the
|
|
42
|
+
* same phrase. The settings overlay keeps `(unset)`, which labels an empty
|
|
43
|
+
* editable field rather than reporting status.
|
|
44
|
+
*/
|
|
45
|
+
export function formatTargetLabel(
|
|
46
|
+
targetId: string | null | undefined,
|
|
47
|
+
modelId: string | null | undefined,
|
|
48
|
+
options: TargetLabelOptions = {},
|
|
49
|
+
): string {
|
|
50
|
+
const target = (targetId ?? "").trim();
|
|
51
|
+
const model = (modelId ?? "").trim();
|
|
52
|
+
if (target.length === 0 && model.length === 0) return "not configured";
|
|
53
|
+
const shown = options.abbreviate === false ? model : abbreviateModelId(model);
|
|
54
|
+
if (target.length === 0) return `no target · ${shown}`;
|
|
55
|
+
if (model.length === 0) return `${target} · no model`;
|
|
56
|
+
return `${target}${options.separator ?? " · "}${shown}`;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Compact duration used everywhere the TUI shows elapsed time (footer chips,
|
|
61
|
+
* dispatch cards, task island rows): sub-second in ms, sub-minute in seconds
|
|
62
|
+
* with one decimal under 10s, then `XmYs`.
|
|
63
|
+
*/
|
|
64
|
+
export function formatCompactMs(value: number): string {
|
|
65
|
+
const ms = Math.max(0, Math.round(value));
|
|
66
|
+
if (ms < 1000) return `${ms}ms`;
|
|
67
|
+
const seconds = ms / 1000;
|
|
68
|
+
return seconds < 60
|
|
69
|
+
? `${seconds.toFixed(seconds >= 10 ? 0 : 1)}s`
|
|
70
|
+
: `${Math.floor(seconds / 60)}m${Math.round(seconds % 60)}s`;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Context-window fill percentage with one shared unknown grammar. A window
|
|
75
|
+
* that has not been measured yet renders `?%` everywhere (compact footer,
|
|
76
|
+
* expanded quadrant, segmented bar, /context-view overlay): a placeholder for
|
|
77
|
+
* a number that has not arrived, never a value.
|
|
78
|
+
*/
|
|
79
|
+
export function formatContextPercent(percent: number | null | undefined): string {
|
|
80
|
+
return typeof percent === "number" && Number.isFinite(percent) ? `${percent.toFixed(1)}%` : "?%";
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export function collapseHomePath(path: string): string {
|
|
84
|
+
const home = process.env.HOME;
|
|
85
|
+
if (!home || home.length === 0) return path;
|
|
86
|
+
if (path === home) return "~";
|
|
87
|
+
return path.startsWith(`${home}/`) ? `~/${path.slice(home.length + 1)}` : path;
|
|
88
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { truncateToWidth, visibleWidth } from "../../engine/tui.js";
|
|
2
|
+
import { GLYPH } from "./glyphs.js";
|
|
3
|
+
import type { ClioTheme, ClioToken } from "./tokens.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Pad or clip a styled string to exactly `width` visible columns.
|
|
7
|
+
*
|
|
8
|
+
* `truncateToWidth(…, pad = true)` already returns a string of exactly `width`
|
|
9
|
+
* columns on both its paths: it appends the shortfall on the fits path and pads
|
|
10
|
+
* through its own finalizer on the cut path. Measuring the result again to
|
|
11
|
+
* compute a repeat count that is always zero cost ~24 µs per line whenever the
|
|
12
|
+
* string missed pi-tui's width cache, which is every footer line that carries a
|
|
13
|
+
* spinner frame or an elapsed time.
|
|
14
|
+
*/
|
|
15
|
+
export function padAnsi(text: string, width: number, ellipsis = ""): string {
|
|
16
|
+
return truncateToWidth(text, Math.max(0, width), ellipsis, true);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Join `units` onto `prefix` with the ` · ` separator, fitting the result to
|
|
21
|
+
* `maxWidth` without cutting a unit mid-glyph. A unit that would overflow is
|
|
22
|
+
* dropped whole, along with every later unit, and the line closes with one
|
|
23
|
+
* space plus a dim ellipsis. Two columns are reserved for that marker while
|
|
24
|
+
* placing every unit except the last. When even the first unit cannot fit,
|
|
25
|
+
* `prefix + first unit` is hard-truncated with an ellipsis so a one-unit line
|
|
26
|
+
* still marks its cut. Width accounting is ANSI-aware via visibleWidth.
|
|
27
|
+
*/
|
|
28
|
+
export function fitUnits(theme: ClioTheme, prefix: string, units: readonly string[], maxWidth: number): string {
|
|
29
|
+
const sep = " · ";
|
|
30
|
+
let line = prefix;
|
|
31
|
+
for (let index = 0; index < units.length; index += 1) {
|
|
32
|
+
const candidate = index === 0 ? `${line}${units[index]}` : `${line}${sep}${units[index]}`;
|
|
33
|
+
// Reserve two columns for the ` …` marker unless this is the last unit.
|
|
34
|
+
const reserve = index < units.length - 1 ? 2 : 0;
|
|
35
|
+
if (visibleWidth(candidate) + reserve > maxWidth) {
|
|
36
|
+
if (index === 0) return truncateToWidth(candidate, Math.max(0, maxWidth), "…", false);
|
|
37
|
+
return `${line} ${theme.fg("dim", "…")}`;
|
|
38
|
+
}
|
|
39
|
+
line = candidate;
|
|
40
|
+
}
|
|
41
|
+
return line;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export interface RuleOptions {
|
|
45
|
+
left?: string;
|
|
46
|
+
leftToken?: ClioToken;
|
|
47
|
+
right?: string;
|
|
48
|
+
fillToken?: ClioToken;
|
|
49
|
+
rightToken?: ClioToken;
|
|
50
|
+
rightRaw?: boolean;
|
|
51
|
+
rightTail?: string;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export function rule(theme: ClioTheme, width: number, options: RuleOptions = {}): string {
|
|
55
|
+
const safeWidth = Math.max(0, width);
|
|
56
|
+
if (safeWidth === 0) return "";
|
|
57
|
+
// A left label starts flush at column 0, with a single trailing space before
|
|
58
|
+
// the fill. There is no leading space, so labeled rules align with the frame.
|
|
59
|
+
const left = options.left ? `${theme.style(options.leftToken ?? "accent", options.left, { bold: true })} ` : "";
|
|
60
|
+
const rightBody = options.rightRaw ? options.right : theme.fg(options.rightToken ?? "muted", options.right ?? "");
|
|
61
|
+
const right = options.right ? ` ${rightBody} ${options.rightTail ?? ""}` : "";
|
|
62
|
+
const labelsWidth = visibleWidth(left) + visibleWidth(right);
|
|
63
|
+
if (labelsWidth >= safeWidth) return truncateToWidth(`${left}${right}`.trim(), safeWidth, "", true);
|
|
64
|
+
const fill = theme.style(options.fillToken ?? "frame", "─".repeat(safeWidth - labelsWidth), {
|
|
65
|
+
bold: options.fillToken === "frameStrong",
|
|
66
|
+
});
|
|
67
|
+
return `${left}${fill}${right}`;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export interface FrameOptions {
|
|
71
|
+
/**
|
|
72
|
+
* Dim right-hand metadata placed just before the closing corner with one
|
|
73
|
+
* space on each side. The dispatch cards pass a run's elapsed time here.
|
|
74
|
+
*/
|
|
75
|
+
rightMeta?: string;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* The one framed-island recipe for every in-flow block: the welcome dashboard,
|
|
80
|
+
* the task island, the steering queue, and the dispatch cards.
|
|
81
|
+
*
|
|
82
|
+
* ```
|
|
83
|
+
* ┌─ Title ──────────────────── meta ─┐
|
|
84
|
+
* │ body line │
|
|
85
|
+
* └───────────────────────────────────┘
|
|
86
|
+
* ```
|
|
87
|
+
*
|
|
88
|
+
* Corners and fills carry the `frame` token. A plain `title` is drawn bold in
|
|
89
|
+
* the `title` token with exactly one space on each side. A title that already
|
|
90
|
+
* carries its own styling, such as the welcome header's composite of a brand
|
|
91
|
+
* glyph and a dim version, is placed verbatim so its escape sequences are never
|
|
92
|
+
* re-wrapped. The optional `rightMeta` renders dim before the closing corner.
|
|
93
|
+
*/
|
|
94
|
+
export function frame(
|
|
95
|
+
theme: ClioTheme,
|
|
96
|
+
title: string,
|
|
97
|
+
lines: readonly string[],
|
|
98
|
+
width: number,
|
|
99
|
+
opts: FrameOptions = {},
|
|
100
|
+
): string[] {
|
|
101
|
+
const safeWidth = Math.max(4, width);
|
|
102
|
+
const contentWidth = Math.max(0, safeWidth - 4);
|
|
103
|
+
const frameFg = (text: string): string => theme.fg("frame", text);
|
|
104
|
+
|
|
105
|
+
const hasTitle = title.length > 0;
|
|
106
|
+
// A title that already carries escape sequences is a pre-styled composite
|
|
107
|
+
// (the welcome header's brand glyph and dim version); place it verbatim. A
|
|
108
|
+
// plain title is styled here as bold in the `title` token.
|
|
109
|
+
const styledTitle = !hasTitle ? "" : title.includes("\u001b") ? title : theme.style("title", title, { bold: true });
|
|
110
|
+
const titleWidth = visibleWidth(title);
|
|
111
|
+
|
|
112
|
+
const meta = opts.rightMeta ?? "";
|
|
113
|
+
const hasMeta = meta.length > 0;
|
|
114
|
+
const metaWidth = hasMeta ? visibleWidth(meta) : 0;
|
|
115
|
+
|
|
116
|
+
// `┌─`, plus ` Title ` when titled, on the left; `┐`, or ` meta ─┐` when a
|
|
117
|
+
// right meta is present, on the right. The fill is whatever keeps the total
|
|
118
|
+
// width exact.
|
|
119
|
+
const leftVisible = 2 + (hasTitle ? titleWidth + 2 : 0);
|
|
120
|
+
const rightVisible = hasMeta ? metaWidth + 4 : 1;
|
|
121
|
+
const fillWidth = Math.max(0, safeWidth - leftVisible - rightVisible);
|
|
122
|
+
|
|
123
|
+
const leftStr = hasTitle ? `${frameFg("┌─")} ${styledTitle} ` : frameFg("┌─");
|
|
124
|
+
const rightStr = hasMeta ? ` ${theme.fg("dim", meta)} ${frameFg("─┐")}` : frameFg("┐");
|
|
125
|
+
const top = `${leftStr}${frameFg("─".repeat(fillWidth))}${rightStr}`;
|
|
126
|
+
|
|
127
|
+
const body = lines.map((line) => `${frameFg("│")} ${padAnsi(line, contentWidth)} ${frameFg("│")}`);
|
|
128
|
+
const bottom = `${frameFg("└")}${frameFg("─".repeat(safeWidth - 2))}${frameFg("┘")}`;
|
|
129
|
+
return [top, ...body, bottom];
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* A full-width run of the inner-divider glyph in the `frame` token, drawn
|
|
134
|
+
* between rows inside an island. Callers pass the island's inner content width.
|
|
135
|
+
*/
|
|
136
|
+
export function innerDivider(theme: ClioTheme, width: number): string {
|
|
137
|
+
return theme.fg("frame", GLYPH.innerDivider.repeat(Math.max(0, width)));
|
|
138
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { GLYPH } from "./glyphs.js";
|
|
2
|
+
import type { ClioTheme, ClioToken } from "./tokens.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Presentational primitives for the welcome/footer dashboards. These keep raw
|
|
6
|
+
* ANSI inside the theme module: every colored separator, chip, and section tag
|
|
7
|
+
* is produced here so interactive render code only ever composes already-styled
|
|
8
|
+
* strings. Helpers are pure and width-agnostic; callers fit/truncate with the
|
|
9
|
+
* engine helpers after composition.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
function present(parts: ReadonlyArray<string | null | undefined>): string[] {
|
|
13
|
+
return parts.filter((part): part is string => typeof part === "string" && part.length > 0);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* The Clio logotype: the `>C_` wordmark composed from the tokens the system
|
|
18
|
+
* already assigns to its three characters. `>` and `_` are terminal
|
|
19
|
+
* scaffolding and render dim; `C` is Clio and renders bold accent. GLYPH.brand
|
|
20
|
+
* keeps the plain string for width math and ANSI-stripping tests, and the
|
|
21
|
+
* welcome header and dashboard header stay the only surfaces that paint it.
|
|
22
|
+
*/
|
|
23
|
+
export function brandMark(theme: ClioTheme): string {
|
|
24
|
+
const prompt = GLYPH.brand.slice(0, 1);
|
|
25
|
+
const initial = GLYPH.brand.slice(1, 2);
|
|
26
|
+
const cursor = GLYPH.brand.slice(2, 3);
|
|
27
|
+
return `${theme.fg("dim", prompt)}${theme.style("accent", initial, { bold: true })}${theme.fg("dim", cursor)}`;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/** Dim middot used to separate chips inside a single section. */
|
|
31
|
+
export function dotSep(theme: ClioTheme): string {
|
|
32
|
+
return theme.fg("dim", " · ");
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/** Frame-colored vertical bar used to separate sections on one row. */
|
|
36
|
+
export function barSep(theme: ClioTheme): string {
|
|
37
|
+
return theme.fg("frame", " │ ");
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* A bold, color-tagged section label (PERCEIVE / target / …). Pad to align a
|
|
42
|
+
* column of tags; padding inherits the tag color but stays invisible.
|
|
43
|
+
*/
|
|
44
|
+
export function sectionTag(theme: ClioTheme, token: ClioToken, label: string, pad = 0): string {
|
|
45
|
+
const text = pad > 0 ? label.padEnd(pad) : label;
|
|
46
|
+
return theme.style(token, text, { bold: true });
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* A screen or overlay title (section 2.4 level 2): bold in the `title` token.
|
|
51
|
+
*
|
|
52
|
+
* The settings lane header, the settings breadcrumb, and the dispatch card
|
|
53
|
+
* title each open-coded `theme.style("title", text, { bold: true })`, so the
|
|
54
|
+
* one rule for what a title looks like lived in as many places as there were
|
|
55
|
+
* titles. `rules.ts:frame` applies the same treatment to an unstyled title it
|
|
56
|
+
* is handed, which is why an island does not call this.
|
|
57
|
+
*/
|
|
58
|
+
export function screenTitle(theme: ClioTheme, label: string): string {
|
|
59
|
+
return theme.style("title", label, { bold: true });
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* A list-group header (section 2.4 level 4): `── running (1)` in dim.
|
|
64
|
+
*
|
|
65
|
+
* The leading double dash is a structural rule literal, not a status glyph.
|
|
66
|
+
* Fleet Runs kept a private copy and the generic list overlay inlined the same
|
|
67
|
+
* string, so a change to the group vocabulary had to be made twice and was not.
|
|
68
|
+
*/
|
|
69
|
+
export function listGroupHeader(theme: ClioTheme, label: string): string {
|
|
70
|
+
return theme.fg("dim", `── ${label}`);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/** A single colored chip. */
|
|
74
|
+
export function chip(theme: ClioTheme, token: ClioToken, text: string): string {
|
|
75
|
+
return theme.fg(token, text);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/** A key=value chip: a dim key glued to a colored value (e.g. `git main`). */
|
|
79
|
+
/** Subtle keybinding affordance, e.g. `⌃U dashboard`. */
|
|
80
|
+
/** Join chips within a section with a dim middot, dropping empties. */
|
|
81
|
+
export function joinChips(theme: ClioTheme, parts: ReadonlyArray<string | null | undefined>): string {
|
|
82
|
+
return present(parts).join(dotSep(theme));
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/** Join sections on one row with a frame bar, dropping empties. */
|
|
86
|
+
export function joinSections(theme: ClioTheme, parts: ReadonlyArray<string | null | undefined>): string {
|
|
87
|
+
return present(parts).join(barSep(theme));
|
|
88
|
+
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
export type ClioToken =
|
|
2
|
+
| "accent"
|
|
3
|
+
| "accentDeep"
|
|
4
|
+
| "action"
|
|
5
|
+
| "success"
|
|
6
|
+
| "warning"
|
|
7
|
+
| "error"
|
|
8
|
+
| "info"
|
|
9
|
+
| "reason"
|
|
10
|
+
| "dim"
|
|
11
|
+
| "muted"
|
|
12
|
+
| "title"
|
|
13
|
+
| "frame"
|
|
14
|
+
| "frameStrong";
|
|
15
|
+
|
|
16
|
+
interface TokenColor {
|
|
17
|
+
rgb: readonly [number, number, number];
|
|
18
|
+
xterm: number;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const TOKENS: Record<ClioToken, TokenColor> = {
|
|
22
|
+
accent: { rgb: [70, 229, 208], xterm: 80 },
|
|
23
|
+
accentDeep: { rgb: [31, 183, 166], xterm: 44 },
|
|
24
|
+
// Second brand color: neon orange. The token name teaches the rule: orange
|
|
25
|
+
// means Clio is acting. It fires only for Clio's signature actions
|
|
26
|
+
// (dispatching, queued and running fleet work, steering) and for the border
|
|
27
|
+
// of a prompt that has taken the keyboard and is waiting on a decision, never
|
|
28
|
+
// as decoration, and never a metric, at most one orange element per region of
|
|
29
|
+
// the screen. warning stays the soft amber for actual warnings.
|
|
30
|
+
action: { rgb: [255, 126, 41], xterm: 208 },
|
|
31
|
+
success: { rgb: [87, 227, 137], xterm: 114 },
|
|
32
|
+
warning: { rgb: [255, 180, 84], xterm: 221 },
|
|
33
|
+
error: { rgb: [255, 92, 102], xterm: 203 },
|
|
34
|
+
info: { rgb: [91, 168, 255], xterm: 75 },
|
|
35
|
+
reason: { rgb: [157, 140, 255], xterm: 141 },
|
|
36
|
+
dim: { rgb: [106, 122, 133], xterm: 59 },
|
|
37
|
+
muted: { rgb: [138, 153, 164], xterm: 102 },
|
|
38
|
+
title: { rgb: [70, 229, 208], xterm: 80 },
|
|
39
|
+
frame: { rgb: [47, 93, 90], xterm: 23 },
|
|
40
|
+
frameStrong: { rgb: [42, 171, 158], xterm: 37 },
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export const SGR_RESET = "\u001b[0m";
|
|
44
|
+
export const SGR_DIM = "\u001b[2m";
|
|
45
|
+
|
|
46
|
+
export interface PaintMods {
|
|
47
|
+
fg?: ClioToken;
|
|
48
|
+
bg?: ClioToken;
|
|
49
|
+
bold?: boolean;
|
|
50
|
+
italic?: boolean;
|
|
51
|
+
underline?: boolean;
|
|
52
|
+
dim?: boolean;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface ClioTheme {
|
|
56
|
+
readonly truecolor: boolean;
|
|
57
|
+
paint(text: string, mods: PaintMods): string;
|
|
58
|
+
fg(token: ClioToken, text: string): string;
|
|
59
|
+
bg(token: ClioToken, text: string): string;
|
|
60
|
+
style(token: ClioToken, text: string, mods?: Omit<PaintMods, "fg">): string;
|
|
61
|
+
fgSequence(token: ClioToken): string;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* The NO_COLOR convention: set and non-empty means emit no color, whatever the
|
|
66
|
+
* value is. Clio was ignoring it entirely. A session launched with NO_COLOR=1
|
|
67
|
+
* still wrote 961 non-reset SGR sequences in its first three seconds, most of
|
|
68
|
+
* them 24-bit foregrounds, which is exactly what the variable exists to stop.
|
|
69
|
+
*
|
|
70
|
+
* Only color is dropped. Bold, dim, italic, and underline carry structure
|
|
71
|
+
* rather than color and are what a monochrome terminal has left to read the
|
|
72
|
+
* interface with, so they stay.
|
|
73
|
+
*/
|
|
74
|
+
function colorDisabled(env: NodeJS.ProcessEnv = process.env): boolean {
|
|
75
|
+
const raw = env.NO_COLOR;
|
|
76
|
+
return typeof raw === "string" && raw.length > 0;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function detectTruecolor(env: NodeJS.ProcessEnv = process.env): boolean {
|
|
80
|
+
const colorTerm = (env.COLORTERM ?? "").toLowerCase();
|
|
81
|
+
if (colorTerm.includes("truecolor") || colorTerm.includes("24bit")) return true;
|
|
82
|
+
const term = (env.TERM ?? "").toLowerCase();
|
|
83
|
+
return term.includes("truecolor") || term.includes("24bit");
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function fgCode(color: TokenColor, truecolor: boolean): string {
|
|
87
|
+
return truecolor ? `38;2;${color.rgb[0]};${color.rgb[1]};${color.rgb[2]}` : `38;5;${color.xterm}`;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function bgCode(color: TokenColor, truecolor: boolean): string {
|
|
91
|
+
return truecolor ? `48;2;${color.rgb[0]};${color.rgb[1]};${color.rgb[2]}` : `48;5;${color.xterm}`;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export function fgSequence(token: ClioToken, truecolor: boolean = detectTruecolor()): string {
|
|
95
|
+
if (colorDisabled()) return "";
|
|
96
|
+
return `\u001b[${fgCode(TOKENS[token], truecolor)}m`;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export function createClioTheme(options: { truecolor?: boolean; color?: boolean } = {}): ClioTheme {
|
|
100
|
+
const truecolor = options.truecolor ?? detectTruecolor();
|
|
101
|
+
const color = options.color ?? !colorDisabled();
|
|
102
|
+
const paint = (text: string, mods: PaintMods): string => {
|
|
103
|
+
const codes: string[] = [];
|
|
104
|
+
if (mods.bold) codes.push("1");
|
|
105
|
+
if (mods.dim) codes.push("2");
|
|
106
|
+
if (mods.italic) codes.push("3");
|
|
107
|
+
if (mods.underline) codes.push("4");
|
|
108
|
+
if (color && mods.fg) codes.push(fgCode(TOKENS[mods.fg], truecolor));
|
|
109
|
+
if (color && mods.bg) codes.push(bgCode(TOKENS[mods.bg], truecolor));
|
|
110
|
+
if (codes.length === 0) return text;
|
|
111
|
+
return `\u001b[${codes.join(";")}m${text}${SGR_RESET}`;
|
|
112
|
+
};
|
|
113
|
+
return {
|
|
114
|
+
truecolor,
|
|
115
|
+
paint,
|
|
116
|
+
fg: (token, text) => paint(text, { fg: token }),
|
|
117
|
+
bg: (token, text) => paint(text, { bg: token }),
|
|
118
|
+
style: (token, text, mods = {}) => paint(text, { ...mods, fg: token }),
|
|
119
|
+
fgSequence: (token) => (color ? fgSequence(token, truecolor) : ""),
|
|
120
|
+
};
|
|
121
|
+
}
|