@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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
ceilChars
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-AEYBF3TB.js";
|
|
5
5
|
import {
|
|
6
6
|
clioStateDir
|
|
7
7
|
} from "./chunk-BNAZZHFG.js";
|
|
@@ -231,6 +231,83 @@ function taskMemoryBankDelta(before, after) {
|
|
|
231
231
|
procedural: entryDelta(before.procedural, after.procedural)
|
|
232
232
|
};
|
|
233
233
|
}
|
|
234
|
+
function parseTaskMemoryTelemetryRecord(value) {
|
|
235
|
+
if (!isRecord(value) || !hasExactKeys(value, TELEMETRY_KEYS)) return null;
|
|
236
|
+
if (value.version !== TASK_MEMORY_TELEMETRY_VERSION || !validIsoTimestamp(value.at)) return null;
|
|
237
|
+
if (!validTriggerReasons(value.triggerReasons) || !isTier(value.tier) || !isDecision(value.decision)) return null;
|
|
238
|
+
if (!isReason(value.reason) || !isNonNegativeInteger(value.citedEntries)) return null;
|
|
239
|
+
if (!isNonNegativeInteger(value.bankOperations) || !isNonNegativeInteger(value.droppedOperations)) return null;
|
|
240
|
+
const bankDelta = parseBankDelta(value.bankDelta);
|
|
241
|
+
const tokenCost = parseTokenCost(value.tokenCost);
|
|
242
|
+
if (bankDelta === null || tokenCost === null || !isNonNegativeFinite(value.latencyMs)) return null;
|
|
243
|
+
return {
|
|
244
|
+
version: TASK_MEMORY_TELEMETRY_VERSION,
|
|
245
|
+
at: value.at,
|
|
246
|
+
triggerReasons: value.triggerReasons,
|
|
247
|
+
tier: value.tier,
|
|
248
|
+
bankDelta,
|
|
249
|
+
decision: value.decision,
|
|
250
|
+
reason: value.reason,
|
|
251
|
+
bankOperations: value.bankOperations,
|
|
252
|
+
droppedOperations: value.droppedOperations,
|
|
253
|
+
citedEntries: value.citedEntries,
|
|
254
|
+
tokenCost,
|
|
255
|
+
latencyMs: value.latencyMs
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
var TELEMETRY_KEYS = [
|
|
259
|
+
"version",
|
|
260
|
+
"at",
|
|
261
|
+
"triggerReasons",
|
|
262
|
+
"tier",
|
|
263
|
+
"bankDelta",
|
|
264
|
+
"decision",
|
|
265
|
+
"reason",
|
|
266
|
+
"bankOperations",
|
|
267
|
+
"droppedOperations",
|
|
268
|
+
"citedEntries",
|
|
269
|
+
"tokenCost",
|
|
270
|
+
"latencyMs"
|
|
271
|
+
];
|
|
272
|
+
var DELTA_KEYS = ["status", "knowledge", "procedural"];
|
|
273
|
+
var CLASS_DELTA_KEYS = ["added", "updated", "deleted"];
|
|
274
|
+
var TOKEN_KEYS = ["input", "output", "total"];
|
|
275
|
+
var TRIGGERS = /* @__PURE__ */ new Set([
|
|
276
|
+
"interval",
|
|
277
|
+
"tool_error_streak",
|
|
278
|
+
"loop_signal",
|
|
279
|
+
"repeated_failure",
|
|
280
|
+
"turn_end",
|
|
281
|
+
"post_compaction",
|
|
282
|
+
"manual"
|
|
283
|
+
]);
|
|
284
|
+
var DECISIONS = /* @__PURE__ */ new Set([
|
|
285
|
+
"silent",
|
|
286
|
+
"injected",
|
|
287
|
+
"gated",
|
|
288
|
+
"timeout",
|
|
289
|
+
"malformed",
|
|
290
|
+
"dropped"
|
|
291
|
+
]);
|
|
292
|
+
var REASONS = /* @__PURE__ */ new Set([
|
|
293
|
+
"intervened",
|
|
294
|
+
"model_silent",
|
|
295
|
+
"duplicate_reminder",
|
|
296
|
+
"suppressed",
|
|
297
|
+
"uncited",
|
|
298
|
+
"over_budget",
|
|
299
|
+
"unparseable",
|
|
300
|
+
"all_operations_invalid",
|
|
301
|
+
"deadline",
|
|
302
|
+
"timed_out",
|
|
303
|
+
"endpoint_busy",
|
|
304
|
+
"client_error",
|
|
305
|
+
"no_client",
|
|
306
|
+
"no_consumer",
|
|
307
|
+
"step_in_flight",
|
|
308
|
+
"no_repeated_failure",
|
|
309
|
+
"bank_empty"
|
|
310
|
+
]);
|
|
234
311
|
function entryDelta(before, after) {
|
|
235
312
|
const old = new Map(before.map((entry) => [entry.id, entry]));
|
|
236
313
|
const next = new Map(after.map((entry) => [entry.id, entry]));
|
|
@@ -250,9 +327,58 @@ function entryDelta(before, after) {
|
|
|
250
327
|
function sameEntry(left, right) {
|
|
251
328
|
return left.content === right.content && left.createdAt === right.createdAt;
|
|
252
329
|
}
|
|
330
|
+
function parseBankDelta(value) {
|
|
331
|
+
if (!isRecord(value) || !hasExactKeys(value, DELTA_KEYS)) return null;
|
|
332
|
+
const status = parseClassDelta(value.status);
|
|
333
|
+
const knowledge = parseClassDelta(value.knowledge);
|
|
334
|
+
const procedural = parseClassDelta(value.procedural);
|
|
335
|
+
return status === null || knowledge === null || procedural === null ? null : { status, knowledge, procedural };
|
|
336
|
+
}
|
|
337
|
+
function parseClassDelta(value) {
|
|
338
|
+
if (!isRecord(value) || !hasExactKeys(value, CLASS_DELTA_KEYS)) return null;
|
|
339
|
+
return isNonNegativeInteger(value.added) && isNonNegativeInteger(value.updated) && isNonNegativeInteger(value.deleted) ? { added: value.added, updated: value.updated, deleted: value.deleted } : null;
|
|
340
|
+
}
|
|
341
|
+
function parseTokenCost(value) {
|
|
342
|
+
if (!isRecord(value) || !hasExactKeys(value, TOKEN_KEYS)) return null;
|
|
343
|
+
if (!isNonNegativeInteger(value.input) || !isNonNegativeInteger(value.output) || !isNonNegativeInteger(value.total))
|
|
344
|
+
return null;
|
|
345
|
+
if (value.total !== value.input + value.output) return null;
|
|
346
|
+
return { input: value.input, output: value.output, total: value.total };
|
|
347
|
+
}
|
|
348
|
+
function validTriggerReasons(value) {
|
|
349
|
+
return Array.isArray(value) && value.length > 0 && value.length <= 3 && new Set(value).size === value.length && value.every((item) => typeof item === "string" && TRIGGERS.has(item));
|
|
350
|
+
}
|
|
351
|
+
function isTier(value) {
|
|
352
|
+
return value === "rules" || value === "llm";
|
|
353
|
+
}
|
|
354
|
+
function isDecision(value) {
|
|
355
|
+
return typeof value === "string" && DECISIONS.has(value);
|
|
356
|
+
}
|
|
357
|
+
function isReason(value) {
|
|
358
|
+
return typeof value === "string" && REASONS.has(value);
|
|
359
|
+
}
|
|
360
|
+
function validIsoTimestamp(value) {
|
|
361
|
+
if (typeof value !== "string" || value.length > 40) return false;
|
|
362
|
+
const timestamp = Date.parse(value);
|
|
363
|
+
return Number.isFinite(timestamp) && new Date(timestamp).toISOString() === value;
|
|
364
|
+
}
|
|
365
|
+
function isRecord(value) {
|
|
366
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
367
|
+
}
|
|
368
|
+
function hasExactKeys(value, keys) {
|
|
369
|
+
const actual = Object.keys(value).sort();
|
|
370
|
+
const expected = [...keys].sort();
|
|
371
|
+
return actual.length === expected.length && actual.every((key, index) => key === expected[index]);
|
|
372
|
+
}
|
|
373
|
+
function isNonNegativeInteger(value) {
|
|
374
|
+
return typeof value === "number" && Number.isSafeInteger(value) && value >= 0;
|
|
375
|
+
}
|
|
253
376
|
function nonNegativeInteger(value) {
|
|
254
377
|
return Number.isSafeInteger(value) && value >= 0 ? value : 0;
|
|
255
378
|
}
|
|
379
|
+
function isNonNegativeFinite(value) {
|
|
380
|
+
return typeof value === "number" && Number.isFinite(value) && value >= 0;
|
|
381
|
+
}
|
|
256
382
|
function nonNegativeFinite(value) {
|
|
257
383
|
return Number.isFinite(value) && value >= 0 ? value : 0;
|
|
258
384
|
}
|
|
@@ -303,7 +429,7 @@ function buildMemoryInterventionUserPrompt(input) {
|
|
|
303
429
|
|
|
304
430
|
// src/domains/memory/task-memory-policy.ts
|
|
305
431
|
var TASK_MEMORY_POLICY_MAX_OPERATIONS = 8;
|
|
306
|
-
var TASK_MEMORY_POLICY_DEFAULT_TIMEOUT_MS =
|
|
432
|
+
var TASK_MEMORY_POLICY_DEFAULT_TIMEOUT_MS = 3e4;
|
|
307
433
|
var TASK_MEMORY_POLICY_MODEL_MAX_OUTPUT_TOKENS = 4e3;
|
|
308
434
|
var TASK_PROMPT_MAX_CHARS = 2e3;
|
|
309
435
|
var TRAJECTORY_PROMPT_MAX_CHARS = 4e3;
|
|
@@ -331,6 +457,7 @@ async function runTaskMemoryPolicy(bank, client, input) {
|
|
|
331
457
|
let userPrompt = "";
|
|
332
458
|
let rawResponse = "";
|
|
333
459
|
let clientError = null;
|
|
460
|
+
let stepUsage = null;
|
|
334
461
|
const settle = (decision, reason, parts = {}) => {
|
|
335
462
|
const result = {
|
|
336
463
|
decision,
|
|
@@ -339,7 +466,8 @@ async function runTaskMemoryPolicy(bank, client, input) {
|
|
|
339
466
|
droppedOperations: parts.droppedOperations ?? 0,
|
|
340
467
|
reminder: parts.reminder ?? null,
|
|
341
468
|
inputTokens: parts.inputTokens ?? 0,
|
|
342
|
-
outputTokens: parts.outputTokens ?? 0
|
|
469
|
+
outputTokens: parts.outputTokens ?? 0,
|
|
470
|
+
usage: stepUsage
|
|
343
471
|
};
|
|
344
472
|
try {
|
|
345
473
|
input.onEnvelope?.({
|
|
@@ -379,9 +507,10 @@ async function runTaskMemoryPolicy(bank, client, input) {
|
|
|
379
507
|
return settle("timeout", "deadline");
|
|
380
508
|
}
|
|
381
509
|
rawResponse = typeof response.text === "string" ? response.text : "";
|
|
510
|
+
stepUsage = response.usage ?? null;
|
|
382
511
|
const usage = {
|
|
383
|
-
inputTokens: nonNegativeInteger2(response.inputTokens),
|
|
384
|
-
outputTokens: nonNegativeInteger2(response.outputTokens)
|
|
512
|
+
inputTokens: nonNegativeInteger2(response.inputTokens ?? stepUsage?.input),
|
|
513
|
+
outputTokens: nonNegativeInteger2(response.outputTokens ?? stepUsage?.output)
|
|
385
514
|
};
|
|
386
515
|
const read = readPolicyStep(rawResponse);
|
|
387
516
|
if (!read.ok) return settle("malformed", read.reason, { ...usage, droppedOperations: read.dropped });
|
|
@@ -403,6 +532,7 @@ async function runTaskMemoryPolicy(bank, client, input) {
|
|
|
403
532
|
return settle("injected", "intervened", { ...counts, reminder });
|
|
404
533
|
} catch (error) {
|
|
405
534
|
clientError = errorMessage(error);
|
|
535
|
+
if (isTimeoutError(error)) return settle("timeout", "timed_out");
|
|
406
536
|
return settle("silent", "client_error");
|
|
407
537
|
} finally {
|
|
408
538
|
if (timer !== void 0) clearTimeout(timer);
|
|
@@ -493,10 +623,10 @@ function readOperations(value) {
|
|
|
493
623
|
const operations = [];
|
|
494
624
|
let dropped = 0;
|
|
495
625
|
for (const raw of value) {
|
|
496
|
-
if (!
|
|
626
|
+
if (!isRecord2(raw) || typeof raw.op !== "string") return null;
|
|
497
627
|
switch (raw.op) {
|
|
498
628
|
case "update_status": {
|
|
499
|
-
if (!
|
|
629
|
+
if (!hasExactKeys2(raw, ["op", "content"])) return null;
|
|
500
630
|
const content = boundedContent(raw.content);
|
|
501
631
|
if (content === null) return null;
|
|
502
632
|
operations.push({ op: raw.op, content });
|
|
@@ -504,7 +634,7 @@ function readOperations(value) {
|
|
|
504
634
|
}
|
|
505
635
|
case "save_knowledge":
|
|
506
636
|
case "save_procedural": {
|
|
507
|
-
if (!
|
|
637
|
+
if (!hasExactKeys2(raw, raw.id === void 0 ? ["op", "content"] : ["op", "content", "id"])) return null;
|
|
508
638
|
const content = boundedContent(raw.content);
|
|
509
639
|
if (content === null) return null;
|
|
510
640
|
if (raw.id !== void 0 && !nonEmptyString(raw.id)) return null;
|
|
@@ -514,7 +644,7 @@ function readOperations(value) {
|
|
|
514
644
|
break;
|
|
515
645
|
}
|
|
516
646
|
case "delete":
|
|
517
|
-
if (!
|
|
647
|
+
if (!hasExactKeys2(raw, ["op", "id"]) || !nonEmptyString(raw.id)) return null;
|
|
518
648
|
operations.push({ op: raw.op, id: raw.id });
|
|
519
649
|
break;
|
|
520
650
|
default:
|
|
@@ -585,10 +715,10 @@ function boundedContent(value) {
|
|
|
585
715
|
const normalized = value.replace(/\s+/gu, " ").trim();
|
|
586
716
|
return normalized.length > 0 && normalized.length <= TASK_MEMORY_CONTENT_MAX_CHARS ? normalized : null;
|
|
587
717
|
}
|
|
588
|
-
function
|
|
718
|
+
function isRecord2(value) {
|
|
589
719
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
590
720
|
}
|
|
591
|
-
function
|
|
721
|
+
function hasExactKeys2(record, expected) {
|
|
592
722
|
const keys = Object.keys(record).sort();
|
|
593
723
|
return keys.length === expected.length && [...expected].sort().every((key, index) => keys[index] === key);
|
|
594
724
|
}
|
|
@@ -601,6 +731,12 @@ function positiveInteger2(value, fallback) {
|
|
|
601
731
|
function nonNegativeInteger2(value) {
|
|
602
732
|
return value !== void 0 && Number.isInteger(value) && value >= 0 ? value : 0;
|
|
603
733
|
}
|
|
734
|
+
function isTimeoutError(error) {
|
|
735
|
+
const name = error instanceof Error ? error.name : "";
|
|
736
|
+
if (name === "AbortError" || name === "TimeoutError") return true;
|
|
737
|
+
const message = error instanceof Error ? error.message : typeof error === "string" ? error : "";
|
|
738
|
+
return /\b(abort(ed)?|timed out|timeout)\b/iu.test(message);
|
|
739
|
+
}
|
|
604
740
|
function errorMessage(error) {
|
|
605
741
|
if (error instanceof Error) return error.message.length > 0 ? error.message : error.name;
|
|
606
742
|
return typeof error === "string" && error.length > 0 ? error : "an unknown client failure";
|
|
@@ -613,7 +749,9 @@ export {
|
|
|
613
749
|
TaskMemoryBank,
|
|
614
750
|
TASK_MEMORY_POLICY_DEFAULT_TIMEOUT_MS,
|
|
615
751
|
runTaskMemoryPolicy,
|
|
752
|
+
TASK_MEMORY_TELEMETRY_FILE,
|
|
616
753
|
createTaskMemoryTelemetrySink,
|
|
617
|
-
taskMemoryBankDelta
|
|
754
|
+
taskMemoryBankDelta,
|
|
755
|
+
parseTaskMemoryTelemetryRecord
|
|
618
756
|
};
|
|
619
|
-
//# sourceMappingURL=chunk-
|
|
757
|
+
//# sourceMappingURL=chunk-O6I4CIEU.js.map
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
} from "./chunk-CGKSTWHD.js";
|
|
8
8
|
import {
|
|
9
9
|
StringEnum
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-UOSL25KY.js";
|
|
11
11
|
import {
|
|
12
12
|
init_esm_shims
|
|
13
13
|
} from "./chunk-3R73A4XB.js";
|
|
@@ -43,4 +43,4 @@ export {
|
|
|
43
43
|
CODE_NAV_MAX_LIMIT,
|
|
44
44
|
codeNavToolSurface
|
|
45
45
|
};
|
|
46
|
-
//# sourceMappingURL=chunk-
|
|
46
|
+
//# sourceMappingURL=chunk-OEDBCISO.js.map
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
runVectorTool
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-CA42X6KT.js";
|
|
5
5
|
import {
|
|
6
6
|
PROJECT_VERIFIER_CATALOG_RELATIVE_PATH,
|
|
7
7
|
loadProjectVerifierCatalog,
|
|
8
8
|
packageDeclaredCheck,
|
|
9
9
|
resolveProjectVerifierExecutionCwd
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-A2NJGIB3.js";
|
|
11
11
|
import {
|
|
12
12
|
declaredVerificationScripts
|
|
13
13
|
} from "./chunk-UL3WSD3F.js";
|
|
14
14
|
import {
|
|
15
15
|
resolveSafeCwd
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-B5CSFE7B.js";
|
|
17
17
|
import {
|
|
18
18
|
init_esm_shims
|
|
19
19
|
} from "./chunk-3R73A4XB.js";
|
|
@@ -239,4 +239,4 @@ export {
|
|
|
239
239
|
runProjectCheck,
|
|
240
240
|
runScriptCheck
|
|
241
241
|
};
|
|
242
|
-
//# sourceMappingURL=chunk-
|
|
242
|
+
//# sourceMappingURL=chunk-P3JGPQFL.js.map
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
MAX_TIMER_DELAY_MS
|
|
4
|
+
} from "./chunk-FQ4SKYE4.js";
|
|
2
5
|
import {
|
|
3
6
|
ACTIVE_AGENT_AUTOMATION_ROLES,
|
|
4
7
|
ACTIVE_ROUTING_POSTURES,
|
|
@@ -7,10 +10,7 @@ import {
|
|
|
7
10
|
DEFAULT_SETTINGS,
|
|
8
11
|
THEME_NAMED_COLORS,
|
|
9
12
|
THINKING_LEVELS
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import {
|
|
12
|
-
MAX_TIMER_DELAY_MS
|
|
13
|
-
} from "./chunk-FQ4SKYE4.js";
|
|
13
|
+
} from "./chunk-XDOQXGFO.js";
|
|
14
14
|
import {
|
|
15
15
|
withStateFileLockSync
|
|
16
16
|
} from "./chunk-IKCO5N3L.js";
|
|
@@ -388,7 +388,8 @@ function validateTarget(issues, path, value) {
|
|
|
388
388
|
"lifecycle",
|
|
389
389
|
"gateway",
|
|
390
390
|
"pricing",
|
|
391
|
-
"lmstudio"
|
|
391
|
+
"lmstudio",
|
|
392
|
+
"maxConcurrentRequests"
|
|
392
393
|
]);
|
|
393
394
|
const id = "id" in value ? expectString(issues, `${path}.id`, value.id) : void 0;
|
|
394
395
|
const runtime = "runtime" in value ? expectString(issues, `${path}.runtime`, value.runtime) : void 0;
|
|
@@ -434,6 +435,10 @@ function validateTarget(issues, path, value) {
|
|
|
434
435
|
const v = validateLmStudioSettings(issues, `${path}.lmstudio`, value.lmstudio);
|
|
435
436
|
if (v !== void 0) target.lmstudio = v;
|
|
436
437
|
}
|
|
438
|
+
if ("maxConcurrentRequests" in value) {
|
|
439
|
+
const v = expectInteger(issues, `${path}.maxConcurrentRequests`, value.maxConcurrentRequests, { min: 1 });
|
|
440
|
+
if (v !== void 0) target.maxConcurrentRequests = v;
|
|
441
|
+
}
|
|
437
442
|
return target;
|
|
438
443
|
}
|
|
439
444
|
function validateWorkerTarget(issues, path, value, defaults, targets, options) {
|
|
@@ -812,6 +817,7 @@ var TOP_LEVEL_KEYS = [
|
|
|
812
817
|
"keybindings",
|
|
813
818
|
"compaction",
|
|
814
819
|
"context",
|
|
820
|
+
"prewarm",
|
|
815
821
|
"retry",
|
|
816
822
|
"guardrails"
|
|
817
823
|
];
|
|
@@ -1353,6 +1359,17 @@ function validateSettings(raw) {
|
|
|
1353
1359
|
}
|
|
1354
1360
|
}
|
|
1355
1361
|
}
|
|
1362
|
+
if ("prewarm" in raw) {
|
|
1363
|
+
if (!isPlainObject(raw.prewarm)) {
|
|
1364
|
+
issues.add("prewarm", `expected a map, got ${describe(raw.prewarm)}`);
|
|
1365
|
+
} else {
|
|
1366
|
+
issues.unknownKeys("prewarm", raw.prewarm, ["enabled"]);
|
|
1367
|
+
if ("enabled" in raw.prewarm) {
|
|
1368
|
+
const v = expectBoolean(issues, "prewarm.enabled", raw.prewarm.enabled);
|
|
1369
|
+
if (v !== void 0) settings.prewarm.enabled = v;
|
|
1370
|
+
}
|
|
1371
|
+
}
|
|
1372
|
+
}
|
|
1356
1373
|
if ("retry" in raw) {
|
|
1357
1374
|
if (!isPlainObject(raw.retry)) {
|
|
1358
1375
|
issues.add("retry", `expected a map, got ${describe(raw.retry)}`);
|
|
@@ -1561,4 +1578,4 @@ export {
|
|
|
1561
1578
|
removeFleetProfileFromSettings,
|
|
1562
1579
|
bindAgentProfileInSettings
|
|
1563
1580
|
};
|
|
1564
|
-
//# sourceMappingURL=chunk-
|
|
1581
|
+
//# sourceMappingURL=chunk-PNY46YEY.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
parseAgentRecipeSchema
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-HCBCAYZU.js";
|
|
5
5
|
import {
|
|
6
6
|
discoverMarketplaceSkills,
|
|
7
7
|
expandSkillInvocationInput,
|
|
@@ -10,36 +10,37 @@ import {
|
|
|
10
10
|
normalizedSkillHash,
|
|
11
11
|
parsePendingSkillRequests,
|
|
12
12
|
projectCompatTrusted
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-AD7Y7STJ.js";
|
|
14
14
|
import {
|
|
15
15
|
COMPAT_RESOURCE_PRECEDENCE,
|
|
16
16
|
defaultScopedResourceRoots,
|
|
17
|
-
readRootEntries,
|
|
18
17
|
sourceInfoForRoot,
|
|
19
18
|
splitYamlFrontmatter,
|
|
20
19
|
stringField
|
|
21
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-AMKHQW3C.js";
|
|
21
|
+
import {
|
|
22
|
+
parseFleetContract
|
|
23
|
+
} from "./chunk-HPCTNZM2.js";
|
|
22
24
|
import {
|
|
23
|
-
parseFleetContract,
|
|
24
25
|
parseFrontmatter
|
|
25
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-RKKLTLYB.js";
|
|
26
27
|
import {
|
|
27
28
|
assertAgentSpecPolicy,
|
|
28
29
|
normalizeAgentSpec
|
|
29
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-S4COXYBG.js";
|
|
30
31
|
import {
|
|
31
32
|
INTEROP_AGENT_KINDS
|
|
32
33
|
} from "./chunk-IHXBNWMM.js";
|
|
34
|
+
import {
|
|
35
|
+
runCommandVector
|
|
36
|
+
} from "./chunk-B5CSFE7B.js";
|
|
33
37
|
import {
|
|
34
38
|
readSettings,
|
|
35
39
|
updateSettings
|
|
36
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-PNY46YEY.js";
|
|
37
41
|
import {
|
|
38
42
|
expandConfigPath
|
|
39
43
|
} from "./chunk-SST6Z5JA.js";
|
|
40
|
-
import {
|
|
41
|
-
runCommandVector
|
|
42
|
-
} from "./chunk-D4MDIG46.js";
|
|
43
44
|
import {
|
|
44
45
|
require_dist
|
|
45
46
|
} from "./chunk-APJ265NV.js";
|
|
@@ -63,13 +64,18 @@ import path2 from "node:path";
|
|
|
63
64
|
|
|
64
65
|
// src/domains/resources/prompts/loader.ts
|
|
65
66
|
init_esm_shims();
|
|
66
|
-
import { readFileSync } from "node:fs";
|
|
67
|
+
import { lstatSync, readdirSync, readFileSync, realpathSync } from "node:fs";
|
|
67
68
|
import { homedir } from "node:os";
|
|
68
69
|
import path from "node:path";
|
|
69
70
|
|
|
70
71
|
// src/engine/prompt-templates.ts
|
|
71
72
|
init_esm_shims();
|
|
72
|
-
import { parseCommandArgs, substituteArgs } from "@earendil-works/pi-agent-core";
|
|
73
|
+
import { parseCommandArgs, substituteArgs as substituteParsedArgs } from "@earendil-works/pi-agent-core";
|
|
74
|
+
var RAW_ARGUMENTS_PLACEHOLDER = /\$ARGUMENTS/g;
|
|
75
|
+
function substituteArgs(content, args, rawArguments) {
|
|
76
|
+
if (rawArguments === void 0) return substituteParsedArgs(content, args);
|
|
77
|
+
return content.split(RAW_ARGUMENTS_PLACEHOLDER).map((segment) => substituteParsedArgs(segment, args)).join(rawArguments);
|
|
78
|
+
}
|
|
73
79
|
|
|
74
80
|
// src/domains/resources/collision.ts
|
|
75
81
|
init_esm_shims();
|
|
@@ -163,27 +169,83 @@ function fallbackDescription(body) {
|
|
|
163
169
|
const normalized = line.replace(/^#{1,6}\s+/, "");
|
|
164
170
|
return normalized.length > 60 ? `${normalized.slice(0, 57)}...` : normalized;
|
|
165
171
|
}
|
|
172
|
+
var EXTENSION_ROOT_REFERENCE = /\$\{extensionRoot\}(\/[A-Za-z0-9._~%+@/-]*)?/g;
|
|
173
|
+
var EXTENSION_ROOT_TOKEN = "${extensionRoot}";
|
|
174
|
+
function contained(root, candidate) {
|
|
175
|
+
const relative = path.relative(root, candidate);
|
|
176
|
+
return relative === "" || !relative.startsWith(`..${path.sep}`) && relative !== ".." && !path.isAbsolute(relative);
|
|
177
|
+
}
|
|
178
|
+
function resolveExtensionReferences(body, root) {
|
|
179
|
+
if (root.rootPath === void 0 || !body.includes(EXTENSION_ROOT_TOKEN)) return { body };
|
|
180
|
+
let canonicalRoot;
|
|
181
|
+
try {
|
|
182
|
+
canonicalRoot = realpathSync(root.rootPath);
|
|
183
|
+
} catch (error) {
|
|
184
|
+
return { reason: `extension root could not be resolved: ${error instanceof Error ? error.message : String(error)}` };
|
|
185
|
+
}
|
|
186
|
+
let invalid = null;
|
|
187
|
+
const resolved = body.replace(EXTENSION_ROOT_REFERENCE, (reference, suffix) => {
|
|
188
|
+
const candidate = path.resolve(canonicalRoot, `.${suffix ?? ""}`);
|
|
189
|
+
try {
|
|
190
|
+
const canonicalCandidate = realpathSync(candidate);
|
|
191
|
+
if (!contained(canonicalRoot, canonicalCandidate)) invalid = reference;
|
|
192
|
+
} catch {
|
|
193
|
+
invalid = reference;
|
|
194
|
+
}
|
|
195
|
+
return candidate;
|
|
196
|
+
});
|
|
197
|
+
if (invalid !== null) {
|
|
198
|
+
return { reason: `prompt template has an unresolved or escaping extension reference: ${invalid}` };
|
|
199
|
+
}
|
|
200
|
+
return { body: resolved };
|
|
201
|
+
}
|
|
202
|
+
function unavailableTemplate(name, filePath, root, reason, diagnostics, description) {
|
|
203
|
+
diagnostics.push({ type: "warning", message: reason, path: filePath });
|
|
204
|
+
const sourceInfo = sourceInfoForRoot(root, filePath);
|
|
205
|
+
return {
|
|
206
|
+
name,
|
|
207
|
+
value: {
|
|
208
|
+
name,
|
|
209
|
+
description: description ?? "Prompt template (unavailable)",
|
|
210
|
+
content: "",
|
|
211
|
+
filePath,
|
|
212
|
+
sourceInfo,
|
|
213
|
+
trusted: root.trusted !== false,
|
|
214
|
+
unavailable: `${reason} (${filePath})`
|
|
215
|
+
},
|
|
216
|
+
source: sourceInfo
|
|
217
|
+
};
|
|
218
|
+
}
|
|
166
219
|
function loadPromptFile(filePath, root, diagnostics) {
|
|
167
220
|
const ext = path.extname(filePath).toLowerCase();
|
|
168
221
|
if (ext !== ".md") return null;
|
|
222
|
+
const relativePath = path.relative(root.path, filePath);
|
|
223
|
+
if (relativePath === "" || relativePath === ".." || relativePath.startsWith(`..${path.sep}`) || path.isAbsolute(relativePath)) {
|
|
224
|
+
diagnostics.push({ type: "warning", message: "prompt template escaped its discovery root", path: filePath });
|
|
225
|
+
return null;
|
|
226
|
+
}
|
|
227
|
+
const name = relativePath.slice(0, -ext.length).split(path.sep).join(":");
|
|
228
|
+
if (name.trim().length === 0) return null;
|
|
169
229
|
let raw;
|
|
170
230
|
try {
|
|
171
231
|
raw = readFileSync(filePath, "utf8");
|
|
172
232
|
} catch (err) {
|
|
173
233
|
const reason = err instanceof Error ? err.message : String(err);
|
|
174
|
-
|
|
175
|
-
return null;
|
|
234
|
+
return unavailableTemplate(name, filePath, root, `prompt template could not be read: ${reason}`, diagnostics);
|
|
176
235
|
}
|
|
177
|
-
const name = path.basename(filePath, ext);
|
|
178
|
-
if (name.trim().length === 0) return null;
|
|
179
236
|
const { frontmatter, body } = splitOptionalFrontmatter(raw, filePath, diagnostics);
|
|
180
|
-
const
|
|
237
|
+
const declaredDescription = stringField(frontmatter, "description");
|
|
238
|
+
const resolution = resolveExtensionReferences(body, root);
|
|
239
|
+
if ("reason" in resolution) {
|
|
240
|
+
return unavailableTemplate(name, filePath, root, resolution.reason, diagnostics, declaredDescription ?? void 0);
|
|
241
|
+
}
|
|
242
|
+
const description = declaredDescription ?? fallbackDescription(resolution.body);
|
|
181
243
|
const argumentHint = stringField(frontmatter, "argument-hint") ?? stringField(frontmatter, "argumentHint");
|
|
182
244
|
const sourceInfo = sourceInfoForRoot(root, filePath);
|
|
183
245
|
const template = {
|
|
184
246
|
name,
|
|
185
247
|
description,
|
|
186
|
-
content: body.trim(),
|
|
248
|
+
content: resolution.body.trim(),
|
|
187
249
|
filePath,
|
|
188
250
|
sourceInfo,
|
|
189
251
|
trusted: root.trusted !== false
|
|
@@ -193,10 +255,42 @@ function loadPromptFile(filePath, root, diagnostics) {
|
|
|
193
255
|
}
|
|
194
256
|
function loadPromptRoot(root, diagnostics) {
|
|
195
257
|
const candidates = [];
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
const
|
|
199
|
-
if (
|
|
258
|
+
const pending = [root.path];
|
|
259
|
+
while (pending.length > 0) {
|
|
260
|
+
const directory = pending.pop();
|
|
261
|
+
if (!directory) continue;
|
|
262
|
+
let entries;
|
|
263
|
+
try {
|
|
264
|
+
const stat = lstatSync(directory);
|
|
265
|
+
if (stat.isSymbolicLink() || !stat.isDirectory()) {
|
|
266
|
+
diagnostics.push({
|
|
267
|
+
type: "warning",
|
|
268
|
+
message: "prompt template root contains a non-directory or symbolic link",
|
|
269
|
+
path: directory
|
|
270
|
+
});
|
|
271
|
+
continue;
|
|
272
|
+
}
|
|
273
|
+
entries = readdirSync(directory, { withFileTypes: true }).sort((a, b) => a.name.localeCompare(b.name));
|
|
274
|
+
} catch (error) {
|
|
275
|
+
if (error.code === "ENOENT") continue;
|
|
276
|
+
diagnostics.push({
|
|
277
|
+
type: "warning",
|
|
278
|
+
message: `prompt template directory could not be read: ${error instanceof Error ? error.message : String(error)}`,
|
|
279
|
+
path: directory
|
|
280
|
+
});
|
|
281
|
+
continue;
|
|
282
|
+
}
|
|
283
|
+
for (const entry of [...entries].reverse()) {
|
|
284
|
+
const filePath = path.join(directory, entry.name);
|
|
285
|
+
if (entry.isSymbolicLink()) {
|
|
286
|
+
diagnostics.push({ type: "warning", message: "prompt template symbolic link was ignored", path: filePath });
|
|
287
|
+
} else if (entry.isDirectory()) {
|
|
288
|
+
pending.push(filePath);
|
|
289
|
+
} else if (entry.isFile()) {
|
|
290
|
+
const candidate = loadPromptFile(filePath, root, diagnostics);
|
|
291
|
+
if (candidate) candidates.push(candidate);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
200
294
|
}
|
|
201
295
|
return candidates;
|
|
202
296
|
}
|
|
@@ -223,13 +317,14 @@ function loadPromptTemplates(input = {}) {
|
|
|
223
317
|
};
|
|
224
318
|
}
|
|
225
319
|
function parsePromptCommand(input) {
|
|
226
|
-
const
|
|
227
|
-
if (!
|
|
228
|
-
const withoutSlash =
|
|
320
|
+
const framed = input.trimStart();
|
|
321
|
+
if (!framed.startsWith("/")) return null;
|
|
322
|
+
const withoutSlash = framed.slice(1);
|
|
229
323
|
const separator = withoutSlash.search(/\s/);
|
|
230
324
|
const name = separator === -1 ? withoutSlash : withoutSlash.slice(0, separator);
|
|
231
325
|
if (name.length === 0 || name.includes("/")) return null;
|
|
232
|
-
const
|
|
326
|
+
const delimiterWidth = separator !== -1 && withoutSlash.slice(separator, separator + 2) === "\r\n" ? 2 : 1;
|
|
327
|
+
const rest = separator === -1 ? "" : withoutSlash.slice(separator + delimiterWidth);
|
|
233
328
|
return { name, rest };
|
|
234
329
|
}
|
|
235
330
|
function expandPromptTemplateInput(input, templates) {
|
|
@@ -237,6 +332,16 @@ function expandPromptTemplateInput(input, templates) {
|
|
|
237
332
|
if (!command) return { expanded: false, text: input, args: [], diagnostics: templates.diagnostics };
|
|
238
333
|
const template = templates.items.find((entry) => entry.name === command.name);
|
|
239
334
|
if (!template) return { expanded: false, text: input, args: [], diagnostics: templates.diagnostics };
|
|
335
|
+
if (template.unavailable !== void 0) {
|
|
336
|
+
const message = `prompt template /${template.name} cannot run: ${template.unavailable}`;
|
|
337
|
+
return {
|
|
338
|
+
expanded: false,
|
|
339
|
+
text: input,
|
|
340
|
+
args: [],
|
|
341
|
+
diagnostics: templates.diagnostics,
|
|
342
|
+
refusal: { template, message }
|
|
343
|
+
};
|
|
344
|
+
}
|
|
240
345
|
if (!template.trusted) {
|
|
241
346
|
const message = `prompt template ${template.name} comes from an untrusted project root; set skills.trustProjectCompatRoots to use it`;
|
|
242
347
|
return {
|
|
@@ -250,7 +355,7 @@ function expandPromptTemplateInput(input, templates) {
|
|
|
250
355
|
const args = parseCommandArgs(command.rest);
|
|
251
356
|
return {
|
|
252
357
|
expanded: true,
|
|
253
|
-
text: substituteArgs(template.content, args),
|
|
358
|
+
text: substituteArgs(template.content, args, command.rest),
|
|
254
359
|
args,
|
|
255
360
|
template,
|
|
256
361
|
diagnostics: templates.diagnostics
|
|
@@ -793,4 +898,4 @@ export {
|
|
|
793
898
|
ResourcesDomainModule,
|
|
794
899
|
createResourcesDomainModule
|
|
795
900
|
};
|
|
796
|
-
//# sourceMappingURL=chunk-
|
|
901
|
+
//# sourceMappingURL=chunk-PZ4I4JE2.js.map
|
|
@@ -3,13 +3,13 @@ import {
|
|
|
3
3
|
INTEROP_AGENT_KINDS,
|
|
4
4
|
interopAgentKind
|
|
5
5
|
} from "./chunk-IHXBNWMM.js";
|
|
6
|
+
import {
|
|
7
|
+
runCommandVector
|
|
8
|
+
} from "./chunk-B5CSFE7B.js";
|
|
6
9
|
import {
|
|
7
10
|
readSettings,
|
|
8
11
|
updateSettings
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import {
|
|
11
|
-
runCommandVector
|
|
12
|
-
} from "./chunk-D4MDIG46.js";
|
|
12
|
+
} from "./chunk-PNY46YEY.js";
|
|
13
13
|
import {
|
|
14
14
|
withStateFileLockSync
|
|
15
15
|
} from "./chunk-IKCO5N3L.js";
|
|
@@ -478,4 +478,4 @@ export {
|
|
|
478
478
|
detectInteropAgents,
|
|
479
479
|
InteropDomainModule
|
|
480
480
|
};
|
|
481
|
-
//# sourceMappingURL=chunk-
|
|
481
|
+
//# sourceMappingURL=chunk-QQ7EKM72.js.map
|