@iowarp/clio-coder 0.3.8 → 0.4.0
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 +102 -0
- package/NOTICE +33 -0
- package/README.md +12 -3
- package/dist/{acp-U67UHUK2.js → acp-G5WJBNCT.js} +13 -12
- package/dist/{agents-YU6SGALZ.js → agents-FMV2Q5G4.js} +41 -36
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-5ZPJOIVG.js → auth-3IDSJEIK.js} +18 -18
- package/dist/{builtins-C6JMZVV6.js → builtins-XCZWXSC7.js} +5 -5
- package/dist/{chunk-IFBNV6H6.js → chunk-2ANTL7MR.js} +3 -3
- package/dist/{chunk-5FR74PWO.js → chunk-2JDWVJND.js} +2 -2
- package/dist/{chunk-XWSF374K.js → chunk-2OQE55CK.js} +3 -3
- package/dist/{chunk-5H3GB5BO.js → chunk-32KWKNSF.js} +8 -384
- package/dist/{chunk-KTYTFRMB.js → chunk-36EJLSQQ.js} +34 -36
- package/dist/{chunk-FHJEP5SW.js → chunk-3BT2XMV4.js} +19 -13
- package/dist/chunk-3DPEIQKN.js +113 -0
- package/dist/{chunk-GU2UIAFZ.js → chunk-3URVFKWK.js} +7 -7
- package/dist/{chunk-WEH5XRJQ.js → chunk-3XML7CDN.js} +3 -3
- package/dist/chunk-42FMPA75.js +101 -0
- package/dist/{chunk-A2NJGIB3.js → chunk-5LXZXPKX.js} +2 -2
- package/dist/{chunk-VCBR6CU7.js → chunk-5PSMVOLM.js} +2 -2
- package/dist/{chunk-NMPKI6XL.js → chunk-6DB53AJS.js} +203 -25
- package/dist/{chunk-3BINW3FP.js → chunk-76ONBSIA.js} +2 -2
- package/dist/{chunk-26LEYJZH.js → chunk-7MCTRUCE.js} +2 -2
- package/dist/{chunk-TYPGUK6W.js → chunk-AB44T6BB.js} +111 -5
- package/dist/{chunk-K4XHGFR5.js → chunk-B7OBL7PK.js} +317 -721
- package/dist/{chunk-B5CSFE7B.js → chunk-BBVJUZHB.js} +2 -2
- package/dist/{chunk-EQ63NRB7.js → chunk-BBVYXMFO.js} +2 -2
- package/dist/{chunk-ZVJ5BLO2.js → chunk-BKFJHQCA.js} +154 -16
- package/dist/chunk-BKFM6EJV.js +462 -0
- package/dist/chunk-BMS5RKQY.js +27 -0
- package/dist/{chunk-ZNLWCMVZ.js → chunk-BPKCPIL7.js} +2 -2
- package/dist/{chunk-TLQJPP24.js → chunk-BUMFYQFY.js} +1394 -1349
- package/dist/{chunk-BNAZZHFG.js → chunk-BYP5D4HI.js} +1 -1
- package/dist/chunk-C2LTL2W6.js +2447 -0
- package/dist/{chunk-ME6CCNFO.js → chunk-CODPRO7Q.js} +8 -8
- package/dist/{chunk-E77JEWSD.js → chunk-CTJ4RNAA.js} +7 -37
- package/dist/{chunk-ODFEOB4F.js → chunk-CY6FY24N.js} +26 -8
- package/dist/{chunk-7RFXX52T.js → chunk-DQITNCXG.js} +642 -172
- package/dist/{chunk-TTHACPOM.js → chunk-DYJP44XW.js} +578 -117
- package/dist/{chunk-2HFZQUHL.js → chunk-F4CKPOEQ.js} +18 -8
- package/dist/{chunk-DGSYXYMX.js → chunk-FEFIFZTL.js} +3 -3
- package/dist/{chunk-GWS3VEIW.js → chunk-FWDFM5ZU.js} +24 -3
- package/dist/{chunk-MV3K5QF2.js → chunk-GCSMB2KY.js} +2 -2
- package/dist/chunk-GKF55TAZ.js +391 -0
- package/dist/{chunk-VWZOAB7K.js → chunk-GR5G2PVF.js} +9 -8
- package/dist/{chunk-4DGYLA73.js → chunk-GXNLGKAB.js} +80 -9
- package/dist/chunk-HHV2GANA.js +88 -0
- package/dist/{chunk-IIZWH4XA.js → chunk-HI63TFOG.js} +5 -4
- package/dist/{chunk-WLFILSD5.js → chunk-HJJTYUHX.js} +113 -83
- package/dist/{chunk-TT36MB5S.js → chunk-HLW2MRKE.js} +3 -1
- package/dist/{chunk-PMDBGQSJ.js → chunk-HWHKMHUA.js} +7 -7
- package/dist/chunk-HZHHCK24.js +1631 -0
- package/dist/{chunk-WSB3FPX7.js → chunk-I5VEOC6I.js} +39 -143
- package/dist/chunk-IBEBSCYA.js +564 -0
- package/dist/chunk-IQ7KR472.js +362 -0
- package/dist/{chunk-A3WNZD3P.js → chunk-J4W7KFM7.js} +949 -972
- package/dist/{chunk-TB5666IT.js → chunk-JDG2WCRO.js} +5 -5
- package/dist/{chunk-N22QMJKY.js → chunk-K5C3NCBD.js} +4 -4
- package/dist/{chunk-CGKSTWHD.js → chunk-K6BSR66V.js} +2 -1
- package/dist/{chunk-5C3AQNDW.js → chunk-KFZI4NIL.js} +216 -38
- package/dist/chunk-KMVISBZR.js +132 -0
- package/dist/{chunk-WXY7KU3G.js → chunk-LDQ2ZF2M.js} +2 -2
- package/dist/{chunk-XN3L4EYL.js → chunk-LQ3DZAMX.js} +3 -3
- package/dist/{chunk-U6MBIEMB.js → chunk-LY4S7GJC.js} +173 -144
- package/dist/{chunk-4SPRNWDE.js → chunk-MLKNTWH2.js} +19 -19
- package/dist/{chunk-MVVUPGPW.js → chunk-MXHC5QYU.js} +6 -6
- package/dist/chunk-NEKRRTYW.js +56 -0
- package/dist/{chunk-SPULKLCF.js → chunk-NHCZP4K7.js} +3 -3
- package/dist/chunk-NHLBIGRH.js +1506 -0
- package/dist/chunk-NQQH3YT7.js +302 -0
- package/dist/chunk-NYS75XW5.js +15 -0
- package/dist/{chunk-GN57SG4G.js → chunk-O4XIVISU.js} +10 -8
- package/dist/{chunk-EMYUUSFG.js → chunk-O6TL7WWY.js} +6 -6
- package/dist/chunk-OQBA45DZ.js +97 -0
- package/dist/{chunk-LU7P4LHA.js → chunk-P3FOHJT4.js} +2 -2
- package/dist/chunk-PMZCIOCJ.js +25 -0
- package/dist/{chunk-I4HZDVNP.js → chunk-PQEFIJ36.js} +2 -2
- package/dist/{chunk-J3YUBZWY.js → chunk-QBJA7R7N.js} +62 -6
- package/dist/chunk-QDC3K2U3.js +262 -0
- package/dist/{chunk-2HEJ2F35.js → chunk-QLFS5GO2.js} +22 -10
- package/dist/{chunk-7RGZWPB6.js → chunk-QLL7ILRG.js} +95 -32
- package/dist/{chunk-YS5VLNH5.js → chunk-QREDIESB.js} +6 -6
- package/dist/chunk-QSNYB6ZV.js +195 -0
- package/dist/{chunk-GOXNB3AO.js → chunk-RAPCMZL4.js} +75 -4
- package/dist/chunk-RKKLTLYB.js +45 -0
- package/dist/{chunk-P43ETTHK.js → chunk-SJ5ZKQ4S.js} +2 -2
- package/dist/{chunk-GPIEI3LY.js → chunk-SP2RXXYO.js} +6 -54
- package/dist/chunk-SUCTJL45.js +45 -0
- package/dist/{chunk-DYIM5TJT.js → chunk-SUW5DORT.js} +263 -7
- package/dist/chunk-T56WDKA5.js +183 -0
- package/dist/chunk-TVHHYFHE.js +255 -0
- package/dist/{chunk-FJ3H4MN5.js → chunk-TZ3SGWZZ.js} +3 -3
- package/dist/{chunk-MXKJU4JB.js → chunk-U77AMWDL.js} +91 -10
- package/dist/{chunk-5DHKRSMQ.js → chunk-ULC6OTWO.js} +11 -7
- package/dist/{chunk-RWSI4YD7.js → chunk-UM7N4G5A.js} +33 -12
- package/dist/{chunk-FCSXB6T2.js → chunk-UOSL25KY.js} +14 -2
- package/dist/{chunk-IGWKHNIQ.js → chunk-UXMFQ54G.js} +44 -37
- package/dist/{chunk-HFSBBKSQ.js → chunk-V5DHCITQ.js} +171 -3
- package/dist/{chunk-5WIGXA4T.js → chunk-VAZSBTKF.js} +111 -4
- package/dist/{chunk-VHN4MY6O.js → chunk-VEO4AP2K.js} +2 -2
- package/dist/{chunk-IJ7RPIYJ.js → chunk-VFA6GDY5.js} +65 -4
- package/dist/{chunk-PT7HYKEM.js → chunk-VO2LKSTM.js} +2 -2
- package/dist/chunk-VO67MWHC.js +75 -0
- package/dist/{chunk-XK56QHLX.js → chunk-VPKWYKEY.js} +19 -5
- package/dist/{chunk-TANS5ZJS.js → chunk-VYMXRQI6.js} +36 -22
- package/dist/{chunk-WWCZ5F23.js → chunk-W5VSYASO.js} +77 -16
- package/dist/{chunk-WNIJTQQK.js → chunk-WZR7K7ZX.js} +72 -116
- package/dist/{chunk-5Q2VVUKB.js → chunk-X3YGUTOB.js} +4 -4
- package/dist/chunk-X75E3D2N.js +686 -0
- package/dist/{chunk-VAWNZU7Z.js → chunk-YDFRH54B.js} +4 -4
- package/dist/chunk-YJX4SHTD.js +40 -0
- package/dist/{chunk-ZI647VB5.js → chunk-YPI3QQCF.js} +2 -2
- package/dist/chunk-Z2RR6MAK.js +127 -0
- package/dist/{chunk-FBVTI2TJ.js → chunk-Z4TXYIEG.js} +12 -131
- package/dist/cli/index.js +47 -36
- package/dist/{clio-QVTYJ57A.js → clio-2JXHBBY5.js} +7 -7
- package/dist/{code-nav-FGGFIE7L.js → code-nav-3YYRMYNF.js} +8 -8
- package/dist/{compile-cache-CVJMMODC.js → compile-cache-7FPE6PS3.js} +3 -3
- package/dist/{components-ZFA3SAER.js → components-RYZV4JGP.js} +5 -5
- package/dist/{config-LW5IJFQN.js → config-QZPCMYSO.js} +99 -63
- package/dist/{configure-7XIZCOU4.js → configure-TEGEBYCA.js} +23 -22
- package/dist/{context-Y6Y7QPR6.js → context-AV7OEZ4D.js} +12 -12
- package/dist/{context-L3WL3X7K.js → context-E6H5RNMC.js} +56 -47
- package/dist/{context-N52ZA626.js → context-GSXUE4CT.js} +29 -27
- package/dist/{context-clear-MBQRLSDQ.js → context-clear-SHIBYK6T.js} +55 -46
- package/dist/{context-index-HVMFQHK3.js → context-index-HNG3MOME.js} +2 -2
- package/dist/{context-working-set-GS6DSO7F.js → context-working-set-5ZGKPGZQ.js} +13 -13
- package/dist/{dispatch-runner-22ZCNOM3.js → dispatch-runner-EFMJT4LD.js} +93 -64
- package/dist/{docs-7LQ23DLM.js → docs-23KQS3XK.js} +5 -5
- package/dist/doctor-QOA5FNY5.js +313 -0
- package/dist/{eval-BEC2WHDA.js → eval-TFBYQH4H.js} +2032 -156
- package/dist/eval-inventory-SXH7PDKX.js +316 -0
- package/dist/{evidence-REJUMSKM.js → evidence-ERGESKGN.js} +203 -48
- package/dist/{evolve-PY5ZBA5K.js → evolve-VDXTSYCJ.js} +52 -43
- package/dist/{extensions-HVKU65YU.js → extensions-7BGBHN57.js} +13 -7
- package/dist/{fleet-7WZEWRFA.js → fleet-2RRVDF2V.js} +228 -108
- package/dist/{fleet-commands-UVHWM76J.js → fleet-commands-VJ726XIA.js} +11 -11
- package/dist/fleet-decisions-EPAPM3XJ.js +157 -0
- package/dist/{fleet-graph-6ULH7PES.js → fleet-graph-JF5QOATM.js} +18 -15
- package/dist/fleet-inspect-VLY4S7QM.js +442 -0
- package/dist/{fleet-preflight-J53T6CCE.js → fleet-preflight-AIZUEJOY.js} +5 -5
- package/dist/{fleet-validate-72PC4SLA.js → fleet-validate-AJRPDMDV.js} +22 -19
- package/dist/fleet-verify-JFEL2L3H.js +175 -0
- package/dist/fleet-view-ZCON35AG.js +102 -0
- package/dist/{init-OG3TPGQG.js → init-DN2WWLFE.js} +72 -62
- package/dist/install-XGLBQY5E.js +13 -0
- package/dist/interop-OZBKXAYL.js +114 -0
- package/dist/{library-CNTMPLRF.js → library-YWZG7IMW.js} +21 -18
- package/dist/{memory-6IS7F275.js → memory-I4C4HMLW.js} +54 -45
- package/dist/{models-ENRJDA5W.js → models-CEYXJBO6.js} +33 -30
- package/dist/{monitor-XLDVO7TN.js → monitor-NZ6GCI3P.js} +59 -52
- package/dist/{orchestrator-6KSPYRHA.js → orchestrator-GCGQ4N5I.js} +7827 -7328
- package/dist/panes-HMABYVO4.js +58 -0
- package/dist/panes-KY6W3V2E.js +103 -0
- package/dist/{paths-DBXMZMDU.js → paths-II4K7DNR.js} +5 -5
- package/dist/{reset-RZ4ER727.js → reset-DQ6FGCSH.js} +13 -11
- package/dist/resources-BB3MVJMD.js +111 -0
- package/dist/{run-Y2CNK5RU.js → run-H2GQDUER.js} +119 -87
- package/dist/{share-A55GYP6Z.js → share-GTJN6A5O.js} +20 -17
- package/dist/{skills-ALC5J6AT.js → skills-L55TEW6R.js} +33 -24
- package/dist/{skills-eval-JPBEBYQU.js → skills-eval-XVXPH2JI.js} +67 -56
- package/dist/skills-inventory-S4MXPJFV.js +126 -0
- package/dist/slash-commands-ZSGASKJC.js +77 -0
- package/dist/{steer-GGWFUJUD.js → steer-RZGSCY4R.js} +4 -4
- package/dist/{support-MIETYA5E.js → support-PKEUNNQL.js} +6 -6
- package/dist/{targets-VGNXIR3S.js → targets-NCPZ644J.js} +68 -40
- package/dist/{terminal-lease-WOBR64YA.js → terminal-lease-44SV3YCN.js} +6 -4
- package/dist/tools-DAF3DI3C.js +27 -0
- package/dist/{trace-PNCASAXC.js → trace-FYVW2MQA.js} +207 -10
- package/dist/tui-primitives-2AKXQNZK.js +13 -0
- package/dist/{uninstall-ZJF5H5ZN.js → uninstall-DW2PNOIC.js} +5 -5
- package/dist/{upgrade-FUSUAGHR.js → upgrade-3XPP6OQL.js} +27 -24
- package/dist/{usage-N4MKVHKD.js → usage-3NLHGTU2.js} +114 -62
- package/dist/{verifiers-YAWOJ3H2.js → verifiers-SSQONKRT.js} +172 -13
- package/dist/{verify-LTDHYBGY.js → verify-3U6J7FZI.js} +10 -10
- package/dist/{web-fetch-2YHJ3KTG.js → web-fetch-S7RR6GZ7.js} +3 -3
- package/dist/{wiki-generate-6M7GHTBJ.js → wiki-generate-CEHYGPGQ.js} +75 -65
- package/dist/with-panes-MKB46MPQ.js +782 -0
- package/dist/worker/entry.js +106 -75
- package/docs/README.md +3 -2
- package/docs/acp.md +24 -3
- package/docs/alcf-provider.md +1 -1
- package/docs/architecture.md +2 -2
- package/docs/artifact-versions.md +9 -1
- package/docs/built-in-agents.md +1 -1
- package/docs/capacity-and-scheduling.md +62 -3
- package/docs/commands-and-modes.md +31 -2
- package/docs/configuration-and-targets.md +69 -12
- package/docs/context-engine.md +63 -4
- package/docs/development-pipeline.md +19 -0
- package/docs/dispatch-typed-intent.md +385 -0
- package/docs/documentation-coverage.md +5 -5
- package/docs/documentation-guide.md +1 -1
- package/docs/environment-variables.md +3 -0
- package/docs/eval-runner.md +262 -11
- package/docs/evals-internal.md +72 -2
- package/docs/evidence-and-memory.md +12 -11
- package/docs/evolution.md +1 -1
- package/docs/exit-codes-and-output.md +1 -1
- package/docs/extensions-and-sharing.md +27 -1
- package/docs/fleet-dispatch.md +25 -4
- package/docs/installation-and-lifecycle.md +15 -2
- package/docs/middleware-and-components.md +1 -1
- package/docs/model-catalog.md +10 -1
- package/docs/observability.md +55 -4
- package/docs/proactive-memory.md +127 -14
- package/docs/prompt-envelope-and-tools.md +19 -1
- package/docs/provider-adapter-cookbook.md +1 -1
- package/docs/release-cut-checklist.md +19 -3
- package/docs/safety-model.md +2 -2
- package/docs/scientific-validation.md +3 -3
- package/docs/session-lifecycle.md +1 -1
- package/docs/skills-marketplace.md +1 -1
- package/docs/tool-usage.md +18 -8
- package/docs/trace-store.md +1 -1
- package/docs/troubleshooting.md +88 -1
- package/docs/tui-design.md +1 -1
- package/docs/worker-dispatch-mechanics.md +1 -1
- package/package.json +5 -2
- package/src/cli/acp.ts +6 -2
- package/src/cli/agents.ts +1 -1
- package/src/cli/argv.ts +25 -0
- package/src/cli/config-inspect.ts +33 -6
- package/src/cli/config.ts +1 -1
- package/src/cli/configure.ts +23 -21
- package/src/cli/doctor-panes.ts +124 -0
- package/src/cli/doctor-state-size.ts +82 -0
- package/src/cli/doctor-toolchain.ts +57 -0
- package/src/cli/doctor.ts +22 -1
- package/src/cli/eval-inventory.ts +436 -0
- package/src/cli/eval.ts +93 -16
- package/src/cli/evidence-detail.ts +88 -0
- package/src/cli/evidence-inventory.ts +183 -0
- package/src/cli/evidence.ts +30 -5
- package/src/cli/extensions.ts +5 -1
- package/src/cli/fleet-decisions.ts +69 -0
- package/src/cli/fleet-inspect.ts +334 -0
- package/src/cli/fleet-verify.ts +133 -0
- package/src/cli/fleet-view.ts +810 -0
- package/src/cli/fleet.ts +179 -39
- package/src/cli/index.ts +14 -2
- package/src/cli/interop-inspect.ts +128 -0
- package/src/cli/interop.ts +34 -0
- package/src/cli/panes.ts +35 -0
- package/src/cli/reset.ts +5 -2
- package/src/cli/run.ts +58 -0
- package/src/cli/skills-inventory.ts +185 -0
- package/src/cli/skills.ts +16 -13
- package/src/cli/targets.ts +44 -13
- package/src/cli/tools.ts +321 -0
- package/src/cli/trace-inspect.ts +252 -0
- package/src/cli/trace.ts +85 -5
- package/src/cli/usage.ts +63 -14
- package/src/cli/verifiers-inspect.ts +347 -0
- package/src/cli/verifiers.ts +9 -0
- package/src/core/bus-events.ts +33 -1
- package/src/core/cache-telemetry.ts +42 -0
- package/src/core/config.ts +67 -0
- package/src/core/defaults.ts +124 -8
- package/src/core/endpoint-key.ts +27 -0
- package/src/core/residency-target-key.ts +25 -0
- package/src/core/response-schema.ts +80 -6
- package/src/core/theme-token-hex.ts +43 -0
- package/src/core/tool-names.ts +2 -1
- package/src/core/xdg.ts +1 -1
- package/src/domains/agents/fleets/build-review.md +0 -3
- package/src/domains/agents/fleets/build-test.md +0 -3
- package/src/domains/agents/result-contract-filesystem.ts +32 -0
- package/src/domains/agents/result-contract.ts +164 -35
- package/src/domains/config/classify.ts +6 -0
- package/src/domains/context/codewiki/coordinator.ts +12 -4
- package/src/domains/dispatch/admission-error.ts +9 -0
- package/src/domains/dispatch/admission.ts +52 -14
- package/src/domains/dispatch/capacity-lease.ts +118 -9
- package/src/domains/dispatch/contract.ts +11 -0
- package/src/domains/dispatch/council-topology.ts +398 -0
- package/src/domains/dispatch/execution-plan.ts +44 -4
- package/src/domains/dispatch/extension.ts +378 -82
- package/src/domains/dispatch/fleet-node-prompt.ts +62 -0
- package/src/domains/dispatch/fleet-plan.ts +7 -2
- package/src/domains/dispatch/fleet-run.ts +87 -4
- package/src/domains/dispatch/gate-decisions.ts +11 -1
- package/src/domains/dispatch/gate-role-prompts.ts +9 -0
- package/src/domains/dispatch/gate-topology.ts +289 -0
- package/src/domains/dispatch/heartbeat.ts +32 -8
- package/src/domains/dispatch/index.ts +22 -0
- package/src/domains/dispatch/intent-compatibility.ts +330 -0
- package/src/domains/dispatch/intent.ts +85 -1
- package/src/domains/dispatch/orphan-recovery.ts +5 -0
- package/src/domains/dispatch/reservation-store.ts +139 -11
- package/src/domains/dispatch/run-event-journal-bridge.ts +149 -0
- package/src/domains/dispatch/run-event-journal.ts +598 -0
- package/src/domains/dispatch/state.ts +49 -1
- package/src/domains/dispatch/types.ts +13 -0
- package/src/domains/dispatch/validation.ts +33 -8
- package/src/domains/dispatch/worker-spawn.ts +25 -11
- package/src/domains/dispatch/write-boundary-enforcer.ts +20 -3
- package/src/domains/dispatch/write-boundary.ts +62 -1
- 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 +342 -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/inventory.ts +113 -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/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 +127 -0
- 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 +105 -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 +2 -13
- package/src/domains/evidence/eval.ts +2 -12
- package/src/domains/evidence/findings-markdown.ts +33 -0
- package/src/domains/evidence/run-trust.ts +7 -113
- package/src/domains/evidence/store.ts +6 -0
- package/src/domains/evidence/trust-projection.ts +2 -2
- package/src/domains/extensions/compatibility.ts +285 -0
- package/src/domains/extensions/discovery.ts +38 -3
- package/src/domains/extensions/resources.ts +1 -1
- package/src/domains/extensions/state.ts +12 -3
- package/src/domains/extensions/types.ts +2 -0
- package/src/domains/lifecycle/doctor.ts +69 -1
- package/src/domains/memory/index.ts +14 -1
- package/src/domains/memory/task-bank-promotion.ts +64 -0
- package/src/domains/memory/task-memory-policy.ts +82 -17
- 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 +3 -0
- package/src/domains/middleware/index.ts +1 -0
- package/src/domains/middleware/memory-intervention.ts +97 -21
- package/src/domains/middleware/memory-step-endpoint.ts +71 -0
- package/src/domains/mux/contract.ts +434 -0
- package/src/domains/mux/detect.ts +158 -0
- package/src/domains/mux/extension.ts +47 -0
- package/src/domains/mux/index.ts +96 -0
- package/src/domains/mux/manifest.ts +6 -0
- package/src/domains/mux/operations.ts +164 -0
- package/src/domains/mux/pane-registry.ts +90 -0
- package/src/domains/mux/protocol.ts +49 -0
- package/src/domains/mux/socket-client.ts +816 -0
- package/src/domains/mux/types.ts +222 -0
- package/src/domains/mux/viewer-command.ts +59 -0
- package/src/domains/mux/yazi/assets/init.lua +2 -0
- package/src/domains/mux/yazi/assets/plugins/git.yazi/LICENSE +21 -0
- package/src/domains/mux/yazi/assets/plugins/git.yazi/README.md +78 -0
- package/src/domains/mux/yazi/assets/plugins/git.yazi/main.lua +255 -0
- package/src/domains/mux/yazi/assets/plugins/git.yazi/types.lua +12 -0
- package/src/domains/mux/yazi/assets/yazi.toml +17 -0
- package/src/domains/mux/yazi/event-stream.ts +180 -0
- package/src/domains/mux/yazi/profile.ts +299 -0
- package/src/domains/mux/yazi/session.ts +228 -0
- package/src/domains/mux/yazi/theme.ts +30 -0
- package/src/domains/observability/background-memory-usage.ts +140 -0
- package/src/domains/observability/cost.ts +22 -1
- package/src/domains/observability/index.ts +9 -0
- package/src/domains/observability/out-of-turn-usage.ts +51 -2
- package/src/domains/observability/trace-store.ts +234 -2
- package/src/domains/prompts/compiler.ts +100 -13
- package/src/domains/providers/endpoint-capacity.ts +228 -0
- package/src/domains/providers/endpoint-slots-store.ts +189 -0
- package/src/domains/providers/extension.ts +20 -3
- package/src/domains/providers/index.ts +32 -0
- package/src/domains/providers/model-runtime-capabilities.ts +32 -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/boot-manifest.ts +1 -0
- package/src/domains/providers/runtimes/builtins.ts +2 -0
- 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/runtimes/protocol/litellm.ts +375 -0
- package/src/domains/providers/support.ts +1 -0
- package/src/domains/providers/target-model-cache.ts +124 -0
- package/src/domains/providers/types/capability-flags.ts +2 -0
- package/src/domains/providers/types/target-descriptor.ts +2 -0
- package/src/domains/resources/index.ts +3 -0
- package/src/domains/resources/prompts/loader.ts +95 -33
- package/src/domains/resources/skills/loader.ts +33 -0
- package/src/domains/safety/action-classifier.ts +6 -0
- package/src/domains/safety/call-target.ts +52 -0
- package/src/domains/safety/run-effects.ts +35 -4
- 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/domains/toolchain/archive.ts +175 -0
- package/src/domains/toolchain/contract.ts +28 -0
- package/src/domains/toolchain/extension.ts +47 -0
- package/src/domains/toolchain/index.ts +39 -0
- package/src/domains/toolchain/install.ts +327 -0
- package/src/domains/toolchain/manifest.ts +8 -0
- package/src/domains/toolchain/paths.ts +34 -0
- package/src/domains/toolchain/registry.ts +265 -0
- package/src/domains/toolchain/remove.ts +218 -0
- package/src/domains/toolchain/resolve.ts +182 -0
- package/src/domains/toolchain/types.ts +113 -0
- package/src/domains/toolchain/version.ts +88 -0
- package/src/engine/acp/adapter.ts +18 -3
- package/src/engine/acp/server.ts +413 -70
- package/src/engine/acp/types.ts +19 -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/claude/sdk-module.ts +98 -0
- package/src/engine/claude/sdk-runtime.ts +19 -11
- package/src/engine/provider-payload.ts +29 -1
- package/src/engine/tui-primitives.ts +21 -0
- package/src/engine/tui.ts +1 -0
- package/src/engine/worker-runtime.ts +2 -13
- package/src/entry/boot-options.ts +2 -0
- package/src/entry/orchestrator.ts +279 -35
- package/src/entry/panes-activation.ts +31 -0
- package/src/entry/with-panes.ts +20 -0
- 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 +41 -10
- package/src/interactive/cost-overlay.ts +66 -6
- package/src/interactive/council-grid.ts +1 -3
- package/src/interactive/council.ts +11 -0
- package/src/interactive/dispatch-board.ts +102 -20
- package/src/interactive/fleet-run-preview.ts +41 -15
- package/src/interactive/handoff-round.ts +41 -2
- package/src/interactive/interactive-application.ts +177 -7
- package/src/interactive/interactive-input-runtime.ts +15 -0
- package/src/interactive/interactive-presentation.ts +4 -0
- package/src/interactive/interactive-shell.ts +20 -17
- package/src/interactive/interactive-slash-runtime.ts +63 -10
- package/src/interactive/memory-overlay.ts +9 -0
- package/src/interactive/modal-marker.ts +170 -0
- package/src/interactive/mutation-preview.ts +295 -0
- package/src/interactive/mux-bridge.ts +214 -0
- package/src/interactive/overlay-frame.ts +58 -2
- package/src/interactive/overlay-general-openers.ts +17 -0
- package/src/interactive/overlay-key-routing.ts +52 -3
- package/src/interactive/overlay-lifecycle.ts +56 -7
- package/src/interactive/overlay-model-selectors.ts +40 -3
- package/src/interactive/overlay-permission-lifecycle.ts +112 -24
- package/src/interactive/overlay-session-lifecycle.ts +73 -9
- package/src/interactive/overlay-transitions.ts +18 -4
- package/src/interactive/overlays/agents.ts +1 -0
- package/src/interactive/overlays/ask-user.ts +227 -49
- package/src/interactive/overlays/auth-dialog.ts +1 -0
- package/src/interactive/overlays/context-reset.ts +1 -0
- package/src/interactive/overlays/cwd-fallback.ts +1 -0
- package/src/interactive/overlays/decisions.ts +11 -11
- package/src/interactive/overlays/extensions.ts +1 -0
- package/src/interactive/overlays/fleet-run-approval.ts +1 -0
- package/src/interactive/overlays/handoff-review.ts +1 -0
- package/src/interactive/overlays/help-reference.ts +6 -0
- package/src/interactive/overlays/interop.ts +1 -0
- package/src/interactive/overlays/library-install-confirm.ts +1 -0
- package/src/interactive/overlays/library-tabs.ts +28 -0
- package/src/interactive/overlays/list-overlay.ts +10 -1
- package/src/interactive/overlays/message-picker.ts +1 -0
- package/src/interactive/overlays/model-scope.ts +86 -0
- package/src/interactive/overlays/model-selector.ts +1 -0
- package/src/interactive/overlays/prompts.ts +12 -1
- package/src/interactive/overlays/session-selector.ts +1 -0
- package/src/interactive/overlays/settings-sections.ts +30 -0
- package/src/interactive/overlays/settings.ts +614 -45
- package/src/interactive/overlays/side-question.ts +1 -0
- package/src/interactive/overlays/skills-hub.ts +3 -11
- package/src/interactive/overlays/tree-selector.ts +1 -0
- package/src/interactive/pane-policy.ts +46 -0
- package/src/interactive/panes-runtime.ts +292 -0
- 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/compaction-summary.ts +29 -0
- package/src/interactive/renderers/tool-execution.ts +4 -0
- package/src/interactive/renderers/worker-entry.ts +122 -14
- package/src/interactive/side-question.ts +58 -1
- package/src/interactive/slash-commands.ts +251 -15
- 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/tasks-overlay.ts +1 -0
- package/src/interactive/terminal-lease.ts +2 -0
- package/src/interactive/theme/tokens.ts +3 -14
- package/src/interactive/turn-context.ts +346 -33
- 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 +109 -1
- package/src/interactive/view/view-overlay.ts +29 -3
- package/src/interactive/watch-pane.ts +152 -0
- package/src/interactive/worker-progress.ts +7 -1
- package/src/interactive/worker-receipts.ts +19 -1
- package/src/interactive/worker-stream.ts +5 -0
- package/src/interactive/yazi-bridge.ts +444 -0
- package/src/tools/ask-user.ts +43 -2
- package/src/tools/bootstrap.ts +26 -2
- package/src/tools/builtin-tool-catalog.ts +15 -0
- package/src/tools/compete-worktrees.ts +83 -2
- package/src/tools/core-bootstrap.ts +2 -1
- package/src/tools/dispatch-admission.ts +14 -3
- package/src/tools/dispatch-arguments.ts +20 -20
- package/src/tools/dispatch-plan.ts +17 -9
- package/src/tools/dispatch-run-events.ts +134 -19
- package/src/tools/dispatch-runner.ts +29 -7
- package/src/tools/dispatch-scout.ts +1 -1
- package/src/tools/dispatch-types.ts +15 -3
- package/src/tools/dispatch.ts +1 -1
- package/src/tools/executables.ts +17 -14
- package/src/tools/observation.ts +54 -4
- package/src/tools/panes-surface.ts +38 -0
- package/src/tools/panes.ts +112 -0
- package/src/tools/policy.ts +10 -1
- package/src/tools/presentation.ts +1 -0
- package/src/tools/registry.ts +16 -0
- package/dist/chunk-AOCYTWAV.js +0 -449
- package/dist/chunk-HLE42MG7.js +0 -37
- package/dist/chunk-HWUFFB6L.js +0 -83
- package/dist/chunk-JOZYP4GM.js +0 -279
- package/dist/doctor-M7YEDGAE.js +0 -91
|
@@ -1,4 +1,18 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
fingerprintNativeRuntime
|
|
4
|
+
} from "./chunk-NEKRRTYW.js";
|
|
5
|
+
import {
|
|
6
|
+
INHERITED_PROJECT_CONTEXT,
|
|
7
|
+
acceptInteropAgents,
|
|
8
|
+
declineInteropAgents,
|
|
9
|
+
detectInteropAgents,
|
|
10
|
+
interopProposals,
|
|
11
|
+
renderProposalEntry
|
|
12
|
+
} from "./chunk-SP2RXXYO.js";
|
|
13
|
+
import {
|
|
14
|
+
initializeClioHome
|
|
15
|
+
} from "./chunk-2OQE55CK.js";
|
|
2
16
|
import {
|
|
3
17
|
createDelayedManualCodeInput,
|
|
4
18
|
promptOAuthSelection
|
|
@@ -13,40 +27,30 @@ import {
|
|
|
13
27
|
import {
|
|
14
28
|
credentialWriteFailed,
|
|
15
29
|
printPlaintextCredentialWarning
|
|
16
|
-
} from "./chunk-
|
|
17
|
-
import {
|
|
18
|
-
INHERITED_PROJECT_CONTEXT,
|
|
19
|
-
acceptInteropAgents,
|
|
20
|
-
declineInteropAgents,
|
|
21
|
-
detectInteropAgents,
|
|
22
|
-
fingerprintNativeRuntime,
|
|
23
|
-
interopProposals,
|
|
24
|
-
renderProposalEntry
|
|
25
|
-
} from "./chunk-GPIEI3LY.js";
|
|
26
|
-
import {
|
|
27
|
-
initializeClioHome
|
|
28
|
-
} from "./chunk-XWSF374K.js";
|
|
30
|
+
} from "./chunk-2ANTL7MR.js";
|
|
29
31
|
import {
|
|
30
32
|
printError,
|
|
31
33
|
printOk
|
|
32
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-VPKWYKEY.js";
|
|
33
35
|
import {
|
|
34
36
|
isOrchestratorEligibleRuntime,
|
|
35
|
-
probeCapabilitiesForModel
|
|
36
|
-
|
|
37
|
+
probeCapabilitiesForModel,
|
|
38
|
+
readTargetModelSnapshot,
|
|
39
|
+
recordTargetModelSnapshot
|
|
40
|
+
} from "./chunk-DQITNCXG.js";
|
|
37
41
|
import {
|
|
38
42
|
credentialsPresent
|
|
39
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-P3FOHJT4.js";
|
|
40
44
|
import {
|
|
41
45
|
readSettings,
|
|
42
46
|
removeTargetFromSettings,
|
|
43
47
|
settingsPath,
|
|
44
48
|
updateSettings
|
|
45
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-VFA6GDY5.js";
|
|
46
50
|
import {
|
|
47
51
|
greetLmStudio,
|
|
48
52
|
registerBuiltinRuntimes
|
|
49
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-6DB53AJS.js";
|
|
50
54
|
import {
|
|
51
55
|
buildProviderSupportEntry,
|
|
52
56
|
configuredTargetsForRuntime,
|
|
@@ -54,20 +58,20 @@ import {
|
|
|
54
58
|
listKnownModelsForRuntime,
|
|
55
59
|
listProviderSupportEntries,
|
|
56
60
|
supportGroupLabel
|
|
57
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-HI63TFOG.js";
|
|
58
62
|
import {
|
|
59
63
|
openAuthStorage,
|
|
60
64
|
registerClioOAuthProviders,
|
|
61
65
|
resolveAuthTarget,
|
|
62
66
|
resolveRuntimeAuthTarget,
|
|
63
67
|
targetRequiresAuth
|
|
64
|
-
} from "./chunk-
|
|
68
|
+
} from "./chunk-BBVYXMFO.js";
|
|
65
69
|
import {
|
|
66
70
|
getRuntimeRegistry
|
|
67
71
|
} from "./chunk-NUGM5KR6.js";
|
|
68
72
|
import {
|
|
69
73
|
getCatalogModelForRuntime
|
|
70
|
-
} from "./chunk-
|
|
74
|
+
} from "./chunk-VO2LKSTM.js";
|
|
71
75
|
import {
|
|
72
76
|
init_esm_shims
|
|
73
77
|
} from "./chunk-3R73A4XB.js";
|
|
@@ -358,7 +362,8 @@ var DEFAULT_PORTS = {
|
|
|
358
362
|
"lemonade-anthropic": 8e3,
|
|
359
363
|
lemonade: 8e3,
|
|
360
364
|
"anthropic-compat": 8e3,
|
|
361
|
-
"openai-compat": 8e3
|
|
365
|
+
"openai-compat": 8e3,
|
|
366
|
+
litellm: 4e3
|
|
362
367
|
};
|
|
363
368
|
function parseSetupArgs(argv) {
|
|
364
369
|
const out = {
|
|
@@ -523,7 +528,7 @@ function printRuntimeList(includeHidden) {
|
|
|
523
528
|
for (const entry of listProviderSupportEntries(getRuntimeRegistry().list(), { includeHidden })) {
|
|
524
529
|
const runtime = getRuntimeRegistry().get(entry.runtimeId);
|
|
525
530
|
const status = runtime && entry.connectable ? auth.statusForTarget(resolveRuntimeAuthTarget(runtime), { includeFallback: false }) : null;
|
|
526
|
-
const authLabel = runtime?.auth === "oauth" ? status?.available ? "connected" : "login" : runtime?.auth === "api-key" ? status?.available ? "credential" : "needs-key" : runtime?.auth ?? "none";
|
|
531
|
+
const authLabel = runtime?.auth === "oauth" ? status?.available ? "connected" : "login" : runtime?.auth === "api-key" ? status?.available ? "credential" : targetRequiresAuth({ id: entry.runtimeId, runtime: entry.runtimeId }, runtime) ? "needs-key" : "key-optional" : runtime?.auth ?? "none";
|
|
527
532
|
rows.push({
|
|
528
533
|
group: supportGroupLabel(entry.group),
|
|
529
534
|
runtimeId: entry.runtimeId,
|
|
@@ -764,18 +769,12 @@ settings written to ${settingsPath()}
|
|
|
764
769
|
function buildDescriptor(runtime, id, parts) {
|
|
765
770
|
const descriptor = { id, runtime: runtime.id };
|
|
766
771
|
if (parts.url) descriptor.url = parts.url;
|
|
767
|
-
const wireModels = parts.wireModels?.filter((value, index, all) => value.trim().length > 0 && all.indexOf(value) === index) ?? [];
|
|
768
772
|
if (parts.model) descriptor.defaultModel = parts.model;
|
|
769
|
-
else {
|
|
770
|
-
const firstWireModel = wireModels[0];
|
|
771
|
-
if (firstWireModel) descriptor.defaultModel = firstWireModel;
|
|
772
|
-
}
|
|
773
773
|
const auth = {};
|
|
774
774
|
if (parts.apiKeyEnv) auth.apiKeyEnvVar = parts.apiKeyEnv;
|
|
775
775
|
if (parts.apiKeyRef) auth.apiKeyRef = parts.apiKeyRef;
|
|
776
776
|
if (parts.oauthProfile) auth.oauthProfile = parts.oauthProfile;
|
|
777
777
|
if (Object.keys(auth).length > 0) descriptor.auth = auth;
|
|
778
|
-
if (wireModels.length > 0) descriptor.wireModels = wireModels;
|
|
779
778
|
if (parts.gateway) descriptor.gateway = true;
|
|
780
779
|
if (parts.lifecycle) descriptor.lifecycle = parts.lifecycle;
|
|
781
780
|
const caps = {};
|
|
@@ -862,13 +861,21 @@ async function resolveSupportedWireModels(runtime, target, existing, authToken)
|
|
|
862
861
|
if (runtime.kind === "http") {
|
|
863
862
|
const probe = await runtimeProbe(runtime, target, authToken);
|
|
864
863
|
if (probe?.ok && probe.models && probe.models.length > 0) {
|
|
864
|
+
recordTargetModelSnapshot(target, probe.models);
|
|
865
865
|
return { models: [...probe.models], source: "probe", modelStates: probe.modelStates };
|
|
866
866
|
}
|
|
867
867
|
const discovered = await runtimeProbeModels(runtime, target, authToken);
|
|
868
|
-
if (discovered.length > 0)
|
|
868
|
+
if (discovered.length > 0) {
|
|
869
|
+
recordTargetModelSnapshot(target, discovered);
|
|
870
|
+
return { models: discovered, source: "probe" };
|
|
871
|
+
}
|
|
872
|
+
}
|
|
873
|
+
const cached = readTargetModelSnapshot(target);
|
|
874
|
+
if (cached && cached.models.length > 0) return { models: [...cached.models], source: "cache" };
|
|
875
|
+
if (existing?.wireModels && existing.wireModels.length > 0) {
|
|
876
|
+
recordTargetModelSnapshot(target, existing.wireModels);
|
|
877
|
+
return { models: [...existing.wireModels], source: "legacy" };
|
|
869
878
|
}
|
|
870
|
-
if (existing?.wireModels && existing.wireModels.length > 0)
|
|
871
|
-
return { models: [...existing.wireModels], source: "existing" };
|
|
872
879
|
return { models: [], source: "none" };
|
|
873
880
|
}
|
|
874
881
|
function resolveModelChoice(answer, wireModels, defaultValue) {
|
|
@@ -972,7 +979,6 @@ async function runNonInteractive(runtime, args) {
|
|
|
972
979
|
const descriptor = buildDescriptor(runtime, args.id, {
|
|
973
980
|
...url !== void 0 ? { url } : {},
|
|
974
981
|
...model ? { model } : {},
|
|
975
|
-
...wireModels.length > 0 ? { wireModels } : {},
|
|
976
982
|
...apiKeyEnv !== void 0 ? { apiKeyEnv } : {},
|
|
977
983
|
...apiKeyRef !== void 0 ? { apiKeyRef } : {},
|
|
978
984
|
...oauthProfile !== void 0 ? { oauthProfile } : {},
|
|
@@ -1023,6 +1029,7 @@ async function runNonInteractive(runtime, args) {
|
|
|
1023
1029
|
applyConfiguration(settings);
|
|
1024
1030
|
updateSettings(applyConfiguration);
|
|
1025
1031
|
const probe = await runtimeProbe(runtime, descriptor);
|
|
1032
|
+
if (probe?.ok && probe.models) recordTargetModelSnapshot(descriptor, probe.models);
|
|
1026
1033
|
printSummary(settings, descriptor, probe);
|
|
1027
1034
|
if (runtime.auth === "oauth" && !auth.statusForTarget(resolveRuntimeAuthTarget(runtime), { includeFallback: false }).available) {
|
|
1028
1035
|
process.stdout.write(
|
|
@@ -1280,7 +1287,7 @@ Selected runtime: ${runtime.id} (${support.summary})
|
|
|
1280
1287
|
oauthProfile = runtime.oauthProviderId ?? runtime.id;
|
|
1281
1288
|
}
|
|
1282
1289
|
let model = defaults.model;
|
|
1283
|
-
let inventory =
|
|
1290
|
+
let inventory = { models: [], source: "none" };
|
|
1284
1291
|
const tentative = buildDescriptor(runtime, targetId, {
|
|
1285
1292
|
...url !== void 0 ? { url } : {},
|
|
1286
1293
|
...apiKeyEnv !== void 0 ? { apiKeyEnv } : {},
|
|
@@ -1360,7 +1367,6 @@ Selected runtime: ${runtime.id} (${support.summary})
|
|
|
1360
1367
|
...apiKeyEnv !== void 0 ? { apiKeyEnv } : {},
|
|
1361
1368
|
...apiKeyRef !== void 0 ? { apiKeyRef } : {},
|
|
1362
1369
|
...oauthProfile !== void 0 ? { oauthProfile } : {},
|
|
1363
|
-
...wireModels.length > 0 ? { wireModels } : {},
|
|
1364
1370
|
gateway: gatewayAnswer,
|
|
1365
1371
|
...defaults.lifecycle !== void 0 ? { lifecycle: defaults.lifecycle } : existing?.lifecycle !== void 0 ? { lifecycle: existing.lifecycle } : {},
|
|
1366
1372
|
...contextWindowChoice !== void 0 ? { contextWindow: contextWindowChoice } : {},
|
|
@@ -1381,6 +1387,7 @@ Selected runtime: ${runtime.id} (${support.summary})
|
|
|
1381
1387
|
printPlaintextCredentialWarning();
|
|
1382
1388
|
}
|
|
1383
1389
|
const probe = await runtimeProbe(runtime, descriptor);
|
|
1390
|
+
if (probe?.ok && probe.models) recordTargetModelSnapshot(descriptor, probe.models);
|
|
1384
1391
|
if (probe) {
|
|
1385
1392
|
process.stdout.write("\n");
|
|
1386
1393
|
for (const line of probeLines(descriptor, probe)) process.stdout.write(`${line}
|
|
@@ -1548,4 +1555,4 @@ export {
|
|
|
1548
1555
|
runTargetRename,
|
|
1549
1556
|
runConfigureCommand
|
|
1550
1557
|
};
|
|
1551
|
-
//# sourceMappingURL=chunk-
|
|
1558
|
+
//# sourceMappingURL=chunk-UXMFQ54G.js.map
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
// src/domains/observability/trace-store.ts
|
|
15
15
|
init_esm_shims();
|
|
16
16
|
import { createHash } from "node:crypto";
|
|
17
|
-
import { mkdirSync } from "node:fs";
|
|
17
|
+
import { mkdirSync, statSync } from "node:fs";
|
|
18
18
|
import { createRequire } from "node:module";
|
|
19
19
|
import { hostname } from "node:os";
|
|
20
20
|
import { dirname, join } from "node:path";
|
|
@@ -23,6 +23,14 @@ var TRACE_DATABASE_FILE = "trace.sqlite";
|
|
|
23
23
|
var TRACE_EVENT_POLL_LIMIT = 500;
|
|
24
24
|
var TRACE_PAYLOAD_LIMIT_BYTES = 16 * 1024;
|
|
25
25
|
var TRACE_WRITE_QUEUE_LIMIT = 2048;
|
|
26
|
+
var TRACE_RETENTION_DAYS_ENV = "CLIO_CODER_TRACE_RETENTION_DAYS";
|
|
27
|
+
var TRACE_MAX_BYTES_ENV = "CLIO_CODER_TRACE_MAX_BYTES";
|
|
28
|
+
var DEFAULT_TRACE_RETENTION_POLICY = Object.freeze({
|
|
29
|
+
maxAgeDays: 30,
|
|
30
|
+
maxBytes: 128 * 1024 * 1024
|
|
31
|
+
});
|
|
32
|
+
var MILLISECONDS_PER_DAY = 24 * 60 * 60 * 1e3;
|
|
33
|
+
var VACUUM_RECLAIMABLE_FRACTION = 0.2;
|
|
26
34
|
var sqliteConstructor = null;
|
|
27
35
|
function warningTracingRequested() {
|
|
28
36
|
const flagged = (argument) => argument === "--trace-warnings" || argument.startsWith("--trace-warnings=");
|
|
@@ -62,6 +70,27 @@ function databaseSyncConstructor() {
|
|
|
62
70
|
function traceDatabasePath(stateDir) {
|
|
63
71
|
return join(stateDir, TRACE_DATABASE_FILE);
|
|
64
72
|
}
|
|
73
|
+
function resolveTraceRetentionPolicy(overrides = {}, environment = process.env) {
|
|
74
|
+
const maxAgeDays = overrides.maxAgeDays ?? parsePositiveRetentionNumber(environment[TRACE_RETENTION_DAYS_ENV], TRACE_RETENTION_DAYS_ENV, 1);
|
|
75
|
+
const maxBytes = overrides.maxBytes ?? parsePositiveRetentionNumber(environment[TRACE_MAX_BYTES_ENV], TRACE_MAX_BYTES_ENV, 1024 * 1024);
|
|
76
|
+
return {
|
|
77
|
+
maxAgeDays: requirePositiveRetentionNumber(maxAgeDays, TRACE_RETENTION_DAYS_ENV, 1),
|
|
78
|
+
maxBytes: requirePositiveRetentionNumber(maxBytes, TRACE_MAX_BYTES_ENV, 1024 * 1024)
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function parsePositiveRetentionNumber(raw, name, fallback) {
|
|
82
|
+
if (raw === void 0 || raw.trim().length === 0) {
|
|
83
|
+
return name === TRACE_RETENTION_DAYS_ENV ? DEFAULT_TRACE_RETENTION_POLICY.maxAgeDays : DEFAULT_TRACE_RETENTION_POLICY.maxBytes;
|
|
84
|
+
}
|
|
85
|
+
const value = Number(raw);
|
|
86
|
+
return requirePositiveRetentionNumber(value, name, fallback);
|
|
87
|
+
}
|
|
88
|
+
function requirePositiveRetentionNumber(value, name, minimum) {
|
|
89
|
+
if (!Number.isSafeInteger(value) || value < minimum) {
|
|
90
|
+
throw new Error(`${name} must be an integer of at least ${minimum}`);
|
|
91
|
+
}
|
|
92
|
+
return value;
|
|
93
|
+
}
|
|
65
94
|
var TraceSchemaVersionError = class extends Error {
|
|
66
95
|
constructor(found) {
|
|
67
96
|
super(
|
|
@@ -221,8 +250,9 @@ function reconcileAbandonedRuns(db) {
|
|
|
221
250
|
}
|
|
222
251
|
}
|
|
223
252
|
var TraceStore = class {
|
|
224
|
-
constructor(path) {
|
|
253
|
+
constructor(path, options = {}) {
|
|
225
254
|
this.path = path;
|
|
255
|
+
this.retention = resolveTraceRetentionPolicy(options.retention);
|
|
226
256
|
mkdirSync(dirname(path), { recursive: true });
|
|
227
257
|
this.db = new (databaseSyncConstructor())(path);
|
|
228
258
|
applyConnectionPragmas(this.db);
|
|
@@ -236,6 +266,7 @@ var TraceStore = class {
|
|
|
236
266
|
}
|
|
237
267
|
path;
|
|
238
268
|
db;
|
|
269
|
+
retention;
|
|
239
270
|
close() {
|
|
240
271
|
this.db.close();
|
|
241
272
|
}
|
|
@@ -249,6 +280,72 @@ var TraceStore = class {
|
|
|
249
280
|
throw error;
|
|
250
281
|
}
|
|
251
282
|
}
|
|
283
|
+
/**
|
|
284
|
+
* Remove whole terminal runs, including all of their dependent rows.
|
|
285
|
+
*
|
|
286
|
+
* Age pruning runs first. If the allocated database is still above the byte
|
|
287
|
+
* limit, the oldest remaining terminal runs are removed until the live page
|
|
288
|
+
* set fits or only queued/running runs remain. A live run is never a candidate.
|
|
289
|
+
*/
|
|
290
|
+
prune(policy = this.retention, now = (/* @__PURE__ */ new Date()).toISOString()) {
|
|
291
|
+
const resolved = resolveTraceRetentionPolicy(policy);
|
|
292
|
+
const nowMs = Date.parse(now);
|
|
293
|
+
if (!Number.isFinite(nowMs)) throw new Error(`trace prune time is invalid: ${now}`);
|
|
294
|
+
const bytesBefore = traceDatabaseFootprintBytes(this.path);
|
|
295
|
+
let rowsRemoved = 0;
|
|
296
|
+
let runsRemoved = 0;
|
|
297
|
+
const removed = /* @__PURE__ */ new Set();
|
|
298
|
+
const cutoff = new Date(Math.max(0, nowMs - resolved.maxAgeDays * MILLISECONDS_PER_DAY)).toISOString();
|
|
299
|
+
const ageCandidates = this.db.prepare(
|
|
300
|
+
"SELECT run_id FROM runs WHERE status IN ('success','fail') AND ended_at IS NOT NULL AND ended_at < ? ORDER BY ended_at, started_at, run_id"
|
|
301
|
+
).all(cutoff);
|
|
302
|
+
if (ageCandidates.length > 0) {
|
|
303
|
+
this.transaction(() => {
|
|
304
|
+
for (const candidate of ageCandidates) {
|
|
305
|
+
rowsRemoved += deleteTraceRun(this.db, candidate.run_id);
|
|
306
|
+
runsRemoved += 1;
|
|
307
|
+
removed.add(candidate.run_id);
|
|
308
|
+
}
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
let pages = tracePageStats(this.db);
|
|
312
|
+
if (pages.usedBytes > resolved.maxBytes) {
|
|
313
|
+
const sizeCandidates = this.db.prepare(
|
|
314
|
+
"SELECT run_id FROM runs WHERE status IN ('success','fail') AND ended_at IS NOT NULL ORDER BY ended_at, started_at, run_id"
|
|
315
|
+
).all();
|
|
316
|
+
this.transaction(() => {
|
|
317
|
+
for (const candidate of sizeCandidates) {
|
|
318
|
+
if (pages.usedBytes <= resolved.maxBytes) break;
|
|
319
|
+
if (removed.has(candidate.run_id)) continue;
|
|
320
|
+
rowsRemoved += deleteTraceRun(this.db, candidate.run_id);
|
|
321
|
+
runsRemoved += 1;
|
|
322
|
+
removed.add(candidate.run_id);
|
|
323
|
+
pages = tracePageStats(this.db);
|
|
324
|
+
}
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
pages = tracePageStats(this.db);
|
|
328
|
+
const reclaimableFraction = pages.pageCount === 0 ? 0 : pages.freePages / pages.pageCount;
|
|
329
|
+
const sizeNeedsReclaim = pages.allocatedBytes > resolved.maxBytes && pages.freePages > 0;
|
|
330
|
+
const vacuumed = rowsRemoved > 0 && pages.freePages > 0 && (reclaimableFraction >= VACUUM_RECLAIMABLE_FRACTION || sizeNeedsReclaim);
|
|
331
|
+
if (vacuumed) {
|
|
332
|
+
this.db.exec("VACUUM");
|
|
333
|
+
this.db.prepare("PRAGMA wal_checkpoint(TRUNCATE)").get();
|
|
334
|
+
}
|
|
335
|
+
const protectedRuns = Number(
|
|
336
|
+
this.db.prepare("SELECT COUNT(*) AS count FROM runs WHERE status IN ('queued','running')").get().count
|
|
337
|
+
);
|
|
338
|
+
const bytesAfter = traceDatabaseFootprintBytes(this.path);
|
|
339
|
+
return {
|
|
340
|
+
runsRemoved,
|
|
341
|
+
rowsRemoved,
|
|
342
|
+
bytesBefore,
|
|
343
|
+
bytesAfter,
|
|
344
|
+
bytesRemoved: Math.max(0, bytesBefore - bytesAfter),
|
|
345
|
+
vacuumed,
|
|
346
|
+
protectedRuns
|
|
347
|
+
};
|
|
348
|
+
}
|
|
252
349
|
upsertRun(input, at = (/* @__PURE__ */ new Date()).toISOString()) {
|
|
253
350
|
this.transaction(() => {
|
|
254
351
|
this.db.prepare(`INSERT INTO runs
|
|
@@ -533,6 +630,7 @@ var TraceStore = class {
|
|
|
533
630
|
startedAt: at
|
|
534
631
|
});
|
|
535
632
|
});
|
|
633
|
+
this.prune(this.retention, at);
|
|
536
634
|
}
|
|
537
635
|
/**
|
|
538
636
|
* Record one fact about a turn the operator ran in the chat loop.
|
|
@@ -634,8 +732,42 @@ var TraceStore = class {
|
|
|
634
732
|
startedAt: input.at
|
|
635
733
|
});
|
|
636
734
|
});
|
|
735
|
+
this.prune(this.retention, input.at);
|
|
637
736
|
}
|
|
638
737
|
};
|
|
738
|
+
function tracePageStats(db) {
|
|
739
|
+
const pageSize = Number(db.prepare("PRAGMA page_size").get().page_size);
|
|
740
|
+
const pageCount = Number(db.prepare("PRAGMA page_count").get().page_count);
|
|
741
|
+
const freePages = Number(
|
|
742
|
+
db.prepare("PRAGMA freelist_count").get().freelist_count
|
|
743
|
+
);
|
|
744
|
+
return {
|
|
745
|
+
pageCount,
|
|
746
|
+
freePages,
|
|
747
|
+
allocatedBytes: pageCount * pageSize,
|
|
748
|
+
usedBytes: Math.max(0, pageCount - freePages) * pageSize
|
|
749
|
+
};
|
|
750
|
+
}
|
|
751
|
+
function deleteTraceRun(db, runId) {
|
|
752
|
+
let rows = 0;
|
|
753
|
+
for (const table of ["events", "envelopes", "gate_results", "agent_sessions", "processes", "phases", "runs"]) {
|
|
754
|
+
const result = db.prepare(`DELETE FROM ${table} WHERE run_id=?`).run(runId);
|
|
755
|
+
rows += Number(result.changes);
|
|
756
|
+
}
|
|
757
|
+
return rows;
|
|
758
|
+
}
|
|
759
|
+
function traceDatabaseFootprintBytes(path) {
|
|
760
|
+
let total = 0;
|
|
761
|
+
for (const candidate of [path, `${path}-wal`, `${path}-shm`]) {
|
|
762
|
+
try {
|
|
763
|
+
total += statSync(candidate).size;
|
|
764
|
+
} catch (error) {
|
|
765
|
+
const code = typeof error === "object" && error !== null && "code" in error ? String(error.code) : "";
|
|
766
|
+
if (code !== "ENOENT") throw error;
|
|
767
|
+
}
|
|
768
|
+
}
|
|
769
|
+
return total;
|
|
770
|
+
}
|
|
639
771
|
var TraceReader = class {
|
|
640
772
|
constructor(path) {
|
|
641
773
|
this.path = path;
|
|
@@ -669,6 +801,39 @@ var TraceReader = class {
|
|
|
669
801
|
clampInt(limit, 1, TRACE_EVENT_POLL_LIMIT)
|
|
670
802
|
);
|
|
671
803
|
}
|
|
804
|
+
/**
|
|
805
|
+
* Per-kind event tallies for one run.
|
|
806
|
+
*
|
|
807
|
+
* Aggregated in SQL rather than by reading rows, so `payload_json` and the
|
|
808
|
+
* free-form event name are never loaded at all. That is the point: a caller
|
|
809
|
+
* that only ever wants shapes should not be holding the payloads in memory
|
|
810
|
+
* on the way to counting them.
|
|
811
|
+
*/
|
|
812
|
+
eventKindCounts(runId) {
|
|
813
|
+
return this.db.prepare("SELECT type, COUNT(*) AS count FROM events WHERE run_id=? GROUP BY type ORDER BY count DESC, type").all(runId);
|
|
814
|
+
}
|
|
815
|
+
/** Total events and the wall span they cover, without reading one of them. */
|
|
816
|
+
eventSpan(runId) {
|
|
817
|
+
const row = this.db.prepare(
|
|
818
|
+
`SELECT COUNT(*) AS total, MIN(started_at) AS firstAt,
|
|
819
|
+
MAX(COALESCE(ended_at, started_at)) AS lastAt FROM events WHERE run_id=?`
|
|
820
|
+
).get(runId);
|
|
821
|
+
return row ?? { total: 0, firstAt: null, lastAt: null };
|
|
822
|
+
}
|
|
823
|
+
/**
|
|
824
|
+
* Per-kind process tallies for one run.
|
|
825
|
+
*
|
|
826
|
+
* Same reason as {@link eventKindCounts}, and more sharply: a process row
|
|
827
|
+
* carries the command line, the pid, and the host, none of which a shape
|
|
828
|
+
* count needs.
|
|
829
|
+
*/
|
|
830
|
+
processKindCounts(runId) {
|
|
831
|
+
return this.db.prepare(
|
|
832
|
+
`SELECT kind, COUNT(*) AS total,
|
|
833
|
+
SUM(CASE WHEN ended_at IS NULL THEN 1 ELSE 0 END) AS running
|
|
834
|
+
FROM processes WHERE run_id=? GROUP BY kind ORDER BY total DESC, kind`
|
|
835
|
+
).all(runId);
|
|
836
|
+
}
|
|
672
837
|
processes(runId) {
|
|
673
838
|
return this.db.prepare("SELECT * FROM processes WHERE run_id=? ORDER BY ended_at IS NOT NULL, id").all(runId);
|
|
674
839
|
}
|
|
@@ -991,8 +1156,11 @@ function finiteNonNegative(value) {
|
|
|
991
1156
|
|
|
992
1157
|
export {
|
|
993
1158
|
TRACE_EVENT_POLL_LIMIT,
|
|
1159
|
+
DEFAULT_TRACE_RETENTION_POLICY,
|
|
994
1160
|
traceDatabasePath,
|
|
1161
|
+
resolveTraceRetentionPolicy,
|
|
1162
|
+
TraceStore,
|
|
995
1163
|
TraceReader,
|
|
996
1164
|
createDispatchTraceMirror
|
|
997
1165
|
};
|
|
998
|
-
//# sourceMappingURL=chunk-
|
|
1166
|
+
//# sourceMappingURL=chunk-V5DHCITQ.js.map
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
|
+
sha256
|
|
4
|
+
} from "./chunk-B7OBL7PK.js";
|
|
5
|
+
import {
|
|
6
|
+
resolvePackageRoot
|
|
7
|
+
} from "./chunk-IWHMRKLL.js";
|
|
8
|
+
import {
|
|
9
|
+
require_dist
|
|
10
|
+
} from "./chunk-APJ265NV.js";
|
|
11
|
+
import {
|
|
12
|
+
__toESM,
|
|
3
13
|
init_esm_shims
|
|
4
14
|
} from "./chunk-3R73A4XB.js";
|
|
5
15
|
|
|
@@ -8,8 +18,8 @@ init_esm_shims();
|
|
|
8
18
|
function compareStrings(a, b) {
|
|
9
19
|
return a.localeCompare(b);
|
|
10
20
|
}
|
|
11
|
-
function topTwoSegments(
|
|
12
|
-
const parts =
|
|
21
|
+
function topTwoSegments(path2) {
|
|
22
|
+
const parts = path2.split("/").slice(0, -1);
|
|
13
23
|
if (parts.length === 0) return ".";
|
|
14
24
|
return parts.slice(0, 2).join("/");
|
|
15
25
|
}
|
|
@@ -115,7 +125,104 @@ function renderCodewikiDigest(codewiki, tokenBudget = 1200) {
|
|
|
115
125
|
return fitLines(lines, tokenBudget);
|
|
116
126
|
}
|
|
117
127
|
|
|
128
|
+
// src/domains/prompts/fragment-loader.ts
|
|
129
|
+
init_esm_shims();
|
|
130
|
+
var import_yaml = __toESM(require_dist(), 1);
|
|
131
|
+
import { readdirSync, readFileSync } from "node:fs";
|
|
132
|
+
import path from "node:path";
|
|
133
|
+
var frontmatterRegex = /^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/;
|
|
134
|
+
var fragmentIdRegex = /^[a-z0-9-]+(?:\.[a-z0-9-]+)+$/;
|
|
135
|
+
function defaultRootDir() {
|
|
136
|
+
return path.join(resolvePackageRoot(), "src", "domains", "prompts", "fragments");
|
|
137
|
+
}
|
|
138
|
+
function walk(root) {
|
|
139
|
+
const out = [];
|
|
140
|
+
let entries;
|
|
141
|
+
try {
|
|
142
|
+
entries = readdirSync(root, { withFileTypes: true });
|
|
143
|
+
} catch {
|
|
144
|
+
return out;
|
|
145
|
+
}
|
|
146
|
+
for (const entry of entries) {
|
|
147
|
+
const full = path.join(root, entry.name);
|
|
148
|
+
if (entry.isDirectory()) {
|
|
149
|
+
out.push(...walk(full));
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
if (entry.isFile() && entry.name.endsWith(".md")) {
|
|
153
|
+
out.push(full);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return out.sort((left, right) => left.localeCompare(right));
|
|
157
|
+
}
|
|
158
|
+
function parseFragment(filePath, rootDir) {
|
|
159
|
+
const raw = readFileSync(filePath, "utf8");
|
|
160
|
+
const rawRel = path.relative(rootDir, filePath);
|
|
161
|
+
const relPath = rawRel.split(path.sep).join("/");
|
|
162
|
+
const match = raw.match(frontmatterRegex);
|
|
163
|
+
if (!match) {
|
|
164
|
+
throw new Error(`fragment-loader: ${relPath}: missing or malformed YAML frontmatter`);
|
|
165
|
+
}
|
|
166
|
+
const frontmatterText = match[1] ?? "";
|
|
167
|
+
const body = match[2] ?? "";
|
|
168
|
+
let parsed;
|
|
169
|
+
try {
|
|
170
|
+
parsed = import_yaml.default.parse(frontmatterText);
|
|
171
|
+
} catch (err) {
|
|
172
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
173
|
+
throw new Error(`fragment-loader: ${relPath}: invalid YAML frontmatter (${reason})`);
|
|
174
|
+
}
|
|
175
|
+
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
176
|
+
throw new Error(`fragment-loader: ${relPath}: frontmatter must be a YAML object`);
|
|
177
|
+
}
|
|
178
|
+
const fm = parsed;
|
|
179
|
+
const id = fm.id;
|
|
180
|
+
if (typeof id !== "string" || !fragmentIdRegex.test(id)) {
|
|
181
|
+
throw new Error(`fragment-loader: ${relPath}: frontmatter.id must be a dot-separated namespace`);
|
|
182
|
+
}
|
|
183
|
+
const version = fm.version;
|
|
184
|
+
if (version !== 1) {
|
|
185
|
+
throw new Error(`fragment-loader: ${relPath}: frontmatter.version must be 1`);
|
|
186
|
+
}
|
|
187
|
+
const description = fm.description;
|
|
188
|
+
if (typeof description !== "string" || description.trim() === "") {
|
|
189
|
+
throw new Error(`fragment-loader: ${relPath}: frontmatter.description must be a non-empty string`);
|
|
190
|
+
}
|
|
191
|
+
const dynamicRaw = fm.dynamic;
|
|
192
|
+
if (dynamicRaw !== void 0 && typeof dynamicRaw !== "boolean") {
|
|
193
|
+
throw new Error(`fragment-loader: ${relPath}: frontmatter.dynamic must be a boolean when present`);
|
|
194
|
+
}
|
|
195
|
+
return {
|
|
196
|
+
path: filePath,
|
|
197
|
+
relPath,
|
|
198
|
+
id,
|
|
199
|
+
version,
|
|
200
|
+
description,
|
|
201
|
+
dynamic: dynamicRaw === true,
|
|
202
|
+
body,
|
|
203
|
+
contentHash: sha256(raw)
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
function loadFragments(options) {
|
|
207
|
+
const rootDir = typeof options === "string" ? options : options?.rootDir;
|
|
208
|
+
const resolvedRoot = rootDir ? path.resolve(rootDir) : defaultRootDir();
|
|
209
|
+
const files = walk(resolvedRoot);
|
|
210
|
+
const byId = /* @__PURE__ */ new Map();
|
|
211
|
+
for (const file of files) {
|
|
212
|
+
const fragment = parseFragment(file, resolvedRoot);
|
|
213
|
+
const existing = byId.get(fragment.id);
|
|
214
|
+
if (existing) {
|
|
215
|
+
throw new Error(
|
|
216
|
+
`fragment-loader: duplicate fragment id "${fragment.id}" in ${existing.relPath} and ${fragment.relPath}`
|
|
217
|
+
);
|
|
218
|
+
}
|
|
219
|
+
byId.set(fragment.id, fragment);
|
|
220
|
+
}
|
|
221
|
+
return { byId, rootDir: resolvedRoot };
|
|
222
|
+
}
|
|
223
|
+
|
|
118
224
|
export {
|
|
119
|
-
renderCodewikiDigest
|
|
225
|
+
renderCodewikiDigest,
|
|
226
|
+
loadFragments
|
|
120
227
|
};
|
|
121
|
-
//# sourceMappingURL=chunk-
|
|
228
|
+
//# sourceMappingURL=chunk-VAZSBTKF.js.map
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
ceilChars,
|
|
26
26
|
contentChars,
|
|
27
27
|
estimateAgentMessageTokens
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-UM7N4G5A.js";
|
|
29
29
|
import {
|
|
30
30
|
init_esm_shims
|
|
31
31
|
} from "./chunk-3R73A4XB.js";
|
|
@@ -674,4 +674,4 @@ export {
|
|
|
674
674
|
compactionCut,
|
|
675
675
|
selectVisibleEntries
|
|
676
676
|
};
|
|
677
|
-
//# sourceMappingURL=chunk-
|
|
677
|
+
//# sourceMappingURL=chunk-VEO4AP2K.js.map
|