@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,487 @@
|
|
|
1
|
+
import { randomBytes } from "node:crypto";
|
|
2
|
+
import { closeSync, fsyncSync, mkdirSync, openSync, writeSync } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { clioStateDir, stateRootRemoved } from "../../core/xdg.js";
|
|
5
|
+
import type { SafetyPolicyDecision } from "./policy-engine.js";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* NDJSON audit writer. One line per recorded event, file rotated on
|
|
9
|
+
* local-date rollover. Rows are written with writeSync, so in-process readers
|
|
10
|
+
* see them immediately; durability fsync happens on flush(), on close, on
|
|
11
|
+
* rotation, and on a low-frequency background interval instead of once per
|
|
12
|
+
* row, which kept blocking the admission hot path on disk latency. Write
|
|
13
|
+
* errors never throw back to the caller because safety must not kill the hot
|
|
14
|
+
* path; they are logged to stderr with a `[clio:audit]` prefix for
|
|
15
|
+
* post-mortem review.
|
|
16
|
+
*
|
|
17
|
+
* Records are a discriminated union over `kind`:
|
|
18
|
+
* - `tool_call`: emitted by safety.evaluate() for every classified tool call.
|
|
19
|
+
* - `permission`: emitted for one-shot tool/action confirmation requests
|
|
20
|
+
* and resolutions.
|
|
21
|
+
* - `abort`: emitted on every BusChannels.RunAborted event so /audit consumers
|
|
22
|
+
* can reconstruct who cancelled which run and how long it ran first.
|
|
23
|
+
* - `session_park`: emitted on every BusChannels.SessionParked event so /audit
|
|
24
|
+
* consumers know which session was suspended and why.
|
|
25
|
+
* - `session_resume`: emitted on every BusChannels.SessionResumed event so
|
|
26
|
+
* /audit consumers know which session was reopened and how.
|
|
27
|
+
* - `agent_status_change`: emitted for alarmable agent-status transitions
|
|
28
|
+
* such as stuck, tool_blocked, retrying, and cancelled turns.
|
|
29
|
+
* - `completion_contract`: emitted at turn_end for every finish-contract
|
|
30
|
+
* decision (each OK reason and each engagement) so the decision is
|
|
31
|
+
* replayable from the ledger alone: it records the mutated paths, the
|
|
32
|
+
* evidence kinds, the decision, the reason, and the effective rigor.
|
|
33
|
+
*
|
|
34
|
+
* Older audit files written before the discriminator existed have rows with
|
|
35
|
+
* the tool_call shape but no `kind` field. Any future reader should treat a
|
|
36
|
+
* missing `kind` as `tool_call`.
|
|
37
|
+
*
|
|
38
|
+
* Rows flush from concurrent producers (orchestrator, workers, bus
|
|
39
|
+
* subscribers) and are NOT time-ordered within a file. File order is an
|
|
40
|
+
* implementation accident, never a contract: every reader must sort rows by
|
|
41
|
+
* `ts` before reasoning about sequence.
|
|
42
|
+
*/
|
|
43
|
+
|
|
44
|
+
export interface ToolCallAuditRecord {
|
|
45
|
+
kind: "tool_call";
|
|
46
|
+
ts: string;
|
|
47
|
+
correlationId: string;
|
|
48
|
+
requestId?: string;
|
|
49
|
+
tool: string;
|
|
50
|
+
actionClass: string;
|
|
51
|
+
decision: ToolCallAuditDecision;
|
|
52
|
+
posture?: string;
|
|
53
|
+
reasons: ReadonlyArray<string>;
|
|
54
|
+
ruleId?: string;
|
|
55
|
+
reasonCode?: string;
|
|
56
|
+
policySource?: string;
|
|
57
|
+
policyHash?: string;
|
|
58
|
+
command?: string;
|
|
59
|
+
cwd?: string;
|
|
60
|
+
args?: unknown;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export type ToolCallAuditDecision = "allowed" | "blocked" | "permission_requested" | "classified" | "denied";
|
|
64
|
+
|
|
65
|
+
export interface ToolCallAuditInput {
|
|
66
|
+
tool: string;
|
|
67
|
+
classification: { actionClass: string; reasons: ReadonlyArray<string> };
|
|
68
|
+
decision: ToolCallAuditDecision;
|
|
69
|
+
requestId?: string;
|
|
70
|
+
posture?: string;
|
|
71
|
+
args?: unknown;
|
|
72
|
+
policy?: SafetyPolicyDecision;
|
|
73
|
+
reasons?: ReadonlyArray<string>;
|
|
74
|
+
/**
|
|
75
|
+
* Reason code of the final decision. Set this when the row's decision was
|
|
76
|
+
* made by a later axis than the policy engine (autonomy denial, budget
|
|
77
|
+
* admission): the policy's own reasonCode describes a net pass ("allowed")
|
|
78
|
+
* and would misstate why the call was denied.
|
|
79
|
+
*/
|
|
80
|
+
reasonCode?: string;
|
|
81
|
+
now?: Date;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export interface PermissionAuditRecord {
|
|
85
|
+
kind: "permission";
|
|
86
|
+
ts: string;
|
|
87
|
+
correlationId: string;
|
|
88
|
+
status: "requested" | "granted" | "denied";
|
|
89
|
+
requestId?: string;
|
|
90
|
+
origin?: string;
|
|
91
|
+
decidedBy?: string;
|
|
92
|
+
tool?: string;
|
|
93
|
+
actionClass?: string;
|
|
94
|
+
reason?: string;
|
|
95
|
+
requestedBy?: string;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export type AbortSource = "dispatch_abort" | "dispatch_drain" | "stream_cancel" | "loop_guard";
|
|
99
|
+
|
|
100
|
+
export interface AbortAuditRecord {
|
|
101
|
+
kind: "abort";
|
|
102
|
+
ts: string;
|
|
103
|
+
correlationId: string;
|
|
104
|
+
source: AbortSource;
|
|
105
|
+
runId: string | null;
|
|
106
|
+
startedAt: string | null;
|
|
107
|
+
elapsedMs: number | null;
|
|
108
|
+
reason?: string;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export type SessionParkReason = "create_new" | "resume_other" | "fork" | "switch_branch" | "close" | "shutdown";
|
|
112
|
+
|
|
113
|
+
export interface SessionParkAuditRecord {
|
|
114
|
+
kind: "session_park";
|
|
115
|
+
ts: string;
|
|
116
|
+
correlationId: string;
|
|
117
|
+
sessionId: string;
|
|
118
|
+
reason: SessionParkReason;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
export type SessionResumeVia = "resume" | "switch_branch";
|
|
122
|
+
|
|
123
|
+
export interface SessionResumeAuditRecord {
|
|
124
|
+
kind: "session_resume";
|
|
125
|
+
ts: string;
|
|
126
|
+
correlationId: string;
|
|
127
|
+
sessionId: string;
|
|
128
|
+
via: SessionResumeVia;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export interface AgentStatusChangeAuditRecord {
|
|
132
|
+
kind: "agent_status_change";
|
|
133
|
+
ts: string;
|
|
134
|
+
correlationId: string;
|
|
135
|
+
runId: string | null;
|
|
136
|
+
phase: string;
|
|
137
|
+
prevPhase: string;
|
|
138
|
+
elapsedFromStart: number;
|
|
139
|
+
watchdogTier: number;
|
|
140
|
+
metadata?: Record<string, unknown>;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
export type CompletionContractDecision = "ok" | "engage";
|
|
144
|
+
|
|
145
|
+
export interface CompletionContractAuditRecord {
|
|
146
|
+
kind: "completion_contract";
|
|
147
|
+
ts: string;
|
|
148
|
+
correlationId: string;
|
|
149
|
+
runId?: string;
|
|
150
|
+
sessionId?: string;
|
|
151
|
+
turnId: string | null;
|
|
152
|
+
decision: CompletionContractDecision;
|
|
153
|
+
reason: string;
|
|
154
|
+
rigor: string;
|
|
155
|
+
mutatedPaths: ReadonlyArray<string>;
|
|
156
|
+
evidenceKinds: ReadonlyArray<string>;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export interface CompletionContractAuditInput {
|
|
160
|
+
runId?: string;
|
|
161
|
+
sessionId?: string;
|
|
162
|
+
turnId: string | null;
|
|
163
|
+
decision: CompletionContractDecision;
|
|
164
|
+
reason: string;
|
|
165
|
+
rigor: string;
|
|
166
|
+
mutatedPaths: ReadonlyArray<string>;
|
|
167
|
+
evidenceKinds: ReadonlyArray<string>;
|
|
168
|
+
now?: Date;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
export type AuditRecord =
|
|
172
|
+
| ToolCallAuditRecord
|
|
173
|
+
| PermissionAuditRecord
|
|
174
|
+
| AbortAuditRecord
|
|
175
|
+
| SessionParkAuditRecord
|
|
176
|
+
| SessionResumeAuditRecord
|
|
177
|
+
| AgentStatusChangeAuditRecord
|
|
178
|
+
| CompletionContractAuditRecord;
|
|
179
|
+
|
|
180
|
+
export interface AuditWriter {
|
|
181
|
+
write(record: AuditRecord): void;
|
|
182
|
+
/** Fsync any rows written since the last flush so the file is durable on disk. */
|
|
183
|
+
flush(): void;
|
|
184
|
+
close(): Promise<void>;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
const REDACT_KEY_RE = /(password|token|secret|key|auth|credential)/i;
|
|
188
|
+
const MAX_STRING_LEN = 200;
|
|
189
|
+
|
|
190
|
+
// Local-date YYYY-MM-DD. Intl.DateTimeFormat with en-CA emits ISO ordering in
|
|
191
|
+
// local time, which is simpler than composing the parts manually. The formatter
|
|
192
|
+
// lives at module scope because every audit row calls it and constructing one is
|
|
193
|
+
// expensive enough to matter on a path this file's header says must not block.
|
|
194
|
+
//
|
|
195
|
+
// A formatter resolves its zone at construction and never re-reads it, so it is
|
|
196
|
+
// rebuilt when process.env.TZ no longer matches the zone it was built for. This
|
|
197
|
+
// is the same idiom as src/interactive/format-time.ts; it costs one string
|
|
198
|
+
// comparison per row and keeps a mid-process TZ change from writing rows into
|
|
199
|
+
// the previous zone's file.
|
|
200
|
+
const DATE_OPTIONS: Intl.DateTimeFormatOptions = { year: "numeric", month: "2-digit", day: "2-digit" };
|
|
201
|
+
let dateFormatterZone = process.env.TZ;
|
|
202
|
+
let dateFormatter = new Intl.DateTimeFormat("en-CA", DATE_OPTIONS);
|
|
203
|
+
|
|
204
|
+
function localDateString(d: Date): string {
|
|
205
|
+
if (process.env.TZ !== dateFormatterZone) {
|
|
206
|
+
dateFormatterZone = process.env.TZ;
|
|
207
|
+
dateFormatter = new Intl.DateTimeFormat("en-CA", DATE_OPTIONS);
|
|
208
|
+
}
|
|
209
|
+
return dateFormatter.format(d);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
function newCorrelationId(): string {
|
|
213
|
+
// 8 bytes -> base36 -> pad to 12 to keep the id length stable.
|
|
214
|
+
const n = BigInt(`0x${randomBytes(8).toString("hex")}`);
|
|
215
|
+
const raw = n.toString(36);
|
|
216
|
+
if (raw.length >= 12) return raw.slice(0, 12);
|
|
217
|
+
return raw.padStart(12, "0");
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
function redactString(s: string): string {
|
|
221
|
+
if (s.length <= MAX_STRING_LEN) return s;
|
|
222
|
+
const truncated = s.length - MAX_STRING_LEN;
|
|
223
|
+
return `${s.slice(0, MAX_STRING_LEN)}… [truncated ${truncated} chars]`;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
function redactArgs(value: unknown, depth = 0): unknown {
|
|
227
|
+
if (depth > 8) return "[redacted:depth]";
|
|
228
|
+
if (value == null) return value;
|
|
229
|
+
if (typeof value === "string") return redactString(value);
|
|
230
|
+
if (typeof value === "number" || typeof value === "boolean") return value;
|
|
231
|
+
if (Array.isArray(value)) return value.map((item) => redactArgs(item, depth + 1));
|
|
232
|
+
if (typeof value === "object") {
|
|
233
|
+
const out: Record<string, unknown> = {};
|
|
234
|
+
for (const [k, v] of Object.entries(value as Record<string, unknown>)) {
|
|
235
|
+
if (REDACT_KEY_RE.test(k)) {
|
|
236
|
+
out[k] = "[redacted]";
|
|
237
|
+
continue;
|
|
238
|
+
}
|
|
239
|
+
out[k] = redactArgs(v, depth + 1);
|
|
240
|
+
}
|
|
241
|
+
return out;
|
|
242
|
+
}
|
|
243
|
+
return String(value);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
export function buildAuditRecord(input: ToolCallAuditInput): ToolCallAuditRecord {
|
|
247
|
+
const now = input.now ?? new Date();
|
|
248
|
+
const record: ToolCallAuditRecord = {
|
|
249
|
+
kind: "tool_call",
|
|
250
|
+
ts: now.toISOString(),
|
|
251
|
+
correlationId: newCorrelationId(),
|
|
252
|
+
tool: input.tool,
|
|
253
|
+
actionClass: input.classification.actionClass,
|
|
254
|
+
decision: input.decision,
|
|
255
|
+
reasons: input.reasons ?? input.policy?.reasons ?? input.classification.reasons,
|
|
256
|
+
};
|
|
257
|
+
if (input.requestId !== undefined) record.requestId = input.requestId;
|
|
258
|
+
if (input.posture !== undefined) record.posture = input.posture;
|
|
259
|
+
if (input.policy?.ruleId !== undefined) record.ruleId = input.policy.ruleId;
|
|
260
|
+
const reasonCode = input.reasonCode ?? input.policy?.reasonCode;
|
|
261
|
+
if (reasonCode !== undefined) record.reasonCode = reasonCode;
|
|
262
|
+
if (input.policy?.policySource !== undefined) record.policySource = input.policy.policySource;
|
|
263
|
+
if (input.policy?.policyHash !== undefined) record.policyHash = input.policy.policyHash;
|
|
264
|
+
if (input.policy?.command !== undefined) record.command = redactString(input.policy.command);
|
|
265
|
+
if (input.policy?.cwd !== undefined) record.cwd = input.policy.cwd;
|
|
266
|
+
if (input.args !== undefined) record.args = redactArgs(input.args);
|
|
267
|
+
return record;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
export function buildAbortAuditRecord(input: {
|
|
271
|
+
source: AbortSource;
|
|
272
|
+
runId: string | null;
|
|
273
|
+
startedAt: string | null;
|
|
274
|
+
elapsedMs: number | null;
|
|
275
|
+
reason?: string;
|
|
276
|
+
now?: Date;
|
|
277
|
+
}): AbortAuditRecord {
|
|
278
|
+
const now = input.now ?? new Date();
|
|
279
|
+
const record: AbortAuditRecord = {
|
|
280
|
+
kind: "abort",
|
|
281
|
+
ts: now.toISOString(),
|
|
282
|
+
correlationId: newCorrelationId(),
|
|
283
|
+
source: input.source,
|
|
284
|
+
runId: input.runId,
|
|
285
|
+
startedAt: input.startedAt,
|
|
286
|
+
elapsedMs: input.elapsedMs,
|
|
287
|
+
};
|
|
288
|
+
if (input.reason !== undefined) record.reason = input.reason;
|
|
289
|
+
return record;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
export function buildSessionParkAuditRecord(input: {
|
|
293
|
+
sessionId: string;
|
|
294
|
+
reason: SessionParkReason;
|
|
295
|
+
now?: Date;
|
|
296
|
+
}): SessionParkAuditRecord {
|
|
297
|
+
const now = input.now ?? new Date();
|
|
298
|
+
return {
|
|
299
|
+
kind: "session_park",
|
|
300
|
+
ts: now.toISOString(),
|
|
301
|
+
correlationId: newCorrelationId(),
|
|
302
|
+
sessionId: input.sessionId,
|
|
303
|
+
reason: input.reason,
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
export function buildSessionResumeAuditRecord(input: {
|
|
308
|
+
sessionId: string;
|
|
309
|
+
via: SessionResumeVia;
|
|
310
|
+
now?: Date;
|
|
311
|
+
}): SessionResumeAuditRecord {
|
|
312
|
+
const now = input.now ?? new Date();
|
|
313
|
+
return {
|
|
314
|
+
kind: "session_resume",
|
|
315
|
+
ts: now.toISOString(),
|
|
316
|
+
correlationId: newCorrelationId(),
|
|
317
|
+
sessionId: input.sessionId,
|
|
318
|
+
via: input.via,
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
export function buildPermissionAuditRecord(input: {
|
|
323
|
+
status: PermissionAuditRecord["status"];
|
|
324
|
+
requestId?: string;
|
|
325
|
+
origin?: string;
|
|
326
|
+
decidedBy?: string;
|
|
327
|
+
tool?: string;
|
|
328
|
+
actionClass?: string;
|
|
329
|
+
reason?: string;
|
|
330
|
+
requestedBy?: string;
|
|
331
|
+
now?: Date;
|
|
332
|
+
}): PermissionAuditRecord {
|
|
333
|
+
const now = input.now ?? new Date();
|
|
334
|
+
const record: PermissionAuditRecord = {
|
|
335
|
+
kind: "permission",
|
|
336
|
+
ts: now.toISOString(),
|
|
337
|
+
correlationId: newCorrelationId(),
|
|
338
|
+
status: input.status,
|
|
339
|
+
};
|
|
340
|
+
if (input.tool !== undefined) record.tool = input.tool;
|
|
341
|
+
if (input.requestId !== undefined) record.requestId = input.requestId;
|
|
342
|
+
if (input.origin !== undefined) record.origin = input.origin;
|
|
343
|
+
if (input.decidedBy !== undefined) record.decidedBy = input.decidedBy;
|
|
344
|
+
if (input.actionClass !== undefined) record.actionClass = input.actionClass;
|
|
345
|
+
if (input.reason !== undefined) record.reason = input.reason;
|
|
346
|
+
if (input.requestedBy !== undefined) record.requestedBy = input.requestedBy;
|
|
347
|
+
return record;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
export function buildAgentStatusChangeAuditRecord(input: {
|
|
351
|
+
runId: string | null;
|
|
352
|
+
phase: string;
|
|
353
|
+
prevPhase: string;
|
|
354
|
+
elapsedFromStart: number;
|
|
355
|
+
watchdogTier: number;
|
|
356
|
+
metadata?: Record<string, unknown>;
|
|
357
|
+
now?: Date;
|
|
358
|
+
}): AgentStatusChangeAuditRecord {
|
|
359
|
+
const now = input.now ?? new Date();
|
|
360
|
+
const record: AgentStatusChangeAuditRecord = {
|
|
361
|
+
kind: "agent_status_change",
|
|
362
|
+
ts: now.toISOString(),
|
|
363
|
+
correlationId: newCorrelationId(),
|
|
364
|
+
runId: input.runId,
|
|
365
|
+
phase: input.phase,
|
|
366
|
+
prevPhase: input.prevPhase,
|
|
367
|
+
elapsedFromStart: Math.max(0, Math.floor(input.elapsedFromStart)),
|
|
368
|
+
watchdogTier: Math.max(0, Math.floor(input.watchdogTier)),
|
|
369
|
+
};
|
|
370
|
+
if (input.metadata !== undefined) record.metadata = redactArgs(input.metadata) as Record<string, unknown>;
|
|
371
|
+
return record;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
export function buildCompletionContractAuditRecord(input: CompletionContractAuditInput): CompletionContractAuditRecord {
|
|
375
|
+
const now = input.now ?? new Date();
|
|
376
|
+
const record: CompletionContractAuditRecord = {
|
|
377
|
+
kind: "completion_contract",
|
|
378
|
+
ts: now.toISOString(),
|
|
379
|
+
correlationId: newCorrelationId(),
|
|
380
|
+
turnId: input.turnId,
|
|
381
|
+
decision: input.decision,
|
|
382
|
+
reason: input.reason,
|
|
383
|
+
rigor: input.rigor,
|
|
384
|
+
mutatedPaths: input.mutatedPaths.map((path) => redactString(path)),
|
|
385
|
+
evidenceKinds: [...input.evidenceKinds],
|
|
386
|
+
};
|
|
387
|
+
if (input.runId !== undefined) record.runId = input.runId;
|
|
388
|
+
if (input.sessionId !== undefined) record.sessionId = input.sessionId;
|
|
389
|
+
return record;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
interface OpenFile {
|
|
393
|
+
fd: number;
|
|
394
|
+
date: string;
|
|
395
|
+
path: string;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
function logAuditError(err: unknown, path?: string): void {
|
|
399
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
400
|
+
const where = path ? ` (${path})` : "";
|
|
401
|
+
process.stderr.write(`[clio:audit] ${msg}${where}\n`);
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
/** Cadence of the background safety flush that bounds how long rows can sit unfsynced. */
|
|
405
|
+
const AUDIT_FLUSH_INTERVAL_MS = 5_000;
|
|
406
|
+
|
|
407
|
+
export function openAuditWriter(opts?: { dateFn?: () => Date }): AuditWriter {
|
|
408
|
+
const dateFn = opts?.dateFn ?? (() => new Date());
|
|
409
|
+
let current: OpenFile | null = null;
|
|
410
|
+
let closed = false;
|
|
411
|
+
let dirty = false;
|
|
412
|
+
|
|
413
|
+
function flushCurrent(): void {
|
|
414
|
+
if (current === null || !dirty) return;
|
|
415
|
+
try {
|
|
416
|
+
fsyncSync(current.fd);
|
|
417
|
+
dirty = false;
|
|
418
|
+
} catch (err) {
|
|
419
|
+
logAuditError(err, current.path);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
// Safety flush: a long session must not hold unflushed rows indefinitely.
|
|
424
|
+
// The interval is unref'd so it never keeps the process alive.
|
|
425
|
+
const flushTimer = setInterval(flushCurrent, AUDIT_FLUSH_INTERVAL_MS);
|
|
426
|
+
flushTimer.unref();
|
|
427
|
+
|
|
428
|
+
function closeCurrent(): void {
|
|
429
|
+
if (current === null) return;
|
|
430
|
+
flushCurrent();
|
|
431
|
+
try {
|
|
432
|
+
closeSync(current.fd);
|
|
433
|
+
} catch (err) {
|
|
434
|
+
logAuditError(err, current.path);
|
|
435
|
+
}
|
|
436
|
+
current = null;
|
|
437
|
+
dirty = false;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
function ensureFor(date: string): OpenFile | null {
|
|
441
|
+
if (current !== null && current.date === date) return current;
|
|
442
|
+
if (current !== null) closeCurrent();
|
|
443
|
+
// Opening the day's file mkdirs `<state>/audit`, which rebuilds a state
|
|
444
|
+
// root that `clio-coder uninstall` has already removed. A tool call in a session
|
|
445
|
+
// outliving the uninstall must not resurrect it. See core/xdg.ts
|
|
446
|
+
// stateRootRemoved(). Rows are dropped silently for the same reason
|
|
447
|
+
// logAuditError is not called: the removal is the operator's instruction,
|
|
448
|
+
// not a fault.
|
|
449
|
+
if (stateRootRemoved()) return null;
|
|
450
|
+
try {
|
|
451
|
+
const dir = join(clioStateDir(), "audit");
|
|
452
|
+
mkdirSync(dir, { recursive: true });
|
|
453
|
+
const filePath = join(dir, `${date}.jsonl`);
|
|
454
|
+
const fd = openSync(filePath, "a");
|
|
455
|
+
current = { fd, date, path: filePath };
|
|
456
|
+
return current;
|
|
457
|
+
} catch (err) {
|
|
458
|
+
logAuditError(err);
|
|
459
|
+
return null;
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
return {
|
|
464
|
+
write(record: AuditRecord): void {
|
|
465
|
+
if (closed) return;
|
|
466
|
+
try {
|
|
467
|
+
const date = localDateString(dateFn());
|
|
468
|
+
const handle = ensureFor(date);
|
|
469
|
+
if (handle === null) return;
|
|
470
|
+
const line = `${JSON.stringify(record)}\n`;
|
|
471
|
+
writeSync(handle.fd, line);
|
|
472
|
+
dirty = true;
|
|
473
|
+
} catch (err) {
|
|
474
|
+
logAuditError(err, current?.path);
|
|
475
|
+
}
|
|
476
|
+
},
|
|
477
|
+
flush(): void {
|
|
478
|
+
flushCurrent();
|
|
479
|
+
},
|
|
480
|
+
async close(): Promise<void> {
|
|
481
|
+
if (closed) return;
|
|
482
|
+
closed = true;
|
|
483
|
+
clearInterval(flushTimer);
|
|
484
|
+
closeCurrent();
|
|
485
|
+
},
|
|
486
|
+
};
|
|
487
|
+
}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import type { ActionClass } from "./action-classifier.js";
|
|
2
|
+
import type { RejectionMessage } from "./rejection-feedback.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* The autonomy axis (sd-01 §2.2/§2.3). An ordered operator-set dial that
|
|
6
|
+
* controls exactly one thing: which action classes trigger the approval flow
|
|
7
|
+
* versus run immediately versus auto-deny. It runs AFTER the safety net: a
|
|
8
|
+
* net `block` is final at every level and a net `confirm` always asks; this
|
|
9
|
+
* mapping applies only to level-dependent rows after the net passed.
|
|
10
|
+
* Level-independent rails such as system_modify belong to the policy engine.
|
|
11
|
+
*
|
|
12
|
+
* One call-level tier crosses the action classes: a gate can declare its
|
|
13
|
+
* exposure, and an `outward` gate parks at `auto-edit` (#32) and at the
|
|
14
|
+
* stricter `suggest` (#50).
|
|
15
|
+
*
|
|
16
|
+
* The mapping is pure. The registry (orchestrator and worker) and the ACP
|
|
17
|
+
* delegation mediator are the only consumers; each resolves an `ask`
|
|
18
|
+
* disposition through its own approvals context (interactive park, headless
|
|
19
|
+
* deterministic deny, workers.onPermission, delegation non-stall deny).
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
export const AUTONOMY_LEVELS = ["read-only", "suggest", "auto-edit", "full-auto"] as const;
|
|
23
|
+
|
|
24
|
+
export type AutonomyLevel = (typeof AUTONOMY_LEVELS)[number];
|
|
25
|
+
|
|
26
|
+
export const DEFAULT_AUTONOMY_LEVEL: AutonomyLevel = "auto-edit";
|
|
27
|
+
|
|
28
|
+
export function isAutonomyLevel(value: unknown): value is AutonomyLevel {
|
|
29
|
+
return typeof value === "string" && (AUTONOMY_LEVELS as ReadonlyArray<string>).includes(value);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export type AutonomyDisposition = "allow" | "ask" | "deny";
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Exposure tier of a call, orthogonal to its action class. `local` is the
|
|
36
|
+
* default and means the effect stays inside the workspace, where the operator
|
|
37
|
+
* can undo it. `outward` means answering the call publishes or sends something
|
|
38
|
+
* the operator cannot quietly take back: a filed issue, a pushed branch, a
|
|
39
|
+
* posted comment, a cut release. Only the caller knows which it is, so the
|
|
40
|
+
* tier is declared on the call (today: the `exposure` argument of `ask_user`),
|
|
41
|
+
* not inferred by the classifier.
|
|
42
|
+
*/
|
|
43
|
+
export const AUTONOMY_EXPOSURES = ["local", "outward"] as const;
|
|
44
|
+
|
|
45
|
+
export type AutonomyExposure = (typeof AUTONOMY_EXPOSURES)[number];
|
|
46
|
+
|
|
47
|
+
export const DEFAULT_AUTONOMY_EXPOSURE: AutonomyExposure = "local";
|
|
48
|
+
|
|
49
|
+
export interface AutonomyMappingOptions {
|
|
50
|
+
/**
|
|
51
|
+
* Execute-class calls only: true when the command is in the no-prompt set
|
|
52
|
+
* (built-in allowlist, project policy command) or is a typed execution tool
|
|
53
|
+
* (verify). Raw bash outside that set is unrecognized.
|
|
54
|
+
*/
|
|
55
|
+
executeRecognized?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Dispatch-class calls only: true when the call is a plan-scale dispatch
|
|
58
|
+
* (multi-task fan-out, compete topology, remote node placement, or winner
|
|
59
|
+
* application). Supervised levels route these through ONE plan approval;
|
|
60
|
+
* approving the parked call approves the whole plan. full-auto skips the
|
|
61
|
+
* stop (the dispatch tool logs the plan into the receipt chain instead).
|
|
62
|
+
*/
|
|
63
|
+
dispatchPlanScale?: boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Exposure tier declared by the call. Absent means `local`, which is the
|
|
66
|
+
* behavior every call had before the tier existed.
|
|
67
|
+
*/
|
|
68
|
+
exposure?: AutonomyExposure;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* The §2.3 level-dependent matrix. `git_destructive` never reaches this
|
|
73
|
+
* mapping in practice (the safety net blocks it first); it maps to deny
|
|
74
|
+
* defensively.
|
|
75
|
+
*/
|
|
76
|
+
export function mapAutonomy(
|
|
77
|
+
level: AutonomyLevel,
|
|
78
|
+
actionClass: ActionClass,
|
|
79
|
+
options: AutonomyMappingOptions = {},
|
|
80
|
+
): AutonomyDisposition {
|
|
81
|
+
if (actionClass === "git_destructive") return "deny";
|
|
82
|
+
// The exposure tier. `auto-edit` means "act on the workspace without
|
|
83
|
+
// asking", not "publish without asking", so an outward gate parks for the
|
|
84
|
+
// operator here even though its action class would have run. `suggest` parks
|
|
85
|
+
// it too (#50): the dial is ordered, so a stricter level cannot gate less
|
|
86
|
+
// than auto-edit at the same surface, and a read-class gate would otherwise
|
|
87
|
+
// have been auto-answered there by the row below. `full-auto` is untouched
|
|
88
|
+
// (auto means auto), and `read-only` keeps answering the gate, because the
|
|
89
|
+
// level it describes is "inspect and answer" and the outward effect it is
|
|
90
|
+
// confirming is itself denied there.
|
|
91
|
+
if ((level === "auto-edit" || level === "suggest") && options.exposure === "outward") return "ask";
|
|
92
|
+
if (actionClass === "read") return "allow";
|
|
93
|
+
if (level === "read-only") return "deny";
|
|
94
|
+
if (level === "suggest") return "ask";
|
|
95
|
+
// auto-edit and full-auto from here.
|
|
96
|
+
switch (actionClass) {
|
|
97
|
+
case "write":
|
|
98
|
+
return "allow";
|
|
99
|
+
case "dispatch":
|
|
100
|
+
if (options.dispatchPlanScale === true && level !== "full-auto") return "ask";
|
|
101
|
+
return "allow";
|
|
102
|
+
case "execute": {
|
|
103
|
+
if (options.executeRecognized !== false) return "allow";
|
|
104
|
+
return level === "full-auto" ? "allow" : "ask";
|
|
105
|
+
}
|
|
106
|
+
case "unknown":
|
|
107
|
+
// Registered tools that classify as unknown are substituted to their
|
|
108
|
+
// baseActionClass in the registry after safety.evaluate(). Keeping
|
|
109
|
+
// unknown here prevents read-class domain tools from becoming a net
|
|
110
|
+
// confirm rail before that substitution can happen.
|
|
111
|
+
return "ask";
|
|
112
|
+
default:
|
|
113
|
+
return "ask";
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Rejection text for autonomy `deny` dispositions. Only `read-only` produces
|
|
119
|
+
* denies, so the message is the propose-instead contract from §2.3.
|
|
120
|
+
*/
|
|
121
|
+
export function autonomyDenyRejection(level: AutonomyLevel, tool: string, actionClass: ActionClass): RejectionMessage {
|
|
122
|
+
return {
|
|
123
|
+
short: `${tool} denied: autonomy level is ${level}`,
|
|
124
|
+
detail:
|
|
125
|
+
`Clio is at autonomy ${level}: ${actionClass} actions are denied without prompting. ` +
|
|
126
|
+
"Describe the change you would make instead, so the operator can apply it or raise the autonomy level.",
|
|
127
|
+
hints: ["Propose the exact edit or command as text.", "The operator can change the level in /settings."],
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Rejection text for autonomy `ask` dispositions. Carried on the parked
|
|
133
|
+
* decision so overlays and non-interactive deniers can explain which axis
|
|
134
|
+
* asked (the level, not a safety-net rail).
|
|
135
|
+
*/
|
|
136
|
+
export function autonomyAskRejection(
|
|
137
|
+
level: AutonomyLevel,
|
|
138
|
+
tool: string,
|
|
139
|
+
actionClass: ActionClass,
|
|
140
|
+
exposure: AutonomyExposure = DEFAULT_AUTONOMY_EXPOSURE,
|
|
141
|
+
): RejectionMessage {
|
|
142
|
+
if (exposure === "outward") {
|
|
143
|
+
return {
|
|
144
|
+
short: `${tool} needs approval: outward-facing gate at autonomy ${level}`,
|
|
145
|
+
detail:
|
|
146
|
+
`The call declared exposure=outward, so answering it publishes or sends something outside the workspace. ` +
|
|
147
|
+
`Autonomy ${level} auto-answers local gates and parks outward-facing ones for the operator.`,
|
|
148
|
+
hints: [
|
|
149
|
+
"Approving resumes only this call.",
|
|
150
|
+
"Autonomy full-auto answers outward gates too; the safety net still applies there.",
|
|
151
|
+
],
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
return {
|
|
155
|
+
short: `${tool} needs approval (${actionClass}) at autonomy ${level}`,
|
|
156
|
+
detail:
|
|
157
|
+
`Autonomy ${level} routes ${actionClass} actions through operator approval. ` +
|
|
158
|
+
"The call is parked until the operator approves it once or cancels it.",
|
|
159
|
+
hints: [
|
|
160
|
+
"Approving resumes only this call.",
|
|
161
|
+
"Recognized commands can be added to .clio-coder/safety.yaml.",
|
|
162
|
+
// The sanctioned pivots for a gated shell command: typed verification
|
|
163
|
+
// and read-class observe tools run without approval at this level,
|
|
164
|
+
// and models otherwise stall retrying denied bash for checks or
|
|
165
|
+
// directory listings.
|
|
166
|
+
...(actionClass === "execute"
|
|
167
|
+
? [
|
|
168
|
+
'A declared package.json check runs without approval through the verify tool: verify(check="<script>").',
|
|
169
|
+
"Read-only inspection runs without approval through the ls, read, grep, and find tools.",
|
|
170
|
+
]
|
|
171
|
+
: []),
|
|
172
|
+
],
|
|
173
|
+
};
|
|
174
|
+
}
|