@iowarp/clio-coder 0.3.7 → 0.3.9
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 +80 -0
- package/README.md +13 -4
- package/dist/{acp-SK4MD6MM.js → acp-7LOELQFP.js} +13 -13
- package/dist/{agents-2FN2K6ME.js → agents-FIBG2SHA.js} +41 -37
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-QIYZWM5I.js → auth-OI4LIH2I.js} +31 -24
- package/dist/builtins-AD25UL3C.js +17 -0
- package/dist/{chunk-5FR74PWO.js → chunk-2JDWVJND.js} +2 -2
- package/dist/chunk-3DPEIQKN.js +113 -0
- package/dist/{chunk-EOOQZZDE.js → chunk-3DUR4WUA.js} +19 -19
- package/dist/{chunk-WHJYKASB.js → chunk-3MRC2YSQ.js} +2 -2
- package/dist/{chunk-EBEFWSGL.js → chunk-3UUY7R3Z.js} +14 -10
- package/dist/{chunk-LADCF22A.js → chunk-3V5AYSEQ.js} +113 -54
- package/dist/{chunk-BMWK7ZIZ.js → chunk-465CC7FK.js} +16 -13
- package/dist/{chunk-5WIGXA4T.js → chunk-47CMYGET.js} +111 -4
- package/dist/{chunk-CEYBNUGC.js → chunk-4H6ULJ3H.js} +378 -36
- package/dist/{chunk-YTYFXUI3.js → chunk-4LJX2PUC.js} +9 -9
- package/dist/{chunk-DOOEX22V.js → chunk-56KB5IJP.js} +5 -5
- package/dist/{chunk-SPULKLCF.js → chunk-5DQRIYDZ.js} +2 -2
- package/dist/{chunk-TSHXZTOQ.js → chunk-5HFBWUMU.js} +23 -11
- package/dist/{chunk-5UJ6ECTS.js → chunk-5PVQ4SRS.js} +80 -8
- package/dist/{chunk-ZWLZP4ZT.js → chunk-5QKCQQ3E.js} +359 -17
- package/dist/{chunk-6M7VS3J3.js → chunk-5T7RBWN2.js} +111 -5
- package/dist/chunk-774ILSRL.js +172 -0
- package/dist/chunk-7C6RYZGQ.js +391 -0
- package/dist/{chunk-GH5622CP.js → chunk-A2NJGIB3.js} +2 -2
- package/dist/{chunk-C4JBQ5SR.js → chunk-AD7Y7STJ.js} +6 -6
- package/dist/{chunk-GEYXPTRF.js → chunk-AEYBF3TB.js} +33 -12
- package/dist/{chunk-2SFS6XQE.js → chunk-AMKHQW3C.js} +3 -2
- package/dist/{chunk-D4MDIG46.js → chunk-B5CSFE7B.js} +7 -7
- package/dist/{chunk-MXI6J5JF.js → chunk-B5XRQOLB.js} +10 -10
- package/dist/{chunk-X2KV5FXT.js → chunk-BVDVID7E.js} +2 -2
- package/dist/{chunk-JNXPYBB4.js → chunk-CA42X6KT.js} +3 -3
- package/dist/{chunk-VREKEFLL.js → chunk-D73KXYPF.js} +3 -3
- package/dist/{chunk-JTSEDYVQ.js → chunk-DG4M6ZUE.js} +7 -7
- package/dist/{chunk-DQA7QLMD.js → chunk-EBOC7MT3.js} +10 -25
- package/dist/{chunk-KZ2H5X4G.js → chunk-ECUO3KDP.js} +129 -14
- package/dist/{chunk-JRIO5UD2.js → chunk-EQ63NRB7.js} +5 -5
- package/dist/{chunk-YD734TPH.js → chunk-FALJGAWU.js} +2 -2
- package/dist/{chunk-GWS3VEIW.js → chunk-FWDFM5ZU.js} +24 -3
- package/dist/{chunk-XEGB6BCN.js → chunk-GAYUJ7LE.js} +68 -14
- package/dist/{chunk-UND3GU2L.js → chunk-H7IXIC72.js} +2 -2
- package/dist/{chunk-IR4CFBFN.js → chunk-HAY4ZE2P.js} +12 -12
- package/dist/{chunk-UVDSQ6LW.js → chunk-HCBCAYZU.js} +74 -147
- package/dist/{chunk-4DWFMQDR.js → chunk-HJB5IUKP.js} +89 -145
- package/dist/{chunk-M4AKACEO.js → chunk-HKO36JWF.js} +33 -5
- package/dist/{chunk-KCMKRQX4.js → chunk-HPCTNZM2.js} +45 -82
- package/dist/{chunk-465YSENW.js → chunk-IFBNV6H6.js} +3 -3
- package/dist/{chunk-FJ3H4MN5.js → chunk-IHKBWSXF.js} +2 -2
- package/dist/chunk-JEQQR47K.js +3025 -0
- package/dist/{chunk-FO5ZOVUY.js → chunk-KV2AOLDF.js} +27 -7
- package/dist/chunk-LU7P4LHA.js +33 -0
- package/dist/{chunk-6TUKSZVF.js → chunk-LXPJXFM5.js} +11 -11
- package/dist/{chunk-VQNODYQ4.js → chunk-MIX5N5AC.js} +488 -3668
- package/dist/chunk-MLOK6ZOS.js +2888 -0
- package/dist/{chunk-ZZMN5OM4.js → chunk-MV2VUEJC.js} +2 -2
- package/dist/{chunk-MVVUPGPW.js → chunk-MXHC5QYU.js} +6 -6
- package/dist/{chunk-OBMAI2DP.js → chunk-N3PBVRTZ.js} +12 -388
- package/dist/{chunk-WJHBC77E.js → chunk-N5XKWMDW.js} +17 -7
- package/dist/{chunk-5C3AQNDW.js → chunk-NNNWO6F2.js} +124 -36
- package/dist/{chunk-UFQ3F4FW.js → chunk-NQ6UCCOD.js} +4 -4
- package/dist/chunk-NUGM5KR6.js +165 -0
- package/dist/{chunk-DMD2AGVS.js → chunk-NZU6YDNV.js} +20 -18
- package/dist/{chunk-WHGPSPT5.js → chunk-O6I4CIEU.js} +151 -13
- package/dist/{chunk-XN3L4EYL.js → chunk-OEDBCISO.js} +2 -2
- package/dist/{chunk-PD3MESLB.js → chunk-P3JGPQFL.js} +4 -4
- package/dist/{chunk-UHXRNZ2J.js → chunk-PNY46YEY.js} +23 -6
- package/dist/{chunk-THKY7CD7.js → chunk-PZ4I4JE2.js} +134 -29
- package/dist/{chunk-SROCI7ZU.js → chunk-QQ7EKM72.js} +5 -5
- package/dist/{chunk-QCTRSGHQ.js → chunk-R7LNVMCS.js} +91 -53
- package/dist/{chunk-GOXNB3AO.js → chunk-RAPCMZL4.js} +75 -4
- package/dist/chunk-RKKLTLYB.js +45 -0
- package/dist/{chunk-OB5HIGJY.js → chunk-RKRLDWD3.js} +4 -1
- package/dist/{chunk-DJNLUABN.js → chunk-S4COXYBG.js} +588 -32
- package/dist/{chunk-3HAPLH5M.js → chunk-T3Z6VAAF.js} +172 -11
- package/dist/{chunk-FOT2FX5J.js → chunk-TD7UE2L5.js} +12 -10
- package/dist/{chunk-UUANF5CR.js → chunk-TEO2TLVN.js} +856 -967
- package/dist/{chunk-FCSXB6T2.js → chunk-UOSL25KY.js} +14 -2
- package/dist/{chunk-EELBMBT6.js → chunk-VKBMFOYV.js} +74 -15
- package/dist/chunk-VO2LKSTM.js +165 -0
- package/dist/{chunk-5C77SEEY.js → chunk-VPTUJU4P.js} +3 -3
- package/dist/{chunk-WEH5XRJQ.js → chunk-WIE7ZOSW.js} +2 -2
- package/dist/{chunk-J7PIKKWC.js → chunk-WXCJ7VME.js} +8 -8
- package/dist/{chunk-4DGYLA73.js → chunk-XDOQXGFO.js} +22 -7
- package/dist/{chunk-PPAMZ32Z.js → chunk-XK56QHLX.js} +6 -1
- package/dist/{chunk-AB4XIIVB.js → chunk-YKOFT37S.js} +6 -6
- package/dist/chunk-YSEHGPCT.js +127 -0
- package/dist/{chunk-HFSBBKSQ.js → chunk-YW7UVM5V.js} +138 -3
- package/dist/cli/index.js +32 -32
- package/dist/{clio-WBVQEBKO.js → clio-LT5V7SSZ.js} +9 -9
- package/dist/{code-nav-FGGFIE7L.js → code-nav-LMW275PA.js} +5 -5
- package/dist/codewiki/build-worker.js +4 -4
- package/dist/{components-F7OEATSO.js → components-ZFA3SAER.js} +8 -8
- package/dist/{config-TRBL3RCF.js → config-RXS5T3JT.js} +98 -65
- package/dist/{configure-OLCVPHNM.js → configure-2WYWSCSD.js} +26 -22
- package/dist/{context-MJIJ6GOX.js → context-I3BTOTCS.js} +12 -12
- package/dist/{context-XEWE3MOJ.js → context-MVOORGMF.js} +54 -47
- package/dist/{context-WFPKQSM6.js → context-PALKKQYL.js} +28 -28
- package/dist/{context-clear-KNOS2JPB.js → context-clear-N2WOYZ2K.js} +53 -46
- package/dist/{context-index-SSR5ECNE.js → context-index-HNG3MOME.js} +6 -6
- package/dist/{context-working-set-EUXAZI6N.js → context-working-set-MIEVECVZ.js} +17 -18
- package/dist/{dispatch-runner-B7MTOVKL.js → dispatch-runner-VVA4SRRH.js} +90 -61
- package/dist/{docs-FLJTIDSE.js → docs-7LQ23DLM.js} +8 -8
- package/dist/doctor-TWBWFK5V.js +165 -0
- package/dist/eval-IJ5VEZDJ.js +4483 -0
- package/dist/{evidence-JZNBUOQZ.js → evidence-L5APPXNV.js} +68 -61
- package/dist/{evolve-FJVC4KKI.js → evolve-RGNKFJ52.js} +47 -40
- package/dist/{extensions-IQL36S7K.js → extensions-7WYWUX5A.js} +13 -7
- package/dist/{fleet-BDKYJFCP.js → fleet-6CNVBZZP.js} +113 -76
- package/dist/{fleet-commands-ZFIWZSB3.js → fleet-commands-L2SXSYEI.js} +10 -10
- package/dist/{fleet-graph-Y6HPXIVF.js → fleet-graph-2J3OOIPO.js} +17 -15
- package/dist/{fleet-preflight-BHSNPBMH.js → fleet-preflight-CZRJ4JP5.js} +5 -6
- package/dist/{fleet-validate-BIYREGIK.js → fleet-validate-C5RI6DP7.js} +20 -19
- package/dist/{init-LQUB5COQ.js → init-VBN2ACVA.js} +70 -63
- package/dist/{library-NJAHIGG4.js → library-JHGUMLY2.js} +22 -20
- package/dist/{memory-OG6HOYKM.js → memory-K4OQIYWG.js} +49 -42
- package/dist/{models-5ZG5XY7J.js → models-2NCZUWDD.js} +35 -29
- package/dist/{monitor-TJ7AMTGB.js → monitor-MMVTJABD.js} +64 -45
- package/dist/{orchestrator-WZYB54DM.js → orchestrator-ZKBPCHW6.js} +1971 -520
- package/dist/{paths-XUC7GS6E.js → paths-DBXMZMDU.js} +5 -5
- package/dist/registry-LG64LTF4.js +11 -0
- package/dist/{reset-PXQT45IY.js → reset-DD5JGOY3.js} +11 -11
- package/dist/{run-FQ74YF62.js → run-QEGNX7FL.js} +89 -83
- package/dist/{share-FW7SVCL3.js → share-JKD3BQMW.js} +20 -18
- package/dist/{skills-7E7IRB3R.js → skills-LMQIKDOZ.js} +23 -21
- package/dist/{skills-eval-LI75W6OK.js → skills-eval-I7X2774U.js} +59 -52
- package/dist/{steer-GGWFUJUD.js → steer-CF5TDANS.js} +3 -3
- package/dist/support-I7LOJLIF.js +38 -0
- package/dist/{targets-4CIFKCTW.js → targets-RUSR6B5Z.js} +77 -42
- package/dist/{terminal-lease-WUZY7ZV5.js → terminal-lease-QYVORFR4.js} +6 -4
- package/dist/{trace-PNCASAXC.js → trace-ODOQIVIW.js} +61 -6
- package/dist/{uninstall-7FV7IP4E.js → uninstall-ZJF5H5ZN.js} +8 -8
- package/dist/{upgrade-K2HVIVMQ.js → upgrade-XANW3FXB.js} +29 -26
- package/dist/{usage-GTZELZQX.js → usage-4H7ZRXQT.js} +110 -61
- package/dist/{verifiers-RLAHT27O.js → verifiers-UZXNBZEB.js} +13 -13
- package/dist/{verify-BX3BRKH5.js → verify-BVKWTNDL.js} +9 -9
- package/dist/{wiki-generate-ASIFASCN.js → wiki-generate-MY7WV2QI.js} +76 -69
- package/dist/worker/entry.js +69 -66
- package/docs/alcf-provider.md +1 -1
- package/docs/architecture.md +1 -1
- package/docs/artifact-versions.md +11 -5
- package/docs/built-in-agents.md +1 -1
- package/docs/capacity-and-scheduling.md +23 -2
- package/docs/commands-and-modes.md +2 -2
- package/docs/configuration-and-targets.md +37 -5
- package/docs/context-engine.md +63 -4
- package/docs/documentation-coverage.md +3 -3
- package/docs/documentation-guide.md +1 -1
- package/docs/environment-variables.md +2 -0
- package/docs/eval-runner.md +262 -11
- package/docs/evals-internal.md +72 -2
- package/docs/evidence-and-memory.md +77 -12
- package/docs/evolution.md +1 -1
- package/docs/extensions-and-sharing.md +3 -1
- package/docs/fleet-dispatch.md +34 -9
- package/docs/glossary.md +21 -1
- package/docs/installation-and-lifecycle.md +1 -1
- package/docs/middleware-and-components.md +1 -1
- package/docs/model-catalog.md +1 -1
- package/docs/observability.md +54 -3
- package/docs/proactive-memory.md +127 -14
- package/docs/prompt-envelope-and-tools.md +22 -2
- package/docs/provider-adapter-cookbook.md +1 -1
- package/docs/release-cut-checklist.md +60 -41
- package/docs/safety-model.md +1 -1
- package/docs/scientific-validation.md +1 -1
- package/docs/skills-marketplace.md +1 -1
- package/docs/tool-usage.md +1 -1
- package/docs/trace-store.md +1 -1
- package/docs/troubleshooting.md +87 -0
- package/docs/tui-design.md +1 -1
- package/docs/worker-dispatch-mechanics.md +1 -1
- package/package.json +2 -2
- package/src/cli/agents.ts +1 -1
- package/src/cli/argv.ts +5 -0
- package/src/cli/config-inspect.ts +33 -6
- package/src/cli/config.ts +1 -1
- package/src/cli/configure.ts +107 -23
- package/src/cli/doctor-state-size.ts +82 -0
- package/src/cli/doctor.ts +7 -1
- package/src/cli/eval.ts +80 -16
- package/src/cli/evidence.ts +30 -25
- package/src/cli/extensions.ts +5 -1
- package/src/cli/fleet-preflight.ts +2 -12
- package/src/cli/fleet.ts +32 -3
- package/src/cli/shared.ts +1 -0
- package/src/cli/targets.ts +45 -11
- package/src/cli/trace.ts +63 -4
- package/src/cli/usage.ts +63 -14
- package/src/cli/validate-model.ts +60 -5
- package/src/core/bus-events.ts +54 -1
- package/src/core/cache-telemetry.ts +42 -0
- package/src/core/commit-attribution.ts +4 -4
- package/src/core/config.ts +18 -0
- package/src/core/defaults.ts +36 -6
- package/src/core/endpoint-key.ts +27 -0
- package/src/core/path-boundary.ts +100 -0
- package/src/core/residency-target-key.ts +25 -0
- package/src/core/response-schema.ts +36 -2
- package/src/domains/agents/extension.ts +2 -11
- package/src/domains/agents/fleet-contract.ts +30 -12
- package/src/domains/agents/recipe.ts +7 -1
- package/src/domains/agents/registry.ts +73 -5
- package/src/domains/agents/result-contract.ts +128 -17
- package/src/domains/agents/write-boundary.ts +15 -50
- package/src/domains/config/classify.ts +3 -0
- package/src/domains/context/codewiki/coordinator.ts +12 -4
- package/src/domains/context/project-rules.ts +51 -1
- package/src/domains/dispatch/admission.ts +40 -3
- package/src/domains/dispatch/assignment-reconcile.ts +22 -5
- package/src/domains/dispatch/assignment-store.ts +151 -14
- package/src/domains/dispatch/capacity-lease.ts +98 -9
- package/src/domains/dispatch/contract.ts +26 -1
- package/src/domains/dispatch/delegation-plan.ts +2 -5
- package/src/domains/dispatch/execution-plan.ts +44 -4
- package/src/domains/dispatch/execution-role.ts +9 -1
- package/src/domains/dispatch/extension.ts +309 -96
- package/src/domains/dispatch/fleet-run.ts +78 -4
- package/src/domains/dispatch/gate-role-prompts.ts +38 -0
- package/src/domains/dispatch/heartbeat.ts +32 -8
- package/src/domains/dispatch/index.ts +6 -1
- package/src/domains/dispatch/intent-requirements.ts +40 -0
- package/src/domains/dispatch/intent.ts +84 -8
- package/src/domains/dispatch/orphan-recovery.ts +5 -0
- package/src/domains/dispatch/path-scope.ts +370 -0
- package/src/domains/dispatch/receipt-integrity.ts +2 -1
- package/src/domains/dispatch/reservation-store.ts +116 -8
- package/src/domains/dispatch/state.ts +4 -0
- package/src/domains/dispatch/types.ts +14 -7
- package/src/domains/dispatch/validation.ts +6 -3
- package/src/domains/dispatch/worker-spawn.ts +25 -11
- package/src/domains/dispatch/write-boundary-enforcer.ts +62 -0
- package/src/domains/dispatch/write-boundary.ts +262 -22
- package/src/domains/eval/artifacts/store.ts +62 -0
- package/src/domains/eval/compare/behavioral.ts +224 -0
- package/src/domains/eval/compare/compare.ts +355 -2
- package/src/domains/eval/compare/envelope.ts +128 -0
- package/src/domains/eval/compare/gates.ts +24 -6
- package/src/domains/eval/compare/thresholds.ts +30 -3
- package/src/domains/eval/execution-provenance.ts +240 -0
- package/src/domains/eval/metrics/aggregate.ts +136 -0
- package/src/domains/eval/metrics/call-ledger-stream.ts +112 -0
- package/src/domains/eval/metrics/evidence.ts +79 -2
- package/src/domains/eval/metrics/tracked.ts +413 -0
- package/src/domains/eval/provenance.ts +117 -0
- package/src/domains/eval/reports/comparison.ts +128 -0
- package/src/domains/eval/reports/junit.ts +17 -3
- package/src/domains/eval/reports/markdown.ts +3 -3
- package/src/domains/eval/reports/text.ts +14 -0
- package/src/domains/eval/run-compare.ts +20 -0
- package/src/domains/eval/runners/clio-run.ts +139 -2
- package/src/domains/eval/runners/external-command.ts +28 -3
- package/src/domains/eval/schema/adapter.ts +111 -0
- package/src/domains/eval/schema/artifact.ts +20 -0
- package/src/domains/eval/schema/behavioral-metrics.ts +204 -0
- package/src/domains/eval/schema/behavioral.ts +520 -0
- package/src/domains/eval/schema/execution-envelope.ts +194 -0
- package/src/domains/eval/schema/serving.ts +74 -0
- package/src/domains/eval/schema/suite.ts +38 -8
- package/src/domains/eval/schema/validate.ts +58 -3
- package/src/domains/eval/schema/verdict.ts +237 -0
- package/src/domains/eval/suites/resolve.ts +2 -0
- package/src/domains/eval/suites/run.ts +264 -33
- package/src/domains/eval/verifiers/command.ts +2 -1
- package/src/domains/eval/workspaces/temp-copy.ts +145 -13
- package/src/domains/evidence/build.ts +68 -21
- package/src/domains/evidence/eval.ts +2 -12
- package/src/domains/evidence/findings-markdown.ts +33 -0
- package/src/domains/evidence/index.ts +21 -0
- package/src/domains/evidence/provenance.ts +46 -11
- package/src/domains/evidence/run-trust.ts +7 -113
- package/src/domains/evidence/trust-projection.ts +274 -0
- package/src/domains/evidence/trust-status.ts +145 -17
- package/src/domains/evidence/types.ts +4 -0
- package/src/domains/extensions/compatibility.ts +285 -0
- package/src/domains/extensions/discovery.ts +126 -4
- package/src/domains/extensions/resources.ts +21 -9
- package/src/domains/extensions/state.ts +18 -5
- package/src/domains/extensions/types.ts +6 -1
- package/src/domains/lifecycle/doctor.ts +209 -2
- package/src/domains/memory/index.ts +14 -0
- package/src/domains/memory/task-bank-promotion.ts +64 -0
- package/src/domains/memory/task-memory-policy.ts +77 -8
- package/src/domains/memory/task-memory-spend.ts +131 -0
- package/src/domains/memory/task-memory-status.ts +7 -0
- package/src/domains/memory/task-memory-telemetry.ts +2 -0
- package/src/domains/middleware/index.ts +1 -0
- package/src/domains/middleware/memory-intervention.ts +69 -5
- package/src/domains/middleware/memory-step-endpoint.ts +71 -0
- package/src/domains/observability/background-memory-usage.ts +140 -0
- package/src/domains/observability/cost.ts +1 -1
- package/src/domains/observability/index.ts +7 -0
- package/src/domains/observability/out-of-turn-usage.ts +51 -2
- package/src/domains/observability/trace-store.ts +192 -2
- package/src/domains/prompts/compiler.ts +100 -13
- package/src/domains/prompts/contract.ts +3 -5
- package/src/domains/providers/endpoint-capacity.ts +96 -0
- package/src/domains/providers/extension.ts +30 -2
- package/src/domains/providers/index.ts +10 -0
- package/src/domains/providers/models/local-models/clio-local-coding-targets.yaml +243 -1
- package/src/domains/providers/runtime-resolution.ts +8 -1
- package/src/domains/providers/runtimes/common/probe-helpers.ts +31 -9
- package/src/domains/providers/runtimes/local-native/llamacpp-anthropic.ts +1 -1
- package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +1 -1
- package/src/domains/providers/runtimes/local-native/llamacpp-embed.ts +1 -1
- package/src/domains/providers/runtimes/local-native/llamacpp-rerank.ts +1 -1
- package/src/domains/providers/runtimes/local-native/llamacpp.ts +4 -1
- package/src/domains/providers/runtimes/local-native/lmstudio.ts +4 -1
- package/src/domains/providers/runtimes/local-native/ollama-native.ts +6 -1
- package/src/domains/providers/types/capability-flags.ts +2 -0
- package/src/domains/providers/types/target-descriptor.ts +2 -0
- package/src/domains/resources/common-loader.ts +3 -0
- package/src/domains/resources/prompts/loader.ts +184 -17
- package/src/domains/safety/call-target.ts +52 -0
- package/src/domains/safety/policy-engine.ts +5 -5
- package/src/domains/safety/run-effects.ts +96 -2
- package/src/domains/safety/scope.ts +7 -12
- package/src/domains/session/context-accounting.ts +52 -1
- package/src/domains/session/context-ledger.ts +37 -13
- package/src/domains/session/index.ts +6 -0
- package/src/domains/session/prompt-cache.ts +140 -0
- package/src/domains/session/prompt-manifest.ts +42 -0
- package/src/engine/acp/adapter.ts +18 -3
- package/src/engine/acp/server.ts +4 -1
- package/src/engine/ai.ts +35 -0
- package/src/engine/apis/llamacpp-residency.ts +55 -3
- package/src/engine/apis/lmstudio.ts +25 -5
- package/src/engine/apis/ollama-native.ts +2 -1
- package/src/engine/apis/openai-completions.ts +80 -17
- package/src/engine/apis/residency-lock.ts +3 -1
- package/src/engine/apis/residency.ts +34 -1
- package/src/engine/prompt-templates.ts +18 -1
- package/src/engine/provider-payload.ts +29 -1
- package/src/engine/worker-runtime.ts +6 -3
- package/src/entry/orchestrator.ts +176 -30
- package/src/interactive/chat-loop-messages.ts +26 -7
- package/src/interactive/chat-loop.ts +318 -41
- package/src/interactive/chat-panel.ts +62 -8
- package/src/interactive/clio-editor.ts +45 -8
- package/src/interactive/context-activity.ts +5 -1
- package/src/interactive/context-meter.ts +1 -1
- package/src/interactive/context-overlay.ts +40 -10
- package/src/interactive/cost-overlay.ts +64 -6
- package/src/interactive/dispatch-board.ts +127 -5
- package/src/interactive/fleet-run-preview.ts +41 -15
- package/src/interactive/handoff-round.ts +41 -2
- package/src/interactive/interactive-application.ts +24 -1
- package/src/interactive/interactive-event-projection.ts +14 -0
- package/src/interactive/interactive-input-runtime.ts +8 -0
- package/src/interactive/interactive-presentation.ts +4 -0
- package/src/interactive/interactive-shell.ts +20 -17
- package/src/interactive/interactive-slash-runtime.ts +27 -4
- package/src/interactive/memory-overlay.ts +8 -0
- package/src/interactive/mutation-preview.ts +295 -0
- package/src/interactive/overlay-general-openers.ts +16 -0
- package/src/interactive/overlay-key-routing.ts +38 -0
- package/src/interactive/overlay-lifecycle.ts +38 -5
- package/src/interactive/overlay-permission-lifecycle.ts +22 -2
- package/src/interactive/overlay-session-lifecycle.ts +73 -9
- package/src/interactive/overlays/ask-user.ts +91 -19
- package/src/interactive/overlays/help-reference.ts +4 -0
- package/src/interactive/overlays/prompts.ts +11 -1
- package/src/interactive/overlays/settings.ts +176 -48
- package/src/interactive/permission-hint.ts +34 -2
- package/src/interactive/permission-overlay.ts +159 -9
- package/src/interactive/prewarm.ts +197 -0
- package/src/interactive/render-trace.ts +162 -15
- package/src/interactive/renderers/tool-execution.ts +4 -0
- package/src/interactive/side-question.ts +58 -1
- package/src/interactive/slash-commands.ts +7 -2
- package/src/interactive/status/controller.ts +11 -0
- package/src/interactive/status/state-machine.ts +54 -2
- package/src/interactive/status/types.ts +7 -0
- package/src/interactive/terminal-lease.ts +2 -0
- package/src/interactive/turn-context.ts +299 -31
- package/src/interactive/turn-persistence.ts +14 -4
- package/src/interactive/turn-prewarm.ts +364 -0
- package/src/interactive/turn-queues.ts +7 -4
- package/src/interactive/turn-runtime.ts +8 -1
- package/src/interactive/turn-state.ts +23 -0
- package/src/interactive/view/artifacts.ts +42 -9
- package/src/interactive/view/view-overlay.ts +43 -6
- package/src/interactive/worker-receipts.ts +14 -2
- package/src/interactive/worker-stream.ts +8 -0
- package/src/tools/ask-user.ts +43 -2
- package/src/tools/dispatch-admission.ts +12 -13
- package/src/tools/dispatch-arguments.ts +27 -0
- package/src/tools/dispatch-plan.ts +46 -9
- package/src/tools/dispatch-runner.ts +48 -13
- package/src/tools/dispatch-scout.ts +1 -1
- package/src/tools/monitor.ts +13 -0
- package/src/tools/registry.ts +16 -0
- package/src/tools/worker-evidence.ts +19 -13
- package/src/worker/spec-contract.ts +2 -1
- package/dist/chunk-AOCYTWAV.js +0 -449
- package/dist/chunk-HWUFFB6L.js +0 -83
- package/dist/chunk-R346GLFC.js +0 -31
- package/dist/chunk-ZGH7FGS5.js +0 -1079
- package/dist/doctor-RN4YKO2X.js +0 -87
- package/dist/eval-RUBJVSNQ.js +0 -2557
|
@@ -2,7 +2,7 @@ import { createRequire as __clioCreateRequire } from "node:module"; const requir
|
|
|
2
2
|
import {
|
|
3
3
|
cwdHash,
|
|
4
4
|
sessionPaths
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-KV2AOLDF.js";
|
|
6
6
|
import {
|
|
7
7
|
init_esm_shims
|
|
8
8
|
} from "./chunk-3R73A4XB.js";
|
|
@@ -170,14 +170,6 @@ function buildContextLedger(input) {
|
|
|
170
170
|
});
|
|
171
171
|
}
|
|
172
172
|
const meter = [...groups];
|
|
173
|
-
if (reserveTokens > 0) {
|
|
174
|
-
meter.push({
|
|
175
|
-
category: "reserve",
|
|
176
|
-
label: CONTEXT_CATEGORY_LABEL.reserve,
|
|
177
|
-
tokens: reserveTokens,
|
|
178
|
-
percent: percentOf(reserveTokens, window)
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
173
|
if (window > 0) {
|
|
182
174
|
meter.push({
|
|
183
175
|
category: "free",
|
|
@@ -186,6 +178,14 @@ function buildContextLedger(input) {
|
|
|
186
178
|
percent: percentOf(freeTokens, window)
|
|
187
179
|
});
|
|
188
180
|
}
|
|
181
|
+
if (reserveTokens > 0) {
|
|
182
|
+
meter.push({
|
|
183
|
+
category: "reserve",
|
|
184
|
+
label: CONTEXT_CATEGORY_LABEL.reserve,
|
|
185
|
+
tokens: reserveTokens,
|
|
186
|
+
percent: percentOf(reserveTokens, window)
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
189
|
return {
|
|
190
190
|
provider: input.provider ?? null,
|
|
191
191
|
model: input.model ?? null,
|
|
@@ -205,7 +205,8 @@ function buildContextLedger(input) {
|
|
|
205
205
|
groups,
|
|
206
206
|
meter,
|
|
207
207
|
lastCompaction: input.lastCompaction ?? null,
|
|
208
|
-
promptCache: input.promptCache ?? null
|
|
208
|
+
promptCache: input.promptCache ?? null,
|
|
209
|
+
prewarm: input.prewarm ?? null
|
|
209
210
|
};
|
|
210
211
|
}
|
|
211
212
|
|
|
@@ -405,6 +406,17 @@ function getLatestContextSnapshot(meta) {
|
|
|
405
406
|
const list = getContextSnapshots(meta);
|
|
406
407
|
return list.at(-1) ?? null;
|
|
407
408
|
}
|
|
409
|
+
function lastLoadedContextWindow(meta, providerId, modelId) {
|
|
410
|
+
const snapshots = getContextSnapshots(meta);
|
|
411
|
+
for (let i = snapshots.length - 1; i >= 0; i -= 1) {
|
|
412
|
+
const snapshot = snapshots[i];
|
|
413
|
+
if (snapshot?.contextWindowSource !== "loaded") continue;
|
|
414
|
+
if (snapshot.providerId !== providerId || snapshot.modelId !== modelId) continue;
|
|
415
|
+
const window = snapshot.effectiveContextWindow;
|
|
416
|
+
if (typeof window === "number" && Number.isFinite(window) && window > 0) return window;
|
|
417
|
+
}
|
|
418
|
+
return null;
|
|
419
|
+
}
|
|
408
420
|
function buildSnapshotCategories(inputs) {
|
|
409
421
|
const raw = {
|
|
410
422
|
system: 0,
|
|
@@ -477,6 +489,7 @@ function captureContextSnapshot(input) {
|
|
|
477
489
|
compactionThreshold: input.compactionThreshold
|
|
478
490
|
});
|
|
479
491
|
return {
|
|
492
|
+
estimatedTokens: sumSplitTokens(categories),
|
|
480
493
|
snapshotId: nextSnapshotId(),
|
|
481
494
|
sessionId: input.sessionId,
|
|
482
495
|
turnId: input.turnId,
|
|
@@ -499,8 +512,11 @@ function captureContextSnapshot(input) {
|
|
|
499
512
|
messageRange: input.conversationMessages.length > 0 ? { start: 0, end: input.conversationMessages.length - 1 } : void 0
|
|
500
513
|
};
|
|
501
514
|
}
|
|
515
|
+
function sumSplitTokens(categories) {
|
|
516
|
+
return SNAPSHOT_SPLIT_KEYS.reduce((sum, key) => sum + (categories[key] ?? 0), 0);
|
|
517
|
+
}
|
|
502
518
|
function snapshotInputTokens(snapshot) {
|
|
503
|
-
return
|
|
519
|
+
return sumSplitTokens(snapshot.categories);
|
|
504
520
|
}
|
|
505
521
|
function reconcileSnapshot(snapshot, usage) {
|
|
506
522
|
const exactInput = (usage.input || 0) + (usage.cacheRead || 0) + (usage.cacheWrite || 0);
|
|
@@ -580,9 +596,13 @@ function reconcileSnapshot(snapshot, usage) {
|
|
|
580
596
|
},
|
|
581
597
|
{}
|
|
582
598
|
);
|
|
599
|
+
const estimatedTokens = snapshot.estimatedTokens ?? sumSplitTokens(snapshot.categories);
|
|
583
600
|
return {
|
|
584
601
|
...snapshot,
|
|
585
602
|
categories: updatedCategories,
|
|
603
|
+
estimatedTokens,
|
|
604
|
+
reconciledTokens: exactInput,
|
|
605
|
+
divergenceRatio: estimatedTokens > 0 ? Math.round(exactInput / estimatedTokens * 1e3) / 1e3 : void 0,
|
|
586
606
|
sources: {
|
|
587
607
|
total: "reconciled",
|
|
588
608
|
splits: splitsSources
|
|
@@ -606,8 +626,9 @@ export {
|
|
|
606
626
|
contextUsageSnapshot,
|
|
607
627
|
appendContextSnapshot,
|
|
608
628
|
getLatestContextSnapshot,
|
|
629
|
+
lastLoadedContextWindow,
|
|
609
630
|
captureContextSnapshot,
|
|
610
631
|
snapshotInputTokens,
|
|
611
632
|
reconcileSnapshot
|
|
612
633
|
};
|
|
613
|
-
//# sourceMappingURL=chunk-
|
|
634
|
+
//# sourceMappingURL=chunk-AEYBF3TB.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
enabledExtensionResourceRoots
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-5QKCQQ3E.js";
|
|
5
5
|
import {
|
|
6
6
|
require_dist
|
|
7
7
|
} from "./chunk-APJ265NV.js";
|
|
@@ -29,6 +29,7 @@ function defaultScopedResourceRoots(kind, cwd) {
|
|
|
29
29
|
return [
|
|
30
30
|
...enabledExtensionResourceRoots(kind, cwd).map((root) => ({
|
|
31
31
|
path: root.path,
|
|
32
|
+
rootPath: root.rootPath,
|
|
32
33
|
scope: "package",
|
|
33
34
|
source: root.source,
|
|
34
35
|
precedence: COMPAT_RESOURCE_PRECEDENCE.extension
|
|
@@ -119,4 +120,4 @@ export {
|
|
|
119
120
|
splitYamlFrontmatter,
|
|
120
121
|
stringField
|
|
121
122
|
};
|
|
122
|
-
//# sourceMappingURL=chunk-
|
|
123
|
+
//# sourceMappingURL=chunk-AMKHQW3C.js.map
|
|
@@ -2,12 +2,12 @@ import { createRequire as __clioCreateRequire } from "node:module"; const requir
|
|
|
2
2
|
import {
|
|
3
3
|
clampTimerDelayMs
|
|
4
4
|
} from "./chunk-FQ4SKYE4.js";
|
|
5
|
-
import {
|
|
6
|
-
clioStateDir
|
|
7
|
-
} from "./chunk-BNAZZHFG.js";
|
|
8
5
|
import {
|
|
9
6
|
AI_AGENT_NAME
|
|
10
7
|
} from "./chunk-6EJMN2Y3.js";
|
|
8
|
+
import {
|
|
9
|
+
clioStateDir
|
|
10
|
+
} from "./chunk-BNAZZHFG.js";
|
|
11
11
|
import {
|
|
12
12
|
init_esm_shims
|
|
13
13
|
} from "./chunk-3R73A4XB.js";
|
|
@@ -48,7 +48,7 @@ var KNOWN_CLIO_TRAILERS = new Set(
|
|
|
48
48
|
Object.values(CLIO_COMMIT_TRAILERS).map((line) => normalizedTrailer(line)).filter((line) => line !== null)
|
|
49
49
|
);
|
|
50
50
|
function isClioTrailer(key) {
|
|
51
|
-
return KNOWN_CLIO_TRAILERS.has(key) || key.startsWith("clio-evidence:receipt-
|
|
51
|
+
return KNOWN_CLIO_TRAILERS.has(key) || key.startsWith("clio-evidence:receipt-v20/sha256:");
|
|
52
52
|
}
|
|
53
53
|
function trailerBlockStart(lines) {
|
|
54
54
|
if (lines.length < 2) return null;
|
|
@@ -67,10 +67,10 @@ function trailerBlockStart(lines) {
|
|
|
67
67
|
return sawTrailer ? first : null;
|
|
68
68
|
}
|
|
69
69
|
function receiptTrailer(receipt) {
|
|
70
|
-
if (receipt?.version !==
|
|
70
|
+
if (receipt?.version !== 20 || receipt.algorithm !== "sha256" || receipt.integrityValid !== true || receipt.directlyRelevant !== true || !SHA256.test(receipt.digest)) {
|
|
71
71
|
return null;
|
|
72
72
|
}
|
|
73
|
-
return `Clio-Evidence: receipt-
|
|
73
|
+
return `Clio-Evidence: receipt-v20/sha256:${receipt.digest}`;
|
|
74
74
|
}
|
|
75
75
|
function attributeCommitMessage(originalMessage, evidence, enabled = true) {
|
|
76
76
|
if (!enabled) return originalMessage;
|
|
@@ -567,4 +567,4 @@ export {
|
|
|
567
567
|
runCommandVector,
|
|
568
568
|
combineSafeOutput
|
|
569
569
|
};
|
|
570
|
-
//# sourceMappingURL=chunk-
|
|
570
|
+
//# sourceMappingURL=chunk-B5CSFE7B.js.map
|
|
@@ -2,26 +2,26 @@ import { createRequire as __clioCreateRequire } from "node:module"; const requir
|
|
|
2
2
|
import {
|
|
3
3
|
readLayeredSettings,
|
|
4
4
|
readStrictLayeredSettings
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-FALJGAWU.js";
|
|
6
6
|
import {
|
|
7
7
|
formatBootTrace
|
|
8
8
|
} from "./chunk-HKIYEGME.js";
|
|
9
9
|
import {
|
|
10
10
|
initializeClioHome
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-56KB5IJP.js";
|
|
12
12
|
import {
|
|
13
13
|
readSettings
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-PNY46YEY.js";
|
|
15
15
|
import {
|
|
16
16
|
require_dist
|
|
17
17
|
} from "./chunk-APJ265NV.js";
|
|
18
|
+
import {
|
|
19
|
+
clioConfigDir
|
|
20
|
+
} from "./chunk-BNAZZHFG.js";
|
|
18
21
|
import {
|
|
19
22
|
findEngineEnvKeys,
|
|
20
23
|
getEngineEnvApiKey
|
|
21
24
|
} from "./chunk-YXLYO42X.js";
|
|
22
|
-
import {
|
|
23
|
-
clioConfigDir
|
|
24
|
-
} from "./chunk-BNAZZHFG.js";
|
|
25
25
|
import {
|
|
26
26
|
__toESM,
|
|
27
27
|
init_esm_shims
|
|
@@ -158,7 +158,7 @@ Run \`clio-coder auth login ${verdict.store}\` if the endpoint requires one; loc
|
|
|
158
158
|
} else if (verdict.kind !== "usable") {
|
|
159
159
|
process.stdout.write(`${describeVerdict(verdict)} Starting \`clio-coder configure\`.
|
|
160
160
|
`);
|
|
161
|
-
const { runConfigureCommand } = await import("./configure-
|
|
161
|
+
const { runConfigureCommand } = await import("./configure-2WYWSCSD.js");
|
|
162
162
|
const configured = await runConfigureCommand([]);
|
|
163
163
|
if (configured !== 0) return configured;
|
|
164
164
|
startupSettings = readStrictLayeredSettings(process.cwd()).settings;
|
|
@@ -167,7 +167,7 @@ Run \`clio-coder auth login ${verdict.store}\` if the endpoint requires one; loc
|
|
|
167
167
|
let terminalLease;
|
|
168
168
|
try {
|
|
169
169
|
if (terminalLeaseEligible(options)) {
|
|
170
|
-
const { createProcessTerminalLease, instantShellEnabled } = await import("./terminal-lease-
|
|
170
|
+
const { createProcessTerminalLease, instantShellEnabled } = await import("./terminal-lease-QYVORFR4.js");
|
|
171
171
|
if (instantShellEnabled()) {
|
|
172
172
|
let stage0FrameId = null;
|
|
173
173
|
terminalLease = createProcessTerminalLease({
|
|
@@ -190,7 +190,7 @@ Run \`clio-coder auth login ${verdict.store}\` if the endpoint requires one; loc
|
|
|
190
190
|
throw new Error("injected Stage 1 hydration failure");
|
|
191
191
|
}
|
|
192
192
|
}
|
|
193
|
-
const { bootOrchestrator } = await import("./orchestrator-
|
|
193
|
+
const { bootOrchestrator } = await import("./orchestrator-ZKBPCHW6.js");
|
|
194
194
|
const result = await bootOrchestrator({
|
|
195
195
|
...options,
|
|
196
196
|
...startupSettings ? { startupSettings } : {},
|
|
@@ -214,4 +214,4 @@ export {
|
|
|
214
214
|
terminalLeaseEligible,
|
|
215
215
|
runClioCommand
|
|
216
216
|
};
|
|
217
|
-
//# sourceMappingURL=chunk-
|
|
217
|
+
//# sourceMappingURL=chunk-B5XRQOLB.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-ZGVHUX3M.js";
|
|
5
5
|
import {
|
|
6
6
|
BusChannels
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-RKRLDWD3.js";
|
|
8
8
|
import {
|
|
9
9
|
init_esm_shims
|
|
10
10
|
} from "./chunk-3R73A4XB.js";
|
|
@@ -226,4 +226,4 @@ export {
|
|
|
226
226
|
runWithBudget,
|
|
227
227
|
getTerminationCoordinator
|
|
228
228
|
};
|
|
229
|
-
//# sourceMappingURL=chunk-
|
|
229
|
+
//# sourceMappingURL=chunk-BVDVID7E.js.map
|
|
@@ -16,10 +16,10 @@ import {
|
|
|
16
16
|
SAFE_EXEC_DEFAULT_TIMEOUT_MS,
|
|
17
17
|
combineSafeOutput,
|
|
18
18
|
runCommandVector
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-B5CSFE7B.js";
|
|
20
20
|
import {
|
|
21
21
|
StringEnum
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-UOSL25KY.js";
|
|
23
23
|
import {
|
|
24
24
|
init_esm_shims
|
|
25
25
|
} from "./chunk-3R73A4XB.js";
|
|
@@ -177,4 +177,4 @@ export {
|
|
|
177
177
|
prepareVerifyArguments,
|
|
178
178
|
verifyToolSurface
|
|
179
179
|
};
|
|
180
|
-
//# sourceMappingURL=chunk-
|
|
180
|
+
//# sourceMappingURL=chunk-CA42X6KT.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
durableAssistantTextFromEvent
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-TEO2TLVN.js";
|
|
5
5
|
import {
|
|
6
6
|
responseModelIdObservationFromRecord
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-LXPJXFM5.js";
|
|
8
8
|
import {
|
|
9
9
|
init_esm_shims
|
|
10
10
|
} from "./chunk-3R73A4XB.js";
|
|
@@ -34,4 +34,4 @@ export {
|
|
|
34
34
|
assistantTextFromEvent,
|
|
35
35
|
receiptResponseModelIdObservationLabel
|
|
36
36
|
};
|
|
37
|
-
//# sourceMappingURL=chunk-
|
|
37
|
+
//# sourceMappingURL=chunk-D73KXYPF.js.map
|
|
@@ -2,19 +2,19 @@ import { createRequire as __clioCreateRequire } from "node:module"; const requir
|
|
|
2
2
|
import {
|
|
3
3
|
readStateInfo,
|
|
4
4
|
runDoctor
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-T3Z6VAAF.js";
|
|
6
6
|
import {
|
|
7
7
|
getVersionInfo
|
|
8
8
|
} from "./chunk-XPLRXC72.js";
|
|
9
|
-
import {
|
|
10
|
-
authStoragePath,
|
|
11
|
-
openAuthStorage
|
|
12
|
-
} from "./chunk-JRIO5UD2.js";
|
|
13
9
|
import {
|
|
14
10
|
readSettings,
|
|
15
11
|
settingsPath,
|
|
16
12
|
updateSettings
|
|
17
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-PNY46YEY.js";
|
|
14
|
+
import {
|
|
15
|
+
authStoragePath,
|
|
16
|
+
openAuthStorage
|
|
17
|
+
} from "./chunk-EQ63NRB7.js";
|
|
18
18
|
import {
|
|
19
19
|
init_esm_shims
|
|
20
20
|
} from "./chunk-3R73A4XB.js";
|
|
@@ -158,4 +158,4 @@ export {
|
|
|
158
158
|
describeUpgradeNotice,
|
|
159
159
|
LifecycleDomainModule
|
|
160
160
|
};
|
|
161
|
-
//# sourceMappingURL=chunk-
|
|
161
|
+
//# sourceMappingURL=chunk-DG4M6ZUE.js.map
|
|
@@ -1,48 +1,33 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
} from "./chunk-
|
|
3
|
+
discoverAgentRecipes
|
|
4
|
+
} from "./chunk-HCBCAYZU.js";
|
|
5
5
|
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
} from "./chunk-UVDSQ6LW.js";
|
|
6
|
+
compileFleetExecutionPlan
|
|
7
|
+
} from "./chunk-HKO36JWF.js";
|
|
9
8
|
import {
|
|
10
9
|
loadFleetCommands,
|
|
11
10
|
loadFleetContract,
|
|
12
11
|
renderFleetPrompt
|
|
13
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-HPCTNZM2.js";
|
|
14
13
|
import {
|
|
15
14
|
requestExecutionRole,
|
|
16
15
|
withAttemptRole
|
|
17
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-H7IXIC72.js";
|
|
18
17
|
import {
|
|
19
18
|
normalizeAgentSpec
|
|
20
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-S4COXYBG.js";
|
|
21
20
|
import {
|
|
22
21
|
readSettings
|
|
23
|
-
} from "./chunk-
|
|
24
|
-
import {
|
|
25
|
-
clioConfigDir
|
|
26
|
-
} from "./chunk-BNAZZHFG.js";
|
|
27
|
-
import {
|
|
28
|
-
resolvePackageRoot
|
|
29
|
-
} from "./chunk-IWHMRKLL.js";
|
|
22
|
+
} from "./chunk-PNY46YEY.js";
|
|
30
23
|
import {
|
|
31
24
|
init_esm_shims
|
|
32
25
|
} from "./chunk-3R73A4XB.js";
|
|
33
26
|
|
|
34
27
|
// src/cli/fleet-preflight.ts
|
|
35
28
|
init_esm_shims();
|
|
36
|
-
import { join } from "node:path";
|
|
37
29
|
function discoverSpecs(cwd) {
|
|
38
|
-
|
|
39
|
-
const builtin = loadRecipesFromDir(
|
|
40
|
-
{ dir: join(resolvePackageRoot(), "src", "domains", "agents", "builtins"), source: "builtin" },
|
|
41
|
-
diagnostics
|
|
42
|
-
);
|
|
43
|
-
const user = loadRecipesFromDir({ dir: join(clioConfigDir(), "agents"), source: "user" }, diagnostics);
|
|
44
|
-
const project = loadRecipesFromDir({ dir: join(cwd, ".clio-coder", "agents"), source: "project" }, diagnostics);
|
|
45
|
-
return mergeRecipes(builtin, user, project).map(normalizeAgentSpec);
|
|
30
|
+
return discoverAgentRecipes(cwd).map(normalizeAgentSpec);
|
|
46
31
|
}
|
|
47
32
|
function inspectFleet(name, vars) {
|
|
48
33
|
const cwd = process.cwd();
|
|
@@ -120,4 +105,4 @@ function inspectFleet(name, vars) {
|
|
|
120
105
|
export {
|
|
121
106
|
inspectFleet
|
|
122
107
|
};
|
|
123
|
-
//# sourceMappingURL=chunk-
|
|
108
|
+
//# sourceMappingURL=chunk-EBOC7MT3.js.map
|
|
@@ -2,11 +2,16 @@ import { createRequire as __clioCreateRequire } from "node:module"; const requir
|
|
|
2
2
|
import {
|
|
3
3
|
describeWriteBoundary,
|
|
4
4
|
normalizeWriteBoundary,
|
|
5
|
+
normalizeWriteBoundaryEntry,
|
|
5
6
|
writeBoundaryCovers
|
|
6
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-HPCTNZM2.js";
|
|
8
|
+
import {
|
|
9
|
+
asDirectoryPathBoundary,
|
|
10
|
+
pathBoundaryEntryCovers
|
|
11
|
+
} from "./chunk-S4COXYBG.js";
|
|
7
12
|
import {
|
|
8
13
|
atomicWrite
|
|
9
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-KV2AOLDF.js";
|
|
10
15
|
import {
|
|
11
16
|
clioStateDir
|
|
12
17
|
} from "./chunk-BNAZZHFG.js";
|
|
@@ -730,7 +735,7 @@ init_esm_shims();
|
|
|
730
735
|
import { execFileSync as execFileSync3 } from "node:child_process";
|
|
731
736
|
import { createHash as createHash2 } from "node:crypto";
|
|
732
737
|
import { existsSync as existsSync3, lstatSync as lstatSync2, mkdirSync as mkdirSync3, readlinkSync, realpathSync as realpathSync3, rmSync as rmSync3, writeFileSync as writeFileSync3 } from "node:fs";
|
|
733
|
-
import { dirname, join as join3, relative as relative3, resolve as resolve3, sep as sep2 } from "node:path";
|
|
738
|
+
import { dirname, isAbsolute as isAbsolute2, join as join3, relative as relative3, resolve as resolve3, sep as sep2 } from "node:path";
|
|
734
739
|
var WRITE_BOUNDARY_VIOLATION_REASON = "writes_boundary_violation";
|
|
735
740
|
var ABSENT = "absent";
|
|
736
741
|
var GIT_TIMEOUT_MS = 3e4;
|
|
@@ -834,6 +839,20 @@ function diffWorkspace(snapshot) {
|
|
|
834
839
|
}
|
|
835
840
|
return changes;
|
|
836
841
|
}
|
|
842
|
+
function describeWriteBoundaryAttributionDowngrade(downgrade) {
|
|
843
|
+
if (downgrade.reason === "opaque_tool_succeeded") {
|
|
844
|
+
const tool = downgrade.tool ?? "unknown";
|
|
845
|
+
const call = downgrade.toolCallId === null ? "" : ` (call ${downgrade.toolCallId})`;
|
|
846
|
+
return `a successful '${tool}' call${call} can write paths its arguments do not name`;
|
|
847
|
+
}
|
|
848
|
+
if (downgrade.reason === "incomplete_tool_telemetry") {
|
|
849
|
+
return downgrade.runId === null ? "tool telemetry was incomplete" : `run '${downgrade.runId}' reported incomplete tool telemetry`;
|
|
850
|
+
}
|
|
851
|
+
if (downgrade.reason === "code_step_untracked") {
|
|
852
|
+
return downgrade.stepId === null ? "a code step ran through the untracked command runner" : `code step '${downgrade.stepId}' ran through the untracked command runner`;
|
|
853
|
+
}
|
|
854
|
+
return downgrade.stepId === null ? "no usable write record was available" : `step '${downgrade.stepId}' supplied no usable write record`;
|
|
855
|
+
}
|
|
837
856
|
function canonicalVerdict(verdict) {
|
|
838
857
|
return JSON.stringify(verdict);
|
|
839
858
|
}
|
|
@@ -876,10 +895,34 @@ function rollbackPath(snapshot, change) {
|
|
|
876
895
|
}
|
|
877
896
|
return { rolledBack: { path: change.path, action: "restored", restoredFrom: `${snapshot.head}:${change.path}` } };
|
|
878
897
|
}
|
|
898
|
+
function withinRecordedWrite(recorded, path) {
|
|
899
|
+
if (recorded.has(path)) return true;
|
|
900
|
+
for (const target of recorded) {
|
|
901
|
+
if (path.startsWith(`${target}/`)) return true;
|
|
902
|
+
}
|
|
903
|
+
return false;
|
|
904
|
+
}
|
|
879
905
|
function enforceWriteBoundary(input) {
|
|
880
906
|
const allow = normalizeWriteBoundary(input.allow);
|
|
881
907
|
const changes = diffWorkspace(input.snapshot);
|
|
882
|
-
const
|
|
908
|
+
const outside = changes.filter((change) => !writeBoundaryCovers(allow, change.path));
|
|
909
|
+
const attributionComplete = input.attribution?.complete === true;
|
|
910
|
+
const attributionDowngrades = attributionComplete ? [] : input.attribution?.downgrades !== void 0 && input.attribution.downgrades.length > 0 ? input.attribution.downgrades.map((entry) => ({ ...entry })) : [
|
|
911
|
+
{
|
|
912
|
+
reason: "write_record_unavailable",
|
|
913
|
+
tool: null,
|
|
914
|
+
toolCallId: null,
|
|
915
|
+
runId: null,
|
|
916
|
+
stepId: input.stepIds.length === 1 ? input.stepIds[0] ?? null : null
|
|
917
|
+
}
|
|
918
|
+
];
|
|
919
|
+
const recorded = /* @__PURE__ */ new Set();
|
|
920
|
+
for (const target of input.attribution?.recorded ?? []) {
|
|
921
|
+
const relativeTarget = repoRelative(input.snapshot.root, target);
|
|
922
|
+
if (relativeTarget !== null) recorded.add(relativeTarget);
|
|
923
|
+
}
|
|
924
|
+
const violations = attributionComplete ? outside.filter((change) => withinRecordedWrite(recorded, change.path)) : outside;
|
|
925
|
+
const unattributed = attributionComplete ? outside.filter((change) => !withinRecordedWrite(recorded, change.path)) : [];
|
|
883
926
|
const rolledBack = [];
|
|
884
927
|
const unrecoverable = [];
|
|
885
928
|
for (const change of violations) {
|
|
@@ -888,14 +931,20 @@ function enforceWriteBoundary(input) {
|
|
|
888
931
|
if (outcome.unrecoverable !== void 0) unrecoverable.push(outcome.unrecoverable);
|
|
889
932
|
}
|
|
890
933
|
const status = violations.length === 0 ? "clean" : unrecoverable.length === 0 ? "rolled-back" : "rollback-incomplete";
|
|
891
|
-
const
|
|
892
|
-
const
|
|
893
|
-
`${
|
|
934
|
+
const who = input.stepIds.length === 1 ? `step '${input.stepIds[0]}'` : `steps ${input.stepIds.map((id) => `'${id}'`).join(", ")} ran concurrently in one checkout, so the write cannot be attributed to one of them`;
|
|
935
|
+
const violationDetail = violations.length === 0 ? [] : [
|
|
936
|
+
`${who} wrote outside its declared boundary.`,
|
|
894
937
|
`Unauthorized paths: ${violations.map((change) => change.path).join(", ")}.`,
|
|
895
938
|
`Declared writes: ${describeWriteBoundary(allow)}.`,
|
|
896
939
|
status === "rolled-back" ? "Those paths were rolled back to the baseline commit." : `Rollback is incomplete; the working tree is left as the step made it. Unrestorable: ${unrecoverable.map((entry) => `${entry.path} (${entry.reason})`).join("; ")}.`,
|
|
940
|
+
attributionComplete ? "Each was blamed on this window because a run in it recorded writing that path." : `Attribution was incomplete because ${attributionDowngrades.map(describeWriteBoundaryAttributionDowngrade).join("; ")}, so every change outside the declaration was blamed on this window.`,
|
|
897
941
|
"If the change was legitimate, widen the step's `writes:` declaration to cover it."
|
|
898
|
-
]
|
|
942
|
+
];
|
|
943
|
+
const concurrentDetail = unattributed.length === 0 ? [] : [
|
|
944
|
+
`Concurrent changes were seen in this window that no run in it recorded writing: ${unattributed.map((change) => change.path).join(", ")}.`,
|
|
945
|
+
"They were left untouched, because a path this window did not write is not this window's to restore."
|
|
946
|
+
];
|
|
947
|
+
const detail = [...violationDetail, ...concurrentDetail];
|
|
899
948
|
const body = {
|
|
900
949
|
version: 1,
|
|
901
950
|
window: input.window,
|
|
@@ -906,11 +955,14 @@ function enforceWriteBoundary(input) {
|
|
|
906
955
|
checkedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
907
956
|
changedPaths: changes.map((change) => change.path),
|
|
908
957
|
violations: violations.map((change) => change.path),
|
|
958
|
+
unattributed: unattributed.map((change) => change.path),
|
|
959
|
+
attributionComplete,
|
|
960
|
+
attributionDowngrades,
|
|
909
961
|
rolledBack,
|
|
910
962
|
unrecoverable,
|
|
911
963
|
status,
|
|
912
964
|
reason: violations.length === 0 ? null : WRITE_BOUNDARY_VIOLATION_REASON,
|
|
913
|
-
detail
|
|
965
|
+
detail: detail.length === 0 ? null : detail.join(" ")
|
|
914
966
|
};
|
|
915
967
|
return { ...body, digest: createHash2("sha256").update(canonicalVerdict(body), "utf8").digest("hex") };
|
|
916
968
|
}
|
|
@@ -921,14 +973,41 @@ function assertWriteBoundaryInsideRoot(root, allow) {
|
|
|
921
973
|
let probe = join3(realRoot, relativeEntry);
|
|
922
974
|
while (probe !== realRoot && !existsSync3(probe)) probe = dirname(probe);
|
|
923
975
|
const resolved = realpathSync3(probe);
|
|
924
|
-
if (resolved !== realRoot && !
|
|
976
|
+
if (resolved !== realRoot && !pathBoundaryEntryCovers(asDirectoryPathBoundary(realRoot), resolved)) {
|
|
925
977
|
throw new Error(`write boundary: entry '${entry}' resolves to ${resolved}, outside the workspace at ${realRoot}`);
|
|
926
978
|
}
|
|
927
979
|
}
|
|
928
980
|
}
|
|
981
|
+
function assertWriteBoundaryVisibleToGit(root, allow) {
|
|
982
|
+
const entries = [...new Set(allow.map(normalizeWriteBoundaryEntry))].sort();
|
|
983
|
+
if (entries.length === 0) return;
|
|
984
|
+
const absolute = resolve3(root);
|
|
985
|
+
let raw;
|
|
986
|
+
try {
|
|
987
|
+
raw = git3(absolute, ["check-ignore", "-v", "-z", "--stdin"], `${entries.join("\0")}\0`);
|
|
988
|
+
} catch (error) {
|
|
989
|
+
const status = error.status;
|
|
990
|
+
if (status === 1) return;
|
|
991
|
+
throw new Error(
|
|
992
|
+
`write boundary: could not determine whether ${describeWriteBoundary(entries)} is ignored by git in ${absolute}: ${error.message}`
|
|
993
|
+
);
|
|
994
|
+
}
|
|
995
|
+
const fields = raw.split("\0");
|
|
996
|
+
const refusals = [];
|
|
997
|
+
for (let index = 0; index + 3 < fields.length; index += 4) {
|
|
998
|
+
const [source, line, pattern, path] = fields.slice(index, index + 4);
|
|
999
|
+
if (path === void 0 || path.length === 0) continue;
|
|
1000
|
+
refusals.push(`'${path}' is ignored by ${source}:${line}:${pattern}`);
|
|
1001
|
+
}
|
|
1002
|
+
if (refusals.length === 0) return;
|
|
1003
|
+
throw new Error(
|
|
1004
|
+
`write boundary: ${refusals.join(", ")}. git status never reports an ignored path, so a boundary declared over one is verified against nothing and every window would be certified clean without an observation. Declare a path the repository tracks, or stop ignoring this one.`
|
|
1005
|
+
);
|
|
1006
|
+
}
|
|
929
1007
|
function repoRelative(root, path) {
|
|
930
|
-
const
|
|
931
|
-
|
|
1008
|
+
const base = resolve3(root);
|
|
1009
|
+
const rel = relative3(base, resolve3(base, path));
|
|
1010
|
+
if (rel.length === 0 || rel === ".." || rel.startsWith(`..${sep2}`) || isAbsolute2(rel)) return null;
|
|
932
1011
|
return rel.split(sep2).join("/");
|
|
933
1012
|
}
|
|
934
1013
|
function writeBoundaryDir(rootId) {
|
|
@@ -956,6 +1035,7 @@ function preflightWriteBoundaries(plan, root) {
|
|
|
956
1035
|
);
|
|
957
1036
|
}
|
|
958
1037
|
for (const step of declared) assertWriteBoundaryInsideRoot(root, step.writes ?? []);
|
|
1038
|
+
assertWriteBoundaryVisibleToGit(root, [...new Set(declared.flatMap((step) => [...step.writes ?? []]))]);
|
|
959
1039
|
}
|
|
960
1040
|
function createWriteBoundaryEnforcer(input) {
|
|
961
1041
|
const open = /* @__PURE__ */ new Map();
|
|
@@ -964,10 +1044,42 @@ function createWriteBoundaryEnforcer(input) {
|
|
|
964
1044
|
for (const stepId of stepIds) for (const entry of input.boundaryFor(stepId) ?? []) allow.add(entry);
|
|
965
1045
|
return [...allow].sort();
|
|
966
1046
|
};
|
|
1047
|
+
const attributionFor = (stepIds) => {
|
|
1048
|
+
const recordedWritesFor = input.recordedWritesFor;
|
|
1049
|
+
if (recordedWritesFor === void 0) return void 0;
|
|
1050
|
+
const recorded = /* @__PURE__ */ new Set();
|
|
1051
|
+
const downgrades = [];
|
|
1052
|
+
let complete = true;
|
|
1053
|
+
for (const stepId of stepIds) {
|
|
1054
|
+
const observed = recordedWritesFor(stepId);
|
|
1055
|
+
if (observed === null) {
|
|
1056
|
+
complete = false;
|
|
1057
|
+
downgrades.push({
|
|
1058
|
+
reason: "write_record_unavailable",
|
|
1059
|
+
tool: null,
|
|
1060
|
+
toolCallId: null,
|
|
1061
|
+
runId: null,
|
|
1062
|
+
stepId
|
|
1063
|
+
});
|
|
1064
|
+
continue;
|
|
1065
|
+
}
|
|
1066
|
+
if (!("recorded" in observed)) {
|
|
1067
|
+
for (const target of observed) recorded.add(target);
|
|
1068
|
+
continue;
|
|
1069
|
+
}
|
|
1070
|
+
for (const target of observed.recorded) recorded.add(target);
|
|
1071
|
+
if (!observed.complete) complete = false;
|
|
1072
|
+
for (const downgrade of observed.downgrades ?? []) {
|
|
1073
|
+
downgrades.push({ ...downgrade, stepId: downgrade.stepId ?? stepId });
|
|
1074
|
+
}
|
|
1075
|
+
}
|
|
1076
|
+
return { recorded: [...recorded].sort(), complete, downgrades };
|
|
1077
|
+
};
|
|
967
1078
|
return {
|
|
968
1079
|
begin(window, stepIds) {
|
|
969
1080
|
const allow = allowFor(stepIds);
|
|
970
1081
|
assertWriteBoundaryInsideRoot(input.root, allow);
|
|
1082
|
+
assertWriteBoundaryVisibleToGit(input.root, allow);
|
|
971
1083
|
open.set(window, { snapshot: captureWorkspaceSnapshot(input.root), allow });
|
|
972
1084
|
},
|
|
973
1085
|
async verify(window, stepIds) {
|
|
@@ -976,11 +1088,13 @@ function createWriteBoundaryEnforcer(input) {
|
|
|
976
1088
|
throw new Error(`write boundary: window '${window}' was verified without a snapshot`);
|
|
977
1089
|
}
|
|
978
1090
|
open.delete(window);
|
|
1091
|
+
const attribution = attributionFor(stepIds);
|
|
979
1092
|
const verdict = enforceWriteBoundary({
|
|
980
1093
|
snapshot: pending.snapshot,
|
|
981
1094
|
window,
|
|
982
1095
|
stepIds,
|
|
983
|
-
allow: pending.allow
|
|
1096
|
+
allow: pending.allow,
|
|
1097
|
+
...attribution === void 0 ? {} : { attribution }
|
|
984
1098
|
});
|
|
985
1099
|
const path = writeWriteBoundaryVerdict(input.rootId, verdict);
|
|
986
1100
|
input.onVerdict?.(verdict, path);
|
|
@@ -1020,7 +1134,8 @@ export {
|
|
|
1020
1134
|
recoverCleanupReadyCompeteGroups,
|
|
1021
1135
|
WRITE_BOUNDARY_VIOLATION_REASON,
|
|
1022
1136
|
captureWorkspaceSnapshot,
|
|
1137
|
+
describeWriteBoundaryAttributionDowngrade,
|
|
1023
1138
|
preflightWriteBoundaries,
|
|
1024
1139
|
createWriteBoundaryEnforcer
|
|
1025
1140
|
};
|
|
1026
|
-
//# sourceMappingURL=chunk-
|
|
1141
|
+
//# sourceMappingURL=chunk-ECUO3KDP.js.map
|
|
@@ -9,16 +9,16 @@ import {
|
|
|
9
9
|
import {
|
|
10
10
|
require_dist
|
|
11
11
|
} from "./chunk-APJ265NV.js";
|
|
12
|
-
import {
|
|
13
|
-
findEngineEnvKeys,
|
|
14
|
-
getEngineEnvApiKey
|
|
15
|
-
} from "./chunk-YXLYO42X.js";
|
|
16
12
|
import {
|
|
17
13
|
clioConfigDir
|
|
18
14
|
} from "./chunk-BNAZZHFG.js";
|
|
19
15
|
import {
|
|
20
16
|
safeResourceWrite
|
|
21
17
|
} from "./chunk-WEPFGWHJ.js";
|
|
18
|
+
import {
|
|
19
|
+
findEngineEnvKeys,
|
|
20
|
+
getEngineEnvApiKey
|
|
21
|
+
} from "./chunk-YXLYO42X.js";
|
|
22
22
|
import {
|
|
23
23
|
__toESM,
|
|
24
24
|
init_esm_shims
|
|
@@ -959,4 +959,4 @@ export {
|
|
|
959
959
|
authNotRequiredStatus,
|
|
960
960
|
openAuthStorage
|
|
961
961
|
};
|
|
962
|
-
//# sourceMappingURL=chunk-
|
|
962
|
+
//# sourceMappingURL=chunk-EQ63NRB7.js.map
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
settingsPath,
|
|
6
6
|
updateSavedSettingsDocument,
|
|
7
7
|
validateSettings
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-PNY46YEY.js";
|
|
9
9
|
import {
|
|
10
10
|
require_dist
|
|
11
11
|
} from "./chunk-APJ265NV.js";
|
|
@@ -226,4 +226,4 @@ export {
|
|
|
226
226
|
updateLayeredSettings,
|
|
227
227
|
settingsSourceFor
|
|
228
228
|
};
|
|
229
|
-
//# sourceMappingURL=chunk-
|
|
229
|
+
//# sourceMappingURL=chunk-FALJGAWU.js.map
|