@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
|
@@ -827,9 +827,14 @@ function resolveRowSize(value, termHeight) {
|
|
|
827
827
|
|
|
828
828
|
// src/interactive/permission-hint.ts
|
|
829
829
|
init_esm_shims();
|
|
830
|
-
|
|
830
|
+
var MUTATION_PREVIEW_KEY = "v";
|
|
831
|
+
function permissionHintEntries(composerHasDraft = false, inspection = "none") {
|
|
831
832
|
return [
|
|
832
833
|
composerHasDraft ? { key: "Backspace", verb: "clear the draft to allow", short: "clear draft", critical: true } : { key: "Enter", verb: "allow once", short: "allow", critical: true },
|
|
834
|
+
...inspection === "none" ? [] : inspection === "open" ? [
|
|
835
|
+
{ key: "\u2191\u2193", verb: "scroll", critical: false },
|
|
836
|
+
{ key: MUTATION_PREVIEW_KEY, verb: "hide mutation", short: "hide", critical: false }
|
|
837
|
+
] : [{ key: MUTATION_PREVIEW_KEY, verb: "inspect mutation", short: "inspect", critical: false }],
|
|
833
838
|
{ key: "s", verb: "stop turn", short: "stop", critical: true },
|
|
834
839
|
// With a draft, deny and stop are the only immediate answers, so Esc
|
|
835
840
|
// outranks the narrowing that would otherwise drop it first.
|
|
@@ -841,6 +846,8 @@ function permissionHintEntries(composerHasDraft = false) {
|
|
|
841
846
|
var REVERSE_VIDEO_BLANK = `${String.fromCharCode(27)}[7m ${String.fromCharCode(27)}[0m`;
|
|
842
847
|
var EMPTY_PROMPT = "Ask Clio\u2026 / for commands";
|
|
843
848
|
var CONFIRM_PROMPT = "A parked call is waiting for your decision";
|
|
849
|
+
var PREPARING_PROMPT = "Clio has your prompt and is preparing the turn";
|
|
850
|
+
var COMPACTING_PROMPT = "Clio has your prompt and is compacting the context first";
|
|
844
851
|
var MIN_HINT_WIDTH = 60;
|
|
845
852
|
function hasScrollIndicator(line) {
|
|
846
853
|
const stripped = stripTerminalSequences(line);
|
|
@@ -870,7 +877,12 @@ function styledRailLabel(theme, chrome) {
|
|
|
870
877
|
}
|
|
871
878
|
function composerMode(chrome, text) {
|
|
872
879
|
if (chrome.isAwaitingApproval?.() ?? false) return "CONFIRM";
|
|
873
|
-
if (!(chrome.isStreaming?.() ?? false))
|
|
880
|
+
if (!(chrome.isStreaming?.() ?? false)) {
|
|
881
|
+
const preparation = chrome.getTurnPreparation?.() ?? "idle";
|
|
882
|
+
if (preparation === "compacting") return "COMPACTING";
|
|
883
|
+
if (preparation === "preparing") return "PREPARING";
|
|
884
|
+
return "MESSAGE";
|
|
885
|
+
}
|
|
874
886
|
const willSteer = chrome.willEnterSteer?.(text) ?? text.trim().length > 0;
|
|
875
887
|
return willSteer ? "STEER" : "FOLLOW-UP";
|
|
876
888
|
}
|
|
@@ -880,14 +892,20 @@ function lowerRailHint(theme, chrome) {
|
|
|
880
892
|
`${chrome.getSubmitKeyLabel?.() ?? "Enter"} send \xB7 ${chrome.getNewlineKeyLabel?.() ?? "Shift+Enter"} newline`
|
|
881
893
|
);
|
|
882
894
|
}
|
|
883
|
-
function confirmRailHint(theme, width, hasDraft) {
|
|
884
|
-
return theme.fg("warning", fitHintEntries(permissionHintEntries(hasDraft), Math.max(1, width - 3)));
|
|
895
|
+
function confirmRailHint(theme, width, hasDraft, inspection) {
|
|
896
|
+
return theme.fg("warning", fitHintEntries(permissionHintEntries(hasDraft, inspection), Math.max(1, width - 3)));
|
|
885
897
|
}
|
|
886
898
|
function modeToken(mode) {
|
|
887
|
-
if (mode === "STEER") return "action";
|
|
899
|
+
if (mode === "STEER" || mode === "PREPARING" || mode === "COMPACTING") return "action";
|
|
888
900
|
if (mode === "CONFIRM") return "warning";
|
|
889
901
|
return "accentDeep";
|
|
890
902
|
}
|
|
903
|
+
function emptyPromptFor(mode) {
|
|
904
|
+
if (mode === "CONFIRM") return CONFIRM_PROMPT;
|
|
905
|
+
if (mode === "PREPARING") return PREPARING_PROMPT;
|
|
906
|
+
if (mode === "COMPACTING") return COMPACTING_PROMPT;
|
|
907
|
+
return EMPTY_PROMPT;
|
|
908
|
+
}
|
|
891
909
|
function renderEmptyPrompt(line, width, theme, text = EMPTY_PROMPT) {
|
|
892
910
|
const cursorAt = line.indexOf(REVERSE_VIDEO_BLANK);
|
|
893
911
|
if (cursorAt < 0) return line;
|
|
@@ -931,12 +949,12 @@ var ClioEditor = class extends Editor {
|
|
|
931
949
|
});
|
|
932
950
|
}
|
|
933
951
|
if (text.length === 0 && lines[1]) {
|
|
934
|
-
lines[1] = renderEmptyPrompt(lines[1], safeWidth, theme, mode
|
|
952
|
+
lines[1] = renderEmptyPrompt(lines[1], safeWidth, theme, emptyPromptFor(mode));
|
|
935
953
|
}
|
|
936
954
|
const bottomRail = findBottomRail(lines, safeWidth);
|
|
937
955
|
if (bottomRail >= 0 && mode === "CONFIRM") {
|
|
938
956
|
lines[bottomRail] = rule(theme, safeWidth, {
|
|
939
|
-
right: confirmRailHint(theme, safeWidth, text.length > 0),
|
|
957
|
+
right: confirmRailHint(theme, safeWidth, text.length > 0, this.chrome.getPermissionInspection?.() ?? "none"),
|
|
940
958
|
fillToken: "frameStrong",
|
|
941
959
|
rightRaw: true,
|
|
942
960
|
rightTail: theme.style("frameStrong", "\u2500", { bold: true })
|
|
@@ -977,10 +995,49 @@ init_esm_shims();
|
|
|
977
995
|
|
|
978
996
|
// src/interactive/render-trace.ts
|
|
979
997
|
init_esm_shims();
|
|
980
|
-
import { mkdirSync, writeFileSync } from "node:fs";
|
|
998
|
+
import { mkdirSync, readdirSync, rmSync, writeFileSync } from "node:fs";
|
|
981
999
|
import { appendFile } from "node:fs/promises";
|
|
982
|
-
import { dirname } from "node:path";
|
|
1000
|
+
import { dirname, join } from "node:path";
|
|
983
1001
|
var RENDER_TRACE_VERSION = 2;
|
|
1002
|
+
var INPUT_WEDGE_RING_CAPACITY = 256;
|
|
1003
|
+
var INPUT_WEDGE_DUMP_DIRNAME = "input-wedge";
|
|
1004
|
+
var INPUT_WEDGE_DUMP_RETAINED = 5;
|
|
1005
|
+
function createRing(capacity) {
|
|
1006
|
+
const slots = [];
|
|
1007
|
+
let next = 0;
|
|
1008
|
+
return {
|
|
1009
|
+
push(value) {
|
|
1010
|
+
if (slots.length < capacity) slots.push(value);
|
|
1011
|
+
else slots[next] = value;
|
|
1012
|
+
next = (next + 1) % capacity;
|
|
1013
|
+
},
|
|
1014
|
+
toArray() {
|
|
1015
|
+
if (slots.length < capacity) return [...slots];
|
|
1016
|
+
return [...slots.slice(next), ...slots.slice(0, next)];
|
|
1017
|
+
}
|
|
1018
|
+
};
|
|
1019
|
+
}
|
|
1020
|
+
function classifyInputWedge(inputIngress, frames) {
|
|
1021
|
+
const newest = [...inputIngress].reverse().find((record) => record.visualExpected) ?? inputIngress.at(-1);
|
|
1022
|
+
if (newest === void 0) return "no-input-recorded";
|
|
1023
|
+
return frames.some((frame2) => frame2.inputHighWater >= newest.inputSeq) ? "input-committed" : "input-not-committed";
|
|
1024
|
+
}
|
|
1025
|
+
function writeInputWedgeDump(stateDir, snapshot) {
|
|
1026
|
+
const directory = join(stateDir, INPUT_WEDGE_DUMP_DIRNAME);
|
|
1027
|
+
mkdirSync(directory, { recursive: true });
|
|
1028
|
+
const stamp = new Date(snapshot.atEpochMs).toISOString().replace(/[:.]/gu, "-");
|
|
1029
|
+
const path = join(directory, `${stamp}-${snapshot.pid}.json`);
|
|
1030
|
+
writeFileSync(path, `${JSON.stringify(snapshot, null, 2)}
|
|
1031
|
+
`, "utf8");
|
|
1032
|
+
try {
|
|
1033
|
+
const existing = readdirSync(directory).filter((name) => name.endsWith(".json")).sort();
|
|
1034
|
+
for (const name of existing.slice(0, Math.max(0, existing.length - INPUT_WEDGE_DUMP_RETAINED))) {
|
|
1035
|
+
rmSync(join(directory, name), { force: true });
|
|
1036
|
+
}
|
|
1037
|
+
} catch {
|
|
1038
|
+
}
|
|
1039
|
+
return path;
|
|
1040
|
+
}
|
|
984
1041
|
function createAsyncTraceWriter(path, options = {}) {
|
|
985
1042
|
const maxRecords = options.maxRecords ?? 4096;
|
|
986
1043
|
const batchRecords = options.batchRecords ?? 128;
|
|
@@ -1073,11 +1130,16 @@ function renderTracePath(env = process.env) {
|
|
|
1073
1130
|
return raw && raw.length > 0 ? raw : null;
|
|
1074
1131
|
}
|
|
1075
1132
|
function createRenderTrace(path, now = () => performance.now(), writerOptions = {}) {
|
|
1076
|
-
|
|
1077
|
-
|
|
1133
|
+
if (path !== null) {
|
|
1134
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
1135
|
+
writeFileSync(path, "", "utf8");
|
|
1136
|
+
}
|
|
1078
1137
|
const openedAt = now();
|
|
1138
|
+
const openedAtEpochMs = Date.now();
|
|
1079
1139
|
const at = () => rounded(now() - openedAt);
|
|
1080
|
-
const writer = createAsyncTraceWriter(path, { ...writerOptions, recordTime: at });
|
|
1140
|
+
const writer = path === null ? null : createAsyncTraceWriter(path, { ...writerOptions, recordTime: at });
|
|
1141
|
+
const inputRing = createRing(INPUT_WEDGE_RING_CAPACITY);
|
|
1142
|
+
const frameRing = createRing(INPUT_WEDGE_RING_CAPACITY);
|
|
1081
1143
|
let frameSeq = 0;
|
|
1082
1144
|
let writeSeq = 0;
|
|
1083
1145
|
let eventSeq = 0;
|
|
@@ -1093,7 +1155,7 @@ function createRenderTrace(path, now = () => performance.now(), writerOptions =
|
|
|
1093
1155
|
let firstCommitDelivered = false;
|
|
1094
1156
|
const ranges = /* @__PURE__ */ new Map();
|
|
1095
1157
|
const pendingDrains = /* @__PURE__ */ new Map();
|
|
1096
|
-
writer
|
|
1158
|
+
writer?.enqueue({ type: "trace_start", version: RENDER_TRACE_VERSION, at: 0 });
|
|
1097
1159
|
const trace = {
|
|
1098
1160
|
recordPanelRender(metrics) {
|
|
1099
1161
|
pendingPanel = metrics;
|
|
@@ -1104,12 +1166,13 @@ function createRenderTrace(path, now = () => performance.now(), writerOptions =
|
|
|
1104
1166
|
},
|
|
1105
1167
|
recordVisibleEvent(fields) {
|
|
1106
1168
|
eventSeq += 1;
|
|
1169
|
+
if (writer === null) return eventSeq;
|
|
1107
1170
|
const key = `${generation}:${fields.kind}:${fields.contentIndex}`;
|
|
1108
1171
|
const previous = ranges.get(key) ?? { codeUnits: 0, graphemes: 0 };
|
|
1109
1172
|
const graphemes = graphemeCount(fields.delta);
|
|
1110
1173
|
const next = { codeUnits: previous.codeUnits + fields.delta.length, graphemes: previous.graphemes + graphemes };
|
|
1111
1174
|
ranges.set(key, next);
|
|
1112
|
-
writer
|
|
1175
|
+
writer?.enqueue({
|
|
1113
1176
|
type: "event_ingress",
|
|
1114
1177
|
version: RENDER_TRACE_VERSION,
|
|
1115
1178
|
eventSeq,
|
|
@@ -1127,7 +1190,7 @@ function createRenderTrace(path, now = () => performance.now(), writerOptions =
|
|
|
1127
1190
|
},
|
|
1128
1191
|
recordQueue(sequence, action) {
|
|
1129
1192
|
queueDepth = Math.max(0, queueDepth + (action === "admit" ? 1 : -1));
|
|
1130
|
-
writer
|
|
1193
|
+
writer?.enqueue({
|
|
1131
1194
|
type: "queue",
|
|
1132
1195
|
version: RENDER_TRACE_VERSION,
|
|
1133
1196
|
eventSeq: sequence,
|
|
@@ -1138,7 +1201,7 @@ function createRenderTrace(path, now = () => performance.now(), writerOptions =
|
|
|
1138
1201
|
},
|
|
1139
1202
|
recordPanelApplied(sequence) {
|
|
1140
1203
|
panelHighWater = Math.max(panelHighWater, sequence);
|
|
1141
|
-
writer
|
|
1204
|
+
writer?.enqueue({
|
|
1142
1205
|
type: "panel",
|
|
1143
1206
|
version: RENDER_TRACE_VERSION,
|
|
1144
1207
|
eventSeq: sequence,
|
|
@@ -1149,7 +1212,7 @@ function createRenderTrace(path, now = () => performance.now(), writerOptions =
|
|
|
1149
1212
|
recordInputIngress(action, bytes, visualExpected = action !== "no-visual-change") {
|
|
1150
1213
|
inputSeq += 1;
|
|
1151
1214
|
if (visualExpected) inputHighWater = inputSeq;
|
|
1152
|
-
|
|
1215
|
+
const record = {
|
|
1153
1216
|
type: "input_ingress",
|
|
1154
1217
|
version: RENDER_TRACE_VERSION,
|
|
1155
1218
|
inputSeq,
|
|
@@ -1157,7 +1220,9 @@ function createRenderTrace(path, now = () => performance.now(), writerOptions =
|
|
|
1157
1220
|
at: at(),
|
|
1158
1221
|
bytes,
|
|
1159
1222
|
visualExpected
|
|
1160
|
-
}
|
|
1223
|
+
};
|
|
1224
|
+
inputRing.push(record);
|
|
1225
|
+
writer?.enqueue(record);
|
|
1161
1226
|
return inputSeq;
|
|
1162
1227
|
},
|
|
1163
1228
|
beginFrame(fields) {
|
|
@@ -1205,8 +1270,9 @@ function createRenderTrace(path, now = () => performance.now(), writerOptions =
|
|
|
1205
1270
|
},
|
|
1206
1271
|
commits: frame2.commits
|
|
1207
1272
|
};
|
|
1208
|
-
writer
|
|
1273
|
+
writer?.enqueue(record);
|
|
1209
1274
|
if (frame2.commits.length > 0) {
|
|
1275
|
+
frameRing.push(record);
|
|
1210
1276
|
lastCommitAt = frame2.commits.at(-1)?.at ?? endAt;
|
|
1211
1277
|
if (!firstCommitDelivered) {
|
|
1212
1278
|
firstCommitDelivered = true;
|
|
@@ -1241,6 +1307,7 @@ function createRenderTrace(path, now = () => performance.now(), writerOptions =
|
|
|
1241
1307
|
backpressured: !fields.returned
|
|
1242
1308
|
};
|
|
1243
1309
|
currentFrame?.commits.push(commit);
|
|
1310
|
+
if (writer === null) return writeSeq;
|
|
1244
1311
|
writer.enqueue({ type: "terminal_write", version: RENDER_TRACE_VERSION, frameId, ...commit });
|
|
1245
1312
|
if (!fields.returned) pendingDrains.set(writeSeq, { frameId, at: commit.at });
|
|
1246
1313
|
return writeSeq;
|
|
@@ -1250,7 +1317,7 @@ function createRenderTrace(path, now = () => performance.now(), writerOptions =
|
|
|
1250
1317
|
if (!pending) return;
|
|
1251
1318
|
pendingDrains.delete(writeId);
|
|
1252
1319
|
const drainAt = at();
|
|
1253
|
-
writer
|
|
1320
|
+
writer?.enqueue({
|
|
1254
1321
|
type: "terminal_drain",
|
|
1255
1322
|
version: RENDER_TRACE_VERSION,
|
|
1256
1323
|
writeId,
|
|
@@ -1263,7 +1330,28 @@ function createRenderTrace(path, now = () => performance.now(), writerOptions =
|
|
|
1263
1330
|
onFirstFrameCommit(listener) {
|
|
1264
1331
|
firstCommitListener = listener;
|
|
1265
1332
|
},
|
|
1266
|
-
|
|
1333
|
+
snapshotInputWedge() {
|
|
1334
|
+
const inputIngress = inputRing.toArray();
|
|
1335
|
+
const frames = frameRing.toArray();
|
|
1336
|
+
const nowAt = at();
|
|
1337
|
+
const lastIngressAt = inputIngress.at(-1)?.at;
|
|
1338
|
+
const lastFrame = frames.at(-1);
|
|
1339
|
+
const lastFrameCommitAt = lastFrame?.commits.at(-1)?.at ?? lastFrame?.endAt;
|
|
1340
|
+
return {
|
|
1341
|
+
version: RENDER_TRACE_VERSION,
|
|
1342
|
+
capacity: INPUT_WEDGE_RING_CAPACITY,
|
|
1343
|
+
pid: process.pid,
|
|
1344
|
+
openedAtEpochMs,
|
|
1345
|
+
atEpochMs: Date.now(),
|
|
1346
|
+
at: nowAt,
|
|
1347
|
+
classification: classifyInputWedge(inputIngress, frames),
|
|
1348
|
+
msSinceLastInputIngress: lastIngressAt === void 0 ? null : rounded(nowAt - lastIngressAt),
|
|
1349
|
+
msSinceLastCommittedFrame: lastFrameCommitAt === void 0 ? null : rounded(nowAt - lastFrameCommitAt),
|
|
1350
|
+
inputIngress,
|
|
1351
|
+
frames
|
|
1352
|
+
};
|
|
1353
|
+
},
|
|
1354
|
+
close: () => writer?.close() ?? Promise.resolve()
|
|
1267
1355
|
};
|
|
1268
1356
|
return trace;
|
|
1269
1357
|
}
|
|
@@ -1490,20 +1578,18 @@ function createProcessInteractiveShell(options = {}) {
|
|
|
1490
1578
|
let restoreRoot = null;
|
|
1491
1579
|
let backpressure = null;
|
|
1492
1580
|
let observedBackpressure = false;
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
}
|
|
1506
|
-
} else activeRenderTrace = null;
|
|
1581
|
+
let candidate = null;
|
|
1582
|
+
try {
|
|
1583
|
+
candidate = createRenderTrace(tracePath);
|
|
1584
|
+
restoreStdout = traceProcessStdout(candidate);
|
|
1585
|
+
activeRenderTrace = candidate;
|
|
1586
|
+
} catch {
|
|
1587
|
+
restoreStdout?.();
|
|
1588
|
+
restoreStdout = null;
|
|
1589
|
+
void candidate?.close().catch(() => {
|
|
1590
|
+
});
|
|
1591
|
+
activeRenderTrace = null;
|
|
1592
|
+
}
|
|
1507
1593
|
const trace = activeRenderTrace;
|
|
1508
1594
|
if (trace && options.onFirstFrameCommit) trace.onFirstFrameCommit(options.onFirstFrameCommit);
|
|
1509
1595
|
let firstFrameDelivered = false;
|
|
@@ -2187,8 +2273,10 @@ export {
|
|
|
2187
2273
|
formatRuntimeResolutionDiagnostic,
|
|
2188
2274
|
runtimeResolutionDiagnosticLine,
|
|
2189
2275
|
showClioOverlayFrame,
|
|
2276
|
+
MUTATION_PREVIEW_KEY,
|
|
2190
2277
|
permissionHintEntries,
|
|
2191
2278
|
ClioEditor,
|
|
2279
|
+
writeInputWedgeDump,
|
|
2192
2280
|
getActiveRenderTrace,
|
|
2193
2281
|
createProcessInteractiveShell,
|
|
2194
2282
|
validateKeybindings,
|
|
@@ -2198,4 +2286,4 @@ export {
|
|
|
2198
2286
|
formatPlatformKeybindingNotice,
|
|
2199
2287
|
createKeybindingManager
|
|
2200
2288
|
};
|
|
2201
|
-
//# sourceMappingURL=chunk-
|
|
2289
|
+
//# sourceMappingURL=chunk-NNNWO6F2.js.map
|
|
@@ -4,14 +4,14 @@ import {
|
|
|
4
4
|
listChecks,
|
|
5
5
|
runProjectCheck,
|
|
6
6
|
runScriptCheck
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-P3JGPQFL.js";
|
|
8
8
|
import {
|
|
9
9
|
BROWSER_MODES,
|
|
10
10
|
maxOutputArg,
|
|
11
11
|
prepareVerifyArguments,
|
|
12
12
|
timeoutArg,
|
|
13
13
|
verifyToolSurface
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-CA42X6KT.js";
|
|
15
15
|
import {
|
|
16
16
|
escapeRegExp
|
|
17
17
|
} from "./chunk-VG7TBQIY.js";
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
import {
|
|
29
29
|
combineSafeOutput,
|
|
30
30
|
runCommandVector
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-B5CSFE7B.js";
|
|
32
32
|
import {
|
|
33
33
|
init_esm_shims
|
|
34
34
|
} from "./chunk-3R73A4XB.js";
|
|
@@ -633,4 +633,4 @@ var verifyTool = {
|
|
|
633
633
|
export {
|
|
634
634
|
verifyTool
|
|
635
635
|
};
|
|
636
|
-
//# sourceMappingURL=chunk-
|
|
636
|
+
//# sourceMappingURL=chunk-NQ6UCCOD.js.map
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
init_esm_shims
|
|
4
|
+
} from "./chunk-3R73A4XB.js";
|
|
5
|
+
|
|
6
|
+
// src/domains/providers/registry.ts
|
|
7
|
+
init_esm_shims();
|
|
8
|
+
import { readdirSync, statSync } from "node:fs";
|
|
9
|
+
import { join } from "node:path";
|
|
10
|
+
import { pathToFileURL } from "node:url";
|
|
11
|
+
var RUNTIME_KINDS = ["http", "sdk", "subprocess"];
|
|
12
|
+
var RUNTIME_AUTHS = ["api-key", "oauth", "aws-sdk", "vertex-adc", "claude-cli", "none"];
|
|
13
|
+
function createRuntimeRegistry() {
|
|
14
|
+
const byId = /* @__PURE__ */ new Map();
|
|
15
|
+
const canonical = /* @__PURE__ */ new Set();
|
|
16
|
+
const register = (desc) => {
|
|
17
|
+
const ids = [desc.id, ...desc.aliases ?? []];
|
|
18
|
+
const conflict = ids.find((id) => byId.has(id));
|
|
19
|
+
if (conflict) {
|
|
20
|
+
throw new Error(`runtime id '${conflict}' already registered`);
|
|
21
|
+
}
|
|
22
|
+
for (const id of ids) byId.set(id, desc);
|
|
23
|
+
canonical.add(desc.id);
|
|
24
|
+
};
|
|
25
|
+
const get = (id) => byId.get(id) ?? null;
|
|
26
|
+
const list = () => Array.from(canonical, (id) => byId.get(id)).filter((entry) => entry !== void 0);
|
|
27
|
+
const clear = () => {
|
|
28
|
+
byId.clear();
|
|
29
|
+
canonical.clear();
|
|
30
|
+
};
|
|
31
|
+
const loadFromDir = async (dir, beforeImport) => {
|
|
32
|
+
let entries;
|
|
33
|
+
try {
|
|
34
|
+
const stat = statSync(dir);
|
|
35
|
+
if (!stat.isDirectory()) return [];
|
|
36
|
+
entries = readdirSync(dir);
|
|
37
|
+
} catch {
|
|
38
|
+
return [];
|
|
39
|
+
}
|
|
40
|
+
const loaded = [];
|
|
41
|
+
for (const name of entries) {
|
|
42
|
+
if (!name.endsWith(".js")) continue;
|
|
43
|
+
const full = join(dir, name);
|
|
44
|
+
const desc = await importDescriptor(full, pathToFileURL(full).href, beforeImport);
|
|
45
|
+
if (desc === null) continue;
|
|
46
|
+
try {
|
|
47
|
+
register(desc);
|
|
48
|
+
loaded.push(desc.id);
|
|
49
|
+
} catch (err) {
|
|
50
|
+
process.stderr.write(`[providers] runtime plugin ${full} rejected: ${describeError(err)}
|
|
51
|
+
`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return loaded;
|
|
55
|
+
};
|
|
56
|
+
const loadFromPackage = async (packageName, beforeImport) => {
|
|
57
|
+
let mod;
|
|
58
|
+
try {
|
|
59
|
+
await beforeImport?.();
|
|
60
|
+
mod = await import(packageName);
|
|
61
|
+
} catch (err) {
|
|
62
|
+
process.stderr.write(`[providers] runtime package ${packageName} failed to import: ${describeError(err)}
|
|
63
|
+
`);
|
|
64
|
+
return [];
|
|
65
|
+
}
|
|
66
|
+
const exported = mod.clioRuntimes;
|
|
67
|
+
if (!Array.isArray(exported)) {
|
|
68
|
+
process.stderr.write(`[providers] runtime package ${packageName} has no 'clioRuntimes' array export
|
|
69
|
+
`);
|
|
70
|
+
return [];
|
|
71
|
+
}
|
|
72
|
+
const loaded = [];
|
|
73
|
+
for (const candidate of exported) {
|
|
74
|
+
const validation = validateRuntimeDescriptor(candidate);
|
|
75
|
+
if (!validation.ok) {
|
|
76
|
+
process.stderr.write(
|
|
77
|
+
`[providers] runtime package ${packageName} exported an invalid descriptor: ${validation.reason}
|
|
78
|
+
`
|
|
79
|
+
);
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
try {
|
|
83
|
+
register(validation.descriptor);
|
|
84
|
+
loaded.push(validation.descriptor.id);
|
|
85
|
+
} catch (err) {
|
|
86
|
+
process.stderr.write(`[providers] runtime package ${packageName} id conflict: ${describeError(err)}
|
|
87
|
+
`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return loaded;
|
|
91
|
+
};
|
|
92
|
+
return { register, get, list, clear, loadFromDir, loadFromPackage };
|
|
93
|
+
}
|
|
94
|
+
var singleton = null;
|
|
95
|
+
function getRuntimeRegistry() {
|
|
96
|
+
if (singleton === null) singleton = createRuntimeRegistry();
|
|
97
|
+
return singleton;
|
|
98
|
+
}
|
|
99
|
+
async function importDescriptor(file, href, beforeImport) {
|
|
100
|
+
let mod;
|
|
101
|
+
try {
|
|
102
|
+
await beforeImport?.();
|
|
103
|
+
mod = await import(href);
|
|
104
|
+
} catch (err) {
|
|
105
|
+
process.stderr.write(`[providers] runtime plugin ${file} failed to import: ${describeError(err)}
|
|
106
|
+
`);
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
const candidate = mod.default;
|
|
110
|
+
const validation = validateRuntimeDescriptor(candidate);
|
|
111
|
+
if (!validation.ok) {
|
|
112
|
+
process.stderr.write(
|
|
113
|
+
`[providers] runtime plugin ${file} has invalid default-export RuntimeDescriptor: ${validation.reason}
|
|
114
|
+
`
|
|
115
|
+
);
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
return validation.descriptor;
|
|
119
|
+
}
|
|
120
|
+
function validateRuntimeDescriptor(value) {
|
|
121
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
122
|
+
return { ok: false, reason: "descriptor must be an object" };
|
|
123
|
+
}
|
|
124
|
+
const v = value;
|
|
125
|
+
if (typeof v.id !== "string" || v.id.trim().length === 0) {
|
|
126
|
+
return { ok: false, reason: "id must be a non-empty string" };
|
|
127
|
+
}
|
|
128
|
+
if (v.aliases !== void 0 && (!Array.isArray(v.aliases) || v.aliases.some((alias) => typeof alias !== "string" || alias.trim().length === 0))) {
|
|
129
|
+
return { ok: false, reason: "aliases must be non-empty strings when present" };
|
|
130
|
+
}
|
|
131
|
+
if (typeof v.displayName !== "string" || v.displayName.trim().length === 0) {
|
|
132
|
+
return { ok: false, reason: "displayName must be a non-empty string" };
|
|
133
|
+
}
|
|
134
|
+
if (typeof v.kind !== "string" || !RUNTIME_KINDS.includes(v.kind)) {
|
|
135
|
+
return { ok: false, reason: `kind must be one of: ${RUNTIME_KINDS.join(", ")}` };
|
|
136
|
+
}
|
|
137
|
+
if (typeof v.apiFamily !== "string" || v.apiFamily.trim().length === 0) {
|
|
138
|
+
return { ok: false, reason: "apiFamily must be a non-empty string" };
|
|
139
|
+
}
|
|
140
|
+
if (typeof v.auth !== "string" || !RUNTIME_AUTHS.includes(v.auth)) {
|
|
141
|
+
return { ok: false, reason: `auth must be one of: ${RUNTIME_AUTHS.join(", ")}` };
|
|
142
|
+
}
|
|
143
|
+
if (typeof v.defaultCapabilities !== "object" || v.defaultCapabilities === null || Array.isArray(v.defaultCapabilities)) {
|
|
144
|
+
return { ok: false, reason: "defaultCapabilities must be an object" };
|
|
145
|
+
}
|
|
146
|
+
if (typeof v.synthesizeModel !== "function") {
|
|
147
|
+
return { ok: false, reason: "synthesizeModel must be a function" };
|
|
148
|
+
}
|
|
149
|
+
for (const field of ["probe", "probeModels", "complete", "infill", "embed", "rerank"]) {
|
|
150
|
+
if (v[field] !== void 0 && typeof v[field] !== "function") {
|
|
151
|
+
return { ok: false, reason: `${field} must be a function when present` };
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return { ok: true, descriptor: value };
|
|
155
|
+
}
|
|
156
|
+
function describeError(err) {
|
|
157
|
+
if (err instanceof Error) return err.message;
|
|
158
|
+
return String(err);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
export {
|
|
162
|
+
createRuntimeRegistry,
|
|
163
|
+
getRuntimeRegistry
|
|
164
|
+
};
|
|
165
|
+
//# sourceMappingURL=chunk-NUGM5KR6.js.map
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
receiptResponseModelIdObservationLabel
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-D73KXYPF.js";
|
|
5
5
|
import {
|
|
6
|
-
adaptRunReceiptTrustStatus
|
|
7
|
-
|
|
6
|
+
adaptRunReceiptTrustStatus,
|
|
7
|
+
formatTrustAxes,
|
|
8
|
+
formatTrustSummary
|
|
9
|
+
} from "./chunk-MLOK6ZOS.js";
|
|
8
10
|
import {
|
|
9
11
|
formatBudgetPolicy,
|
|
10
12
|
formatBudgetReasons,
|
|
11
13
|
formatBudgetRequest,
|
|
12
14
|
formatEffectiveBudget
|
|
13
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-4H6ULJ3H.js";
|
|
14
16
|
import {
|
|
15
17
|
mentionsWorkerToolCallCap
|
|
16
18
|
} from "./chunk-4ZG3XFUR.js";
|
|
@@ -73,9 +75,9 @@ function receiptActivityLabels(receipt, status) {
|
|
|
73
75
|
}
|
|
74
76
|
function receiptEvidenceLabels(receipt, verification, integrity) {
|
|
75
77
|
const status = adaptRunReceiptTrustStatus({ ...receipt, verification }, { integrity });
|
|
76
|
-
const canonical =
|
|
78
|
+
const canonical = canonicalTrustLabels(status);
|
|
77
79
|
if (!integrity.ok) {
|
|
78
|
-
return [canonical, `receipt_integrity=FAILED reason=${JSON.stringify(integrity.reason)}`];
|
|
80
|
+
return [...canonical, `receipt_integrity=FAILED reason=${JSON.stringify(integrity.reason)}`];
|
|
79
81
|
}
|
|
80
82
|
const briefing = receipt.briefing === void 0 ? "briefing=none" : `briefing=bytes:${receipt.briefing.bytes} sha256:${receipt.briefing.contentHash}`;
|
|
81
83
|
let projectContext = "project_context=absent";
|
|
@@ -91,7 +93,7 @@ function receiptEvidenceLabels(receipt, verification, integrity) {
|
|
|
91
93
|
`budget_reason=${JSON.stringify(formatBudgetReasons(receipt.budget))}`
|
|
92
94
|
];
|
|
93
95
|
return [
|
|
94
|
-
canonical,
|
|
96
|
+
...canonical,
|
|
95
97
|
`receipt_integrity=verified/v${receipt.integrity.version}/${receipt.integrity.algorithm}`,
|
|
96
98
|
`evidence_verification=${verification.state}/${verification.basis}`,
|
|
97
99
|
`host_verification=${receipt.hostVerification?.status ?? "not_requested"}`,
|
|
@@ -103,16 +105,8 @@ function receiptEvidenceLabels(receipt, verification, integrity) {
|
|
|
103
105
|
projectContext
|
|
104
106
|
];
|
|
105
107
|
}
|
|
106
|
-
function
|
|
107
|
-
return [
|
|
108
|
-
`trust_status=v${status.version}`,
|
|
109
|
-
`artifactIntegrity:${status.artifactIntegrity.state}`,
|
|
110
|
-
`validationGrounding:${status.validationGrounding.state}`,
|
|
111
|
-
`independentReview:${status.independentReview.state}`,
|
|
112
|
-
`contextProvenance:${status.contextProvenance.state}`,
|
|
113
|
-
`autonomyEnforcement:${status.autonomyEnforcement.state}`,
|
|
114
|
-
`completionEvidence:${status.completionEvidence.state}`
|
|
115
|
-
].join(" ");
|
|
108
|
+
function canonicalTrustLabels(status) {
|
|
109
|
+
return [`trust=${JSON.stringify(formatTrustSummary(status))}`, formatTrustAxes(status)];
|
|
116
110
|
}
|
|
117
111
|
function workerTextLabel(status) {
|
|
118
112
|
switch (status.validationGrounding.state) {
|
|
@@ -122,6 +116,14 @@ function workerTextLabel(status) {
|
|
|
122
116
|
return "reconnaissance output (advisory leads, not validation evidence):";
|
|
123
117
|
case "unknown":
|
|
124
118
|
return "worker claims (validation not observable at this layer):";
|
|
119
|
+
// The three remaining states were one label. The evidence bundle tells
|
|
120
|
+
// a failed check, an inferred claim, and no validation at all apart, so
|
|
121
|
+
// the terminal must too or it hands the operator a coarser verdict than
|
|
122
|
+
// the report for the same run.
|
|
123
|
+
case "failed":
|
|
124
|
+
return "worker claims (validation failed; a check ran and did not pass):";
|
|
125
|
+
case "ungrounded":
|
|
126
|
+
return "worker claims (inferred; validation claimed, none observed):";
|
|
125
127
|
default:
|
|
126
128
|
return "worker claims (unverified prose):";
|
|
127
129
|
}
|
|
@@ -171,4 +173,4 @@ export {
|
|
|
171
173
|
workerTextLabel,
|
|
172
174
|
workerTextNonEvidenceNotices
|
|
173
175
|
};
|
|
174
|
-
//# sourceMappingURL=chunk-
|
|
176
|
+
//# sourceMappingURL=chunk-NZU6YDNV.js.map
|