@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
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
} from "./chunk-W6GROXXM.js";
|
|
15
15
|
import {
|
|
16
16
|
ceilChars
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-AEYBF3TB.js";
|
|
18
18
|
import {
|
|
19
19
|
init_esm_shims
|
|
20
20
|
} from "./chunk-3R73A4XB.js";
|
|
@@ -119,4 +119,4 @@ export {
|
|
|
119
119
|
recallableRefListing,
|
|
120
120
|
recallErrorMessage
|
|
121
121
|
};
|
|
122
|
-
//# sourceMappingURL=chunk-
|
|
122
|
+
//# sourceMappingURL=chunk-MV2VUEJC.js.map
|
|
@@ -108,9 +108,9 @@ function enqueueWorkspace(cwd, task) {
|
|
|
108
108
|
}
|
|
109
109
|
function coordinateCodewikiWrite(cwd, select, options = {}) {
|
|
110
110
|
const workspace = resolve(cwd);
|
|
111
|
-
return enqueueWorkspace(
|
|
112
|
-
workspace
|
|
113
|
-
|
|
111
|
+
return enqueueWorkspace(workspace, () => {
|
|
112
|
+
if (options.requireExisting && !existsSync(codewikiPath(workspace))) return Promise.resolve(null);
|
|
113
|
+
return withStateFileLock(codewikiPath(workspace), async () => {
|
|
114
114
|
if (options.requireExisting && !existsSync(codewikiPath(workspace))) return null;
|
|
115
115
|
const current = options.readCurrent?.(workspace) ?? readCodewiki(workspace);
|
|
116
116
|
const request = await select(current, workspace);
|
|
@@ -121,8 +121,8 @@ function coordinateCodewikiWrite(cwd, select, options = {}) {
|
|
|
121
121
|
if (wrote) writeCodewiki(workspace, worker.codewiki);
|
|
122
122
|
await options.afterCommit?.(worker, workspace);
|
|
123
123
|
return { codewiki: !worker.changed && current ? current : worker.codewiki, worker, wrote };
|
|
124
|
-
})
|
|
125
|
-
);
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
126
|
}
|
|
127
127
|
function coordinateCodewikiExclusive(cwd, task) {
|
|
128
128
|
const workspace = resolve(cwd);
|
|
@@ -277,4 +277,4 @@ export {
|
|
|
277
277
|
readClioState,
|
|
278
278
|
writeClioState
|
|
279
279
|
};
|
|
280
|
-
//# sourceMappingURL=chunk-
|
|
280
|
+
//# sourceMappingURL=chunk-MXHC5QYU.js.map
|
|
@@ -1,23 +1,19 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
loadProjectVerifierCatalog
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-A2NJGIB3.js";
|
|
5
5
|
import {
|
|
6
|
-
classify
|
|
7
|
-
|
|
6
|
+
classify,
|
|
7
|
+
pathBoundaryCovers,
|
|
8
|
+
resolvePathBoundary
|
|
9
|
+
} from "./chunk-S4COXYBG.js";
|
|
8
10
|
import {
|
|
9
11
|
artifactDefaultPath,
|
|
10
|
-
detectValidationCommand,
|
|
11
12
|
extractCommandDeleteTargets,
|
|
12
13
|
extractCommandWriteTargets,
|
|
13
14
|
inlineShellScript,
|
|
14
|
-
tokenizeShellLike
|
|
15
|
-
toolMutationPaths
|
|
15
|
+
tokenizeShellLike
|
|
16
16
|
} from "./chunk-MV3K5QF2.js";
|
|
17
|
-
import {
|
|
18
|
-
isProjectVerifierCheckId,
|
|
19
|
-
isVerificationScriptName
|
|
20
|
-
} from "./chunk-UL3WSD3F.js";
|
|
21
17
|
import {
|
|
22
18
|
canonicalizeExistingPath
|
|
23
19
|
} from "./chunk-ECH6PKUQ.js";
|
|
@@ -27,387 +23,20 @@ import {
|
|
|
27
23
|
import {
|
|
28
24
|
foreignAgentDirs
|
|
29
25
|
} from "./chunk-IHXBNWMM.js";
|
|
26
|
+
import {
|
|
27
|
+
resolvePackageRoot
|
|
28
|
+
} from "./chunk-IWHMRKLL.js";
|
|
30
29
|
import {
|
|
31
30
|
require_dist
|
|
32
31
|
} from "./chunk-APJ265NV.js";
|
|
33
32
|
import {
|
|
34
33
|
clioConfigDir
|
|
35
34
|
} from "./chunk-BNAZZHFG.js";
|
|
36
|
-
import {
|
|
37
|
-
resolvePackageRoot
|
|
38
|
-
} from "./chunk-IWHMRKLL.js";
|
|
39
35
|
import {
|
|
40
36
|
__toESM,
|
|
41
37
|
init_esm_shims
|
|
42
38
|
} from "./chunk-3R73A4XB.js";
|
|
43
39
|
|
|
44
|
-
// src/domains/safety/finish-contract.ts
|
|
45
|
-
init_esm_shims();
|
|
46
|
-
var FINISH_CONTRACT_ADVISORY_MESSAGE = "[Clio Coder] finish-contract advisory: you changed files this turn without recording validation evidence or an explicit limitation. Run a verification command or state what could not be verified.";
|
|
47
|
-
var DEFAULT_RECENT_ENTRY_LIMIT = 80;
|
|
48
|
-
var LIMITATION_PATTERNS = [
|
|
49
|
-
/\b(?:blocked by|blocker|blockers|unable to|not able to|could not|couldn't|cannot|can't)\b/i,
|
|
50
|
-
/\b(?:did not|didn't|have not|haven't|has not|hasn't|was not able|wasn't able)\b/i,
|
|
51
|
-
/\b(?:not complete|incomplete)\b/i,
|
|
52
|
-
/\b(?:not|un)(?:\s|-)?(?:validated|verified|tested)\b/i,
|
|
53
|
-
/^\s*Tests\s*:\s*(?:not run|not executed|not available|failed|blocked|skipped)\b/im,
|
|
54
|
-
/^\s*Known gaps?\s*:\s*(?!\s*(?:none|no\b|n\/a|not applicable)\b).+/im,
|
|
55
|
-
/\bremaining(?:\s+\w+){0,3}\s+(?:work|issue|issues|gap|gaps|blocker|blockers)\b/i
|
|
56
|
-
];
|
|
57
|
-
function assessFinishContract(input) {
|
|
58
|
-
const assistantText = input.assistantText.trim();
|
|
59
|
-
const sessionEntries = input.sessionEntries ?? [];
|
|
60
|
-
const assistantTurnId = input.assistantTurnId ?? null;
|
|
61
|
-
const window = recentEntries(sessionEntries, assistantTurnId, input.recentEntryLimit ?? DEFAULT_RECENT_ENTRY_LIMIT);
|
|
62
|
-
const mutatedPaths = mutatingReceipts(window);
|
|
63
|
-
if (mutatedPaths.length === 0) {
|
|
64
|
-
return { kind: "ok", reason: "no_mutation", evidence: [], mutatedPaths };
|
|
65
|
-
}
|
|
66
|
-
const evidence = collectValidationEvidence(window);
|
|
67
|
-
if (evidence.length > 0) {
|
|
68
|
-
return { kind: "ok", reason: "validation_evidence", evidence, mutatedPaths };
|
|
69
|
-
}
|
|
70
|
-
if (hasExplicitLimitation(assistantText)) {
|
|
71
|
-
return { kind: "ok", reason: "explicit_limitation", evidence: [], mutatedPaths };
|
|
72
|
-
}
|
|
73
|
-
return {
|
|
74
|
-
kind: "engage",
|
|
75
|
-
reason: "unvalidated_mutation",
|
|
76
|
-
message: FINISH_CONTRACT_ADVISORY_MESSAGE,
|
|
77
|
-
evidence: [],
|
|
78
|
-
mutatedPaths
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
function hasExplicitLimitation(text) {
|
|
82
|
-
const normalized = text.trim();
|
|
83
|
-
if (normalized.length === 0) return false;
|
|
84
|
-
return LIMITATION_PATTERNS.some((pattern) => pattern.test(normalized));
|
|
85
|
-
}
|
|
86
|
-
function mutatingReceipts(recent) {
|
|
87
|
-
const mutationCalls = /* @__PURE__ */ new Map();
|
|
88
|
-
const paths = [];
|
|
89
|
-
const seen = /* @__PURE__ */ new Set();
|
|
90
|
-
for (const entry of recent) {
|
|
91
|
-
const bashMutation = bashExecutionMutationPaths(entry);
|
|
92
|
-
if (bashMutation !== null) {
|
|
93
|
-
for (const path4 of bashMutation) pushPath(paths, seen, path4);
|
|
94
|
-
continue;
|
|
95
|
-
}
|
|
96
|
-
const call = mutatingToolCall(entry);
|
|
97
|
-
if (call !== null) {
|
|
98
|
-
mutationCalls.set(call.toolCallId, call);
|
|
99
|
-
continue;
|
|
100
|
-
}
|
|
101
|
-
const resultId = successfulToolResultId(entry);
|
|
102
|
-
if (resultId !== null) {
|
|
103
|
-
const candidate = mutationCalls.get(resultId);
|
|
104
|
-
if (candidate !== void 0) {
|
|
105
|
-
for (const path4 of candidate.paths) pushPath(paths, seen, path4);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
return paths;
|
|
110
|
-
}
|
|
111
|
-
function mutationPathsForTool(toolName, args) {
|
|
112
|
-
if (toolName === ToolNames.Bash) {
|
|
113
|
-
const command = typeof args?.command === "string" ? args.command : null;
|
|
114
|
-
if (command === null) return [];
|
|
115
|
-
return [...extractCommandWriteTargets(command), ...extractCommandDeleteTargets(command)];
|
|
116
|
-
}
|
|
117
|
-
return toolMutationPaths(toolName, args);
|
|
118
|
-
}
|
|
119
|
-
function mutatingToolCall(entry) {
|
|
120
|
-
const record = asRecord(entry);
|
|
121
|
-
if (record?.kind !== "message" || record.role !== "tool_call") return null;
|
|
122
|
-
const payload = asRecord(record.payload);
|
|
123
|
-
if (payload === null) return null;
|
|
124
|
-
const toolName = stringFromFirst(payload, ["name", "toolName", "tool"]);
|
|
125
|
-
if (toolName === null) return null;
|
|
126
|
-
const args = asRecord(payload.args ?? payload.arguments ?? payload.input) ?? void 0;
|
|
127
|
-
const paths = mutationPathsForTool(toolName, args);
|
|
128
|
-
if (paths.length === 0) return null;
|
|
129
|
-
const toolCallId = stringFromFirst(payload, ["toolCallId", "tool_call_id", "id"]) ?? turnIdOf(entry);
|
|
130
|
-
if (toolCallId === null) return null;
|
|
131
|
-
return { toolCallId, paths };
|
|
132
|
-
}
|
|
133
|
-
function bashExecutionMutationPaths(entry) {
|
|
134
|
-
const record = asRecord(entry);
|
|
135
|
-
if (record?.kind !== "bashExecution") return null;
|
|
136
|
-
if (typeof record.command !== "string") return null;
|
|
137
|
-
if (record.cancelled === true || record.exitCode !== 0) return null;
|
|
138
|
-
return [...extractCommandWriteTargets(record.command), ...extractCommandDeleteTargets(record.command)];
|
|
139
|
-
}
|
|
140
|
-
function pushPath(paths, seen, path4) {
|
|
141
|
-
if (path4.length === 0 || seen.has(path4)) return;
|
|
142
|
-
seen.add(path4);
|
|
143
|
-
paths.push(path4);
|
|
144
|
-
}
|
|
145
|
-
function collectValidationEvidence(recent) {
|
|
146
|
-
const evidence = [];
|
|
147
|
-
const toolCalls = /* @__PURE__ */ new Map();
|
|
148
|
-
const dispatchCalls = /* @__PURE__ */ new Map();
|
|
149
|
-
const seen = /* @__PURE__ */ new Set();
|
|
150
|
-
for (const entry of recent) {
|
|
151
|
-
const protectedArtifact = protectedArtifactEvidence(entry);
|
|
152
|
-
if (protectedArtifact !== null) {
|
|
153
|
-
pushEvidence(evidence, seen, protectedArtifact);
|
|
154
|
-
continue;
|
|
155
|
-
}
|
|
156
|
-
const call = bashValidationCall(entry);
|
|
157
|
-
if (call !== null) {
|
|
158
|
-
toolCalls.set(call.toolCallId, call);
|
|
159
|
-
continue;
|
|
160
|
-
}
|
|
161
|
-
const typedValidationCall = validationToolCall(entry);
|
|
162
|
-
if (typedValidationCall !== null) {
|
|
163
|
-
toolCalls.set(typedValidationCall.toolCallId, typedValidationCall);
|
|
164
|
-
continue;
|
|
165
|
-
}
|
|
166
|
-
const dispatchCall = dispatchEvidenceCall(entry);
|
|
167
|
-
if (dispatchCall !== null) {
|
|
168
|
-
dispatchCalls.set(dispatchCall.toolCallId, dispatchCall);
|
|
169
|
-
continue;
|
|
170
|
-
}
|
|
171
|
-
const resultId = successfulToolResultId(entry);
|
|
172
|
-
if (resultId !== null) {
|
|
173
|
-
const dispatchCandidate = dispatchCalls.get(resultId);
|
|
174
|
-
const dispatchReceipt = dispatchReceiptEvidence(entry, dispatchCandidate);
|
|
175
|
-
if (dispatchReceipt !== null) {
|
|
176
|
-
pushEvidence(evidence, seen, dispatchReceipt);
|
|
177
|
-
continue;
|
|
178
|
-
}
|
|
179
|
-
const candidate = toolCalls.get(resultId);
|
|
180
|
-
if (candidate !== void 0) {
|
|
181
|
-
pushEvidence(evidence, seen, validationEvidence(candidate));
|
|
182
|
-
}
|
|
183
|
-
continue;
|
|
184
|
-
}
|
|
185
|
-
const bashExecution = bashExecutionEvidence(entry);
|
|
186
|
-
if (bashExecution !== null) pushEvidence(evidence, seen, bashExecution);
|
|
187
|
-
}
|
|
188
|
-
return evidence;
|
|
189
|
-
}
|
|
190
|
-
function recentEntries(entries, assistantTurnId, recentEntryLimit) {
|
|
191
|
-
const boundedLimit = Number.isFinite(recentEntryLimit) && recentEntryLimit > 0 ? Math.floor(recentEntryLimit) : DEFAULT_RECENT_ENTRY_LIMIT;
|
|
192
|
-
const assistantIndex = assistantTurnId === null ? -1 : entries.findIndex((entry) => turnIdOf(entry) === assistantTurnId);
|
|
193
|
-
const endExclusive = assistantIndex >= 0 ? assistantIndex : entries.length;
|
|
194
|
-
let startInclusive = Math.max(0, endExclusive - boundedLimit);
|
|
195
|
-
for (let index = endExclusive - 1; index >= startInclusive; index -= 1) {
|
|
196
|
-
if (isUserMessageEntry(entries[index])) {
|
|
197
|
-
startInclusive = index + 1;
|
|
198
|
-
break;
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
return entries.slice(startInclusive, endExclusive);
|
|
202
|
-
}
|
|
203
|
-
function bashValidationCall(entry) {
|
|
204
|
-
const record = asRecord(entry);
|
|
205
|
-
if (record?.kind !== "message" || record.role !== "tool_call") return null;
|
|
206
|
-
const payload = asRecord(record.payload);
|
|
207
|
-
if (payload === null) return null;
|
|
208
|
-
const toolName = stringFromFirst(payload, ["name", "toolName", "tool"]);
|
|
209
|
-
if (toolName !== "bash") return null;
|
|
210
|
-
const args = asRecord(payload.args ?? payload.arguments ?? payload.input);
|
|
211
|
-
const command = typeof args?.command === "string" ? args.command : null;
|
|
212
|
-
if (command === null) return null;
|
|
213
|
-
const detected = detectValidationCommand(command);
|
|
214
|
-
if (detected.kind !== "validation") return null;
|
|
215
|
-
const toolCallId = stringFromFirst(payload, ["toolCallId", "tool_call_id", "id"]) ?? turnIdOf(entry);
|
|
216
|
-
if (toolCallId === null) return null;
|
|
217
|
-
const candidate = {
|
|
218
|
-
toolCallId,
|
|
219
|
-
command: detected.matched
|
|
220
|
-
};
|
|
221
|
-
const turnId = turnIdOf(entry);
|
|
222
|
-
if (turnId !== null) candidate.turnId = turnId;
|
|
223
|
-
return candidate;
|
|
224
|
-
}
|
|
225
|
-
function dispatchEvidenceCall(entry) {
|
|
226
|
-
const record = asRecord(entry);
|
|
227
|
-
if (record?.kind !== "message" || record.role !== "tool_call") return null;
|
|
228
|
-
const payload = asRecord(record.payload);
|
|
229
|
-
if (payload === null) return null;
|
|
230
|
-
const toolName = stringFromFirst(payload, ["name", "toolName", "tool"]);
|
|
231
|
-
if (toolName !== "dispatch") return null;
|
|
232
|
-
const args = asRecord(payload.args ?? payload.arguments ?? payload.input);
|
|
233
|
-
const { agentId, task } = dispatchCallDescriptor(args);
|
|
234
|
-
const toolCallId = stringFromFirst(payload, ["toolCallId", "tool_call_id", "id"]) ?? turnIdOf(entry);
|
|
235
|
-
if (toolCallId === null) return null;
|
|
236
|
-
const candidate = {
|
|
237
|
-
toolCallId,
|
|
238
|
-
command: `agent=${agentId}${task.length > 0 ? ` task=${task}` : ""}`
|
|
239
|
-
};
|
|
240
|
-
const turnId = turnIdOf(entry);
|
|
241
|
-
if (turnId !== null) candidate.turnId = turnId;
|
|
242
|
-
return candidate;
|
|
243
|
-
}
|
|
244
|
-
function dispatchCallDescriptor(args) {
|
|
245
|
-
const defaultAgent = stringFromFirst(args ?? {}, ["agent", "agent_id", "agentId"]);
|
|
246
|
-
const tasks = Array.isArray(args?.tasks) ? args.tasks : null;
|
|
247
|
-
if (tasks !== null && tasks.length > 0) {
|
|
248
|
-
const first = tasks[0];
|
|
249
|
-
if (typeof first === "string") {
|
|
250
|
-
return { agentId: defaultAgent ?? "coder", task: first.trim() };
|
|
251
|
-
}
|
|
252
|
-
const firstRecord = asRecord(first);
|
|
253
|
-
const itemAgent = firstRecord === null ? null : stringFromFirst(firstRecord, ["agent", "agent_id", "agentId"]);
|
|
254
|
-
const itemTask = typeof firstRecord?.task === "string" ? firstRecord.task.trim() : "";
|
|
255
|
-
return { agentId: itemAgent ?? defaultAgent ?? "coder", task: itemTask };
|
|
256
|
-
}
|
|
257
|
-
const singleTask = typeof args?.task === "string" ? args.task.trim() : "";
|
|
258
|
-
return { agentId: defaultAgent ?? "coder", task: singleTask };
|
|
259
|
-
}
|
|
260
|
-
function validationToolCall(entry) {
|
|
261
|
-
const record = asRecord(entry);
|
|
262
|
-
if (record?.kind !== "message" || record.role !== "tool_call") return null;
|
|
263
|
-
const payload = asRecord(record.payload);
|
|
264
|
-
if (payload === null) return null;
|
|
265
|
-
const toolName = stringFromFirst(payload, ["name", "toolName", "tool"]);
|
|
266
|
-
if (toolName === null) return null;
|
|
267
|
-
const summary = typedValidationSummary(toolName, payload);
|
|
268
|
-
if (summary === null) return null;
|
|
269
|
-
const toolCallId = stringFromFirst(payload, ["toolCallId", "tool_call_id", "id"]) ?? turnIdOf(entry);
|
|
270
|
-
if (toolCallId === null) return null;
|
|
271
|
-
const candidate = {
|
|
272
|
-
toolCallId,
|
|
273
|
-
command: summary
|
|
274
|
-
};
|
|
275
|
-
const turnId = turnIdOf(entry);
|
|
276
|
-
if (turnId !== null) candidate.turnId = turnId;
|
|
277
|
-
return candidate;
|
|
278
|
-
}
|
|
279
|
-
function typedValidationSummary(toolName, payload) {
|
|
280
|
-
const args = asRecord(payload.args ?? payload.arguments ?? payload.input);
|
|
281
|
-
if (toolName === "verify") {
|
|
282
|
-
const check = typeof args?.check === "string" ? args.check.trim() : "";
|
|
283
|
-
if (check === "frontend") {
|
|
284
|
-
const path4 = typeof args?.path === "string" && args.path.trim().length > 0 ? args.path.trim() : "artifact";
|
|
285
|
-
return `verify frontend ${path4}`;
|
|
286
|
-
}
|
|
287
|
-
if (isVerificationScriptName(check)) return `npm run ${check}`;
|
|
288
|
-
if (isProjectVerifierCheckId(check)) return `verify ${check}`;
|
|
289
|
-
return null;
|
|
290
|
-
}
|
|
291
|
-
return null;
|
|
292
|
-
}
|
|
293
|
-
function successfulToolResultId(entry) {
|
|
294
|
-
const record = asRecord(entry);
|
|
295
|
-
if (record?.kind !== "message" || record.role !== "tool_result") return null;
|
|
296
|
-
const payload = asRecord(record.payload);
|
|
297
|
-
if (payload === null) return null;
|
|
298
|
-
if (payload.isError === true || payload.error === true) return null;
|
|
299
|
-
const result = asRecord(payload.result);
|
|
300
|
-
const details = asRecord(result?.details);
|
|
301
|
-
if (details?.kind === "error") return null;
|
|
302
|
-
return stringFromFirst(payload, ["toolCallId", "tool_call_id", "id"]);
|
|
303
|
-
}
|
|
304
|
-
function dispatchReceiptEvidence(entry, candidate) {
|
|
305
|
-
const record = asRecord(entry);
|
|
306
|
-
if (record?.kind !== "message" || record.role !== "tool_result") return null;
|
|
307
|
-
const payload = asRecord(record.payload);
|
|
308
|
-
if (payload === null) return null;
|
|
309
|
-
const toolName = stringFromFirst(payload, ["toolName", "name", "tool"]);
|
|
310
|
-
if (toolName !== null && toolName !== "dispatch") return null;
|
|
311
|
-
const result = asRecord(payload.result);
|
|
312
|
-
const details = asRecord(result?.details);
|
|
313
|
-
if (details === null) return null;
|
|
314
|
-
const summary = passedDispatchReceiptSummary(details, candidate);
|
|
315
|
-
if (summary === null) return null;
|
|
316
|
-
const evidence = {
|
|
317
|
-
kind: "dispatch_receipt",
|
|
318
|
-
summary
|
|
319
|
-
};
|
|
320
|
-
const turnId = candidate?.turnId ?? turnIdOf(entry);
|
|
321
|
-
if (turnId !== null && turnId !== void 0) evidence.turnId = turnId;
|
|
322
|
-
return evidence;
|
|
323
|
-
}
|
|
324
|
-
function passedDispatchReceiptSummary(details, candidate) {
|
|
325
|
-
if (Array.isArray(details.runs)) {
|
|
326
|
-
const runs = details.runs.map(asRecord);
|
|
327
|
-
if (runs.length === 0 || runs.some((run) => run === null || run.exitCode !== 0)) return null;
|
|
328
|
-
if (typeof details.failedCount === "number" && details.failedCount !== 0) return null;
|
|
329
|
-
const first = runs[0];
|
|
330
|
-
const runId = typeof first?.runId === "string" && first.runId.length > 0 ? first.runId : "unknown";
|
|
331
|
-
const agentId = dispatchReceiptAgentId(typeof first?.agentId === "string" ? first.agentId : void 0, candidate);
|
|
332
|
-
const extra = runs.length > 1 ? ` (+${runs.length - 1} more)` : "";
|
|
333
|
-
return `dispatch receipt passed: run ${runId} agent ${agentId}${extra}`;
|
|
334
|
-
}
|
|
335
|
-
if (details.exitCode === 0) {
|
|
336
|
-
const runId = typeof details.runId === "string" && details.runId.length > 0 ? details.runId : "unknown";
|
|
337
|
-
const agentId = dispatchReceiptAgentId(typeof details.agentId === "string" ? details.agentId : void 0, candidate);
|
|
338
|
-
return `dispatch receipt passed: run ${runId} agent ${agentId}`;
|
|
339
|
-
}
|
|
340
|
-
return null;
|
|
341
|
-
}
|
|
342
|
-
function dispatchReceiptAgentId(receiptAgentId, candidate) {
|
|
343
|
-
if (receiptAgentId !== void 0 && receiptAgentId.length > 0) return receiptAgentId;
|
|
344
|
-
return candidate?.command.match(/^agent=([^\s]+)/)?.[1] ?? "unknown";
|
|
345
|
-
}
|
|
346
|
-
function bashExecutionEvidence(entry) {
|
|
347
|
-
const record = asRecord(entry);
|
|
348
|
-
if (record?.kind !== "bashExecution") return null;
|
|
349
|
-
if (typeof record.command !== "string") return null;
|
|
350
|
-
if (record.cancelled === true) return null;
|
|
351
|
-
if (record.exitCode !== 0) return null;
|
|
352
|
-
const detected = detectValidationCommand(record.command);
|
|
353
|
-
if (detected.kind !== "validation") return null;
|
|
354
|
-
const evidence = {
|
|
355
|
-
kind: "validation_command",
|
|
356
|
-
summary: `validation command passed: ${detected.matched}`
|
|
357
|
-
};
|
|
358
|
-
const turnId = turnIdOf(entry);
|
|
359
|
-
if (turnId !== null) evidence.turnId = turnId;
|
|
360
|
-
return evidence;
|
|
361
|
-
}
|
|
362
|
-
function protectedArtifactEvidence(entry) {
|
|
363
|
-
const record = asRecord(entry);
|
|
364
|
-
if (record?.kind !== "protectedArtifact" || record.action !== "protect") return null;
|
|
365
|
-
const artifact = asRecord(record.artifact);
|
|
366
|
-
const path4 = typeof artifact?.path === "string" && artifact.path.trim().length > 0 ? artifact.path.trim() : null;
|
|
367
|
-
if (path4 === null) return null;
|
|
368
|
-
const evidence = {
|
|
369
|
-
kind: "protected_artifact",
|
|
370
|
-
summary: `protected artifact recorded: ${path4}`
|
|
371
|
-
};
|
|
372
|
-
const turnId = turnIdOf(entry);
|
|
373
|
-
if (turnId !== null) evidence.turnId = turnId;
|
|
374
|
-
return evidence;
|
|
375
|
-
}
|
|
376
|
-
function validationEvidence(candidate) {
|
|
377
|
-
const evidence = {
|
|
378
|
-
kind: "validation_command",
|
|
379
|
-
summary: `validation command passed: ${candidate.command}`
|
|
380
|
-
};
|
|
381
|
-
if (candidate.turnId !== void 0) evidence.turnId = candidate.turnId;
|
|
382
|
-
return evidence;
|
|
383
|
-
}
|
|
384
|
-
function pushEvidence(evidence, seen, item) {
|
|
385
|
-
const key = `${item.kind}\0${item.summary}\0${item.turnId ?? ""}`;
|
|
386
|
-
if (seen.has(key)) return;
|
|
387
|
-
seen.add(key);
|
|
388
|
-
evidence.push(item);
|
|
389
|
-
}
|
|
390
|
-
function isUserMessageEntry(entry) {
|
|
391
|
-
const record = asRecord(entry);
|
|
392
|
-
if (record?.kind !== "message" || record.role !== "user") return false;
|
|
393
|
-
const payload = asRecord(record.payload);
|
|
394
|
-
return payload?.synthetic !== true;
|
|
395
|
-
}
|
|
396
|
-
function turnIdOf(entry) {
|
|
397
|
-
const record = asRecord(entry);
|
|
398
|
-
return typeof record?.turnId === "string" ? record.turnId : null;
|
|
399
|
-
}
|
|
400
|
-
function stringFromFirst(record, keys) {
|
|
401
|
-
for (const key of keys) {
|
|
402
|
-
const value = record[key];
|
|
403
|
-
if (typeof value === "string" && value.length > 0) return value;
|
|
404
|
-
}
|
|
405
|
-
return null;
|
|
406
|
-
}
|
|
407
|
-
function asRecord(value) {
|
|
408
|
-
return value !== null && typeof value === "object" ? value : null;
|
|
409
|
-
}
|
|
410
|
-
|
|
411
40
|
// src/domains/safety/path-policy.ts
|
|
412
41
|
init_esm_shims();
|
|
413
42
|
import { homedir } from "node:os";
|
|
@@ -1141,15 +770,13 @@ function evaluateWriteRoots(roots, writeRootCwd, call) {
|
|
|
1141
770
|
const target = writeRootTargetPath(call);
|
|
1142
771
|
if (target === null) return null;
|
|
1143
772
|
const resolved = path3.resolve(writeRootCwd, target);
|
|
1144
|
-
|
|
1145
|
-
if (resolved === root || resolved.startsWith(`${root}${path3.sep}`)) return null;
|
|
1146
|
-
}
|
|
773
|
+
if (pathBoundaryCovers(roots, resolved)) return null;
|
|
1147
774
|
return `write target '${target}' resolves to '${resolved}', which is outside the permitted write roots for this run: ${roots.join(", ")}`;
|
|
1148
775
|
}
|
|
1149
776
|
function createSafetyPolicyEngine(options = {}) {
|
|
1150
777
|
const cwd = canonicalizeExistingPath(path3.resolve(options.cwd ?? process.cwd()));
|
|
1151
778
|
const writeRootCwd = path3.resolve(options.cwd ?? process.cwd());
|
|
1152
|
-
const writeRoots = (options.writeRoots ?? []).map((root) =>
|
|
779
|
+
const writeRoots = (options.writeRoots ?? []).map((root) => resolvePathBoundary(writeRootCwd, root));
|
|
1153
780
|
const packs = options.rulePacks ?? getCachedDefaultRulePacks();
|
|
1154
781
|
const projectPolicy = options.projectPolicy ?? loadProjectSafetyPolicy(cwd);
|
|
1155
782
|
const projectPolicyRoot = projectPolicy.path === null ? cwd : path3.dirname(path3.dirname(canonicalizeExistingPath(projectPolicy.path)));
|
|
@@ -1707,11 +1334,8 @@ function packPayload(rules) {
|
|
|
1707
1334
|
}
|
|
1708
1335
|
|
|
1709
1336
|
export {
|
|
1710
|
-
DEFAULT_RECENT_ENTRY_LIMIT,
|
|
1711
|
-
assessFinishContract,
|
|
1712
|
-
typedValidationSummary,
|
|
1713
1337
|
formatModelRejection,
|
|
1714
1338
|
WRITE_ROOT_REFUSED_TOOLS,
|
|
1715
1339
|
createSafetyPolicyEngine
|
|
1716
1340
|
};
|
|
1717
|
-
//# sourceMappingURL=chunk-
|
|
1341
|
+
//# sourceMappingURL=chunk-N3PBVRTZ.js.map
|
|
@@ -2,28 +2,31 @@ import { createRequire as __clioCreateRequire } from "node:module"; const requir
|
|
|
2
2
|
import {
|
|
3
3
|
canonicalJson,
|
|
4
4
|
sha256
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-MLOK6ZOS.js";
|
|
6
6
|
import {
|
|
7
7
|
addResponseModelIdObservationCount,
|
|
8
8
|
emptyResponseModelIdObservationCounts,
|
|
9
9
|
responseModelIdObservationFromRecord
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-LXPJXFM5.js";
|
|
11
|
+
import {
|
|
12
|
+
uncachedPrefillTokens
|
|
13
|
+
} from "./chunk-3DPEIQKN.js";
|
|
11
14
|
import {
|
|
12
15
|
ToolNames
|
|
13
16
|
} from "./chunk-CGKSTWHD.js";
|
|
14
17
|
import {
|
|
15
18
|
ceilChars,
|
|
16
19
|
extractReasoningTokens
|
|
17
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-AEYBF3TB.js";
|
|
18
21
|
import {
|
|
19
22
|
settingsPath
|
|
20
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-PNY46YEY.js";
|
|
21
24
|
import {
|
|
22
25
|
expandConfigPath
|
|
23
26
|
} from "./chunk-SST6Z5JA.js";
|
|
24
27
|
import {
|
|
25
28
|
isEngineContextOverflow
|
|
26
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-UOSL25KY.js";
|
|
27
30
|
import {
|
|
28
31
|
init_esm_shims
|
|
29
32
|
} from "./chunk-3R73A4XB.js";
|
|
@@ -371,10 +374,17 @@ function sumRunUsage(messages) {
|
|
|
371
374
|
}
|
|
372
375
|
return summary;
|
|
373
376
|
}
|
|
374
|
-
function
|
|
377
|
+
function classifyCacheUsage(input, cacheRead) {
|
|
375
378
|
if (cacheRead > 0) return input >= 2e3 ? "partial" : "hot";
|
|
376
379
|
return input >= 2e3 ? "cold" : "small";
|
|
377
380
|
}
|
|
381
|
+
function backendCacheVerdict(input, cacheRead, backend) {
|
|
382
|
+
if (cacheRead === 0 && backend?.cachedTokens !== null && backend?.cachedTokens !== void 0) {
|
|
383
|
+
const backendInput = uncachedPrefillTokens(backend);
|
|
384
|
+
if (backendInput !== null) return classifyCacheUsage(backendInput, backend.cachedTokens);
|
|
385
|
+
}
|
|
386
|
+
return classifyCacheUsage(input, cacheRead);
|
|
387
|
+
}
|
|
378
388
|
function assistantSessionPayload(message, failure) {
|
|
379
389
|
const text = extractText(message).trim();
|
|
380
390
|
const thinking = extractThinking(message).trim();
|
|
@@ -1094,4 +1104,4 @@ export {
|
|
|
1094
1104
|
readFileArgsAsync,
|
|
1095
1105
|
expandInlineFileReferencesAsync
|
|
1096
1106
|
};
|
|
1097
|
-
//# sourceMappingURL=chunk-
|
|
1107
|
+
//# sourceMappingURL=chunk-N5XKWMDW.js.map
|