@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,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thin engine-boundary wrapper over pi-ai OAuth flows.
|
|
3
|
+
*
|
|
4
|
+
* pi-ai 0.83 removed the global OAuth provider registry
|
|
5
|
+
* (`registerOAuthProvider`/`getOAuthProvider`) in favor of per-provider
|
|
6
|
+
* `ProviderAuth.oauth` flows (`login`/`refresh`/`toAuth`). Clio owns its own
|
|
7
|
+
* credential persistence (`openAuthStorage()`), so this module keeps a small
|
|
8
|
+
* Clio-side registry keyed by provider id that adapts those flows to the
|
|
9
|
+
* engine surface the domains consume. Domains and CLI code must import these
|
|
10
|
+
* helpers from src/engine/** rather than value-importing pi-ai directly.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import type {
|
|
14
|
+
AuthInteraction,
|
|
15
|
+
OAuthAuth,
|
|
16
|
+
OAuthCredentials,
|
|
17
|
+
OAuthLoginCallbacks,
|
|
18
|
+
OAuthSelectPrompt,
|
|
19
|
+
} from "@earendil-works/pi-ai";
|
|
20
|
+
import { findEnvKeys as piFindEnvKeys, getEnvApiKey as piGetEnvApiKey } from "@earendil-works/pi-ai/compat";
|
|
21
|
+
import { anthropicProvider } from "@earendil-works/pi-ai/providers/anthropic";
|
|
22
|
+
import { githubCopilotProvider } from "@earendil-works/pi-ai/providers/github-copilot";
|
|
23
|
+
import { openaiCodexProvider } from "@earendil-works/pi-ai/providers/openai-codex";
|
|
24
|
+
import { alcfOAuthProvider } from "./alcf-oauth.js";
|
|
25
|
+
|
|
26
|
+
export type { OAuthCredentials, OAuthLoginCallbacks, OAuthSelectPrompt };
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Clio's engine-level OAuth provider surface. Login keeps the legacy callback
|
|
30
|
+
* shape the CLI and TUI implement; `getApiKey` is async because pi's
|
|
31
|
+
* `OAuthAuth.toAuth` derivation is async.
|
|
32
|
+
*/
|
|
33
|
+
export interface EngineOAuthProvider {
|
|
34
|
+
id: string;
|
|
35
|
+
name: string;
|
|
36
|
+
usesCallbackServer: boolean;
|
|
37
|
+
login(callbacks: OAuthLoginCallbacks): Promise<OAuthCredentials>;
|
|
38
|
+
refreshToken(credentials: OAuthCredentials): Promise<OAuthCredentials>;
|
|
39
|
+
getApiKey(credentials: OAuthCredentials): Promise<string>;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** Adapt Clio's legacy login callbacks to pi's AuthInteraction. */
|
|
43
|
+
function interactionFromLoginCallbacks(callbacks: OAuthLoginCallbacks): AuthInteraction {
|
|
44
|
+
const interaction: AuthInteraction = {
|
|
45
|
+
notify(event) {
|
|
46
|
+
switch (event.type) {
|
|
47
|
+
case "auth_url":
|
|
48
|
+
callbacks.onAuth({
|
|
49
|
+
url: event.url,
|
|
50
|
+
...(event.instructions === undefined ? {} : { instructions: event.instructions }),
|
|
51
|
+
});
|
|
52
|
+
return;
|
|
53
|
+
case "device_code":
|
|
54
|
+
callbacks.onDeviceCode({
|
|
55
|
+
userCode: event.userCode,
|
|
56
|
+
verificationUri: event.verificationUri,
|
|
57
|
+
...(event.intervalSeconds === undefined ? {} : { intervalSeconds: event.intervalSeconds }),
|
|
58
|
+
...(event.expiresInSeconds === undefined ? {} : { expiresInSeconds: event.expiresInSeconds }),
|
|
59
|
+
});
|
|
60
|
+
return;
|
|
61
|
+
case "progress":
|
|
62
|
+
case "info":
|
|
63
|
+
callbacks.onProgress?.(event.message);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
async prompt(prompt) {
|
|
68
|
+
switch (prompt.type) {
|
|
69
|
+
case "select": {
|
|
70
|
+
const selection = await callbacks.onSelect({
|
|
71
|
+
message: prompt.message,
|
|
72
|
+
options: prompt.options.map((option) => ({ id: option.id, label: option.label })),
|
|
73
|
+
});
|
|
74
|
+
if (selection === undefined) throw new Error("login cancelled");
|
|
75
|
+
return selection;
|
|
76
|
+
}
|
|
77
|
+
case "manual_code":
|
|
78
|
+
if (callbacks.onManualCodeInput) return callbacks.onManualCodeInput();
|
|
79
|
+
return callbacks.onPrompt({
|
|
80
|
+
message: prompt.message,
|
|
81
|
+
...(prompt.placeholder === undefined ? {} : { placeholder: prompt.placeholder }),
|
|
82
|
+
});
|
|
83
|
+
default:
|
|
84
|
+
return callbacks.onPrompt({
|
|
85
|
+
message: prompt.message,
|
|
86
|
+
...(prompt.placeholder === undefined ? {} : { placeholder: prompt.placeholder }),
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
if (callbacks.signal) interaction.signal = callbacks.signal;
|
|
92
|
+
return interaction;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function fromOAuthAuth(id: string, auth: OAuthAuth | undefined, usesCallbackServer: boolean): EngineOAuthProvider {
|
|
96
|
+
if (!auth) throw new Error(`pi-ai provider "${id}" no longer exposes an OAuth flow`);
|
|
97
|
+
return {
|
|
98
|
+
id,
|
|
99
|
+
name: auth.name,
|
|
100
|
+
usesCallbackServer,
|
|
101
|
+
async login(callbacks) {
|
|
102
|
+
return auth.login(interactionFromLoginCallbacks(callbacks));
|
|
103
|
+
},
|
|
104
|
+
async refreshToken(credentials) {
|
|
105
|
+
return auth.refresh({ ...credentials, type: "oauth" });
|
|
106
|
+
},
|
|
107
|
+
async getApiKey(credentials) {
|
|
108
|
+
const resolved = await auth.toAuth({ ...credentials, type: "oauth" });
|
|
109
|
+
if (!resolved.apiKey) {
|
|
110
|
+
throw new Error(`OAuth provider "${id}" resolved no API key from the stored credential`);
|
|
111
|
+
}
|
|
112
|
+
return resolved.apiKey;
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
let providers: Map<string, EngineOAuthProvider> | null = null;
|
|
118
|
+
|
|
119
|
+
function builtinProviders(): EngineOAuthProvider[] {
|
|
120
|
+
return [
|
|
121
|
+
fromOAuthAuth("anthropic", anthropicProvider().auth.oauth, true),
|
|
122
|
+
fromOAuthAuth("openai-codex", openaiCodexProvider().auth.oauth, true),
|
|
123
|
+
fromOAuthAuth("github-copilot", githubCopilotProvider().auth.oauth, false),
|
|
124
|
+
];
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
function registry(): Map<string, EngineOAuthProvider> {
|
|
128
|
+
if (!providers) {
|
|
129
|
+
providers = new Map(builtinProviders().map((provider) => [provider.id, provider]));
|
|
130
|
+
}
|
|
131
|
+
return providers;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
export function getEngineEnvApiKey(providerId: string): string | undefined {
|
|
135
|
+
try {
|
|
136
|
+
return piGetEnvApiKey(providerId);
|
|
137
|
+
} catch {
|
|
138
|
+
return undefined;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export function findEngineEnvKeys(providerId: string): string[] | undefined {
|
|
143
|
+
try {
|
|
144
|
+
return piFindEnvKeys(providerId);
|
|
145
|
+
} catch {
|
|
146
|
+
return undefined;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
export function getEngineOAuthProvider(providerId: string): EngineOAuthProvider | undefined {
|
|
151
|
+
return registry().get(providerId);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
export function listEngineOAuthProviders(): EngineOAuthProvider[] {
|
|
155
|
+
return [...registry().values()];
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
function registerEngineOAuthProvider(provider: EngineOAuthProvider): void {
|
|
159
|
+
registry().set(provider.id, provider);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
let clioOAuthProvidersRegistered = false;
|
|
163
|
+
|
|
164
|
+
export function registerClioOAuthProviders(): void {
|
|
165
|
+
if (clioOAuthProvidersRegistered) return;
|
|
166
|
+
clioOAuthProvidersRegistered = true;
|
|
167
|
+
registerEngineOAuthProvider(alcfOAuthProvider);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
export async function loginWithEngineOAuthProvider(
|
|
171
|
+
providerId: string,
|
|
172
|
+
callbacks: OAuthLoginCallbacks,
|
|
173
|
+
): Promise<OAuthCredentials> {
|
|
174
|
+
const provider = registry().get(providerId);
|
|
175
|
+
if (!provider) throw new Error(`unknown OAuth provider: ${providerId}`);
|
|
176
|
+
return provider.login(callbacks);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
export async function refreshEngineOAuthCredentials(
|
|
180
|
+
providerId: string,
|
|
181
|
+
credentials: OAuthCredentials,
|
|
182
|
+
): Promise<OAuthCredentials> {
|
|
183
|
+
const provider = registry().get(providerId);
|
|
184
|
+
if (!provider) throw new Error(`unknown OAuth provider: ${providerId}`);
|
|
185
|
+
return provider.refreshToken(credentials);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
export async function getEngineOAuthApiKey(providerId: string, credentials: OAuthCredentials): Promise<string> {
|
|
189
|
+
const provider = registry().get(providerId);
|
|
190
|
+
if (!provider) throw new Error(`unknown OAuth provider: ${providerId}`);
|
|
191
|
+
return provider.getApiKey(credentials);
|
|
192
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical pi-mono package names. The engine barrel is the sole place in
|
|
3
|
+
* the codebase where the literal `@earendil-works/*` strings are allowed to
|
|
4
|
+
* appear; domains and core must import these constants instead.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export const PI_MONO_PACKAGES = {
|
|
8
|
+
agentCore: "@earendil-works/pi-agent-core",
|
|
9
|
+
ai: "@earendil-works/pi-ai",
|
|
10
|
+
tui: "@earendil-works/pi-tui",
|
|
11
|
+
} as const;
|
|
12
|
+
|
|
13
|
+
export type PiMonoPackageName = (typeof PI_MONO_PACKAGES)[keyof typeof PI_MONO_PACKAGES];
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
import { RESPONSE_SCHEMA_RUNTIME_ID } from "../core/response-schema.js";
|
|
2
|
+
import type { ThinkingLevel } from "../domains/providers/index.js";
|
|
3
|
+
import {
|
|
4
|
+
defaultAnthropicBudgetForLevel,
|
|
5
|
+
defaultAnthropicEffortForLevel,
|
|
6
|
+
type ThinkingEffortByLevel,
|
|
7
|
+
} from "../domains/providers/thinking-control-policy.js";
|
|
8
|
+
import type { EngineModel } from "./types.js";
|
|
9
|
+
|
|
10
|
+
function reasoningSummaryForLevel(level: ThinkingLevel | undefined): "concise" | "detailed" | undefined {
|
|
11
|
+
if (!level || level === "off") return undefined;
|
|
12
|
+
if (level === "minimal" || level === "low") return "concise";
|
|
13
|
+
return "detailed";
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function isOpenAIResponsesApi(api: string): boolean {
|
|
17
|
+
return api === "openai-codex-responses" || api === "openai-responses" || api === "azure-openai-responses";
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function isRecord(value: unknown): value is Record<string, unknown> {
|
|
21
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function namedToolDefinitions(tools: unknown, toolName: string): unknown[] | null {
|
|
25
|
+
if (!Array.isArray(tools)) return null;
|
|
26
|
+
const narrowed: unknown[] = [];
|
|
27
|
+
for (const tool of tools) {
|
|
28
|
+
if (!isRecord(tool)) continue;
|
|
29
|
+
const directName = typeof tool.name === "string" ? tool.name : undefined;
|
|
30
|
+
const functionName =
|
|
31
|
+
isRecord(tool.function) && typeof tool.function.name === "string" ? tool.function.name : undefined;
|
|
32
|
+
const toolSpecName =
|
|
33
|
+
isRecord(tool.toolSpec) && typeof tool.toolSpec.name === "string" ? tool.toolSpec.name : undefined;
|
|
34
|
+
if (directName === toolName || functionName === toolName || toolSpecName === toolName) {
|
|
35
|
+
narrowed.push(tool);
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
if (Array.isArray(tool.functionDeclarations)) {
|
|
39
|
+
const declarations = tool.functionDeclarations.filter(
|
|
40
|
+
(declaration) => isRecord(declaration) && declaration.name === toolName,
|
|
41
|
+
);
|
|
42
|
+
if (declarations.length > 0) narrowed.push({ ...tool, functionDeclarations: declarations });
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return narrowed.length > 0 ? narrowed : null;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function numberValue(value: unknown): number | undefined {
|
|
49
|
+
return typeof value === "number" && Number.isFinite(value) && value > 0 ? value : undefined;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function patchOpenAIReasoningSummaryPayload(
|
|
53
|
+
payload: unknown,
|
|
54
|
+
model: EngineModel,
|
|
55
|
+
thinkingLevel: ThinkingLevel | undefined,
|
|
56
|
+
): unknown | undefined {
|
|
57
|
+
if (!isOpenAIResponsesApi(model.api)) return undefined;
|
|
58
|
+
const summary = reasoningSummaryForLevel(thinkingLevel);
|
|
59
|
+
if (!summary || !isRecord(payload)) return undefined;
|
|
60
|
+
const record = payload;
|
|
61
|
+
const reasoning = record.reasoning;
|
|
62
|
+
if (!isRecord(reasoning)) return undefined;
|
|
63
|
+
return {
|
|
64
|
+
...record,
|
|
65
|
+
reasoning: {
|
|
66
|
+
...reasoning,
|
|
67
|
+
summary,
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function isAnthropicMessagesApi(api: string): boolean {
|
|
73
|
+
return api === "anthropic-messages";
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function anthropicThinkingLevelMap(model: EngineModel): ThinkingEffortByLevel | undefined {
|
|
77
|
+
return model.thinkingLevelMap as ThinkingEffortByLevel | undefined;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function anthropicUsesAdaptiveThinking(model: EngineModel): boolean {
|
|
81
|
+
const compat = model.compat as { forceAdaptiveThinking?: boolean } | undefined;
|
|
82
|
+
return compat?.forceAdaptiveThinking === true;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
function patchAnthropicThinkingPayload(
|
|
86
|
+
payload: unknown,
|
|
87
|
+
model: EngineModel,
|
|
88
|
+
thinkingLevel: ThinkingLevel | undefined,
|
|
89
|
+
): unknown | undefined {
|
|
90
|
+
if (!isAnthropicMessagesApi(model.api) || model.reasoning !== true) return undefined;
|
|
91
|
+
if (!thinkingLevel || thinkingLevel === "off" || !isRecord(payload)) return undefined;
|
|
92
|
+
const record = payload;
|
|
93
|
+
const existingThinking = isRecord(record.thinking) ? record.thinking : {};
|
|
94
|
+
const display = typeof existingThinking.display === "string" ? existingThinking.display : "summarized";
|
|
95
|
+
|
|
96
|
+
if (anthropicUsesAdaptiveThinking(model)) {
|
|
97
|
+
const effort = defaultAnthropicEffortForLevel(thinkingLevel, anthropicThinkingLevelMap(model));
|
|
98
|
+
const existingOutputConfig = isRecord(record.output_config) ? record.output_config : {};
|
|
99
|
+
return {
|
|
100
|
+
...record,
|
|
101
|
+
thinking: { ...existingThinking, type: "adaptive", display },
|
|
102
|
+
...(effort ? { output_config: { ...existingOutputConfig, effort } } : {}),
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
const maxTokens = numberValue(record.max_tokens) ?? model.maxTokens;
|
|
107
|
+
const budgetTokens = defaultAnthropicBudgetForLevel(thinkingLevel, maxTokens);
|
|
108
|
+
if (budgetTokens === undefined) return undefined;
|
|
109
|
+
return {
|
|
110
|
+
...record,
|
|
111
|
+
thinking: { ...existingThinking, type: "enabled", budget_tokens: budgetTokens, display },
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Align provider payloads with Clio's effective thinking level.
|
|
117
|
+
*
|
|
118
|
+
* OpenAI Responses defaults reasoning summaries to "auto", which can yield no
|
|
119
|
+
* visible thinking blocks. Anthropic's generic stream path can also under-map
|
|
120
|
+
* Clio levels when xhigh/adaptive metadata is available only on the model.
|
|
121
|
+
*/
|
|
122
|
+
export function patchProviderThinkingPayload(
|
|
123
|
+
payload: unknown,
|
|
124
|
+
model: EngineModel,
|
|
125
|
+
thinkingLevel: ThinkingLevel | undefined,
|
|
126
|
+
): unknown | undefined {
|
|
127
|
+
return (
|
|
128
|
+
patchOpenAIReasoningSummaryPayload(payload, model, thinkingLevel) ??
|
|
129
|
+
patchAnthropicThinkingPayload(payload, model, thinkingLevel)
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Force a text-only round by setting the request-level tool-choice knob to
|
|
135
|
+
* "none". Used while a loop-guard synthesis lockout is active: the lockout
|
|
136
|
+
* directive alone relies on model compliance, and measured local models kept
|
|
137
|
+
* calling tools until the backstop stopped the turn, throwing away everything
|
|
138
|
+
* the turn had gathered. The tool schema bytes are untouched (the prompt
|
|
139
|
+
* prefix and tool surface stay byte-stable); only this request's routing
|
|
140
|
+
* changes, so prompt-prefix caches are unaffected.
|
|
141
|
+
*
|
|
142
|
+
* Returns undefined when the payload carries no tool surface (nothing to
|
|
143
|
+
* lock) or is not a record (unknown provider shape; leave it alone).
|
|
144
|
+
*/
|
|
145
|
+
export function patchToolChoiceNonePayload(payload: unknown, model: EngineModel): unknown | undefined {
|
|
146
|
+
if (!isRecord(payload)) return undefined;
|
|
147
|
+
if (!("tools" in payload) || payload.tools === undefined || payload.tools === null) return undefined;
|
|
148
|
+
if (isAnthropicMessagesApi(model.api)) return { ...payload, tool_choice: { type: "none" } };
|
|
149
|
+
return { ...payload, tool_choice: "none" };
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Force a text-only round the hard way: remove the tool surface from the
|
|
154
|
+
* request. Used for a worker's synthesis-locked rounds (the loop-guard lockout
|
|
155
|
+
* and the terminal result-contract repair). {@link patchToolChoiceNonePayload}
|
|
156
|
+
* is not enough there: llama.cpp honors tool_choice "none" by disabling its
|
|
157
|
+
* tool-call parser while the chat template still renders every tool schema,
|
|
158
|
+
* so a local model that decides to call a tool anyway hands its markup back
|
|
159
|
+
* as content, the loop guard strips it, and the worker ends with no result
|
|
160
|
+
* at all (a coder run that had written and tested its file returned zero
|
|
161
|
+
* output this way, #78). With no tools in the prompt the template renders no
|
|
162
|
+
* tool block and the model has nothing to call. The prompt prefix changes for
|
|
163
|
+
* these one or two rounds; that is the price of a usable answer.
|
|
164
|
+
*
|
|
165
|
+
* Anthropic keeps the tool_choice knob instead: its API rejects a history
|
|
166
|
+
* that carries tool_use blocks unless tools are defined, and it honors
|
|
167
|
+
* tool_choice none properly.
|
|
168
|
+
*/
|
|
169
|
+
function patchToolSurfaceLockedPayload(payload: unknown, model: EngineModel): unknown | undefined {
|
|
170
|
+
if (!isRecord(payload)) return undefined;
|
|
171
|
+
if (!("tools" in payload) || payload.tools === undefined || payload.tools === null) return undefined;
|
|
172
|
+
if (isAnthropicMessagesApi(model.api)) return patchToolChoiceNonePayload(payload, model);
|
|
173
|
+
const stripped = { ...payload };
|
|
174
|
+
delete stripped.tools;
|
|
175
|
+
delete stripped.tool_choice;
|
|
176
|
+
return stripped;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/** Require one exposed tool for the next provider round while preserving the full schema surface. */
|
|
180
|
+
export function patchToolChoiceNamedPayload(
|
|
181
|
+
payload: unknown,
|
|
182
|
+
model: EngineModel,
|
|
183
|
+
toolName: string,
|
|
184
|
+
): unknown | undefined {
|
|
185
|
+
if (!isRecord(payload) || toolName.trim().length === 0) return undefined;
|
|
186
|
+
if (isAnthropicMessagesApi(model.api)) {
|
|
187
|
+
const tools = namedToolDefinitions(payload.tools, toolName);
|
|
188
|
+
if (tools === null) return undefined;
|
|
189
|
+
// Anthropic rejects a named tool choice while extended/adaptive thinking
|
|
190
|
+
// is active. Required-tool rounds are routing rounds, so disable thinking
|
|
191
|
+
// for this request only and remove the adaptive effort knob that belongs
|
|
192
|
+
// to it; the next automatic round resumes the configured thinking level.
|
|
193
|
+
const patched = { ...payload };
|
|
194
|
+
delete patched.thinking;
|
|
195
|
+
if (isRecord(patched.output_config) && "effort" in patched.output_config) {
|
|
196
|
+
const outputConfig = { ...patched.output_config };
|
|
197
|
+
delete outputConfig.effort;
|
|
198
|
+
if (Object.keys(outputConfig).length > 0) patched.output_config = outputConfig;
|
|
199
|
+
else delete patched.output_config;
|
|
200
|
+
}
|
|
201
|
+
return { ...patched, tools, tool_choice: { type: "tool", name: toolName } };
|
|
202
|
+
}
|
|
203
|
+
if (model.api === "google-generative-ai" || model.api === "google-vertex") {
|
|
204
|
+
if (!isRecord(payload.config) || payload.config.tools === undefined || payload.config.tools === null)
|
|
205
|
+
return undefined;
|
|
206
|
+
const tools = namedToolDefinitions(payload.config.tools, toolName);
|
|
207
|
+
if (tools === null) return undefined;
|
|
208
|
+
const toolConfig = isRecord(payload.config.toolConfig) ? payload.config.toolConfig : {};
|
|
209
|
+
return {
|
|
210
|
+
...payload,
|
|
211
|
+
config: {
|
|
212
|
+
...payload.config,
|
|
213
|
+
tools,
|
|
214
|
+
toolConfig: {
|
|
215
|
+
...toolConfig,
|
|
216
|
+
functionCallingConfig: { mode: "ANY", allowedFunctionNames: [toolName] },
|
|
217
|
+
},
|
|
218
|
+
},
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
if (model.api === "bedrock-converse-stream") {
|
|
222
|
+
if (!isRecord(payload.toolConfig) || payload.toolConfig.tools === undefined || payload.toolConfig.tools === null) {
|
|
223
|
+
return undefined;
|
|
224
|
+
}
|
|
225
|
+
const tools = namedToolDefinitions(payload.toolConfig.tools, toolName);
|
|
226
|
+
if (tools === null) return undefined;
|
|
227
|
+
return { ...payload, toolConfig: { ...payload.toolConfig, tools, toolChoice: { tool: { name: toolName } } } };
|
|
228
|
+
}
|
|
229
|
+
const tools = namedToolDefinitions(payload.tools, toolName);
|
|
230
|
+
if (tools === null) return undefined;
|
|
231
|
+
if (isOpenAIResponsesApi(model.api)) {
|
|
232
|
+
return { ...payload, tools, tool_choice: { type: "function", name: toolName } };
|
|
233
|
+
}
|
|
234
|
+
if (model.api === "mistral-conversations") {
|
|
235
|
+
return { ...payload, tools, toolChoice: { type: "function", function: { name: toolName } } };
|
|
236
|
+
}
|
|
237
|
+
return { ...payload, tools, tool_choice: { type: "function", function: { name: toolName } } };
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/** Attach llama-server's native JSON-schema response constraint without changing its tool surface. */
|
|
241
|
+
function patchLlamaCppResponseSchemaPayload(
|
|
242
|
+
payload: unknown,
|
|
243
|
+
runtimeId: string,
|
|
244
|
+
responseSchema: Record<string, unknown> | undefined,
|
|
245
|
+
): unknown | undefined {
|
|
246
|
+
if (responseSchema === undefined) return undefined;
|
|
247
|
+
if (runtimeId !== RESPONSE_SCHEMA_RUNTIME_ID) {
|
|
248
|
+
throw new Error(`responseSchema requires the native llamacpp runtime; received '${runtimeId}'`);
|
|
249
|
+
}
|
|
250
|
+
if (!isRecord(payload)) throw new Error("cannot apply responseSchema to a non-object provider payload");
|
|
251
|
+
return {
|
|
252
|
+
...payload,
|
|
253
|
+
response_format: {
|
|
254
|
+
// llama-server accepts schema-constrained JSON through the widely
|
|
255
|
+
// compatible json_object form; some deployed gateways silently ignore
|
|
256
|
+
// the newer json_schema discriminator while still returning HTTP 200.
|
|
257
|
+
type: "json_object",
|
|
258
|
+
schema: responseSchema,
|
|
259
|
+
},
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
export interface WorkerPayloadPatchOptions {
|
|
264
|
+
runtimeId: string;
|
|
265
|
+
thinkingLevel?: ThinkingLevel;
|
|
266
|
+
responseSchema?: Record<string, unknown>;
|
|
267
|
+
toolChoiceNone?: boolean;
|
|
268
|
+
toolChoiceName?: string;
|
|
269
|
+
/** Synthesis-locked round: remove the tool surface, see {@link patchToolSurfaceLockedPayload}. */
|
|
270
|
+
toolSurfaceLocked?: boolean;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
/** Compose all worker-owned request mutations over one payload in a stable order. */
|
|
274
|
+
export function patchWorkerRequestPayload(
|
|
275
|
+
payload: unknown,
|
|
276
|
+
model: EngineModel,
|
|
277
|
+
options: WorkerPayloadPatchOptions,
|
|
278
|
+
): unknown | undefined {
|
|
279
|
+
let patched = payload;
|
|
280
|
+
let changed = false;
|
|
281
|
+
|
|
282
|
+
const thinkingPatched = patchProviderThinkingPayload(patched, model, options.thinkingLevel);
|
|
283
|
+
if (thinkingPatched !== undefined) {
|
|
284
|
+
patched = thinkingPatched;
|
|
285
|
+
changed = true;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
const schemaPatched = patchLlamaCppResponseSchemaPayload(patched, options.runtimeId, options.responseSchema);
|
|
289
|
+
if (schemaPatched !== undefined) {
|
|
290
|
+
patched = schemaPatched;
|
|
291
|
+
changed = true;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
if (options.toolSurfaceLocked === true) {
|
|
295
|
+
const lockedPatched = patchToolSurfaceLockedPayload(patched, model);
|
|
296
|
+
if (lockedPatched !== undefined) {
|
|
297
|
+
patched = lockedPatched;
|
|
298
|
+
changed = true;
|
|
299
|
+
}
|
|
300
|
+
} else if (options.toolChoiceNone === true) {
|
|
301
|
+
const toolChoicePatched = patchToolChoiceNonePayload(patched, model);
|
|
302
|
+
if (toolChoicePatched !== undefined) {
|
|
303
|
+
patched = toolChoicePatched;
|
|
304
|
+
changed = true;
|
|
305
|
+
}
|
|
306
|
+
} else if (options.toolChoiceName !== undefined) {
|
|
307
|
+
const toolChoicePatched = patchToolChoiceNamedPayload(patched, model, options.toolChoiceName);
|
|
308
|
+
if (toolChoicePatched !== undefined) {
|
|
309
|
+
patched = toolChoicePatched;
|
|
310
|
+
changed = true;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
return changed ? patched : undefined;
|
|
315
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Engine wrapper over pi-tui's SelectList. pi-tui hardcodes the rightwards arrow
|
|
3
|
+
* (U+2192) as the selected-row prefix inside its private renderItem, with no
|
|
4
|
+
* theme hook to override it. Clio's design system mandates the ❯ cursor, so the
|
|
5
|
+
* engine exposes the prefix glyph as theme data here and rewrites the leading
|
|
6
|
+
* arrow of the selected row on the way out. Keeping the override at the engine
|
|
7
|
+
* boundary means every raw SelectList picker inherits the design cursor from its
|
|
8
|
+
* theme without a consumer-side adapter.
|
|
9
|
+
*/
|
|
10
|
+
import {
|
|
11
|
+
SelectList as EngineSelectList,
|
|
12
|
+
type SelectListTheme as EngineSelectListTheme,
|
|
13
|
+
type SelectItem,
|
|
14
|
+
type SelectListLayoutOptions,
|
|
15
|
+
} from "@earendil-works/pi-tui";
|
|
16
|
+
|
|
17
|
+
/** The prefix pi-tui's SelectList.renderItem hardcodes for the selected row. */
|
|
18
|
+
const PI_SELECT_CURSOR = "→";
|
|
19
|
+
|
|
20
|
+
const ESC = String.fromCharCode(0x1b);
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Match the engine cursor only where pi-tui emits it: as the row's leading
|
|
24
|
+
* glyph, after any SGR color runs the theme wraps the selected line in. Anchoring
|
|
25
|
+
* to the start leaves an arrow that appears inside a label untouched.
|
|
26
|
+
*/
|
|
27
|
+
const LEADING_CURSOR_PATTERN = new RegExp(`^((?:${ESC}\\[[0-9;]*m)*)${PI_SELECT_CURSOR} `);
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* pi-tui's SelectListTheme plus the Clio design cursor. When `cursor` is set the
|
|
31
|
+
* selected-row prefix renders with that glyph instead of pi-tui's arrow; omitting
|
|
32
|
+
* it preserves the engine default.
|
|
33
|
+
*/
|
|
34
|
+
export interface SelectListTheme extends EngineSelectListTheme {
|
|
35
|
+
/** Selected-row prefix glyph. Defaults to pi-tui's arrow when omitted. */
|
|
36
|
+
cursor?: string;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export class SelectList extends EngineSelectList {
|
|
40
|
+
private readonly designCursor: string | undefined;
|
|
41
|
+
|
|
42
|
+
constructor(items: SelectItem[], maxVisible: number, theme: SelectListTheme, layout?: SelectListLayoutOptions) {
|
|
43
|
+
super(items, maxVisible, theme, layout);
|
|
44
|
+
this.designCursor = theme.cursor;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
override render(width: number): string[] {
|
|
48
|
+
const lines = super.render(width);
|
|
49
|
+
const cursor = this.designCursor;
|
|
50
|
+
if (!cursor || cursor === PI_SELECT_CURSOR) return lines;
|
|
51
|
+
return lines.map((line) => line.replace(LEADING_CURSOR_PATTERN, `$1${cursor} `));
|
|
52
|
+
}
|
|
53
|
+
}
|