@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,304 @@
|
|
|
1
|
+
import { isAbsolute, relative } from "node:path";
|
|
2
|
+
import { BusChannels } from "../../core/bus-events.js";
|
|
3
|
+
import { detectClioCoderRepo } from "../../core/clio-repo.js";
|
|
4
|
+
import type { ClioSettings } from "../../core/config.js";
|
|
5
|
+
import type { DomainBundle, DomainContext, DomainExtension } from "../../core/domain-loader.js";
|
|
6
|
+
import { renderFleetPromptSection } from "../agents/catalog.js";
|
|
7
|
+
import type { AgentsContract } from "../agents/contract.js";
|
|
8
|
+
import type { ConfigContract } from "../config/contract.js";
|
|
9
|
+
import {
|
|
10
|
+
type ContextContract,
|
|
11
|
+
loadOperatorProfile,
|
|
12
|
+
loadProjectRules,
|
|
13
|
+
type ProjectPromptContext,
|
|
14
|
+
renderOperatorProfile,
|
|
15
|
+
selectActiveRules,
|
|
16
|
+
} from "../context/index.js";
|
|
17
|
+
import { compile, compileWorker, type RenderedPromptFragment } from "./compiler.js";
|
|
18
|
+
import type { CompileSessionPromptInput, CompileWorkerPromptInput, PromptsContract } from "./contract.js";
|
|
19
|
+
import { type FragmentTable, loadFragments } from "./fragment-loader.js";
|
|
20
|
+
import { sha256 } from "./hash.js";
|
|
21
|
+
import { classifyProjectPreload, type ProjectPreloadClass } from "./preload.js";
|
|
22
|
+
|
|
23
|
+
export interface PromptsBundleOptions {
|
|
24
|
+
/** When true, the dynamic context.files fragment renders the empty string. */
|
|
25
|
+
noContextFiles?: boolean;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const CLIO_REPO_AWARENESS_ID = "context.clio-repo-awareness";
|
|
29
|
+
const WORKSPACE_ROOT_ID = "context.workspace-root";
|
|
30
|
+
|
|
31
|
+
export function createPromptsBundle(
|
|
32
|
+
context: DomainContext,
|
|
33
|
+
options: PromptsBundleOptions = {},
|
|
34
|
+
): DomainBundle<PromptsContract> {
|
|
35
|
+
let table: FragmentTable | null = null;
|
|
36
|
+
const suppressContextFiles = options.noContextFiles === true;
|
|
37
|
+
|
|
38
|
+
function config(): ConfigContract | undefined {
|
|
39
|
+
return context.getContract<ConfigContract>("config");
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function contextDomain(): ContextContract | undefined {
|
|
43
|
+
return context.getContract<ContextContract>("context");
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function agentsDomain(): AgentsContract | undefined {
|
|
47
|
+
return context.getContract<AgentsContract>("agents");
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* The roster is compiled into the prompt, so a session that starts before
|
|
52
|
+
* the agents domain is available renders no Fleet section rather than a
|
|
53
|
+
* partial one that would churn the prompt prefix on the next compile.
|
|
54
|
+
*/
|
|
55
|
+
function fleetRoster(): string {
|
|
56
|
+
const specs = agentsDomain()?.listSpecs() ?? [];
|
|
57
|
+
return specs.length > 0 ? renderFleetPromptSection(specs) : "";
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function reload(): void {
|
|
61
|
+
try {
|
|
62
|
+
table = loadFragments();
|
|
63
|
+
} catch (err) {
|
|
64
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
65
|
+
process.stderr.write(`[clio:prompts] reload failed: ${msg}\n`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function diffTouchesFragments(paths: ReadonlyArray<string>): boolean {
|
|
70
|
+
for (const p of paths) {
|
|
71
|
+
if (p.includes("prompt") || p.includes("fragment")) return true;
|
|
72
|
+
}
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const contract: PromptsContract = {
|
|
77
|
+
async compileSessionPrompt(input: CompileSessionPromptInput) {
|
|
78
|
+
if (!table) throw new Error("prompts domain not started");
|
|
79
|
+
if (table.byId.size === 0) {
|
|
80
|
+
throw new Error("prompts: no fragments loaded, check startup logs");
|
|
81
|
+
}
|
|
82
|
+
const configContract = config();
|
|
83
|
+
const settings: Readonly<ClioSettings> | undefined = configContract?.get();
|
|
84
|
+
const safety = input.autonomy ?? settings?.autonomy ?? "auto-edit";
|
|
85
|
+
const cwd = input.cwd ?? process.cwd();
|
|
86
|
+
let contextFiles = "";
|
|
87
|
+
let projectPreload: ProjectPreloadClass | null = null;
|
|
88
|
+
if (!suppressContextFiles) {
|
|
89
|
+
const projectContext = contextDomain()?.renderPromptContext(cwd);
|
|
90
|
+
contextFiles = projectContext
|
|
91
|
+
? selectProjectContext(projectContext, input.sessionInputs.providerSupportsTools ?? null)
|
|
92
|
+
: "";
|
|
93
|
+
if (projectContext) {
|
|
94
|
+
projectPreload = classifyProjectPreload({
|
|
95
|
+
hasClioMd: projectContext.clioMd !== null,
|
|
96
|
+
text: projectContext.text,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
for (const warning of projectContext?.warnings ?? []) process.stderr.write(`${warning}\n`);
|
|
100
|
+
}
|
|
101
|
+
const roster = fleetRoster();
|
|
102
|
+
const sessionInputs = {
|
|
103
|
+
...input.sessionInputs,
|
|
104
|
+
...(contextFiles.length > 0 ? { contextFiles } : {}),
|
|
105
|
+
...(roster.length > 0 ? { fleetRoster: roster } : {}),
|
|
106
|
+
};
|
|
107
|
+
const compiled = compile(table, {
|
|
108
|
+
identity: "identity.clio",
|
|
109
|
+
operatingContract: "operating.contract",
|
|
110
|
+
safety: `safety.${safety}`,
|
|
111
|
+
sessionInputs,
|
|
112
|
+
additionalFragments: [
|
|
113
|
+
...workspaceRootFragment(cwd),
|
|
114
|
+
...clioRepoAwarenessFragments(cwd),
|
|
115
|
+
...customizationFragments(cwd, input.workingContextPaths ?? []),
|
|
116
|
+
],
|
|
117
|
+
});
|
|
118
|
+
return { ...compiled, projectPreload };
|
|
119
|
+
},
|
|
120
|
+
async compileWorkerPrompt(input: CompileWorkerPromptInput) {
|
|
121
|
+
if (!table) throw new Error("prompts domain not started");
|
|
122
|
+
if (table.byId.size === 0) {
|
|
123
|
+
throw new Error("prompts: no fragments loaded, check startup logs");
|
|
124
|
+
}
|
|
125
|
+
return compileWorker(table, input);
|
|
126
|
+
},
|
|
127
|
+
reload,
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
let unsubscribeHotReload: (() => void) | null = null;
|
|
131
|
+
const extension: DomainExtension = {
|
|
132
|
+
async start() {
|
|
133
|
+
try {
|
|
134
|
+
table = loadFragments();
|
|
135
|
+
} catch (err) {
|
|
136
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
137
|
+
process.stderr.write(`[clio:prompts] initial load failed: ${msg}\n`);
|
|
138
|
+
table = { byId: new Map(), rootDir: "" };
|
|
139
|
+
}
|
|
140
|
+
unsubscribeHotReload = context.bus.on(BusChannels.ConfigHotReload, (payload: unknown) => {
|
|
141
|
+
const diff = (payload as { diff?: { hotReload?: string[] } } | undefined)?.diff;
|
|
142
|
+
const paths = diff?.hotReload ?? [];
|
|
143
|
+
if (!diffTouchesFragments(paths)) return;
|
|
144
|
+
reload();
|
|
145
|
+
});
|
|
146
|
+
},
|
|
147
|
+
async stop() {
|
|
148
|
+
unsubscribeHotReload?.();
|
|
149
|
+
unsubscribeHotReload = null;
|
|
150
|
+
},
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
return { extension, contract };
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Inline prompt fragments for the project's customization surfaces. Unconditional
|
|
158
|
+
* `.clio-coder/rules/**` rules load with project context here; path-scoped rules stay
|
|
159
|
+
* out of the base prompt and activate through the rule loader once a matching
|
|
160
|
+
* file is in working context. The operator profile renders as one capped
|
|
161
|
+
* section. Both are deterministic (rules sort by id), so a local model's cached
|
|
162
|
+
* prompt prefix stays stable. Best-effort: a load failure injects nothing.
|
|
163
|
+
*/
|
|
164
|
+
function customizationFragments(cwd: string, workingContextPaths: ReadonlyArray<string>): RenderedPromptFragment[] {
|
|
165
|
+
const fragments: RenderedPromptFragment[] = [];
|
|
166
|
+
try {
|
|
167
|
+
const loaded = loadProjectRules(cwd);
|
|
168
|
+
const active = selectActiveRules(loaded.rules, normalizeWorkingContextPaths(cwd, workingContextPaths));
|
|
169
|
+
if (active.length > 0) {
|
|
170
|
+
const body = ["# Project rules", ...active.map((rule) => rule.body)].join("\n\n");
|
|
171
|
+
fragments.push({
|
|
172
|
+
id: "context.project-rules",
|
|
173
|
+
relPath: "inline/project-rules",
|
|
174
|
+
body,
|
|
175
|
+
contentHash: sha256(body),
|
|
176
|
+
dynamic: true,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
} catch {
|
|
180
|
+
// Project rules are best-effort; a load failure must not block compilation.
|
|
181
|
+
}
|
|
182
|
+
try {
|
|
183
|
+
const profile = loadOperatorProfile(cwd);
|
|
184
|
+
const rendered = renderOperatorProfile(profile.profile);
|
|
185
|
+
if (rendered.text.length > 0) {
|
|
186
|
+
fragments.push({
|
|
187
|
+
id: "context.operator-profile",
|
|
188
|
+
relPath: "inline/operator-profile",
|
|
189
|
+
body: rendered.text,
|
|
190
|
+
contentHash: sha256(rendered.text),
|
|
191
|
+
dynamic: true,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
} catch {
|
|
195
|
+
// The operator profile is best-effort; a load failure injects nothing.
|
|
196
|
+
}
|
|
197
|
+
return fragments;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
function normalizeWorkingContextPaths(cwd: string, paths: ReadonlyArray<string>): string[] {
|
|
201
|
+
const normalized = new Set<string>();
|
|
202
|
+
for (const filePath of paths) {
|
|
203
|
+
const rel = isAbsolute(filePath) ? relative(cwd, filePath) : filePath;
|
|
204
|
+
if (!rel || rel.startsWith("..") || isAbsolute(rel)) continue;
|
|
205
|
+
normalized.add(rel.replace(/\\/g, "/"));
|
|
206
|
+
}
|
|
207
|
+
return [...normalized].sort();
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* The absolute workspace root, stated once. Tools take paths and working
|
|
212
|
+
* directories, and a model that was never told the root guesses one: an
|
|
213
|
+
* observed run passed the container convention `/workspace` to bash and had
|
|
214
|
+
* the call blocked as a workspace escape. Naming the real root removes the
|
|
215
|
+
* guess for every tool at once, which no single tool description can do.
|
|
216
|
+
*/
|
|
217
|
+
function workspaceRootFragment(cwd: string): RenderedPromptFragment[] {
|
|
218
|
+
const body = [
|
|
219
|
+
"# Workspace",
|
|
220
|
+
`Absolute workspace root: ${cwd}`,
|
|
221
|
+
"Relative paths resolve here. Do not invent a root such as /workspace or /repo, and do not pass a working directory unless the command must run in a subdirectory of this root.",
|
|
222
|
+
].join("\n");
|
|
223
|
+
return [
|
|
224
|
+
{
|
|
225
|
+
id: WORKSPACE_ROOT_ID,
|
|
226
|
+
relPath: "inline/workspace-root",
|
|
227
|
+
body,
|
|
228
|
+
contentHash: sha256(body),
|
|
229
|
+
dynamic: true,
|
|
230
|
+
},
|
|
231
|
+
];
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
function clioRepoAwarenessFragments(cwd: string): RenderedPromptFragment[] {
|
|
235
|
+
const awareness = detectClioCoderRepo(cwd);
|
|
236
|
+
if (!awareness.isClioCoderRepo || !awareness.repoRoot) return [];
|
|
237
|
+
const body = [
|
|
238
|
+
"# Clio Source Tree",
|
|
239
|
+
"This workspace is Clio Coder's own source tree.",
|
|
240
|
+
"When running inside this repo, Clio can modify her own TUI, skills, agents, tools, prompts, context/bootstrap, and harness as ordinary local source work when the user asks.",
|
|
241
|
+
"Shared contribution/publishing/push/PR/release requires explicit user intent and normal Git/GitHub etiquette. Do not imply autonomous publishing.",
|
|
242
|
+
].join("\n");
|
|
243
|
+
return [
|
|
244
|
+
{
|
|
245
|
+
id: CLIO_REPO_AWARENESS_ID,
|
|
246
|
+
relPath: "inline/clio-repo-awareness",
|
|
247
|
+
body,
|
|
248
|
+
contentHash: sha256(body),
|
|
249
|
+
dynamic: true,
|
|
250
|
+
},
|
|
251
|
+
];
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
function projectTypeFromPromptContext(text: string): string | null {
|
|
255
|
+
const match = /<project-type>([^<]+)<\/project-type>/.exec(text);
|
|
256
|
+
const value = match?.[1]?.trim();
|
|
257
|
+
return value && value !== "unknown" ? value : null;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
function hasCodewiki(text: string): boolean {
|
|
261
|
+
return text.includes("<codewiki>");
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
function wikiAvailabilityFromPromptContext(text: string): string | null {
|
|
265
|
+
const match = /<wiki>([^<]+)<\/wiki>/.exec(text);
|
|
266
|
+
const value = match?.[1]?.trim();
|
|
267
|
+
return value && value.length > 0 ? value : null;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
function renderProjectSynopsis(context: ProjectPromptContext, providerSupportsTools: boolean | null): string {
|
|
271
|
+
const projectType = projectTypeFromPromptContext(context.text);
|
|
272
|
+
const wiki = wikiAvailabilityFromPromptContext(context.text);
|
|
273
|
+
const lines = ["<project-synopsis>"];
|
|
274
|
+
if (projectType) lines.push(`Language: ${projectType}`);
|
|
275
|
+
if (context.clioMd) {
|
|
276
|
+
lines.push(`Project: ${context.clioMd.projectName}`);
|
|
277
|
+
lines.push(
|
|
278
|
+
"CLIO-CODER.md: available; compact synopsis only because the handbook is too large for automatic preload.",
|
|
279
|
+
);
|
|
280
|
+
}
|
|
281
|
+
if (hasCodewiki(context.text)) lines.push("Codewiki: available via code_nav.");
|
|
282
|
+
if (wiki) lines.push(`Wiki: ${wiki}`);
|
|
283
|
+
if (providerSupportsTools === false) {
|
|
284
|
+
lines.push("Tools: unavailable for this target; use this synopsis only as fallback context.");
|
|
285
|
+
} else {
|
|
286
|
+
lines.push('Retrieve exact repository facts with context(scope="workspace"), code_nav, grep, and read.');
|
|
287
|
+
}
|
|
288
|
+
lines.push("</project-synopsis>");
|
|
289
|
+
return lines.join("\n");
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* Project context is selected once per session compile: the full CLIO-CODER.md
|
|
294
|
+
* preload when it is small enough, a compact synopsis otherwise. No per-turn
|
|
295
|
+
* selection — the session prompt is stable for the session's lifetime. The
|
|
296
|
+
* cliff itself lives in prompts/preload.ts so reporting surfaces classify
|
|
297
|
+
* with the same rule.
|
|
298
|
+
*/
|
|
299
|
+
function selectProjectContext(context: ProjectPromptContext, providerSupportsTools: boolean | null): string {
|
|
300
|
+
const preload = classifyProjectPreload({ hasClioMd: context.clioMd !== null, text: context.text });
|
|
301
|
+
if (preload.mode === "none") return "";
|
|
302
|
+
if (preload.mode === "full") return context.text.trim();
|
|
303
|
+
return renderProjectSynopsis(context, providerSupportsTools);
|
|
304
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { readdirSync, readFileSync } from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import yaml from "yaml";
|
|
4
|
+
import { resolvePackageRoot } from "../../core/package-root.js";
|
|
5
|
+
import { sha256 } from "./hash.js";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* A single prompt fragment loaded from disk, with parsed frontmatter plus the
|
|
9
|
+
* raw content hash used to seed the prompts domain's reproducibility contract.
|
|
10
|
+
*/
|
|
11
|
+
export interface LoadedFragment {
|
|
12
|
+
path: string;
|
|
13
|
+
relPath: string;
|
|
14
|
+
id: string;
|
|
15
|
+
version: number;
|
|
16
|
+
description: string;
|
|
17
|
+
dynamic: boolean;
|
|
18
|
+
body: string;
|
|
19
|
+
contentHash: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface FragmentTable {
|
|
23
|
+
byId: ReadonlyMap<string, LoadedFragment>;
|
|
24
|
+
rootDir: string;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface LoadFragmentsOptions {
|
|
28
|
+
rootDir?: string;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const frontmatterRegex = /^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/;
|
|
32
|
+
const fragmentIdRegex = /^[a-z0-9-]+(?:\.[a-z0-9-]+)+$/;
|
|
33
|
+
|
|
34
|
+
function defaultRootDir(): string {
|
|
35
|
+
return path.join(resolvePackageRoot(), "src", "domains", "prompts", "fragments");
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function walk(root: string): string[] {
|
|
39
|
+
const out: string[] = [];
|
|
40
|
+
let entries: import("node:fs").Dirent[];
|
|
41
|
+
try {
|
|
42
|
+
entries = readdirSync(root, { withFileTypes: true });
|
|
43
|
+
} catch {
|
|
44
|
+
return out;
|
|
45
|
+
}
|
|
46
|
+
for (const entry of entries) {
|
|
47
|
+
const full = path.join(root, entry.name);
|
|
48
|
+
if (entry.isDirectory()) {
|
|
49
|
+
if (entry.name === "wiki") continue;
|
|
50
|
+
out.push(...walk(full));
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
if (entry.isFile() && entry.name.endsWith(".md")) {
|
|
54
|
+
out.push(full);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return out.sort((left, right) => left.localeCompare(right));
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function parseFragment(filePath: string, rootDir: string): LoadedFragment {
|
|
61
|
+
const raw = readFileSync(filePath, "utf8");
|
|
62
|
+
// Normalize to POSIX forward slashes so staticCompositionHash is identical
|
|
63
|
+
// across Windows and POSIX hosts.
|
|
64
|
+
const rawRel = path.relative(rootDir, filePath);
|
|
65
|
+
const relPath = rawRel.split(path.sep).join("/");
|
|
66
|
+
const match = raw.match(frontmatterRegex);
|
|
67
|
+
if (!match) {
|
|
68
|
+
throw new Error(`fragment-loader: ${relPath}: missing or malformed YAML frontmatter`);
|
|
69
|
+
}
|
|
70
|
+
const frontmatterText = match[1] ?? "";
|
|
71
|
+
const body = match[2] ?? "";
|
|
72
|
+
|
|
73
|
+
let parsed: unknown;
|
|
74
|
+
try {
|
|
75
|
+
parsed = yaml.parse(frontmatterText);
|
|
76
|
+
} catch (err) {
|
|
77
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
78
|
+
throw new Error(`fragment-loader: ${relPath}: invalid YAML frontmatter (${reason})`);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
82
|
+
throw new Error(`fragment-loader: ${relPath}: frontmatter must be a YAML object`);
|
|
83
|
+
}
|
|
84
|
+
const fm = parsed as Record<string, unknown>;
|
|
85
|
+
|
|
86
|
+
const id = fm.id;
|
|
87
|
+
if (typeof id !== "string" || !fragmentIdRegex.test(id)) {
|
|
88
|
+
throw new Error(`fragment-loader: ${relPath}: frontmatter.id must be a dot-separated namespace`);
|
|
89
|
+
}
|
|
90
|
+
const version = fm.version;
|
|
91
|
+
if (version !== 1) {
|
|
92
|
+
throw new Error(`fragment-loader: ${relPath}: frontmatter.version must be 1`);
|
|
93
|
+
}
|
|
94
|
+
const description = fm.description;
|
|
95
|
+
if (typeof description !== "string" || description.trim() === "") {
|
|
96
|
+
throw new Error(`fragment-loader: ${relPath}: frontmatter.description must be a non-empty string`);
|
|
97
|
+
}
|
|
98
|
+
const dynamicRaw = fm.dynamic;
|
|
99
|
+
if (dynamicRaw !== undefined && typeof dynamicRaw !== "boolean") {
|
|
100
|
+
throw new Error(`fragment-loader: ${relPath}: frontmatter.dynamic must be a boolean when present`);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return {
|
|
104
|
+
path: filePath,
|
|
105
|
+
relPath,
|
|
106
|
+
id,
|
|
107
|
+
version,
|
|
108
|
+
description,
|
|
109
|
+
dynamic: dynamicRaw === true,
|
|
110
|
+
body,
|
|
111
|
+
contentHash: sha256(raw),
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Walk `src/domains/prompts/fragments/**\/*.md` (relative to the package root
|
|
117
|
+
* or the supplied `rootDir`) and return a fragment table keyed by id.
|
|
118
|
+
*
|
|
119
|
+
* Duplicate ids throw; malformed or policy-violating fragments throw with a
|
|
120
|
+
* relPath-qualified error so that the prompts compiler never receives a
|
|
121
|
+
* partially loaded table.
|
|
122
|
+
*/
|
|
123
|
+
export function loadFragments(options?: string | LoadFragmentsOptions): FragmentTable {
|
|
124
|
+
const rootDir = typeof options === "string" ? options : options?.rootDir;
|
|
125
|
+
const resolvedRoot = rootDir ? path.resolve(rootDir) : defaultRootDir();
|
|
126
|
+
const files = walk(resolvedRoot);
|
|
127
|
+
const byId = new Map<string, LoadedFragment>();
|
|
128
|
+
for (const file of files) {
|
|
129
|
+
const fragment = parseFragment(file, resolvedRoot);
|
|
130
|
+
const existing = byId.get(fragment.id);
|
|
131
|
+
if (existing) {
|
|
132
|
+
throw new Error(
|
|
133
|
+
`fragment-loader: duplicate fragment id "${fragment.id}" in ${existing.relPath} and ${fragment.relPath}`,
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
byId.set(fragment.id, fragment);
|
|
137
|
+
}
|
|
138
|
+
return { byId, rootDir: resolvedRoot };
|
|
139
|
+
}
|
|
@@ -12,8 +12,9 @@ science (NSF-funded, iowarp.ai). CLIO stands for Context Layer for
|
|
|
12
12
|
Input/Output. You are the first female agentic coder, named for the
|
|
13
13
|
Greek muse of history who proclaimed and made famous the great
|
|
14
14
|
deeds of the past. Developed by the Gnosis Research Center
|
|
15
|
-
at Illinois Tech
|
|
16
|
-
scientific-software engineering for
|
|
15
|
+
at Illinois Tech (github.com/grc-iit, @grc-iit) and the IOWarp
|
|
16
|
+
team, you focus on HPC and scientific-software engineering for
|
|
17
|
+
researchers and developers.
|
|
17
18
|
|
|
18
19
|
Whichever weights run you, your name and persona are Clio. You are
|
|
19
20
|
not Claude, GPT, Qwen, Gemini, Llama, Mistral, or any other vendor's
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: identity.self-awareness
|
|
3
|
+
version: 1
|
|
4
|
+
budgetTokens: 360
|
|
5
|
+
description: Clio self-awareness, installed documentation, and harness configuration paths
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Clio's own harness
|
|
9
|
+
|
|
10
|
+
Read these only when the user asks about Clio herself, her configuration, targets, fleet, extensions, skills, dispatch, or safety model; never for ordinary coding work.
|
|
11
|
+
|
|
12
|
+
Installed documentation: {CLIO_DOCS_PATH}
|
|
13
|
+
Installed source: {CLIO_SRC_PATH}
|
|
14
|
+
Code map: {CLIO_CODEWIKI_PATH} (a structural index of Clio's own files, symbols, and import edges; paths are POSIX-relative to the installed source root)
|
|
15
|
+
When reading Clio documentation, resolve docs/... there, not in the current working directory.
|
|
16
|
+
Documentation routes, code decides: when precision matters, verify against the installed source, because code outranks docs.
|
|
17
|
+
|
|
18
|
+
Documentation routing:
|
|
19
|
+
- Commands -> docs/commands-and-modes.md
|
|
20
|
+
- Context window resolution -> docs/context-engine.md
|
|
21
|
+
- Runtime targets -> docs/configuration-and-targets.md
|
|
22
|
+
- Every environment variable the runtime reads -> docs/environment-variables.md
|
|
23
|
+
- Argonne ALCF Sophia/Metis inference targets over Globus OAuth -> docs/alcf-provider.md
|
|
24
|
+
- Installation -> docs/installation-and-lifecycle.md
|
|
25
|
+
- Safety posture -> docs/safety-model.md
|
|
26
|
+
- Source layout -> docs/architecture.md
|
|
27
|
+
- Why the dispatch domain is not split -> docs/dispatch-architecture-rationale.md
|
|
28
|
+
- Prompt envelope reuse -> docs/prompt-envelope-and-tools.md
|
|
29
|
+
- In-depth reference for all 20 worker tools -> docs/tool-usage.md
|
|
30
|
+
- Developer guide to implementing custom model runtimes and inference server integrations -> docs/provider-adapter-cookbook.md
|
|
31
|
+
- Built-in agent recipes -> docs/built-in-agents.md
|
|
32
|
+
- Artifact browsing -> docs/observability.md
|
|
33
|
+
- Where every generated file lands -> docs/artifact-placement.md
|
|
34
|
+
- Evidence directory structures -> docs/evidence-and-memory.md
|
|
35
|
+
- Local YAML eval suites -> docs/eval-runner.md
|
|
36
|
+
- Prompt and skill resources -> docs/extensions-and-sharing.md
|
|
37
|
+
- Skills Hub marketplace discovery -> docs/skills-marketplace.md
|
|
38
|
+
- Runtime model refresh -> docs/model-catalog.md
|
|
39
|
+
- Active component snapshots and the experimental middleware hook/effect contract -> docs/middleware-and-components.md
|
|
40
|
+
- Advisory validation-contract patterns for scientific artifacts and HPC assumptions -> docs/scientific-validation.md
|
|
41
|
+
- Falsifiable Change Manifest JSON templates -> docs/evolution.md
|
|
42
|
+
- Source-first docs workflow -> docs/documentation-guide.md
|
|
43
|
+
- Interface layout -> docs/tui-design.md
|
|
44
|
+
- NDJSON parent-child socket protocols -> docs/worker-dispatch-mechanics.md
|
|
45
|
+
- Multi-node fleet dispatch -> docs/fleet-dispatch.md
|
|
46
|
+
- Multi-process capacity leases -> docs/capacity-and-scheduling.md
|
|
47
|
+
- Executable multi-node demo with reviewer gate and receipt provenance walkthrough -> docs/fleet-demo-runbook.md
|
|
48
|
+
- Session lifecycle -> docs/session-lifecycle.md
|
|
49
|
+
- Agent Client Protocol (ACP) server over stdio -> docs/acp.md
|
|
50
|
+
- Version registry and migration policies for all 9 serialized artifact schemas -> docs/artifact-versions.md
|
|
51
|
+
- Process exit code taxonomy -> docs/exit-codes-and-output.md
|
|
52
|
+
- Actionable error remediation and diagnostics keyed by exact user-facing messages -> docs/troubleshooting.md
|
|
53
|
+
- Canonical definitions of 17 core architectural concepts mapped to src/ types -> docs/glossary.md
|
|
54
|
+
- Complete source-to-documentation mapping matrix and subsystem coverage status -> docs/documentation-coverage.md
|
|
55
|
+
- Issue-driven development lifecycle -> docs/development-pipeline.md
|
|
56
|
+
- Proactive task memory architecture -> docs/proactive-memory.md
|
|
57
|
+
- WAL SQLite trace mirror database schema -> docs/trace-store.md
|
|
58
|
+
- Private context index determinism -> docs/evals-internal.md
|
|
59
|
+
- Point-in-time inventory of legacy environment variables (Historical Appendix) -> docs/config-knobs-audit.md
|
|
60
|
+
- Clock and timestamp conventions -> docs/time-conventions.md
|
|
61
|
+
|
|
62
|
+
User configuration lives in ~/.config/clio-coder/settings.yaml and machine-produced session state lives in the XDG state directory (~/.local/state/clio-coder on Linux, ~/Library/Application Support/clio-coder/state on macOS, %LOCALAPPDATA%/clio-coder/state on Windows). Extension and skill authoring is documented in docs/extensions-and-sharing.md and docs/skills-marketplace.md.
|
|
63
|
+
Always read Clio .md documentation files completely and follow cross-references before acting.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: operating.contract
|
|
3
3
|
version: 1
|
|
4
|
-
budgetTokens:
|
|
4
|
+
budgetTokens: 680
|
|
5
5
|
description: Single operating posture contract
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -30,6 +30,15 @@ repeating a "tests pass" claim.
|
|
|
30
30
|
Parent spot-checking is not independent specialist confirmation. Use the
|
|
31
31
|
dispatch briefing field for receipt-derived context/data; keep it separate
|
|
32
32
|
from task instructions. Collect detached runs before final synthesis.
|
|
33
|
+
The operator can also run workers themselves with /run and /delegate,
|
|
34
|
+
outside your dispatch history, and hand a finished answer to you with
|
|
35
|
+
--share or /share. Such an answer arrives as operator text headed
|
|
36
|
+
`[worker result] <agent> · run <id> · <outcome> · shared by the operator`,
|
|
37
|
+
and its run id names a sealed receipt you can read. Treat that note as
|
|
38
|
+
operator steering to use, like any operator text; it is not a tool result
|
|
39
|
+
to check against your own dispatch history, and never dispatching that
|
|
40
|
+
run is not a reason to dismiss it. Its prose is an advisory claim under
|
|
41
|
+
the same spot-check discipline as any receipt.
|
|
33
42
|
Report receipt integrity, evidence verification, briefing provenance, and
|
|
34
43
|
project-context provenance separately. Failed, cap-exhausted, zero-tool,
|
|
35
44
|
and citation-free reconnaissance is non-evidence: treat it as unconfirmed
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Lowercase-hex SHA-256 of a UTF-8 string.
|
|
5
|
+
*
|
|
6
|
+
* Used as the single hash primitive for prompt reproducibility. The prompts
|
|
7
|
+
* domain wraps this together with `canonicalJson` so that any structural input
|
|
8
|
+
* (fragment manifests, rendered prompt text) lands on a byte-identical hash
|
|
9
|
+
* whenever the underlying content is equivalent.
|
|
10
|
+
*/
|
|
11
|
+
export function sha256(input: string): string {
|
|
12
|
+
return createHash("sha256").update(input, "utf8").digest("hex");
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Canonical JSON serialization with stable key order and no whitespace.
|
|
17
|
+
*
|
|
18
|
+
* Object keys are sorted recursively; arrays preserve their element order.
|
|
19
|
+
* Primitives (string, number, boolean, null) serialize via JSON.stringify.
|
|
20
|
+
* Undefined values in objects are dropped; undefined array entries become null
|
|
21
|
+
* (matching standard JSON.stringify behavior for arrays). Non-finite numbers
|
|
22
|
+
* and symbols throw, because they cannot be represented deterministically.
|
|
23
|
+
*/
|
|
24
|
+
export function canonicalJson(value: unknown): string {
|
|
25
|
+
return serialize(value);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function serialize(value: unknown): string {
|
|
29
|
+
if (value === null) return "null";
|
|
30
|
+
if (typeof value === "number") {
|
|
31
|
+
if (!Number.isFinite(value)) {
|
|
32
|
+
throw new Error(`canonicalJson: non-finite number ${String(value)} is not representable`);
|
|
33
|
+
}
|
|
34
|
+
return JSON.stringify(value);
|
|
35
|
+
}
|
|
36
|
+
if (typeof value === "string" || typeof value === "boolean") {
|
|
37
|
+
return JSON.stringify(value);
|
|
38
|
+
}
|
|
39
|
+
if (typeof value === "bigint") {
|
|
40
|
+
throw new Error("canonicalJson: bigint is not representable");
|
|
41
|
+
}
|
|
42
|
+
if (typeof value === "symbol" || typeof value === "function") {
|
|
43
|
+
throw new Error(`canonicalJson: ${typeof value} is not representable`);
|
|
44
|
+
}
|
|
45
|
+
if (value === undefined) {
|
|
46
|
+
throw new Error("canonicalJson: undefined is not representable at root");
|
|
47
|
+
}
|
|
48
|
+
if (Array.isArray(value)) {
|
|
49
|
+
const parts: string[] = [];
|
|
50
|
+
for (let i = 0; i < value.length; i++) {
|
|
51
|
+
// `i in value` distinguishes a real `undefined` from a sparse hole;
|
|
52
|
+
// both serialize as `null` to match JSON.stringify's array behavior.
|
|
53
|
+
if (!(i in value) || value[i] === undefined) {
|
|
54
|
+
parts.push("null");
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
parts.push(serialize(value[i]));
|
|
58
|
+
}
|
|
59
|
+
return `[${parts.join(",")}]`;
|
|
60
|
+
}
|
|
61
|
+
if (typeof value === "object") {
|
|
62
|
+
const obj = value as Record<string, unknown>;
|
|
63
|
+
const keys = Object.keys(obj).sort();
|
|
64
|
+
const parts: string[] = [];
|
|
65
|
+
for (const key of keys) {
|
|
66
|
+
const child = obj[key];
|
|
67
|
+
if (child === undefined) continue;
|
|
68
|
+
parts.push(`${JSON.stringify(key)}:${serialize(child)}`);
|
|
69
|
+
}
|
|
70
|
+
return `{${parts.join(",")}}`;
|
|
71
|
+
}
|
|
72
|
+
throw new Error(`canonicalJson: unsupported value of type ${typeof value}`);
|
|
73
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { DomainModule } from "../../core/domain-loader.js";
|
|
2
|
+
import { createPromptsBundle, type PromptsBundleOptions } from "./extension.js";
|
|
3
|
+
import { PromptsManifest } from "./manifest.js";
|
|
4
|
+
|
|
5
|
+
export const PromptsDomainModule: DomainModule = {
|
|
6
|
+
manifest: PromptsManifest,
|
|
7
|
+
createExtension: createPromptsBundle,
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Build a `PromptsDomainModule` with bundle options closed over the factory
|
|
12
|
+
* call. Used by the orchestrator and `clio-coder run` to thread the global
|
|
13
|
+
* `--no-context-files` startup flag into the prompts domain without
|
|
14
|
+
* restructuring the domain loader.
|
|
15
|
+
*/
|
|
16
|
+
export function createPromptsDomainModule(options: PromptsBundleOptions = {}): DomainModule {
|
|
17
|
+
return {
|
|
18
|
+
manifest:
|
|
19
|
+
options.noContextFiles === true
|
|
20
|
+
? {
|
|
21
|
+
...PromptsManifest,
|
|
22
|
+
dependsOn: PromptsManifest.dependsOn.filter((name) => name !== "context"),
|
|
23
|
+
}
|
|
24
|
+
: PromptsManifest,
|
|
25
|
+
createExtension: (context) => createPromptsBundle(context, options),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export type { CompiledSessionPrompt, RenderedPromptFragment, ToolPromptHint, WorkerPromptInputs } from "./compiler.js";
|
|
30
|
+
export type { CompileSessionPromptInput, CompileWorkerPromptInput, PromptsContract } from "./contract.js";
|
|
31
|
+
export type { PromptsBundleOptions } from "./extension.js";
|
|
32
|
+
export { PromptsManifest } from "./manifest.js";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { DomainManifest } from "../../core/domain-loader.js";
|
|
2
|
+
|
|
3
|
+
export const PromptsManifest: DomainManifest = {
|
|
4
|
+
name: "prompts",
|
|
5
|
+
// agents: the compiled session prompt carries the fleet roster, so the
|
|
6
|
+
// recipe registry must be loaded before the first compile.
|
|
7
|
+
dependsOn: ["config", "context", "resources", "agents"],
|
|
8
|
+
};
|