@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
|
@@ -150,10 +150,13 @@ function readOutOfTurnUsageRows(stateDir) {
|
|
|
150
150
|
function asOutOfTurnUsageRow(value) {
|
|
151
151
|
if (!isRecord(value)) return null;
|
|
152
152
|
const label = value.label;
|
|
153
|
-
if (label !== "side-question" && label !== "handoff"
|
|
153
|
+
if (label !== "side-question" && label !== "handoff" && label !== "prewarm" && label !== "background-memory")
|
|
154
|
+
return null;
|
|
154
155
|
if (typeof value.timestamp !== "string" || value.timestamp.length === 0) return null;
|
|
155
156
|
if (!isRecord(value.usage)) return null;
|
|
156
157
|
const usage = value.usage;
|
|
158
|
+
const timing = asTiming(value.timing);
|
|
159
|
+
const promptCache = asPromptCache(value.promptCache);
|
|
157
160
|
return {
|
|
158
161
|
label,
|
|
159
162
|
sessionId: typeof value.sessionId === "string" ? value.sessionId : null,
|
|
@@ -170,7 +173,25 @@ function asOutOfTurnUsageRow(value) {
|
|
|
170
173
|
totalTokens: numberOr0(usage.totalTokens),
|
|
171
174
|
costUsd: numberOr0(usage.costUsd),
|
|
172
175
|
costProvenance: asCostProvenance(usage.costProvenance)
|
|
173
|
-
}
|
|
176
|
+
},
|
|
177
|
+
...timing === null ? {} : { timing },
|
|
178
|
+
...promptCache === null ? {} : { promptCache }
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
function asTiming(value) {
|
|
182
|
+
if (!isRecord(value)) return null;
|
|
183
|
+
const durationMs = numberOr0(value.durationMs);
|
|
184
|
+
return durationMs === 0 ? null : { durationMs };
|
|
185
|
+
}
|
|
186
|
+
function asPromptCache(value) {
|
|
187
|
+
if (!isRecord(value)) return null;
|
|
188
|
+
if (typeof value.source !== "string" || value.source.length === 0) return null;
|
|
189
|
+
return {
|
|
190
|
+
promptTokens: numberOr0(value.promptTokens),
|
|
191
|
+
cachedTokens: typeof value.cachedTokens === "number" ? value.cachedTokens : null,
|
|
192
|
+
uncachedPrefillTokens: typeof value.uncachedPrefillTokens === "number" ? value.uncachedPrefillTokens : null,
|
|
193
|
+
promptMs: numberOr0(value.promptMs),
|
|
194
|
+
source: value.source
|
|
174
195
|
};
|
|
175
196
|
}
|
|
176
197
|
function asCostProvenance(value) {
|
|
@@ -192,4 +213,4 @@ export {
|
|
|
192
213
|
appendOutOfTurnUsageRow,
|
|
193
214
|
readOutOfTurnUsageRows
|
|
194
215
|
};
|
|
195
|
-
//# sourceMappingURL=chunk-
|
|
216
|
+
//# sourceMappingURL=chunk-FWDFM5ZU.js.map
|
|
@@ -7,17 +7,17 @@ import {
|
|
|
7
7
|
TASK_MEMORY_POLICY_DEFAULT_TIMEOUT_MS,
|
|
8
8
|
runTaskMemoryPolicy,
|
|
9
9
|
taskMemoryBankDelta
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-O6I4CIEU.js";
|
|
11
11
|
import {
|
|
12
12
|
isTerminalRunEnvelope
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-4H6ULJ3H.js";
|
|
14
14
|
import {
|
|
15
15
|
taskBoardCounts
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-2JDWVJND.js";
|
|
17
17
|
import {
|
|
18
18
|
SKILL_SUGGESTION_ANCHOR,
|
|
19
19
|
SKILL_SUGGESTION_PREFIX
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-RAPCMZL4.js";
|
|
21
21
|
import {
|
|
22
22
|
legacyToolResultDigest,
|
|
23
23
|
sanitizeToolResultDigest
|
|
@@ -25,13 +25,19 @@ import {
|
|
|
25
25
|
import {
|
|
26
26
|
ToolNames
|
|
27
27
|
} from "./chunk-CGKSTWHD.js";
|
|
28
|
+
import {
|
|
29
|
+
registerForegroundStream
|
|
30
|
+
} from "./chunk-MIX5N5AC.js";
|
|
28
31
|
import {
|
|
29
32
|
ceilChars
|
|
30
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-AEYBF3TB.js";
|
|
31
34
|
import {
|
|
32
35
|
reportCommitAttributionDiagnostic,
|
|
33
36
|
withManagedGitCommitAttributionEnvironment
|
|
34
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-B5CSFE7B.js";
|
|
38
|
+
import {
|
|
39
|
+
BusChannels
|
|
40
|
+
} from "./chunk-RKRLDWD3.js";
|
|
35
41
|
import {
|
|
36
42
|
require_dist
|
|
37
43
|
} from "./chunk-APJ265NV.js";
|
|
@@ -1559,6 +1565,7 @@ function createMemoryInterventionRegistration(deps) {
|
|
|
1559
1565
|
reminder: null,
|
|
1560
1566
|
inputTokens: 0,
|
|
1561
1567
|
outputTokens: 0,
|
|
1568
|
+
usage: null,
|
|
1562
1569
|
effects: NO_EFFECTS
|
|
1563
1570
|
});
|
|
1564
1571
|
const live = settings();
|
|
@@ -1572,10 +1579,16 @@ function createMemoryInterventionRegistration(deps) {
|
|
|
1572
1579
|
let tier = "rules";
|
|
1573
1580
|
promptedStepTier = tier;
|
|
1574
1581
|
let promptedResult;
|
|
1582
|
+
let telemetryDecision = null;
|
|
1575
1583
|
try {
|
|
1576
1584
|
const client = deps.getModelClient?.() ?? null;
|
|
1577
1585
|
if (client === null) {
|
|
1578
1586
|
promptedResult = silent("no_client");
|
|
1587
|
+
} else if (deps.backgroundEndpointBusy?.() === true) {
|
|
1588
|
+
tier = "llm";
|
|
1589
|
+
promptedStepTier = tier;
|
|
1590
|
+
promptedResult = silent("endpoint_busy");
|
|
1591
|
+
telemetryDecision = "dropped";
|
|
1579
1592
|
} else {
|
|
1580
1593
|
tier = "llm";
|
|
1581
1594
|
promptedStepTier = tier;
|
|
@@ -1605,10 +1618,17 @@ function createMemoryInterventionRegistration(deps) {
|
|
|
1605
1618
|
});
|
|
1606
1619
|
}
|
|
1607
1620
|
lastDecision = promptedResult.decision;
|
|
1621
|
+
if (promptedResult.usage !== null) {
|
|
1622
|
+
try {
|
|
1623
|
+
deps.onStepUsage?.(promptedResult.usage);
|
|
1624
|
+
} catch {
|
|
1625
|
+
}
|
|
1626
|
+
}
|
|
1627
|
+
if (promptedResult.decision === "injected") reportInjectedEntries(promptedResult.reminder);
|
|
1608
1628
|
emitTelemetry(
|
|
1609
1629
|
triggers,
|
|
1610
1630
|
tier,
|
|
1611
|
-
promptedResult.decision,
|
|
1631
|
+
telemetryDecision ?? promptedResult.decision,
|
|
1612
1632
|
promptedResult.reason,
|
|
1613
1633
|
citedEntryCount(promptedResult.reminder),
|
|
1614
1634
|
promptedResult.inputTokens,
|
|
@@ -1621,7 +1641,7 @@ function createMemoryInterventionRegistration(deps) {
|
|
|
1621
1641
|
effects: promptedResult.reminder === null ? NO_EFFECTS : [{ kind: "inject_reminder", message: promptedResult.reminder, severity: "advisory" }]
|
|
1622
1642
|
};
|
|
1623
1643
|
}
|
|
1624
|
-
function emitTelemetry(triggerReasons, tier, decision, reason,
|
|
1644
|
+
function emitTelemetry(triggerReasons, tier, decision, reason, citedEntries2, inputTokens, outputTokens, started, operations = { bankOperations: 0, droppedOperations: 0 }) {
|
|
1625
1645
|
const next = deps.bank.snapshot();
|
|
1626
1646
|
const bankDelta = taskMemoryBankDelta(telemetryBankSnapshot, next);
|
|
1627
1647
|
telemetryBankSnapshot = next;
|
|
@@ -1635,7 +1655,7 @@ function createMemoryInterventionRegistration(deps) {
|
|
|
1635
1655
|
reason,
|
|
1636
1656
|
bankOperations: operations.bankOperations,
|
|
1637
1657
|
droppedOperations: operations.droppedOperations,
|
|
1638
|
-
citedEntries,
|
|
1658
|
+
citedEntries: citedEntries2,
|
|
1639
1659
|
inputTokens,
|
|
1640
1660
|
outputTokens,
|
|
1641
1661
|
latencyMs
|
|
@@ -1648,17 +1668,29 @@ function createMemoryInterventionRegistration(deps) {
|
|
|
1648
1668
|
tier,
|
|
1649
1669
|
decision,
|
|
1650
1670
|
reason,
|
|
1651
|
-
citedEntries,
|
|
1671
|
+
citedEntries: citedEntries2,
|
|
1652
1672
|
bankWrites: countBankWrites(bankDelta),
|
|
1653
1673
|
latencyMs
|
|
1654
1674
|
};
|
|
1655
1675
|
activity.unshift(event);
|
|
1656
1676
|
if (activity.length > MEMORY_INTERVENTION_ACTIVITY_LIMIT) activity.length = MEMORY_INTERVENTION_ACTIVITY_LIMIT;
|
|
1657
1677
|
}
|
|
1658
|
-
function
|
|
1659
|
-
if (message === null) return
|
|
1678
|
+
function citedEntries(message) {
|
|
1679
|
+
if (message === null) return [];
|
|
1660
1680
|
const snapshot = deps.bank.snapshot();
|
|
1661
|
-
return [...snapshot.knowledge, ...snapshot.procedural].filter((entry) => message.includes(`[${entry.id}]`))
|
|
1681
|
+
return [...snapshot.knowledge, ...snapshot.procedural].filter((entry) => message.includes(`[${entry.id}]`));
|
|
1682
|
+
}
|
|
1683
|
+
function citedEntryCount(message) {
|
|
1684
|
+
return citedEntries(message).length;
|
|
1685
|
+
}
|
|
1686
|
+
function reportInjectedEntries(reminder) {
|
|
1687
|
+
if (deps.onInjectedEntries === void 0) return;
|
|
1688
|
+
const entries = citedEntries(reminder);
|
|
1689
|
+
if (entries.length === 0) return;
|
|
1690
|
+
try {
|
|
1691
|
+
deps.onInjectedEntries(entries);
|
|
1692
|
+
} catch {
|
|
1693
|
+
}
|
|
1662
1694
|
}
|
|
1663
1695
|
function observeBeforeTool(input) {
|
|
1664
1696
|
const prepared = prepareToolStep(input);
|
|
@@ -1867,6 +1899,27 @@ function setBounded(map, key, value, capacity) {
|
|
|
1867
1899
|
map.set(key, value);
|
|
1868
1900
|
}
|
|
1869
1901
|
|
|
1902
|
+
// src/domains/middleware/memory-step-endpoint.ts
|
|
1903
|
+
init_esm_shims();
|
|
1904
|
+
function announceMemoryStepEndpoint(deps, complete) {
|
|
1905
|
+
const { bus, endpointKey, targetId } = deps;
|
|
1906
|
+
if (endpointKey === null) return complete;
|
|
1907
|
+
return async (request) => {
|
|
1908
|
+
const releaseEndpointSlot = registerForegroundStream(endpointKey);
|
|
1909
|
+
try {
|
|
1910
|
+
return await complete(request);
|
|
1911
|
+
} finally {
|
|
1912
|
+
releaseEndpointSlot();
|
|
1913
|
+
if (bus !== null) {
|
|
1914
|
+
try {
|
|
1915
|
+
bus.emit(BusChannels.MemoryStepCompleted, { endpointKey, targetId });
|
|
1916
|
+
} catch {
|
|
1917
|
+
}
|
|
1918
|
+
}
|
|
1919
|
+
}
|
|
1920
|
+
};
|
|
1921
|
+
}
|
|
1922
|
+
|
|
1870
1923
|
// src/domains/middleware/skills-reminder.ts
|
|
1871
1924
|
init_esm_shims();
|
|
1872
1925
|
var SKILLS_REMINDER_REGISTRATION_ID = "observer.skills-reminder";
|
|
@@ -2395,6 +2448,7 @@ export {
|
|
|
2395
2448
|
readHookSources,
|
|
2396
2449
|
installUserHooks,
|
|
2397
2450
|
createMemoryInterventionRegistration,
|
|
2451
|
+
announceMemoryStepEndpoint,
|
|
2398
2452
|
createSkillsReminderRegistration,
|
|
2399
2453
|
createTaskBoardReminderRegistration,
|
|
2400
2454
|
createTaskNudgeRegistration,
|
|
@@ -2404,4 +2458,4 @@ export {
|
|
|
2404
2458
|
createWatchdogRegistration,
|
|
2405
2459
|
MiddlewareDomainModule
|
|
2406
2460
|
};
|
|
2407
|
-
//# sourceMappingURL=chunk-
|
|
2461
|
+
//# sourceMappingURL=chunk-GAYUJ7LE.js.map
|
|
@@ -51,7 +51,7 @@ function gateDeciderAgentId(requested) {
|
|
|
51
51
|
return trimmed.length > 0 ? trimmed : DEFAULT_GATE_DECIDER_AGENT_ID;
|
|
52
52
|
}
|
|
53
53
|
function appliesRecipeResultContract(gateRole) {
|
|
54
|
-
return gateRole !== "reviewer" && gateRole !== "judge";
|
|
54
|
+
return gateRole !== "reviewer" && gateRole !== "judge" && gateRole !== "synthesis";
|
|
55
55
|
}
|
|
56
56
|
function routeCorrelationFactsForRun(run) {
|
|
57
57
|
return {
|
|
@@ -100,4 +100,4 @@ export {
|
|
|
100
100
|
routeCorrelationFactsForRun,
|
|
101
101
|
gateRouteCorrelation
|
|
102
102
|
};
|
|
103
|
-
//# sourceMappingURL=chunk-
|
|
103
|
+
//# sourceMappingURL=chunk-H7IXIC72.js.map
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
asDirectoryPathBoundary,
|
|
4
|
+
pathBoundaryEntryCovers,
|
|
5
|
+
resolvePathBoundary
|
|
6
|
+
} from "./chunk-S4COXYBG.js";
|
|
2
7
|
import {
|
|
3
8
|
init_esm_shims
|
|
4
9
|
} from "./chunk-3R73A4XB.js";
|
|
@@ -7,21 +12,16 @@ import {
|
|
|
7
12
|
init_esm_shims();
|
|
8
13
|
import path from "node:path";
|
|
9
14
|
function normalizeRoot(root) {
|
|
10
|
-
return
|
|
11
|
-
}
|
|
12
|
-
function isUnder(child, parent) {
|
|
13
|
-
const c = normalizeRoot(child);
|
|
14
|
-
const p = normalizeRoot(parent);
|
|
15
|
-
if (c === p) return true;
|
|
16
|
-
const rel = path.relative(p, c);
|
|
17
|
-
return rel !== "" && !rel.startsWith("..") && !path.isAbsolute(rel);
|
|
15
|
+
return resolvePathBoundary(process.cwd(), root);
|
|
18
16
|
}
|
|
19
17
|
function isSubset(worker, orchestrator) {
|
|
20
18
|
for (const action of worker.allowedActions) {
|
|
21
19
|
if (!orchestrator.allowedActions.has(action)) return false;
|
|
22
20
|
}
|
|
23
21
|
for (const root of worker.allowedWriteRoots) {
|
|
24
|
-
const covered = orchestrator.allowedWriteRoots.some(
|
|
22
|
+
const covered = orchestrator.allowedWriteRoots.some(
|
|
23
|
+
(outer) => pathBoundaryEntryCovers(normalizeRoot(outer), normalizeRoot(root))
|
|
24
|
+
);
|
|
25
25
|
if (!covered) return false;
|
|
26
26
|
}
|
|
27
27
|
if (worker.allowNetwork && !orchestrator.allowNetwork) return false;
|
|
@@ -36,13 +36,13 @@ var READONLY_SCOPE = {
|
|
|
36
36
|
};
|
|
37
37
|
var WORKSPACE_SCOPE = {
|
|
38
38
|
allowedActions: /* @__PURE__ */ new Set(["read", "write", "execute", "dispatch"]),
|
|
39
|
-
allowedWriteRoots: [process.cwd()],
|
|
39
|
+
allowedWriteRoots: [asDirectoryPathBoundary(path.resolve(process.cwd()))],
|
|
40
40
|
allowNetwork: true,
|
|
41
41
|
allowDispatch: true
|
|
42
42
|
};
|
|
43
43
|
var CONFIRMED_SCOPE = {
|
|
44
44
|
allowedActions: /* @__PURE__ */ new Set(["read", "write", "execute", "dispatch", "system_modify"]),
|
|
45
|
-
allowedWriteRoots: [process.cwd()],
|
|
45
|
+
allowedWriteRoots: [asDirectoryPathBoundary(path.resolve(process.cwd()))],
|
|
46
46
|
allowNetwork: true,
|
|
47
47
|
allowDispatch: true
|
|
48
48
|
};
|
|
@@ -53,4 +53,4 @@ export {
|
|
|
53
53
|
WORKSPACE_SCOPE,
|
|
54
54
|
CONFIRMED_SCOPE
|
|
55
55
|
};
|
|
56
|
-
//# sourceMappingURL=chunk-
|
|
56
|
+
//# sourceMappingURL=chunk-HAY4ZE2P.js.map
|
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
|
-
import {
|
|
3
|
-
assertAgentIdNamespace
|
|
4
|
-
} from "./chunk-DR52UMZW.js";
|
|
5
2
|
import {
|
|
6
3
|
loadSkills
|
|
7
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-AD7Y7STJ.js";
|
|
8
5
|
import {
|
|
9
6
|
parseFrontmatter
|
|
10
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-RKKLTLYB.js";
|
|
11
8
|
import {
|
|
12
|
-
|
|
13
|
-
} from "./chunk-
|
|
9
|
+
enabledExtensionResourceRoots
|
|
10
|
+
} from "./chunk-5QKCQQ3E.js";
|
|
14
11
|
import {
|
|
15
12
|
assertAgentSpecPolicy,
|
|
16
13
|
isAgentAudience,
|
|
@@ -20,30 +17,19 @@ import {
|
|
|
20
17
|
isAgentProduct,
|
|
21
18
|
isAgentProjectContextTier,
|
|
22
19
|
isShadowAgent,
|
|
23
|
-
normalizeAgentSpec
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
clioConfigDir
|
|
27
|
-
} from "./chunk-BNAZZHFG.js";
|
|
20
|
+
normalizeAgentSpec,
|
|
21
|
+
parseResultContract
|
|
22
|
+
} from "./chunk-S4COXYBG.js";
|
|
28
23
|
import {
|
|
29
24
|
resolvePackageRoot
|
|
30
25
|
} from "./chunk-IWHMRKLL.js";
|
|
26
|
+
import {
|
|
27
|
+
clioConfigDir
|
|
28
|
+
} from "./chunk-BNAZZHFG.js";
|
|
31
29
|
import {
|
|
32
30
|
init_esm_shims
|
|
33
31
|
} from "./chunk-3R73A4XB.js";
|
|
34
32
|
|
|
35
|
-
// src/domains/agents/index.ts
|
|
36
|
-
init_esm_shims();
|
|
37
|
-
|
|
38
|
-
// src/domains/agents/extension.ts
|
|
39
|
-
init_esm_shims();
|
|
40
|
-
import path3 from "node:path";
|
|
41
|
-
|
|
42
|
-
// src/domains/agents/registry.ts
|
|
43
|
-
init_esm_shims();
|
|
44
|
-
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
45
|
-
import path2 from "node:path";
|
|
46
|
-
|
|
47
33
|
// src/domains/agents/recipe.ts
|
|
48
34
|
init_esm_shims();
|
|
49
35
|
import path from "node:path";
|
|
@@ -144,19 +130,19 @@ var RECIPE_KEYS = [
|
|
|
144
130
|
];
|
|
145
131
|
var OPTIONAL_RECIPE_KEYS = ["product"];
|
|
146
132
|
var ALL_RECIPE_KEYS = [...RECIPE_KEYS, ...OPTIONAL_RECIPE_KEYS];
|
|
147
|
-
function requiredString(value,
|
|
133
|
+
function requiredString(value, path3) {
|
|
148
134
|
if (typeof value !== "string" || value.trim().length === 0)
|
|
149
|
-
throw new Error(`agent recipe: ${
|
|
135
|
+
throw new Error(`agent recipe: ${path3} must be a non-empty string`);
|
|
150
136
|
return value;
|
|
151
137
|
}
|
|
152
|
-
function requiredStringArray(value,
|
|
153
|
-
if (!Array.isArray(value)) throw new Error(`agent recipe: ${
|
|
154
|
-
const entries = value.map((entry, index) => requiredString(entry, `${
|
|
155
|
-
if (new Set(entries).size !== entries.length) throw new Error(`agent recipe: ${
|
|
138
|
+
function requiredStringArray(value, path3) {
|
|
139
|
+
if (!Array.isArray(value)) throw new Error(`agent recipe: ${path3} must be an array of strings`);
|
|
140
|
+
const entries = value.map((entry, index) => requiredString(entry, `${path3}[${index}]`));
|
|
141
|
+
if (new Set(entries).size !== entries.length) throw new Error(`agent recipe: ${path3} must not contain duplicates`);
|
|
156
142
|
return entries;
|
|
157
143
|
}
|
|
158
|
-
function enumValue(value,
|
|
159
|
-
if (!predicate(value)) throw new Error(`agent recipe: ${
|
|
144
|
+
function enumValue(value, path3, predicate) {
|
|
145
|
+
if (!predicate(value)) throw new Error(`agent recipe: ${path3} has an unsupported value`);
|
|
160
146
|
return value;
|
|
161
147
|
}
|
|
162
148
|
function parseAudience(value, source, filepath) {
|
|
@@ -266,14 +252,33 @@ function parseAgentRecipeSchema(input) {
|
|
|
266
252
|
}
|
|
267
253
|
|
|
268
254
|
// src/domains/agents/registry.ts
|
|
255
|
+
init_esm_shims();
|
|
256
|
+
import { existsSync, readdirSync, readFileSync, realpathSync } from "node:fs";
|
|
257
|
+
import path2 from "node:path";
|
|
269
258
|
var RESERVED_CUSTOM_AGENT_IDS = /* @__PURE__ */ new Set(["worker", "delegate", "auto"]);
|
|
270
259
|
function resolveBoundSkills(recipe, source) {
|
|
271
260
|
if (recipe.skills.length === 0) return { ...recipe, boundSkillPaths: [] };
|
|
272
261
|
const packageSkills = path2.resolve(source.dir, "..", "..", "..", "..", "skills");
|
|
273
|
-
|
|
274
|
-
|
|
262
|
+
if (source.source === "extension" && source.skillRoot === void 0) {
|
|
263
|
+
throw new Error(`agent recipe: ${recipe.filepath}: extension declares bound skills but no skills resource root`);
|
|
264
|
+
}
|
|
265
|
+
const skills = source.source === "extension" ? loadSkills({
|
|
266
|
+
cwd: source.cwd ?? process.cwd(),
|
|
267
|
+
disableDiscovery: true,
|
|
268
|
+
explicitSkillPaths: source.skillRoot === void 0 ? [] : [source.skillRoot]
|
|
269
|
+
}) : loadSkills({
|
|
270
|
+
cwd: source.cwd ?? process.cwd(),
|
|
275
271
|
...source.source === "builtin" && existsSync(packageSkills) ? { explicitSkillPaths: [packageSkills] } : {}
|
|
276
272
|
});
|
|
273
|
+
if (source.source === "extension" && source.skillRoot !== void 0) {
|
|
274
|
+
const canonicalRoot = realpathSync(source.skillRoot);
|
|
275
|
+
for (const skill of skills.items) {
|
|
276
|
+
const relative = path2.relative(canonicalRoot, realpathSync(skill.filePath));
|
|
277
|
+
if (relative === ".." || relative.startsWith(`..${path2.sep}`) || path2.isAbsolute(relative)) {
|
|
278
|
+
throw new Error(`agent recipe: ${recipe.filepath}: bound skill escapes its extension: ${skill.filePath}`);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
277
282
|
const byName = new Map(skills.items.map((skill) => [skill.name, skill.filePath]));
|
|
278
283
|
const missing = recipe.skills.filter((skill) => !byName.has(skill));
|
|
279
284
|
if (missing.length > 0) {
|
|
@@ -334,6 +339,11 @@ function mergeRecipes(...sources) {
|
|
|
334
339
|
continue;
|
|
335
340
|
}
|
|
336
341
|
const builtin = builtinById.get(recipe.id);
|
|
342
|
+
if (recipe.source === "extension" && builtin) {
|
|
343
|
+
process.stderr.write(`[clio:agents] ignore override id=${recipe.id} by=extension reason=reserved-builtin
|
|
344
|
+
`);
|
|
345
|
+
continue;
|
|
346
|
+
}
|
|
337
347
|
if (recipe.source === "user" && builtin && isShadowAgent(normalizeAgentSpec(builtin))) {
|
|
338
348
|
process.stderr.write(`[clio:agents] ignore override id=${recipe.id} by=user reason=reserved-shadow
|
|
339
349
|
`);
|
|
@@ -351,122 +361,39 @@ function mergeRecipes(...sources) {
|
|
|
351
361
|
}
|
|
352
362
|
return Array.from(byId.values()).sort((left, right) => left.id.localeCompare(right.id));
|
|
353
363
|
}
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
function discover() {
|
|
361
|
-
const builtinDir = path3.join(resolvePackageRoot(), "src", "domains", "agents", "builtins");
|
|
362
|
-
const userDir = path3.join(clioConfigDir(), "agents");
|
|
363
|
-
const projectDir = path3.join(process.cwd(), ".clio-coder", "agents");
|
|
364
|
-
const nextDiagnostics = [];
|
|
365
|
-
const builtin = loadRecipesFromDir({ dir: builtinDir, source: "builtin" }, nextDiagnostics);
|
|
366
|
-
const user = loadRecipesFromDir({ dir: userDir, source: "user" }, nextDiagnostics);
|
|
367
|
-
const project = loadRecipesFromDir({ dir: projectDir, source: "project" }, nextDiagnostics);
|
|
368
|
-
const merged = mergeRecipes(builtin, user, project);
|
|
369
|
-
const config = _context.getContract("config");
|
|
370
|
-
assertAgentIdNamespace(merged, config?.get()?.delegation?.agents ?? []);
|
|
371
|
-
recipes = merged;
|
|
372
|
-
specs = recipes.map(normalizeAgentSpec);
|
|
373
|
-
diagnostics = nextDiagnostics;
|
|
374
|
-
}
|
|
375
|
-
const extension = {
|
|
376
|
-
async start() {
|
|
377
|
-
discover();
|
|
378
|
-
},
|
|
379
|
-
async stop() {
|
|
380
|
-
}
|
|
381
|
-
};
|
|
382
|
-
const contract = {
|
|
383
|
-
list() {
|
|
384
|
-
return recipes;
|
|
385
|
-
},
|
|
386
|
-
get(id) {
|
|
387
|
-
return recipes.find((r) => r.id === id) ?? null;
|
|
388
|
-
},
|
|
389
|
-
diagnostics() {
|
|
390
|
-
return diagnostics.map((diagnostic) => ({ ...diagnostic }));
|
|
391
|
-
},
|
|
392
|
-
listSpecs() {
|
|
393
|
-
const config = _context.getContract("config");
|
|
394
|
-
const delegationAgents = config?.get()?.delegation?.agents ?? [];
|
|
395
|
-
const delegationSpecs = delegationAgents.map((agent) => ({
|
|
396
|
-
version: 1,
|
|
397
|
-
id: agent.id,
|
|
398
|
-
name: agent.id,
|
|
399
|
-
description: `External ACP delegation agent: ${agent.command} ${(agent.args ?? []).join(" ")}`,
|
|
400
|
-
source: "custom",
|
|
401
|
-
filepath: "settings.yaml",
|
|
402
|
-
tools: [],
|
|
403
|
-
toolRequirements: { required: [], optional: [] },
|
|
404
|
-
category: "explore",
|
|
405
|
-
capabilityClass: "orchestration",
|
|
406
|
-
latencyClass: "deep",
|
|
407
|
-
projectContextTier: "none",
|
|
408
|
-
audience: "custom",
|
|
409
|
-
tags: ["delegation", "acp"],
|
|
410
|
-
skills: [],
|
|
411
|
-
resultContract: { kind: "external-delegation" },
|
|
412
|
-
budget: { toolCalls: 1, readReserve: 0, synthesis: false },
|
|
413
|
-
body: "External ACP delegation."
|
|
414
|
-
}));
|
|
415
|
-
return [...specs, ...delegationSpecs];
|
|
416
|
-
},
|
|
417
|
-
getSpec(id) {
|
|
418
|
-
const found = specs.find((r) => r.id === id);
|
|
419
|
-
if (found) return found;
|
|
420
|
-
const config = _context.getContract("config");
|
|
421
|
-
const agent = config?.get()?.delegation?.agents?.find((entry) => entry.id === id);
|
|
422
|
-
if (agent) {
|
|
423
|
-
return {
|
|
424
|
-
version: 1,
|
|
425
|
-
id: agent.id,
|
|
426
|
-
name: agent.id,
|
|
427
|
-
description: `External ACP delegation agent: ${agent.command} ${(agent.args ?? []).join(" ")}`,
|
|
428
|
-
source: "custom",
|
|
429
|
-
filepath: "settings.yaml",
|
|
430
|
-
tools: [],
|
|
431
|
-
toolRequirements: { required: [], optional: [] },
|
|
432
|
-
category: "explore",
|
|
433
|
-
capabilityClass: "orchestration",
|
|
434
|
-
latencyClass: "deep",
|
|
435
|
-
projectContextTier: "none",
|
|
436
|
-
audience: "custom",
|
|
437
|
-
tags: ["delegation", "acp"],
|
|
438
|
-
skills: [],
|
|
439
|
-
resultContract: { kind: "external-delegation" },
|
|
440
|
-
budget: { toolCalls: 1, readReserve: 0, synthesis: false },
|
|
441
|
-
body: "External ACP delegation."
|
|
442
|
-
};
|
|
443
|
-
}
|
|
444
|
-
return null;
|
|
364
|
+
function discoverAgentRecipes(cwd = process.cwd(), diagnostics = []) {
|
|
365
|
+
const builtin = loadRecipesFromDir(
|
|
366
|
+
{
|
|
367
|
+
dir: path2.join(resolvePackageRoot(), "src", "domains", "agents", "builtins"),
|
|
368
|
+
source: "builtin",
|
|
369
|
+
cwd
|
|
445
370
|
},
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
371
|
+
diagnostics
|
|
372
|
+
);
|
|
373
|
+
const skillRoots = new Map(enabledExtensionResourceRoots("skills", cwd).map((root) => [root.source, root.path]));
|
|
374
|
+
const extensionRecipes = enabledExtensionResourceRoots("agents", cwd).sort((left, right) => left.source.localeCompare(right.source)).map((root) => {
|
|
375
|
+
const skillRoot = skillRoots.get(root.source);
|
|
376
|
+
return loadRecipesFromDir(
|
|
377
|
+
{
|
|
378
|
+
dir: root.path,
|
|
379
|
+
source: "extension",
|
|
380
|
+
cwd,
|
|
381
|
+
origin: root.source,
|
|
382
|
+
...skillRoot === void 0 ? {} : { skillRoot }
|
|
383
|
+
},
|
|
384
|
+
diagnostics
|
|
385
|
+
);
|
|
386
|
+
});
|
|
387
|
+
const user = loadRecipesFromDir({ dir: path2.join(clioConfigDir(), "agents"), source: "user", cwd }, diagnostics);
|
|
388
|
+
const project = loadRecipesFromDir(
|
|
389
|
+
{ dir: path2.join(cwd, ".clio-coder", "agents"), source: "project", cwd },
|
|
390
|
+
diagnostics
|
|
391
|
+
);
|
|
392
|
+
return mergeRecipes(builtin, ...extensionRecipes, user, project);
|
|
451
393
|
}
|
|
452
394
|
|
|
453
|
-
// src/domains/agents/manifest.ts
|
|
454
|
-
init_esm_shims();
|
|
455
|
-
var AgentsManifest = {
|
|
456
|
-
name: "agents",
|
|
457
|
-
dependsOn: ["config"]
|
|
458
|
-
};
|
|
459
|
-
|
|
460
|
-
// src/domains/agents/index.ts
|
|
461
|
-
var AgentsDomainModule = {
|
|
462
|
-
manifest: AgentsManifest,
|
|
463
|
-
createExtension: createAgentsBundle
|
|
464
|
-
};
|
|
465
|
-
|
|
466
395
|
export {
|
|
467
396
|
parseAgentRecipeSchema,
|
|
468
|
-
|
|
469
|
-
mergeRecipes,
|
|
470
|
-
AgentsDomainModule
|
|
397
|
+
discoverAgentRecipes
|
|
471
398
|
};
|
|
472
|
-
//# sourceMappingURL=chunk-
|
|
399
|
+
//# sourceMappingURL=chunk-HCBCAYZU.js.map
|