@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,12 +1,12 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
THINKING_LEVELS
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-GXNLGKAB.js";
|
|
5
5
|
import {
|
|
6
6
|
listCatalogModelsForRuntime,
|
|
7
7
|
mergeCapabilities,
|
|
8
8
|
synthesizeCatalogBackedModel
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-VO2LKSTM.js";
|
|
10
10
|
import {
|
|
11
11
|
init_esm_shims
|
|
12
12
|
} from "./chunk-3R73A4XB.js";
|
|
@@ -414,8 +414,8 @@ function localAnthropicCompat() {
|
|
|
414
414
|
};
|
|
415
415
|
}
|
|
416
416
|
function synthLocalModel(input) {
|
|
417
|
-
const { target, wireModelId, kb, defaultCapabilities:
|
|
418
|
-
const caps = mergeCapabilities(
|
|
417
|
+
const { target, wireModelId, kb, defaultCapabilities: defaultCapabilities26, apiFamily, provider } = input;
|
|
418
|
+
const caps = mergeCapabilities(defaultCapabilities26, kb?.entry.capabilities ?? null, null, target.capabilities ?? null);
|
|
419
419
|
const rawUrl = target.url ?? "";
|
|
420
420
|
const baseUrl = rawUrl.length > 0 ? input.baseUrlForTarget(rawUrl) : "";
|
|
421
421
|
const pricing = target.pricing;
|
|
@@ -865,6 +865,9 @@ async function probeLlamaCppModelStatus(base, target, ctx) {
|
|
|
865
865
|
if (flags.reasoning === true || flags.reasoningBudget !== void 0) caps.reasoning = true;
|
|
866
866
|
if (flags.mmproj) caps.vision = true;
|
|
867
867
|
if (flags.jinja === true) caps.tools = true;
|
|
868
|
+
if (flags.parallel !== void 0 && Number.isInteger(flags.parallel) && flags.parallel > 0) {
|
|
869
|
+
caps.parallelSlots = flags.parallel;
|
|
870
|
+
}
|
|
868
871
|
const enrichment = { modelId: selected.id, serverFlags: flags };
|
|
869
872
|
if (Object.keys(caps).length > 0) enrichment.discoveredCapabilities = caps;
|
|
870
873
|
const notes = statusNotes(selected.id, selected.status);
|
|
@@ -885,11 +888,16 @@ async function detectModelMismatch(base, target, ctx) {
|
|
|
885
888
|
const loaded = ids[0] ?? "(unknown)";
|
|
886
889
|
return `wire model id ${expected} does not match server's loaded model ${loaded}; llama.cpp serves a single fixed model`;
|
|
887
890
|
}
|
|
888
|
-
async function probeLlamaCppProps(base, ctx) {
|
|
889
|
-
const
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
891
|
+
async function probeLlamaCppProps(base, ctx, modelId) {
|
|
892
|
+
const request = async (url2) => {
|
|
893
|
+
const opts = { url: url2, timeoutMs: ctx.httpTimeoutMs };
|
|
894
|
+
const result = await (ctx.signal ? probeJson({ ...opts, signal: ctx.signal }) : probeJson(opts));
|
|
895
|
+
return result.ok && result.data ? result.data : null;
|
|
896
|
+
};
|
|
897
|
+
const router = await request(`${base}/props`);
|
|
898
|
+
if (router === null) return {};
|
|
899
|
+
const selected = typeof router.total_slots === "number" || !modelId ? null : await request(`${base}/props?model=${encodeURIComponent(modelId)}`);
|
|
900
|
+
const data = selected ?? router;
|
|
893
901
|
const enrichment = {};
|
|
894
902
|
const caps = {};
|
|
895
903
|
const nCtx = data.default_generation_settings?.n_ctx;
|
|
@@ -898,9 +906,12 @@ async function probeLlamaCppProps(base, ctx) {
|
|
|
898
906
|
if (typeof nPredict === "number" && nPredict > 0) caps.maxTokens = nPredict;
|
|
899
907
|
const vision = data.modalities?.vision;
|
|
900
908
|
if (typeof vision === "boolean") caps.vision = vision;
|
|
909
|
+
const totalSlots = data.total_slots;
|
|
910
|
+
if (typeof totalSlots === "number" && Number.isInteger(totalSlots) && totalSlots > 0) caps.parallelSlots = totalSlots;
|
|
901
911
|
if (Object.keys(caps).length > 0) enrichment.discoveredCapabilities = caps;
|
|
902
|
-
|
|
903
|
-
|
|
912
|
+
const buildInfo = data.build_info ?? router.build_info;
|
|
913
|
+
if (typeof buildInfo === "string" && buildInfo.length > 0) {
|
|
914
|
+
enrichment.serverVersion = buildInfo;
|
|
904
915
|
}
|
|
905
916
|
return enrichment;
|
|
906
917
|
}
|
|
@@ -1785,8 +1796,8 @@ var llamacppRuntime = {
|
|
|
1785
1796
|
const healthOpts = { url: `${base}/health`, timeoutMs: ctx.httpTimeoutMs };
|
|
1786
1797
|
const health = await (ctx.signal ? probeHttp({ ...healthOpts, signal: ctx.signal }) : probeHttp(healthOpts));
|
|
1787
1798
|
if (!health.ok) return health;
|
|
1788
|
-
const props = await probeLlamaCppProps(base, ctx);
|
|
1789
1799
|
const status = await probeLlamaCppModelStatus(base, target, ctx);
|
|
1800
|
+
const props = await probeLlamaCppProps(base, ctx, status.modelId ?? target.defaultModel);
|
|
1790
1801
|
const catalog = await probeOpenAIModelCatalog(base, ctx);
|
|
1791
1802
|
const result = { ok: true };
|
|
1792
1803
|
if (catalog.models.length > 0) result.models = catalog.models;
|
|
@@ -1795,7 +1806,8 @@ var llamacppRuntime = {
|
|
|
1795
1806
|
if (typeof health.latencyMs === "number") result.latencyMs = health.latencyMs;
|
|
1796
1807
|
const discoveredCapabilities = {
|
|
1797
1808
|
...props.discoveredCapabilities ?? {},
|
|
1798
|
-
...status.discoveredCapabilities ?? {}
|
|
1809
|
+
...status.discoveredCapabilities ?? {},
|
|
1810
|
+
...props.discoveredCapabilities?.parallelSlots !== void 0 ? { parallelSlots: props.discoveredCapabilities.parallelSlots } : {}
|
|
1799
1811
|
};
|
|
1800
1812
|
if (Object.keys(discoveredCapabilities).length > 0) {
|
|
1801
1813
|
result.discoveredCapabilities = discoveredCapabilities;
|
|
@@ -1866,7 +1878,7 @@ var llamacppAnthropicRuntime = {
|
|
|
1866
1878
|
};
|
|
1867
1879
|
const head = await (ctx.signal ? probeHttp({ ...headOpts, signal: ctx.signal }) : probeHttp(headOpts));
|
|
1868
1880
|
if (!head.ok) return head;
|
|
1869
|
-
const props = await probeLlamaCppProps(base, ctx);
|
|
1881
|
+
const props = await probeLlamaCppProps(base, ctx, target.defaultModel);
|
|
1870
1882
|
const enriched = { ...head };
|
|
1871
1883
|
if (props.discoveredCapabilities) enriched.discoveredCapabilities = props.discoveredCapabilities;
|
|
1872
1884
|
if (props.serverVersion) enriched.serverVersion = props.serverVersion;
|
|
@@ -2018,7 +2030,7 @@ var llamacppCompletionRuntime = {
|
|
|
2018
2030
|
const healthOpts = { url: `${base}/health`, timeoutMs: ctx.httpTimeoutMs };
|
|
2019
2031
|
const health = await (ctx.signal ? probeHttp({ ...healthOpts, signal: ctx.signal }) : probeHttp(healthOpts));
|
|
2020
2032
|
if (!health.ok) return health;
|
|
2021
|
-
const props = await probeLlamaCppProps(base, ctx);
|
|
2033
|
+
const props = await probeLlamaCppProps(base, ctx, target.defaultModel);
|
|
2022
2034
|
const status = await probeLlamaCppModelStatus(base, target, ctx);
|
|
2023
2035
|
const enriched = { ...health };
|
|
2024
2036
|
const discoveredCapabilities = {
|
|
@@ -2140,7 +2152,7 @@ var llamacppEmbedRuntime = {
|
|
|
2140
2152
|
if (!probeResponse.ok) {
|
|
2141
2153
|
return { ok: false, error: `/embedding not available: HTTP ${probeResponse.status}` };
|
|
2142
2154
|
}
|
|
2143
|
-
const props = await probeLlamaCppProps(base, ctx);
|
|
2155
|
+
const props = await probeLlamaCppProps(base, ctx, target.defaultModel);
|
|
2144
2156
|
const result = { ok: true };
|
|
2145
2157
|
if (health.latencyMs !== void 0) result.latencyMs = health.latencyMs;
|
|
2146
2158
|
if (props.discoveredCapabilities) result.discoveredCapabilities = props.discoveredCapabilities;
|
|
@@ -2257,7 +2269,7 @@ var llamacppRerankRuntime = {
|
|
|
2257
2269
|
if (!(probeResponse.status === 200 || probeResponse.status === 202)) {
|
|
2258
2270
|
return { ok: false, error: `/reranking not available: HTTP ${probeResponse.status}` };
|
|
2259
2271
|
}
|
|
2260
|
-
const props = await probeLlamaCppProps(base, ctx);
|
|
2272
|
+
const props = await probeLlamaCppProps(base, ctx, target.defaultModel);
|
|
2261
2273
|
const result = { ok: true };
|
|
2262
2274
|
if (health.latencyMs !== void 0) result.latencyMs = health.latencyMs;
|
|
2263
2275
|
if (props.discoveredCapabilities) result.discoveredCapabilities = props.discoveredCapabilities;
|
|
@@ -2470,15 +2482,15 @@ function foldLmStudioModels(models) {
|
|
|
2470
2482
|
return [...byKey.values()];
|
|
2471
2483
|
}
|
|
2472
2484
|
function rememberHostCatalog(target, models) {
|
|
2473
|
-
const
|
|
2474
|
-
if (!
|
|
2475
|
-
catalogsByHost.set(
|
|
2485
|
+
const rootUrl2 = lmStudioRootUrl(target.url ?? "");
|
|
2486
|
+
if (!rootUrl2) return;
|
|
2487
|
+
catalogsByHost.set(rootUrl2, { targetId: target.id, rootUrl: rootUrl2, models: foldLmStudioModels(models) });
|
|
2476
2488
|
}
|
|
2477
2489
|
function peerTargetsFor(target, instanceId) {
|
|
2478
|
-
const
|
|
2490
|
+
const rootUrl2 = lmStudioRootUrl(target.url ?? "");
|
|
2479
2491
|
const peers = [];
|
|
2480
2492
|
for (const catalog of catalogsByHost.values()) {
|
|
2481
|
-
if (catalog.rootUrl ===
|
|
2493
|
+
if (catalog.rootUrl === rootUrl2) continue;
|
|
2482
2494
|
if (catalog.models.some((model) => model.loadedInstances.some((instance) => instance.id === instanceId))) {
|
|
2483
2495
|
peers.push(catalog.targetId);
|
|
2484
2496
|
}
|
|
@@ -2694,6 +2706,8 @@ function capabilities(model, instance) {
|
|
|
2694
2706
|
out.reasoning = model.reasoningOptions.some((option) => option !== "off");
|
|
2695
2707
|
const contextWindow = loadedContextLength(instance) ?? model.maxContextLength;
|
|
2696
2708
|
if (contextWindow !== void 0) out.contextWindow = contextWindow;
|
|
2709
|
+
const parallel = instance?.config.parallel;
|
|
2710
|
+
if (typeof parallel === "number" && Number.isInteger(parallel) && parallel > 0) out.parallelSlots = parallel;
|
|
2697
2711
|
return out;
|
|
2698
2712
|
}
|
|
2699
2713
|
function statusFor(model, instance, reasoningLevels) {
|
|
@@ -2745,6 +2759,7 @@ function probeFromCatalog(catalog, target) {
|
|
|
2745
2759
|
const selected = resolveModel(models, configuredModel(target));
|
|
2746
2760
|
const result = {
|
|
2747
2761
|
ok: true,
|
|
2762
|
+
discoveredCapabilities: { parallelSlots: 1 },
|
|
2748
2763
|
models: ids,
|
|
2749
2764
|
modelCapabilities,
|
|
2750
2765
|
modelStates,
|
|
@@ -2757,7 +2772,7 @@ function probeFromCatalog(catalog, target) {
|
|
|
2757
2772
|
};
|
|
2758
2773
|
if (catalog.latencyMs !== void 0) result.latencyMs = catalog.latencyMs;
|
|
2759
2774
|
if (selected) {
|
|
2760
|
-
result.discoveredCapabilities = capabilities(selected.model, selected.instance);
|
|
2775
|
+
result.discoveredCapabilities = { parallelSlots: 1, ...capabilities(selected.model, selected.instance) };
|
|
2761
2776
|
result.capabilityModelId = configuredModel(target) ?? selected.model.key;
|
|
2762
2777
|
}
|
|
2763
2778
|
const loaded = models.flatMap(
|
|
@@ -2838,6 +2853,10 @@ var defaultCapabilities22 = {
|
|
|
2838
2853
|
function positiveNumber3(value) {
|
|
2839
2854
|
return typeof value === "number" && Number.isFinite(value) && value > 0 ? value : void 0;
|
|
2840
2855
|
}
|
|
2856
|
+
function ollamaParallelSlots() {
|
|
2857
|
+
const parsed = Number(process.env.OLLAMA_NUM_PARALLEL);
|
|
2858
|
+
return Number.isInteger(parsed) && parsed > 0 ? parsed : 1;
|
|
2859
|
+
}
|
|
2841
2860
|
async function probeResidentModelStates(base, ctx) {
|
|
2842
2861
|
const opts = { url: `${base}/api/ps`, timeoutMs: ctx.httpTimeoutMs };
|
|
2843
2862
|
const result = await (ctx.signal ? probeJson({ ...opts, signal: ctx.signal }) : probeJson(opts));
|
|
@@ -2874,7 +2893,7 @@ var ollamaNativeRuntime = {
|
|
|
2874
2893
|
if (result.latencyMs !== void 0) failed.latencyMs = result.latencyMs;
|
|
2875
2894
|
return failed;
|
|
2876
2895
|
}
|
|
2877
|
-
const out = { ok: true };
|
|
2896
|
+
const out = { ok: true, discoveredCapabilities: { parallelSlots: ollamaParallelSlots() } };
|
|
2878
2897
|
if (result.latencyMs !== void 0) out.latencyMs = result.latencyMs;
|
|
2879
2898
|
const modelStates = await probeResidentModelStates(base, ctx);
|
|
2880
2899
|
if (modelStates) out.modelStates = modelStates;
|
|
@@ -2951,6 +2970,164 @@ var vllm_default = makeOpenAICompatRuntime({
|
|
|
2951
2970
|
healthPath: "/health"
|
|
2952
2971
|
});
|
|
2953
2972
|
|
|
2973
|
+
// src/domains/providers/runtimes/protocol/litellm.ts
|
|
2974
|
+
init_esm_shims();
|
|
2975
|
+
var LITELLM_PROVIDER = "litellm";
|
|
2976
|
+
var defaultCapabilities25 = {
|
|
2977
|
+
chat: true,
|
|
2978
|
+
tools: false,
|
|
2979
|
+
reasoning: false,
|
|
2980
|
+
vision: false,
|
|
2981
|
+
audio: false,
|
|
2982
|
+
embeddings: false,
|
|
2983
|
+
rerank: false,
|
|
2984
|
+
fim: false,
|
|
2985
|
+
structuredOutputs: "json-schema",
|
|
2986
|
+
contextWindow: CLIO_MIN_CONTEXT_WINDOW,
|
|
2987
|
+
maxTokens: CLIO_MIN_MAX_OUTPUT_TOKENS
|
|
2988
|
+
};
|
|
2989
|
+
function rootUrl(target) {
|
|
2990
|
+
if (!target.url) return null;
|
|
2991
|
+
const trimmed = stripTrailingSlash(target.url);
|
|
2992
|
+
return trimmed.endsWith("/v1") ? trimmed.slice(0, -"/v1".length) : trimmed;
|
|
2993
|
+
}
|
|
2994
|
+
function bearerHeaders(target, ctx) {
|
|
2995
|
+
const headers = { ...target.auth?.headers ?? {} };
|
|
2996
|
+
const envName = target.auth?.apiKeyEnvVar;
|
|
2997
|
+
const fromEnv = envName && ctx.credentialsPresent.has(envName) ? process.env[envName]?.trim() : void 0;
|
|
2998
|
+
const token = ctx.authToken?.trim() || fromEnv;
|
|
2999
|
+
if (token) headers.authorization = `Bearer ${token}`;
|
|
3000
|
+
return headers;
|
|
3001
|
+
}
|
|
3002
|
+
function positiveInteger(value) {
|
|
3003
|
+
return typeof value === "number" && Number.isFinite(value) && value > 0 ? Math.floor(value) : void 0;
|
|
3004
|
+
}
|
|
3005
|
+
function boolean(value) {
|
|
3006
|
+
return typeof value === "boolean" ? value : void 0;
|
|
3007
|
+
}
|
|
3008
|
+
function capabilitiesFromLiteLLMModelInfo(info) {
|
|
3009
|
+
const caps = {};
|
|
3010
|
+
const contextWindow = positiveInteger(info.max_input_tokens) ?? positiveInteger(info.max_tokens);
|
|
3011
|
+
if (contextWindow !== void 0) caps.contextWindow = contextWindow;
|
|
3012
|
+
const maxTokens = positiveInteger(info.max_output_tokens);
|
|
3013
|
+
if (maxTokens !== void 0) caps.maxTokens = maxTokens;
|
|
3014
|
+
const tools = boolean(info.supports_function_calling);
|
|
3015
|
+
if (tools !== void 0) caps.tools = tools;
|
|
3016
|
+
const vision = boolean(info.supports_vision);
|
|
3017
|
+
if (vision !== void 0) caps.vision = vision;
|
|
3018
|
+
const reasoning = boolean(info.supports_reasoning);
|
|
3019
|
+
if (reasoning !== void 0) caps.reasoning = reasoning;
|
|
3020
|
+
const audio = boolean(info.supports_audio_input);
|
|
3021
|
+
if (audio !== void 0) caps.audio = audio;
|
|
3022
|
+
if (info.mode === "embedding") {
|
|
3023
|
+
caps.chat = false;
|
|
3024
|
+
caps.embeddings = true;
|
|
3025
|
+
}
|
|
3026
|
+
if (info.mode === "rerank") {
|
|
3027
|
+
caps.chat = false;
|
|
3028
|
+
caps.rerank = true;
|
|
3029
|
+
}
|
|
3030
|
+
if (info.mode === "chat") caps.chat = true;
|
|
3031
|
+
if (boolean(info.supports_response_schema) === true) caps.structuredOutputs = "json-schema";
|
|
3032
|
+
return caps;
|
|
3033
|
+
}
|
|
3034
|
+
var EMPTY_CATALOG = { models: [], modelCapabilities: {}, modelStates: {}, deployments: {} };
|
|
3035
|
+
async function fetchCatalog(base, ctx, headers) {
|
|
3036
|
+
const detailOpts = { url: `${base}/v1/model/info`, timeoutMs: ctx.httpTimeoutMs, headers };
|
|
3037
|
+
const detail = await (ctx.signal ? probeJson({ ...detailOpts, signal: ctx.signal }) : probeJson(detailOpts));
|
|
3038
|
+
if (detail.ok && Array.isArray(detail.data?.data)) {
|
|
3039
|
+
const catalog = { models: [], modelCapabilities: {}, modelStates: {}, deployments: {} };
|
|
3040
|
+
for (const row of detail.data.data) {
|
|
3041
|
+
if (typeof row?.model_name !== "string" || row.model_name.length === 0) continue;
|
|
3042
|
+
const alias = row.model_name;
|
|
3043
|
+
if (catalog.deployments[alias] !== void 0) continue;
|
|
3044
|
+
catalog.models.push(alias);
|
|
3045
|
+
const caps = row.model_info ? capabilitiesFromLiteLLMModelInfo(row.model_info) : {};
|
|
3046
|
+
if (Object.keys(caps).length > 0) catalog.modelCapabilities[alias] = caps;
|
|
3047
|
+
const upstream = row.litellm_params?.model;
|
|
3048
|
+
const apiBase = row.litellm_params?.api_base;
|
|
3049
|
+
catalog.deployments[alias] = {
|
|
3050
|
+
model: typeof upstream === "string" ? upstream : alias,
|
|
3051
|
+
...typeof apiBase === "string" ? { apiBase } : {}
|
|
3052
|
+
};
|
|
3053
|
+
}
|
|
3054
|
+
if (catalog.models.length > 0) return catalog;
|
|
3055
|
+
}
|
|
3056
|
+
const listOpts = { url: `${base}/v1/models`, timeoutMs: ctx.httpTimeoutMs, headers };
|
|
3057
|
+
const list = await (ctx.signal ? probeJson({ ...listOpts, signal: ctx.signal }) : probeJson(listOpts));
|
|
3058
|
+
if (!list.ok || !Array.isArray(list.data?.data)) return EMPTY_CATALOG;
|
|
3059
|
+
const models = list.data.data.map((row) => typeof row?.id === "string" ? row.id : null).filter((id) => id !== null && id.length > 0);
|
|
3060
|
+
return { models, modelCapabilities: {}, modelStates: {}, deployments: {} };
|
|
3061
|
+
}
|
|
3062
|
+
var litellmRuntime = {
|
|
3063
|
+
id: "litellm",
|
|
3064
|
+
displayName: "LiteLLM gateway",
|
|
3065
|
+
kind: "http",
|
|
3066
|
+
tier: "protocol",
|
|
3067
|
+
apiFamily: "openai-completions",
|
|
3068
|
+
auth: "api-key",
|
|
3069
|
+
defaultCapabilities: defaultCapabilities25,
|
|
3070
|
+
async probe(target, ctx) {
|
|
3071
|
+
const base = rootUrl(target);
|
|
3072
|
+
if (!base) return { ok: false, error: "target has no url" };
|
|
3073
|
+
const headers = bearerHeaders(target, ctx);
|
|
3074
|
+
const liveOpts = { url: `${base}/health/liveliness`, timeoutMs: ctx.httpTimeoutMs };
|
|
3075
|
+
const live = await (ctx.signal ? probeJson({ ...liveOpts, signal: ctx.signal }) : probeJson(liveOpts));
|
|
3076
|
+
if (!live.ok) return { ok: false, error: live.error ?? "gateway is not reachable" };
|
|
3077
|
+
const catalog = await fetchCatalog(base, ctx, headers);
|
|
3078
|
+
if (catalog.models.length === 0) {
|
|
3079
|
+
const result2 = {
|
|
3080
|
+
ok: false,
|
|
3081
|
+
error: "gateway is live but served no model catalog; check the target's API key"
|
|
3082
|
+
};
|
|
3083
|
+
if (live.latencyMs !== void 0) result2.latencyMs = live.latencyMs;
|
|
3084
|
+
return result2;
|
|
3085
|
+
}
|
|
3086
|
+
const result = { ok: true, models: catalog.models };
|
|
3087
|
+
if (live.latencyMs !== void 0) result.latencyMs = live.latencyMs;
|
|
3088
|
+
if (Object.keys(catalog.modelCapabilities).length > 0) {
|
|
3089
|
+
result.modelCapabilities = catalog.modelCapabilities;
|
|
3090
|
+
const selected = target.defaultModel?.trim();
|
|
3091
|
+
const selectedCaps = selected ? catalog.modelCapabilities[selected] : void 0;
|
|
3092
|
+
if (selected && selectedCaps) {
|
|
3093
|
+
result.discoveredCapabilities = selectedCaps;
|
|
3094
|
+
result.capabilityModelId = selected;
|
|
3095
|
+
}
|
|
3096
|
+
}
|
|
3097
|
+
const notes = [];
|
|
3098
|
+
const configured = target.defaultModel?.trim();
|
|
3099
|
+
if (configured && !catalog.models.includes(configured)) {
|
|
3100
|
+
notes.push(`configured model '${configured}' is not in the gateway catalog`);
|
|
3101
|
+
}
|
|
3102
|
+
const routed = Object.entries(catalog.deployments).map(([alias, deployment]) => `${alias}=${deployment.model}`).sort();
|
|
3103
|
+
if (routed.length > 0) notes.push(`routes: ${routed.join(", ")}`);
|
|
3104
|
+
if (notes.length > 0) result.notes = notes;
|
|
3105
|
+
return result;
|
|
3106
|
+
},
|
|
3107
|
+
async probeModels(target, ctx) {
|
|
3108
|
+
const base = rootUrl(target);
|
|
3109
|
+
if (!base) return [];
|
|
3110
|
+
return (await fetchCatalog(base, ctx, bearerHeaders(target, ctx))).models;
|
|
3111
|
+
},
|
|
3112
|
+
synthesizeModel(target, wireModelId, kb) {
|
|
3113
|
+
return synthLocalModel({
|
|
3114
|
+
// A LiteLLM target is a gateway whether or not settings said so. The
|
|
3115
|
+
// residency layer reads this to stay observe-only: the models behind an
|
|
3116
|
+
// alias are the proxy's to load and evict, and a Clio stream that tried
|
|
3117
|
+
// to manage them would be issuing load commands to a host that does not
|
|
3118
|
+
// take them.
|
|
3119
|
+
target: { ...target, gateway: true },
|
|
3120
|
+
wireModelId,
|
|
3121
|
+
kb,
|
|
3122
|
+
defaultCapabilities: defaultCapabilities25,
|
|
3123
|
+
apiFamily: "openai-completions",
|
|
3124
|
+
provider: LITELLM_PROVIDER,
|
|
3125
|
+
baseUrlForTarget: withV1
|
|
3126
|
+
});
|
|
3127
|
+
}
|
|
3128
|
+
};
|
|
3129
|
+
var litellm_default = litellmRuntime;
|
|
3130
|
+
|
|
2954
3131
|
// src/domains/providers/runtimes/builtins.ts
|
|
2955
3132
|
var BUILTIN_RUNTIMES = [
|
|
2956
3133
|
alcf_default,
|
|
@@ -2974,6 +3151,7 @@ var BUILTIN_RUNTIMES = [
|
|
|
2974
3151
|
lmstudio_default,
|
|
2975
3152
|
ollama_native_default,
|
|
2976
3153
|
anthropic_compat_default,
|
|
3154
|
+
litellm_default,
|
|
2977
3155
|
openai_compat_default,
|
|
2978
3156
|
sglang_default,
|
|
2979
3157
|
vllm_default,
|
|
@@ -3003,4 +3181,4 @@ export {
|
|
|
3003
3181
|
BUILTIN_RUNTIMES,
|
|
3004
3182
|
registerBuiltinRuntimes
|
|
3005
3183
|
};
|
|
3006
|
-
//# sourceMappingURL=chunk-
|
|
3184
|
+
//# sourceMappingURL=chunk-6DB53AJS.js.map
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
import {
|
|
10
10
|
clioStateDir,
|
|
11
11
|
stateRootRemoved
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-BYP5D4HI.js";
|
|
13
13
|
import {
|
|
14
14
|
fsyncDirectory,
|
|
15
15
|
safeResourceWrite
|
|
@@ -567,4 +567,4 @@ export {
|
|
|
567
567
|
openSession,
|
|
568
568
|
resumeSession
|
|
569
569
|
};
|
|
570
|
-
//# sourceMappingURL=chunk-
|
|
570
|
+
//# sourceMappingURL=chunk-76ONBSIA.js.map
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
settingsPath,
|
|
6
6
|
updateSavedSettingsDocument,
|
|
7
7
|
validateSettings
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-VFA6GDY5.js";
|
|
9
9
|
import {
|
|
10
10
|
require_dist
|
|
11
11
|
} from "./chunk-APJ265NV.js";
|
|
@@ -226,4 +226,4 @@ export {
|
|
|
226
226
|
updateLayeredSettings,
|
|
227
227
|
settingsSourceFor
|
|
228
228
|
};
|
|
229
|
-
//# sourceMappingURL=chunk-
|
|
229
|
+
//# sourceMappingURL=chunk-7MCTRUCE.js.map
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
inspectEvidence
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-BUMFYQFY.js";
|
|
5
5
|
import {
|
|
6
6
|
TASK_MEMORY_CONTENT_MAX_CHARS,
|
|
7
7
|
TASK_MEMORY_DEFAULT_KNOWLEDGE_CAP,
|
|
8
|
-
TASK_MEMORY_DEFAULT_PROCEDURAL_CAP
|
|
9
|
-
|
|
8
|
+
TASK_MEMORY_DEFAULT_PROCEDURAL_CAP,
|
|
9
|
+
TASK_MEMORY_TELEMETRY_FILE,
|
|
10
|
+
parseTaskMemoryTelemetryRecord
|
|
11
|
+
} from "./chunk-BKFJHQCA.js";
|
|
10
12
|
import {
|
|
11
13
|
createRedactionTally,
|
|
12
14
|
redactSecretsText
|
|
@@ -16,7 +18,10 @@ import {
|
|
|
16
18
|
} from "./chunk-ECH6PKUQ.js";
|
|
17
19
|
import {
|
|
18
20
|
ceilChars
|
|
19
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-UM7N4G5A.js";
|
|
22
|
+
import {
|
|
23
|
+
clioStateDir
|
|
24
|
+
} from "./chunk-BYP5D4HI.js";
|
|
20
25
|
import {
|
|
21
26
|
safeResourceWrite
|
|
22
27
|
} from "./chunk-WEPFGWHJ.js";
|
|
@@ -1116,6 +1121,30 @@ function compareStrings3(a, b) {
|
|
|
1116
1121
|
return a.localeCompare(b);
|
|
1117
1122
|
}
|
|
1118
1123
|
|
|
1124
|
+
// src/domains/memory/task-bank-promotion.ts
|
|
1125
|
+
init_esm_shims();
|
|
1126
|
+
async function proposeInjectedTaskMemory(dataDir, input) {
|
|
1127
|
+
const result = { records: [], errors: [] };
|
|
1128
|
+
const sessionId = input.sessionId;
|
|
1129
|
+
const repository = canonicalMemoryRepositoryIdentity(input.cwd);
|
|
1130
|
+
if (sessionId === null || sessionId.length === 0 || repository === null) return result;
|
|
1131
|
+
for (const entry of input.entries) {
|
|
1132
|
+
if (entry.kind === "status") continue;
|
|
1133
|
+
try {
|
|
1134
|
+
const proposal = await proposeMemoryPromotion(
|
|
1135
|
+
dataDir,
|
|
1136
|
+
{ kind: "task-bank-entry", sessionId, evidenceRefs: [`session:${sessionId}`], entry },
|
|
1137
|
+
{ scope: "repo", repository },
|
|
1138
|
+
input.now ?? /* @__PURE__ */ new Date()
|
|
1139
|
+
);
|
|
1140
|
+
result.records.push(proposal.record);
|
|
1141
|
+
} catch (error) {
|
|
1142
|
+
result.errors.push(`${entry.id}: ${error instanceof Error ? error.message : String(error)}`);
|
|
1143
|
+
}
|
|
1144
|
+
}
|
|
1145
|
+
return result;
|
|
1146
|
+
}
|
|
1147
|
+
|
|
1119
1148
|
// src/domains/memory/task-memory-handoff.ts
|
|
1120
1149
|
init_esm_shims();
|
|
1121
1150
|
import { existsSync, readdirSync, readFileSync as readFileSync2, statSync } from "node:fs";
|
|
@@ -1367,6 +1396,80 @@ function compareStrings4(left, right) {
|
|
|
1367
1396
|
return left < right ? -1 : left > right ? 1 : 0;
|
|
1368
1397
|
}
|
|
1369
1398
|
|
|
1399
|
+
// src/domains/memory/task-memory-spend.ts
|
|
1400
|
+
init_esm_shims();
|
|
1401
|
+
import { readFileSync as readFileSync3, statSync as statSync2 } from "node:fs";
|
|
1402
|
+
import { join as join3 } from "node:path";
|
|
1403
|
+
function taskMemoryStepsPath(stateDir = clioStateDir()) {
|
|
1404
|
+
return join3(stateDir, "memory", TASK_MEMORY_TELEMETRY_FILE);
|
|
1405
|
+
}
|
|
1406
|
+
function emptyTaskMemorySpendSummary() {
|
|
1407
|
+
return {
|
|
1408
|
+
llmSteps: 0,
|
|
1409
|
+
injections: 0,
|
|
1410
|
+
hitRate: 0,
|
|
1411
|
+
inputTokens: 0,
|
|
1412
|
+
outputTokens: 0,
|
|
1413
|
+
totalTokens: 0,
|
|
1414
|
+
modelMs: 0,
|
|
1415
|
+
slowestStepMs: 0,
|
|
1416
|
+
timeouts: 0,
|
|
1417
|
+
endpointBusySkips: 0,
|
|
1418
|
+
firstAt: null,
|
|
1419
|
+
lastAt: null
|
|
1420
|
+
};
|
|
1421
|
+
}
|
|
1422
|
+
function foldTaskMemorySpend(lines) {
|
|
1423
|
+
const summary = emptyTaskMemorySpendSummary();
|
|
1424
|
+
for (const line of lines) {
|
|
1425
|
+
if (line.trim().length === 0) continue;
|
|
1426
|
+
let parsed;
|
|
1427
|
+
try {
|
|
1428
|
+
parsed = JSON.parse(line);
|
|
1429
|
+
} catch {
|
|
1430
|
+
continue;
|
|
1431
|
+
}
|
|
1432
|
+
const record = parseTaskMemoryTelemetryRecord(parsed);
|
|
1433
|
+
if (record === null) continue;
|
|
1434
|
+
if (summary.firstAt === null || record.at < summary.firstAt) summary.firstAt = record.at;
|
|
1435
|
+
if (summary.lastAt === null || record.at > summary.lastAt) summary.lastAt = record.at;
|
|
1436
|
+
if (record.reason === "endpoint_busy") summary.endpointBusySkips += 1;
|
|
1437
|
+
if (record.tier !== "llm") continue;
|
|
1438
|
+
summary.llmSteps += 1;
|
|
1439
|
+
if (record.decision === "injected") summary.injections += 1;
|
|
1440
|
+
if (record.decision === "timeout") summary.timeouts += 1;
|
|
1441
|
+
summary.inputTokens += record.tokenCost.input;
|
|
1442
|
+
summary.outputTokens += record.tokenCost.output;
|
|
1443
|
+
summary.totalTokens += record.tokenCost.total;
|
|
1444
|
+
summary.modelMs += record.latencyMs;
|
|
1445
|
+
summary.slowestStepMs = Math.max(summary.slowestStepMs, record.latencyMs);
|
|
1446
|
+
}
|
|
1447
|
+
summary.hitRate = summary.llmSteps === 0 ? 0 : summary.injections / summary.llmSteps;
|
|
1448
|
+
return summary;
|
|
1449
|
+
}
|
|
1450
|
+
var spendCache = /* @__PURE__ */ new Map();
|
|
1451
|
+
function readTaskMemorySpendSummary(stateDir = clioStateDir()) {
|
|
1452
|
+
const path = taskMemoryStepsPath(stateDir);
|
|
1453
|
+
try {
|
|
1454
|
+
const info = statSync2(path);
|
|
1455
|
+
const cached = spendCache.get(path);
|
|
1456
|
+
if (cached !== void 0 && cached.mtimeMs === info.mtimeMs && cached.size === info.size) return cached.summary;
|
|
1457
|
+
const summary = foldTaskMemorySpend(readFileSync3(path, "utf8").split("\n"));
|
|
1458
|
+
spendCache.set(path, { mtimeMs: info.mtimeMs, size: info.size, summary });
|
|
1459
|
+
return summary;
|
|
1460
|
+
} catch {
|
|
1461
|
+
return emptyTaskMemorySpendSummary();
|
|
1462
|
+
}
|
|
1463
|
+
}
|
|
1464
|
+
function formatTaskMemorySpend(summary) {
|
|
1465
|
+
if (summary.llmSteps === 0) return "";
|
|
1466
|
+
const tokens = summary.totalTokens >= 1e3 ? `${(summary.totalTokens / 1e3).toFixed(1)}k tok` : `${summary.totalTokens} tok`;
|
|
1467
|
+
const seconds = summary.modelMs / 1e3;
|
|
1468
|
+
const time = seconds >= 60 ? `${(seconds / 60).toFixed(1)}m` : `${seconds.toFixed(1)}s`;
|
|
1469
|
+
const rate = `${Math.round(summary.hitRate * 100)}%`;
|
|
1470
|
+
return `spend ${summary.llmSteps} steps \xB7 ${tokens} \xB7 ${time} \xB7 hit ${summary.injections}/${summary.llmSteps} (${rate})`;
|
|
1471
|
+
}
|
|
1472
|
+
|
|
1370
1473
|
// src/domains/memory/task-memory-status.ts
|
|
1371
1474
|
init_esm_shims();
|
|
1372
1475
|
function describeTaskMemoryActivity(event) {
|
|
@@ -1441,13 +1544,16 @@ export {
|
|
|
1441
1544
|
proposeMemoryPromotion,
|
|
1442
1545
|
buildMemoryPromptSection,
|
|
1443
1546
|
proposeMemoryFromEvidence,
|
|
1547
|
+
proposeInjectedTaskMemory,
|
|
1444
1548
|
renderTaskMemoryHandoffSource,
|
|
1445
1549
|
parseTaskMemoryHandoffSnapshot,
|
|
1446
1550
|
taskMemoryHandoffSeedOffer,
|
|
1447
1551
|
seedTaskMemoryFromNewestHandoff,
|
|
1552
|
+
readTaskMemorySpendSummary,
|
|
1553
|
+
formatTaskMemorySpend,
|
|
1448
1554
|
describeTaskMemoryActivity,
|
|
1449
1555
|
taskMemoryBankSize,
|
|
1450
1556
|
taskMemoryTracePath,
|
|
1451
1557
|
createTaskMemoryTrace
|
|
1452
1558
|
};
|
|
1453
|
-
//# sourceMappingURL=chunk-
|
|
1559
|
+
//# sourceMappingURL=chunk-AB44T6BB.js.map
|