@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,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical tool names. Everything that dispatches a tool call references these constants
|
|
3
|
+
* so mode matrices, safety classifiers, and audit filters never diverge on spelling.
|
|
4
|
+
*
|
|
5
|
+
* The surface is organized in seven planes; each plane is one policy unit
|
|
6
|
+
* (action class, size posture, details schema, concurrency rule):
|
|
7
|
+
* OBSERVE read, grep, find, ls, code_nav, context, credential_present
|
|
8
|
+
* MUTATE write, edit
|
|
9
|
+
* EXECUTE bash, git, verify
|
|
10
|
+
* ORCHESTRATE dispatch, monitor, steer, tasks
|
|
11
|
+
* RETRIEVE web_fetch
|
|
12
|
+
* INTERACT ask_user
|
|
13
|
+
* ARTIFACT artifact
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
export const ToolNames = {
|
|
17
|
+
// OBSERVE
|
|
18
|
+
Read: "read",
|
|
19
|
+
Grep: "grep",
|
|
20
|
+
Find: "find",
|
|
21
|
+
Ls: "ls",
|
|
22
|
+
CodeNav: "code_nav",
|
|
23
|
+
Context: "context",
|
|
24
|
+
CredentialPresent: "credential_present",
|
|
25
|
+
// MUTATE
|
|
26
|
+
Write: "write",
|
|
27
|
+
Edit: "edit",
|
|
28
|
+
// EXECUTE
|
|
29
|
+
Bash: "bash",
|
|
30
|
+
Git: "git",
|
|
31
|
+
Verify: "verify",
|
|
32
|
+
// ORCHESTRATE
|
|
33
|
+
Dispatch: "dispatch",
|
|
34
|
+
Monitor: "monitor",
|
|
35
|
+
Steer: "steer",
|
|
36
|
+
Tasks: "tasks",
|
|
37
|
+
Ledger: "ledger",
|
|
38
|
+
// RETRIEVE
|
|
39
|
+
WebFetch: "web_fetch",
|
|
40
|
+
// INTERACT
|
|
41
|
+
AskUser: "ask_user",
|
|
42
|
+
// ARTIFACT
|
|
43
|
+
Artifact: "artifact",
|
|
44
|
+
// DESIGN-RESERVED, not implemented: gateway, the MCP/DB proxy. One fixed
|
|
45
|
+
// schema; external capabilities are surfaced through find/describe/call
|
|
46
|
+
// RESULTS, never as per-capability schemas in the prompt prefix. Contract
|
|
47
|
+
// sketch: gateway(op: "find" | "describe" | "call", capability?, args?)
|
|
48
|
+
// -> JSON capability listings / schemas / call results, network action
|
|
49
|
+
// class, sequential. Reserving the name here keeps classifiers and
|
|
50
|
+
// profiles from ever assigning "gateway" to a dynamic tool.
|
|
51
|
+
// Gateway: "gateway",
|
|
52
|
+
} as const;
|
|
53
|
+
|
|
54
|
+
export type BuiltinToolName = (typeof ToolNames)[keyof typeof ToolNames];
|
|
55
|
+
|
|
56
|
+
declare const dynamicToolNameBrand: unique symbol;
|
|
57
|
+
export type DynamicToolName = string & { readonly [dynamicToolNameBrand]: "dynamic-tool-name" };
|
|
58
|
+
|
|
59
|
+
export type ToolName = BuiltinToolName | DynamicToolName;
|
|
60
|
+
|
|
61
|
+
export const ALL_TOOL_NAMES: ReadonlyArray<BuiltinToolName> = Object.values(ToolNames);
|
|
62
|
+
|
|
63
|
+
export function isBuiltinToolName(name: ToolName): name is BuiltinToolName {
|
|
64
|
+
return (ALL_TOOL_NAMES as ReadonlyArray<string>).includes(name);
|
|
65
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const VERIFICATION_SCRIPT_FAMILY_HINT = "test*/lint*/build*/typecheck*/check*/format*/ci*";
|
|
2
|
+
|
|
3
|
+
const VERIFICATION_SCRIPT_PATTERN = /^(?:test|lint|build|typecheck|check|format|ci)(?:[:.-].*)?$/;
|
|
4
|
+
|
|
5
|
+
export function isVerificationScriptName(name: string): boolean {
|
|
6
|
+
return VERIFICATION_SCRIPT_PATTERN.test(name);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function declaredVerificationScripts(scripts: Record<string, unknown>): string[] {
|
|
10
|
+
return Object.keys(scripts)
|
|
11
|
+
.filter((name) => isVerificationScriptName(name))
|
|
12
|
+
.sort((a, b) => a.localeCompare(b));
|
|
13
|
+
}
|
|
@@ -0,0 +1,492 @@
|
|
|
1
|
+
import { execFile, execFileSync } from "node:child_process";
|
|
2
|
+
import fs, { type Dir } from "node:fs";
|
|
3
|
+
import { join, sep } from "node:path";
|
|
4
|
+
import { performance } from "node:perf_hooks";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Cooperative-yield surface for the async enumeration forms. Structurally
|
|
8
|
+
* compatible with the context domain's CooperativeSlicer, so callers that
|
|
9
|
+
* already hold one pass it straight through; callers without one get a local
|
|
10
|
+
* time-budgeted default. Core cannot import the domain type, by boundary.
|
|
11
|
+
*/
|
|
12
|
+
export interface WorkspaceEnumerationTick {
|
|
13
|
+
tick(): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const DEFAULT_YIELD_BUDGET_MS = 8;
|
|
17
|
+
|
|
18
|
+
function createDefaultTick(budgetMs = DEFAULT_YIELD_BUDGET_MS): WorkspaceEnumerationTick {
|
|
19
|
+
let sliceStart = performance.now();
|
|
20
|
+
return {
|
|
21
|
+
async tick(): Promise<void> {
|
|
22
|
+
if (performance.now() - sliceStart < budgetMs) return;
|
|
23
|
+
await new Promise<void>((resolve) => {
|
|
24
|
+
setImmediate(resolve);
|
|
25
|
+
});
|
|
26
|
+
sliceStart = performance.now();
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const GIT_OUTPUT_LIMIT_BYTES = 128 * 1024 * 1024;
|
|
32
|
+
const MAX_ENUMERATION_DIAGNOSTIC_PATH_CHARS = 200;
|
|
33
|
+
|
|
34
|
+
export interface WorkspaceFallbackLimits {
|
|
35
|
+
maxVisitedEntries: number;
|
|
36
|
+
maxDepth: number;
|
|
37
|
+
maxPathBytes: number;
|
|
38
|
+
maxDurationMs: number;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export type WorkspaceFallbackLimitKind = "entries" | "depth" | "path-bytes" | "time";
|
|
42
|
+
export type WorkspaceEnumerationOperation = "open-root" | "read-directory" | "open-directory" | "inspect-entry";
|
|
43
|
+
|
|
44
|
+
const DEFAULT_WORKSPACE_FALLBACK_LIMITS: Readonly<WorkspaceFallbackLimits> = Object.freeze({
|
|
45
|
+
maxVisitedEntries: 100_000,
|
|
46
|
+
maxDepth: 64,
|
|
47
|
+
maxPathBytes: 64 * 1024 * 1024,
|
|
48
|
+
maxDurationMs: 5_000,
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Explicit failure for a non-Git scan that cannot prove it saw the whole
|
|
53
|
+
* workspace within its resource contract. Callers must never publish the
|
|
54
|
+
* partial prefix as an authoritative file set.
|
|
55
|
+
*/
|
|
56
|
+
export class WorkspaceEnumerationLimitError extends Error {
|
|
57
|
+
readonly code = "WORKSPACE_ENUMERATION_LIMIT";
|
|
58
|
+
|
|
59
|
+
constructor(
|
|
60
|
+
readonly kind: WorkspaceFallbackLimitKind,
|
|
61
|
+
readonly limit: number,
|
|
62
|
+
) {
|
|
63
|
+
super(`non-Git workspace enumeration exceeded ${kind} limit (${limit})`);
|
|
64
|
+
this.name = "WorkspaceEnumerationLimitError";
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function boundedDiagnosticPath(path: string): string {
|
|
69
|
+
const printable = Array.from(path.length > 0 ? path : ".", (character) => {
|
|
70
|
+
const codePoint = character.codePointAt(0) ?? 0;
|
|
71
|
+
return codePoint <= 0x1f || (codePoint >= 0x7f && codePoint <= 0x9f) ? "?" : character;
|
|
72
|
+
});
|
|
73
|
+
if (printable.length <= MAX_ENUMERATION_DIAGNOSTIC_PATH_CHARS) return printable.join("");
|
|
74
|
+
const side = Math.floor((MAX_ENUMERATION_DIAGNOSTIC_PATH_CHARS - 1) / 2);
|
|
75
|
+
return `${printable.slice(0, side).join("")}\u2026${printable.slice(-side).join("")}`;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function boundedSystemErrorCode(cause: unknown): string {
|
|
79
|
+
if (typeof cause !== "object" || cause === null || !("code" in cause)) return "UNKNOWN";
|
|
80
|
+
const code = (cause as { code?: unknown }).code;
|
|
81
|
+
return typeof code === "string" && /^[A-Z][A-Z0-9_]{0,31}$/.test(code) ? code : "UNKNOWN";
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const ENUMERATION_OPERATION_LABELS: Readonly<Record<WorkspaceEnumerationOperation, string>> = Object.freeze({
|
|
85
|
+
"open-root": "open the workspace root",
|
|
86
|
+
"read-directory": "read a workspace directory",
|
|
87
|
+
"open-directory": "open a workspace directory",
|
|
88
|
+
"inspect-entry": "inspect a workspace entry",
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Explicit failure for a non-Git scan whose filesystem view became incomplete.
|
|
93
|
+
* Only a bounded workspace-relative path and a validated system error code are
|
|
94
|
+
* retained; arbitrary filesystem error text is deliberately not propagated.
|
|
95
|
+
*/
|
|
96
|
+
export class WorkspaceEnumerationIncompleteError extends Error {
|
|
97
|
+
readonly code = "WORKSPACE_ENUMERATION_INCOMPLETE";
|
|
98
|
+
readonly operation: WorkspaceEnumerationOperation;
|
|
99
|
+
readonly path: string;
|
|
100
|
+
readonly causeCode: string;
|
|
101
|
+
|
|
102
|
+
constructor(operation: WorkspaceEnumerationOperation, path: string, cause: unknown) {
|
|
103
|
+
const diagnosticPath = boundedDiagnosticPath(path);
|
|
104
|
+
const causeCode = boundedSystemErrorCode(cause);
|
|
105
|
+
super(
|
|
106
|
+
`non-Git workspace enumeration could not ${ENUMERATION_OPERATION_LABELS[operation]} at '${diagnosticPath}' (${causeCode})`,
|
|
107
|
+
);
|
|
108
|
+
this.name = "WorkspaceEnumerationIncompleteError";
|
|
109
|
+
this.operation = operation;
|
|
110
|
+
this.path = diagnosticPath;
|
|
111
|
+
this.causeCode = causeCode;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Directories omitted even when Git tracks files beneath them. Git ignore
|
|
117
|
+
* rules complement this policy; they do not override it.
|
|
118
|
+
*/
|
|
119
|
+
export const WORKSPACE_EXCLUDED_DIRS: ReadonlySet<string> = new Set([
|
|
120
|
+
".git",
|
|
121
|
+
".hg",
|
|
122
|
+
".svn",
|
|
123
|
+
".clio-coder",
|
|
124
|
+
"node_modules",
|
|
125
|
+
"dist",
|
|
126
|
+
"build",
|
|
127
|
+
"coverage",
|
|
128
|
+
".venv",
|
|
129
|
+
"venv",
|
|
130
|
+
"__pycache__",
|
|
131
|
+
"target",
|
|
132
|
+
"vendor",
|
|
133
|
+
".superpowers",
|
|
134
|
+
".codex",
|
|
135
|
+
".claude",
|
|
136
|
+
".clio-coder-benchmark",
|
|
137
|
+
]);
|
|
138
|
+
|
|
139
|
+
function comparePaths(a: string, b: string): number {
|
|
140
|
+
return a === b ? 0 : a < b ? -1 : 1;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
function normalizeRelativePath(path: string): string | null {
|
|
144
|
+
const posixPath = sep === "\\" ? path.replaceAll("\\", "/") : path;
|
|
145
|
+
const normalized = posixPath.replace(/^\.\//, "");
|
|
146
|
+
if (normalized.length === 0 || normalized.includes("\0") || normalized.startsWith("/")) return null;
|
|
147
|
+
if (/^[A-Za-z]:\//.test(normalized)) return null;
|
|
148
|
+
const segments = normalized.split("/");
|
|
149
|
+
if (segments.some((segment) => segment.length === 0 || segment === "." || segment === "..")) return null;
|
|
150
|
+
return segments.join("/");
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
function isWorkspacePathExcluded(
|
|
154
|
+
relPath: string,
|
|
155
|
+
excludedDirs: ReadonlySet<string> = WORKSPACE_EXCLUDED_DIRS,
|
|
156
|
+
): boolean {
|
|
157
|
+
return relPath.split("/").some((segment) => excludedDirs.has(segment));
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
function isDisappearedWorkspaceEntry(cause: unknown): boolean {
|
|
161
|
+
if (typeof cause !== "object" || cause === null || !("code" in cause)) return false;
|
|
162
|
+
const code = (cause as { code?: unknown }).code;
|
|
163
|
+
return code === "ENOENT" || code === "ENOTDIR";
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
function isRegularWorkspaceFile(cwd: string, relPath: string, requireCompleteSnapshot: boolean): boolean {
|
|
167
|
+
try {
|
|
168
|
+
// lstat deliberately excludes symlinks. Gitlinks resolve to directories,
|
|
169
|
+
// so full scans do not enter submodules either.
|
|
170
|
+
const stat = fs.lstatSync(join(cwd, relPath));
|
|
171
|
+
if (stat.isFile()) return true;
|
|
172
|
+
if (requireCompleteSnapshot && stat.isDirectory()) {
|
|
173
|
+
// The fallback walker observed this path as a file. If it became a
|
|
174
|
+
// directory before validation, that directory may contain entries the
|
|
175
|
+
// completed walk never visited, so the snapshot is no longer complete.
|
|
176
|
+
throw new WorkspaceEnumerationIncompleteError("inspect-entry", relPath, { code: "ENTRY_TYPE_CHANGED" });
|
|
177
|
+
}
|
|
178
|
+
return false;
|
|
179
|
+
} catch (cause) {
|
|
180
|
+
if (cause instanceof WorkspaceEnumerationIncompleteError) throw cause;
|
|
181
|
+
if (requireCompleteSnapshot) {
|
|
182
|
+
// A vanished file (or an ancestor replaced by a non-directory) is no
|
|
183
|
+
// longer part of the workspace at validation time and may be omitted.
|
|
184
|
+
// Permission, I/O, and stale-handle errors leave its visibility unknown
|
|
185
|
+
// and must invalidate the complete non-Git snapshot.
|
|
186
|
+
if (isDisappearedWorkspaceEntry(cause)) return false;
|
|
187
|
+
throw new WorkspaceEnumerationIncompleteError("inspect-entry", relPath, cause);
|
|
188
|
+
}
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
function gitVisibleFilesArgs(candidates?: ReadonlyArray<string>): string[] {
|
|
194
|
+
const args = ["--literal-pathspecs", "ls-files", "-z", "--cached", "--others", "--exclude-standard"];
|
|
195
|
+
if (candidates) args.push("--", ...candidates);
|
|
196
|
+
return args;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
function splitGitPathOutput(output: string): string[] {
|
|
200
|
+
return output.split("\0").filter((path) => path.length > 0);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
function gitVisibleFiles(cwd: string, candidates?: ReadonlyArray<string>): string[] | null {
|
|
204
|
+
let output: Buffer;
|
|
205
|
+
try {
|
|
206
|
+
output = execFileSync("git", gitVisibleFilesArgs(candidates), {
|
|
207
|
+
cwd,
|
|
208
|
+
maxBuffer: GIT_OUTPUT_LIMIT_BYTES,
|
|
209
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
210
|
+
});
|
|
211
|
+
} catch {
|
|
212
|
+
return null;
|
|
213
|
+
}
|
|
214
|
+
return splitGitPathOutput(output.toString("utf8"));
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
function gitVisibleFilesAsync(cwd: string, candidates?: ReadonlyArray<string>): Promise<string[] | null> {
|
|
218
|
+
return new Promise((resolve) => {
|
|
219
|
+
execFile("git", gitVisibleFilesArgs(candidates), { cwd, maxBuffer: GIT_OUTPUT_LIMIT_BYTES }, (error, stdout) => {
|
|
220
|
+
resolve(error ? null : splitGitPathOutput(stdout));
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
function resolveFallbackLimits(overrides: Partial<WorkspaceFallbackLimits> | undefined): WorkspaceFallbackLimits {
|
|
226
|
+
const limits = { ...DEFAULT_WORKSPACE_FALLBACK_LIMITS, ...overrides };
|
|
227
|
+
for (const [name, value] of Object.entries(limits)) {
|
|
228
|
+
if (!Number.isFinite(value) || value < 0 || !Number.isInteger(value)) {
|
|
229
|
+
throw new RangeError(`workspace fallback ${name} must be a non-negative integer`);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return limits;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
interface WalkFrame {
|
|
236
|
+
dir: Dir;
|
|
237
|
+
absPath: string;
|
|
238
|
+
prefix: string;
|
|
239
|
+
depth: number;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
type FallbackEntryKind = "directory" | "file" | "other" | "disappeared";
|
|
243
|
+
|
|
244
|
+
function fallbackEntryKind(absPath: string, relPath: string, entry: ReturnType<Dir["readSync"]>): FallbackEntryKind {
|
|
245
|
+
if (!entry) return "disappeared";
|
|
246
|
+
if (entry.isDirectory()) return "directory";
|
|
247
|
+
if (entry.isFile()) return "file";
|
|
248
|
+
try {
|
|
249
|
+
// Some network and facility filesystems report DT_UNKNOWN. Inspect those
|
|
250
|
+
// entries rather than treating a potentially populated directory as a
|
|
251
|
+
// special file and silently omitting its subtree.
|
|
252
|
+
const stat = fs.lstatSync(absPath);
|
|
253
|
+
if (stat.isDirectory()) return "directory";
|
|
254
|
+
if (stat.isFile()) return "file";
|
|
255
|
+
return "other";
|
|
256
|
+
} catch (cause) {
|
|
257
|
+
if (isDisappearedWorkspaceEntry(cause)) return "disappeared";
|
|
258
|
+
throw new WorkspaceEnumerationIncompleteError("inspect-entry", relPath, cause);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
function closeFrame(frame: WalkFrame): void {
|
|
263
|
+
try {
|
|
264
|
+
frame.dir.closeSync();
|
|
265
|
+
} catch {
|
|
266
|
+
// Best-effort cleanup after an unreadable directory or bounded failure.
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* The bounded walk as a step generator: one yield per processed entry, so a
|
|
272
|
+
* synchronous driver drains it in place and the async driver interleaves a
|
|
273
|
+
* cooperative tick between steps. One body means the two forms cannot drift on
|
|
274
|
+
* limit enforcement, symlink policy, or failure classification. `elapsedMs`
|
|
275
|
+
* feeds the time limit: the sync driver passes wall time, the async driver
|
|
276
|
+
* passes accumulated walk time so event-loop turns spent elsewhere do not
|
|
277
|
+
* count against the walk's own budget.
|
|
278
|
+
*/
|
|
279
|
+
function* fallbackFilesWalk(
|
|
280
|
+
cwd: string,
|
|
281
|
+
excludedDirs: ReadonlySet<string>,
|
|
282
|
+
limits: WorkspaceFallbackLimits,
|
|
283
|
+
elapsedMs: () => number,
|
|
284
|
+
): Generator<void, string[]> {
|
|
285
|
+
let visitedEntries = 0;
|
|
286
|
+
let pathBytes = 0;
|
|
287
|
+
let root: Dir;
|
|
288
|
+
try {
|
|
289
|
+
root = fs.opendirSync(cwd);
|
|
290
|
+
} catch (cause) {
|
|
291
|
+
throw new WorkspaceEnumerationIncompleteError("open-root", ".", cause);
|
|
292
|
+
}
|
|
293
|
+
const stack: WalkFrame[] = [{ dir: root, absPath: cwd, prefix: "", depth: 0 }];
|
|
294
|
+
const files: string[] = [];
|
|
295
|
+
try {
|
|
296
|
+
while (stack.length > 0) {
|
|
297
|
+
yield;
|
|
298
|
+
if (elapsedMs() >= limits.maxDurationMs) {
|
|
299
|
+
throw new WorkspaceEnumerationLimitError("time", limits.maxDurationMs);
|
|
300
|
+
}
|
|
301
|
+
const frame = stack.at(-1);
|
|
302
|
+
if (!frame) break;
|
|
303
|
+
let entry: ReturnType<Dir["readSync"]>;
|
|
304
|
+
try {
|
|
305
|
+
entry = frame.dir.readSync();
|
|
306
|
+
} catch (cause) {
|
|
307
|
+
throw new WorkspaceEnumerationIncompleteError("read-directory", frame.prefix || ".", cause);
|
|
308
|
+
}
|
|
309
|
+
if (!entry) {
|
|
310
|
+
closeFrame(frame);
|
|
311
|
+
stack.pop();
|
|
312
|
+
continue;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
visitedEntries += 1;
|
|
316
|
+
if (visitedEntries > limits.maxVisitedEntries) {
|
|
317
|
+
throw new WorkspaceEnumerationLimitError("entries", limits.maxVisitedEntries);
|
|
318
|
+
}
|
|
319
|
+
const depth = frame.depth + 1;
|
|
320
|
+
if (depth > limits.maxDepth) {
|
|
321
|
+
throw new WorkspaceEnumerationLimitError("depth", limits.maxDepth);
|
|
322
|
+
}
|
|
323
|
+
const relPath = frame.prefix.length > 0 ? `${frame.prefix}/${entry.name}` : entry.name;
|
|
324
|
+
pathBytes += Buffer.byteLength(relPath, "utf8");
|
|
325
|
+
if (pathBytes > limits.maxPathBytes) {
|
|
326
|
+
throw new WorkspaceEnumerationLimitError("path-bytes", limits.maxPathBytes);
|
|
327
|
+
}
|
|
328
|
+
const absPath = join(frame.absPath, entry.name);
|
|
329
|
+
const kind = fallbackEntryKind(absPath, relPath, entry);
|
|
330
|
+
if (kind === "disappeared" || kind === "other") continue;
|
|
331
|
+
if (kind === "directory") {
|
|
332
|
+
if (excludedDirs.has(entry.name)) continue;
|
|
333
|
+
let child: Dir;
|
|
334
|
+
try {
|
|
335
|
+
child = fs.opendirSync(absPath);
|
|
336
|
+
} catch (cause) {
|
|
337
|
+
if (isDisappearedWorkspaceEntry(cause)) continue;
|
|
338
|
+
throw new WorkspaceEnumerationIncompleteError("open-directory", relPath, cause);
|
|
339
|
+
}
|
|
340
|
+
stack.push({ dir: child, absPath, prefix: relPath, depth });
|
|
341
|
+
continue;
|
|
342
|
+
}
|
|
343
|
+
// Only direct or lstat-confirmed regular files reach this branch;
|
|
344
|
+
// symlinks and special files remain excluded, matching the Git path.
|
|
345
|
+
files.push(relPath);
|
|
346
|
+
}
|
|
347
|
+
return files;
|
|
348
|
+
} finally {
|
|
349
|
+
for (const frame of stack) closeFrame(frame);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
function fallbackFiles(
|
|
354
|
+
cwd: string,
|
|
355
|
+
excludedDirs: ReadonlySet<string>,
|
|
356
|
+
overrides?: Partial<WorkspaceFallbackLimits>,
|
|
357
|
+
): string[] {
|
|
358
|
+
const limits = resolveFallbackLimits(overrides);
|
|
359
|
+
const startedAt = performance.now();
|
|
360
|
+
const walk = fallbackFilesWalk(cwd, excludedDirs, limits, () => performance.now() - startedAt);
|
|
361
|
+
let step = walk.next();
|
|
362
|
+
while (!step.done) step = walk.next();
|
|
363
|
+
return step.value;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
async function fallbackFilesAsync(
|
|
367
|
+
cwd: string,
|
|
368
|
+
excludedDirs: ReadonlySet<string>,
|
|
369
|
+
overrides: Partial<WorkspaceFallbackLimits> | undefined,
|
|
370
|
+
cooperate: WorkspaceEnumerationTick,
|
|
371
|
+
): Promise<string[]> {
|
|
372
|
+
const limits = resolveFallbackLimits(overrides);
|
|
373
|
+
let activeMs = 0;
|
|
374
|
+
let resumedAt = performance.now();
|
|
375
|
+
const walk = fallbackFilesWalk(cwd, excludedDirs, limits, () => activeMs + (performance.now() - resumedAt));
|
|
376
|
+
let step = walk.next();
|
|
377
|
+
while (!step.done) {
|
|
378
|
+
activeMs += performance.now() - resumedAt;
|
|
379
|
+
await cooperate.tick();
|
|
380
|
+
resumedAt = performance.now();
|
|
381
|
+
step = walk.next();
|
|
382
|
+
}
|
|
383
|
+
return step.value;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
/** Visibility validation as steps; one yield per path so the async driver can breathe. */
|
|
387
|
+
function* normalizeVisibleFilesSteps(
|
|
388
|
+
cwd: string,
|
|
389
|
+
paths: ReadonlyArray<string>,
|
|
390
|
+
excludedDirs: ReadonlySet<string>,
|
|
391
|
+
requireCompleteSnapshot: boolean,
|
|
392
|
+
): Generator<void, string[]> {
|
|
393
|
+
const visible = new Set<string>();
|
|
394
|
+
for (const path of paths) {
|
|
395
|
+
yield;
|
|
396
|
+
const normalized = normalizeRelativePath(path);
|
|
397
|
+
if (!normalized) {
|
|
398
|
+
if (requireCompleteSnapshot) {
|
|
399
|
+
throw new WorkspaceEnumerationIncompleteError("inspect-entry", path, { code: "INVALID_RELATIVE_PATH" });
|
|
400
|
+
}
|
|
401
|
+
continue;
|
|
402
|
+
}
|
|
403
|
+
if (isWorkspacePathExcluded(normalized, excludedDirs)) continue;
|
|
404
|
+
if (isRegularWorkspaceFile(cwd, normalized, requireCompleteSnapshot)) visible.add(normalized);
|
|
405
|
+
}
|
|
406
|
+
return [...visible].sort(comparePaths);
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
function normalizeVisibleFiles(
|
|
410
|
+
cwd: string,
|
|
411
|
+
paths: ReadonlyArray<string>,
|
|
412
|
+
excludedDirs: ReadonlySet<string>,
|
|
413
|
+
requireCompleteSnapshot = false,
|
|
414
|
+
): string[] {
|
|
415
|
+
const steps = normalizeVisibleFilesSteps(cwd, paths, excludedDirs, requireCompleteSnapshot);
|
|
416
|
+
let step = steps.next();
|
|
417
|
+
while (!step.done) step = steps.next();
|
|
418
|
+
return step.value;
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
async function normalizeVisibleFilesAsync(
|
|
422
|
+
cwd: string,
|
|
423
|
+
paths: ReadonlyArray<string>,
|
|
424
|
+
excludedDirs: ReadonlySet<string>,
|
|
425
|
+
requireCompleteSnapshot: boolean,
|
|
426
|
+
cooperate: WorkspaceEnumerationTick,
|
|
427
|
+
): Promise<string[]> {
|
|
428
|
+
const steps = normalizeVisibleFilesSteps(cwd, paths, excludedDirs, requireCompleteSnapshot);
|
|
429
|
+
let step = steps.next();
|
|
430
|
+
while (!step.done) {
|
|
431
|
+
await cooperate.tick();
|
|
432
|
+
step = steps.next();
|
|
433
|
+
}
|
|
434
|
+
return step.value;
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
/**
|
|
438
|
+
* List tracked files plus untracked, nonignored work in progress. Non-Git
|
|
439
|
+
* workspaces (and hosts without a usable Git binary) retain the filesystem
|
|
440
|
+
* walker behavior.
|
|
441
|
+
*/
|
|
442
|
+
export function enumerateWorkspaceFiles(
|
|
443
|
+
cwd: string,
|
|
444
|
+
excludedDirs: ReadonlySet<string> = WORKSPACE_EXCLUDED_DIRS,
|
|
445
|
+
fallbackLimits?: Partial<WorkspaceFallbackLimits>,
|
|
446
|
+
): string[] {
|
|
447
|
+
const gitFiles = gitVisibleFiles(cwd);
|
|
448
|
+
if (gitFiles) return normalizeVisibleFiles(cwd, gitFiles, excludedDirs);
|
|
449
|
+
return normalizeVisibleFiles(cwd, fallbackFiles(cwd, excludedDirs, fallbackLimits), excludedDirs, true);
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
/**
|
|
453
|
+
* `enumerateWorkspaceFiles` without the synchronous floor: the `git ls-files`
|
|
454
|
+
* subprocess runs async, and both the per-path lstat validation and the
|
|
455
|
+
* non-Git fallback walk yield cooperatively. The bounded-walk contract is
|
|
456
|
+
* unchanged with one deliberate reading: the time limit meters the walk's own
|
|
457
|
+
* accumulated work rather than wall clock, so a busy event loop cannot fail an
|
|
458
|
+
* enumeration that did no more work than its budget allows.
|
|
459
|
+
*/
|
|
460
|
+
export async function enumerateWorkspaceFilesAsync(
|
|
461
|
+
cwd: string,
|
|
462
|
+
excludedDirs: ReadonlySet<string> = WORKSPACE_EXCLUDED_DIRS,
|
|
463
|
+
fallbackLimits?: Partial<WorkspaceFallbackLimits>,
|
|
464
|
+
cooperate: WorkspaceEnumerationTick = createDefaultTick(),
|
|
465
|
+
): Promise<string[]> {
|
|
466
|
+
const gitFiles = await gitVisibleFilesAsync(cwd);
|
|
467
|
+
if (gitFiles) return normalizeVisibleFilesAsync(cwd, gitFiles, excludedDirs, false, cooperate);
|
|
468
|
+
const walked = await fallbackFilesAsync(cwd, excludedDirs, fallbackLimits, cooperate);
|
|
469
|
+
return normalizeVisibleFilesAsync(cwd, walked, excludedDirs, true, cooperate);
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
/** Apply the same visibility rules to one incremental batch without walking the tree. */
|
|
473
|
+
export function filterWorkspaceFileCandidates(
|
|
474
|
+
cwd: string,
|
|
475
|
+
paths: ReadonlyArray<string>,
|
|
476
|
+
excludedDirs: ReadonlySet<string> = WORKSPACE_EXCLUDED_DIRS,
|
|
477
|
+
fallbackLimits?: Partial<WorkspaceFallbackLimits>,
|
|
478
|
+
): string[] {
|
|
479
|
+
const candidates = paths
|
|
480
|
+
.map(normalizeRelativePath)
|
|
481
|
+
.filter((path): path is string => path !== null && !isWorkspacePathExcluded(path, excludedDirs));
|
|
482
|
+
if (candidates.length === 0) return [];
|
|
483
|
+
const gitFiles = gitVisibleFiles(cwd, candidates);
|
|
484
|
+
if (gitFiles) return normalizeVisibleFiles(cwd, gitFiles, excludedDirs);
|
|
485
|
+
// Outside Git, incremental candidates must be reconciled against the same
|
|
486
|
+
// complete bounded snapshot as a full build. Otherwise a notification can
|
|
487
|
+
// add a path that a bounded full scan could not authoritatively enumerate.
|
|
488
|
+
const fallbackVisible = new Set(
|
|
489
|
+
normalizeVisibleFiles(cwd, fallbackFiles(cwd, excludedDirs, fallbackLimits), excludedDirs, true),
|
|
490
|
+
);
|
|
491
|
+
return candidates.filter((path) => fallbackVisible.has(path)).sort(comparePaths);
|
|
492
|
+
}
|