@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
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
init_esm_shims
|
|
4
|
+
} from "./chunk-3R73A4XB.js";
|
|
5
|
+
|
|
6
|
+
// src/domains/safety/call-target.ts
|
|
7
|
+
init_esm_shims();
|
|
8
|
+
|
|
9
|
+
// src/domains/safety/redaction.ts
|
|
10
|
+
init_esm_shims();
|
|
11
|
+
function isPlainObject(value) {
|
|
12
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
13
|
+
}
|
|
14
|
+
var SECRET_KEY_RE = /(?:api[-_]?key|access[-_]?key|auth(?:orization)?|credential|password|private[-_]?key|secret|token)/iu;
|
|
15
|
+
var ENV_KEY_RE = /^env(?:ironment)?$/iu;
|
|
16
|
+
var SECRET_STRING_RE = /(https?:\/\/[^\s/@]+:)[^\s/@]+@/giu;
|
|
17
|
+
var SECRET_URL_PARAM_RE = /([?&](?:api[-_]?key|access[-_]?token|auth(?:orization)?|credential|password|secret|token)[^=\s]*=)[^&#\s]+/giu;
|
|
18
|
+
var SECRET_ASSIGNMENT_RE = /(?<![A-Z0-9_])((?:[A-Z0-9_]*(?:ACCESS|API|AUTH|CREDENTIAL|KEY|PASS(?:WORD)?|PRIVATE|SECRET|TOKEN)[A-Z0-9_]*)=)[^\s;&|]+/giu;
|
|
19
|
+
var SECRET_FLAG_RE = /(--?(?:[a-z0-9-]*(?:api[-_]?key|access[-_]?token|auth(?:orization)?|credential|password|secret|token)[a-z0-9-]*))(=|\s+)([^\s;&|]+)/giu;
|
|
20
|
+
function redactSecretString(value) {
|
|
21
|
+
return value.replace(SECRET_STRING_RE, "$1[redacted]@").replace(SECRET_URL_PARAM_RE, "$1[redacted]").replace(SECRET_ASSIGNMENT_RE, "$1[redacted]").replace(SECRET_FLAG_RE, "$1$2[redacted]");
|
|
22
|
+
}
|
|
23
|
+
function isSecretArgKey(key) {
|
|
24
|
+
return SECRET_KEY_RE.test(key);
|
|
25
|
+
}
|
|
26
|
+
function isEnvironmentArgKey(key) {
|
|
27
|
+
return ENV_KEY_RE.test(key);
|
|
28
|
+
}
|
|
29
|
+
function redactEnvironmentValue(value, depth) {
|
|
30
|
+
if (depth > 8) return "[redacted nested values]";
|
|
31
|
+
if (typeof value === "string") return "[redacted]";
|
|
32
|
+
if (Array.isArray(value)) return value.map((item) => redactEnvironmentValue(item, depth + 1));
|
|
33
|
+
if (!isPlainObject(value)) return value;
|
|
34
|
+
const out = {};
|
|
35
|
+
for (const [childKey, childValue] of Object.entries(value)) {
|
|
36
|
+
out[childKey] = redactEnvironmentValue(childValue, depth + 1);
|
|
37
|
+
}
|
|
38
|
+
return out;
|
|
39
|
+
}
|
|
40
|
+
function redactToolArgs(value, key = "", depth = 0) {
|
|
41
|
+
if (isSecretArgKey(key)) return "[redacted]";
|
|
42
|
+
if (isEnvironmentArgKey(key)) return redactEnvironmentValue(value, depth);
|
|
43
|
+
if (typeof value === "string") return redactSecretString(value);
|
|
44
|
+
if (depth > 8) return "[redacted nested values]";
|
|
45
|
+
if (Array.isArray(value)) return value.map((item) => redactToolArgs(item, key, depth + 1));
|
|
46
|
+
if (!isPlainObject(value)) return value;
|
|
47
|
+
const out = {};
|
|
48
|
+
for (const [childKey, childValue] of Object.entries(value)) {
|
|
49
|
+
out[childKey] = redactToolArgs(childValue, childKey, depth + 1);
|
|
50
|
+
}
|
|
51
|
+
return out;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// src/domains/safety/call-target.ts
|
|
55
|
+
var ESC_CHAR = String.fromCharCode(27);
|
|
56
|
+
var BEL_CHAR = String.fromCharCode(7);
|
|
57
|
+
var OSC_PATTERN = new RegExp(`${ESC_CHAR}\\][\\s\\S]*?(?:${BEL_CHAR}|${ESC_CHAR}\\\\|$)`, "g");
|
|
58
|
+
var CSI_PATTERN = new RegExp(`${ESC_CHAR}\\[[0-9;?]*[0-9A-Za-z]`, "g");
|
|
59
|
+
function sanitizeForDisplay(value) {
|
|
60
|
+
const stripped = value.replace(OSC_PATTERN, "").replace(CSI_PATTERN, "");
|
|
61
|
+
let out = "";
|
|
62
|
+
for (const ch of stripped) {
|
|
63
|
+
const code = ch.codePointAt(0) ?? 0;
|
|
64
|
+
out += code < 32 || code === 127 ? " " : ch;
|
|
65
|
+
}
|
|
66
|
+
return out;
|
|
67
|
+
}
|
|
68
|
+
function oneLine(value) {
|
|
69
|
+
return value.replace(/\s+/g, " ").trim();
|
|
70
|
+
}
|
|
71
|
+
var DISPLAY_TAB_WIDTH = 4;
|
|
72
|
+
var CONTROL_BYTE_PLACEHOLDER = "\xB7";
|
|
73
|
+
function sanitizeMultilineDisplayText(value) {
|
|
74
|
+
const escapesStripped = value.replace(OSC_PATTERN, "").replace(CSI_PATTERN, "");
|
|
75
|
+
let neutralized = escapesStripped.length !== value.length;
|
|
76
|
+
const stripped = escapesStripped.replace(/\r\n/g, "\n");
|
|
77
|
+
let tabsExpanded = false;
|
|
78
|
+
let out = "";
|
|
79
|
+
for (const ch of stripped) {
|
|
80
|
+
if (ch === "\n") {
|
|
81
|
+
out += ch;
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (ch === " ") {
|
|
85
|
+
out += " ".repeat(DISPLAY_TAB_WIDTH);
|
|
86
|
+
tabsExpanded = true;
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
const code = ch.codePointAt(0) ?? 0;
|
|
90
|
+
if (code < 32 || code === 127) {
|
|
91
|
+
out += CONTROL_BYTE_PLACEHOLDER;
|
|
92
|
+
neutralized = true;
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
out += ch;
|
|
96
|
+
}
|
|
97
|
+
return { text: out, neutralized, tabsExpanded };
|
|
98
|
+
}
|
|
99
|
+
function sanitizeCallTargetText(value) {
|
|
100
|
+
return oneLine(sanitizeForDisplay(value));
|
|
101
|
+
}
|
|
102
|
+
var CALL_ACTION_OBJECT_MAX_CHARS = 64;
|
|
103
|
+
var CALL_TARGET_MAX_CHARS = 120;
|
|
104
|
+
var CALL_ACTION_VOCABULARY = {
|
|
105
|
+
read: { verb: "reading", field: "path" },
|
|
106
|
+
edit: { verb: "editing", field: "path" },
|
|
107
|
+
write: { verb: "writing", field: "path" },
|
|
108
|
+
ls: { verb: "listing", field: "path" },
|
|
109
|
+
bash: { verb: "running", field: "command" },
|
|
110
|
+
grep: { verb: "searching", field: "pattern" },
|
|
111
|
+
find: { verb: "finding", field: "pattern" },
|
|
112
|
+
web_fetch: { verb: "fetching", field: "url" },
|
|
113
|
+
git: { verb: "git", field: "op" },
|
|
114
|
+
verify: { verb: "verifying", field: "check" },
|
|
115
|
+
code_nav: { verb: "navigating", field: "query" },
|
|
116
|
+
context: { verb: "context", field: "scope" },
|
|
117
|
+
artifact: { verb: "writing", field: "kind" },
|
|
118
|
+
monitor: { verb: "monitoring", field: "run_id" },
|
|
119
|
+
steer: { verb: "steering", field: "run_id" },
|
|
120
|
+
tasks: { verb: "tasks", field: "action" },
|
|
121
|
+
dispatch: { verb: "dispatching", field: "agent" },
|
|
122
|
+
// ACP tool kinds. A peer names its own argument fields, so these rely on
|
|
123
|
+
// the shared allowlist below rather than on a field this side can predict.
|
|
124
|
+
execute: { verb: "running", field: "command" },
|
|
125
|
+
search: { verb: "searching", field: "query" },
|
|
126
|
+
fetch: { verb: "fetching", field: "url" },
|
|
127
|
+
delete: { verb: "deleting", field: "path" },
|
|
128
|
+
move: { verb: "moving", field: "path" },
|
|
129
|
+
think: { verb: "thinking", field: "" }
|
|
130
|
+
};
|
|
131
|
+
var CALL_ACTION_OBJECT_FIELDS = ["path", "file_path", "command", "pattern", "query", "url"];
|
|
132
|
+
var CALL_TARGET_FIELDS = {
|
|
133
|
+
read: ["path", "offset", "limit", "tail"],
|
|
134
|
+
grep: ["pattern", "path", "mode", "glob", "ignore_case", "literal", "context", "limit", "include_ignored"],
|
|
135
|
+
find: ["pattern", "path", "order", "limit", "include_ignored"],
|
|
136
|
+
ls: ["path", "limit"],
|
|
137
|
+
code_nav: ["mode", "query", "limit"],
|
|
138
|
+
context: ["scope", "query", "name", "limit", "ref", "include_tree"],
|
|
139
|
+
credential_present: ["name", "source", "file"],
|
|
140
|
+
write: ["path"],
|
|
141
|
+
edit: ["path"],
|
|
142
|
+
bash: ["command", "cwd", "timeout_ms", "output_policy"],
|
|
143
|
+
git: ["op", "path", "cached", "stat", "name_only", "limit", "cwd", "timeout_ms", "max_output_bytes"],
|
|
144
|
+
verify: ["check", "path", "browser", "cwd", "timeout_ms", "max_output_bytes"],
|
|
145
|
+
dispatch: [
|
|
146
|
+
"list",
|
|
147
|
+
"mode",
|
|
148
|
+
"agent",
|
|
149
|
+
"target",
|
|
150
|
+
"model",
|
|
151
|
+
"node",
|
|
152
|
+
"autonomy",
|
|
153
|
+
"tool_profile",
|
|
154
|
+
"thinking_level",
|
|
155
|
+
"detach",
|
|
156
|
+
"timeout_ms"
|
|
157
|
+
],
|
|
158
|
+
monitor: ["run_id", "mode"],
|
|
159
|
+
steer: ["run_id", "action"],
|
|
160
|
+
tasks: ["action", "id"],
|
|
161
|
+
ledger: ["action", "kind", "path", "line", "target", "passed", "since"],
|
|
162
|
+
web_fetch: ["url", "method", "timeout_ms", "max_bytes", "format"],
|
|
163
|
+
ask_user: ["action", "mode", "max_rounds", "exposure"],
|
|
164
|
+
artifact: ["kind", "path", "title"],
|
|
165
|
+
// ACP tool kinds use only fields whose meaning the protocol defines.
|
|
166
|
+
execute: ["command", "cwd"],
|
|
167
|
+
search: ["query", "path"],
|
|
168
|
+
fetch: ["url", "method"],
|
|
169
|
+
delete: ["path"],
|
|
170
|
+
move: ["path", "target"]
|
|
171
|
+
};
|
|
172
|
+
function boundActionObject(value) {
|
|
173
|
+
if (typeof value !== "string") return null;
|
|
174
|
+
const clean = sanitizeCallTargetText(redactSecretString(value));
|
|
175
|
+
if (clean.length === 0) return null;
|
|
176
|
+
if (clean.length <= CALL_ACTION_OBJECT_MAX_CHARS) return { object: clean, truncated: false };
|
|
177
|
+
return { object: clean.slice(0, CALL_ACTION_OBJECT_MAX_CHARS), truncated: true };
|
|
178
|
+
}
|
|
179
|
+
function describeCallAction(tool, args) {
|
|
180
|
+
const known = CALL_ACTION_VOCABULARY[tool];
|
|
181
|
+
const candidates = known?.field ? [known.field, ...CALL_ACTION_OBJECT_FIELDS] : [...CALL_ACTION_OBJECT_FIELDS];
|
|
182
|
+
let bounded = null;
|
|
183
|
+
if (args) {
|
|
184
|
+
for (const field of candidates) {
|
|
185
|
+
if (isSecretArgKey(field)) continue;
|
|
186
|
+
bounded = boundActionObject(args[field]);
|
|
187
|
+
if (bounded !== null) break;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
if (known === void 0 && bounded === null) return null;
|
|
191
|
+
const verb = known?.verb ?? "calling";
|
|
192
|
+
if (bounded === null) return { verb };
|
|
193
|
+
return { verb, object: bounded.object, ...bounded.truncated ? { truncated: true } : {} };
|
|
194
|
+
}
|
|
195
|
+
function renderAllowedTargetValue(value) {
|
|
196
|
+
if (typeof value === "string") {
|
|
197
|
+
const rendered = sanitizeCallTargetText(redactSecretString(value));
|
|
198
|
+
return rendered.length > 0 ? rendered : null;
|
|
199
|
+
}
|
|
200
|
+
if (typeof value === "number" && Number.isFinite(value)) return String(value);
|
|
201
|
+
if (typeof value === "boolean") return String(value);
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
204
|
+
function countLabel(count, singular, plural) {
|
|
205
|
+
return `${count} ${count === 1 ? singular : plural}`;
|
|
206
|
+
}
|
|
207
|
+
function summarizeUnlistedTargetValue(value) {
|
|
208
|
+
if (typeof value === "string") {
|
|
209
|
+
return `<string ${countLabel(Buffer.byteLength(value, "utf8"), "byte", "bytes")}>`;
|
|
210
|
+
}
|
|
211
|
+
if (Array.isArray(value)) return `<array ${countLabel(value.length, "item", "items")}>`;
|
|
212
|
+
if (value !== null && typeof value === "object") {
|
|
213
|
+
return `<object ${countLabel(Object.keys(value).length, "field", "fields")}>`;
|
|
214
|
+
}
|
|
215
|
+
if (value === null) return "<null 0 values>";
|
|
216
|
+
if (typeof value === "undefined") return "<undefined 0 values>";
|
|
217
|
+
return `<${typeof value} 1 value>`;
|
|
218
|
+
}
|
|
219
|
+
function targetFieldName(value) {
|
|
220
|
+
return sanitizeCallTargetText(value).slice(0, 32) || "field";
|
|
221
|
+
}
|
|
222
|
+
function describeCallTarget(tool, args) {
|
|
223
|
+
if (!args) return "";
|
|
224
|
+
const allowedFields = CALL_TARGET_FIELDS[tool] ?? [];
|
|
225
|
+
const allowed = new Set(allowedFields);
|
|
226
|
+
const parts = [];
|
|
227
|
+
for (const field of allowedFields) {
|
|
228
|
+
if (!(field in args)) continue;
|
|
229
|
+
if (isSecretArgKey(field)) {
|
|
230
|
+
parts.push(`${targetFieldName(field)}=${summarizeUnlistedTargetValue(args[field])}`);
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
const rendered = renderAllowedTargetValue(args[field]);
|
|
234
|
+
if (rendered === null) {
|
|
235
|
+
parts.push(`${targetFieldName(field)}=${summarizeUnlistedTargetValue(args[field])}`);
|
|
236
|
+
continue;
|
|
237
|
+
}
|
|
238
|
+
parts.push(parts.length === 0 ? rendered : `${targetFieldName(field)}=${rendered}`);
|
|
239
|
+
}
|
|
240
|
+
for (const [field, value] of Object.entries(args)) {
|
|
241
|
+
if (allowed.has(field)) continue;
|
|
242
|
+
parts.push(`${targetFieldName(field)}=${summarizeUnlistedTargetValue(value)}`);
|
|
243
|
+
}
|
|
244
|
+
return sanitizeCallTargetText(parts.join(" \xB7 ")).slice(0, CALL_TARGET_MAX_CHARS);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
export {
|
|
248
|
+
redactSecretString,
|
|
249
|
+
redactToolArgs,
|
|
250
|
+
sanitizeMultilineDisplayText,
|
|
251
|
+
sanitizeCallTargetText,
|
|
252
|
+
describeCallAction,
|
|
253
|
+
describeCallTarget
|
|
254
|
+
};
|
|
255
|
+
//# sourceMappingURL=chunk-TVHHYFHE.js.map
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
} from "./chunk-5B2AEOW5.js";
|
|
5
5
|
import {
|
|
6
6
|
ToolNames
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-K6BSR66V.js";
|
|
8
8
|
import {
|
|
9
9
|
StringEnum
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-UOSL25KY.js";
|
|
11
11
|
import {
|
|
12
12
|
init_esm_shims
|
|
13
13
|
} from "./chunk-3R73A4XB.js";
|
|
@@ -45,4 +45,4 @@ var monitorToolSurface = {
|
|
|
45
45
|
export {
|
|
46
46
|
monitorToolSurface
|
|
47
47
|
};
|
|
48
|
-
//# sourceMappingURL=chunk-
|
|
48
|
+
//# sourceMappingURL=chunk-TZ3SGWZZ.js.map
|
|
@@ -4,17 +4,17 @@ import {
|
|
|
4
4
|
normalizeWriteBoundary,
|
|
5
5
|
normalizeWriteBoundaryEntry,
|
|
6
6
|
writeBoundaryCovers
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-CTJ4RNAA.js";
|
|
8
8
|
import {
|
|
9
9
|
asDirectoryPathBoundary,
|
|
10
10
|
pathBoundaryEntryCovers
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-HHV2GANA.js";
|
|
12
12
|
import {
|
|
13
13
|
atomicWrite
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-76ONBSIA.js";
|
|
15
15
|
import {
|
|
16
16
|
clioStateDir
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-BYP5D4HI.js";
|
|
18
18
|
import {
|
|
19
19
|
init_esm_shims
|
|
20
20
|
} from "./chunk-3R73A4XB.js";
|
|
@@ -542,6 +542,39 @@ function createCandidateWorktree(ownership, index, baseline) {
|
|
|
542
542
|
git2(ownership.root, ["worktree", "add", "-b", branch, path, baseline]);
|
|
543
543
|
return { index, branch, path };
|
|
544
544
|
}
|
|
545
|
+
async function createCandidateWorktreeMapped(ownership, index, baseline, mux) {
|
|
546
|
+
assertOwnership2(ownership);
|
|
547
|
+
const branch = competeBranch(ownership.group, index);
|
|
548
|
+
const path = join2(ownership.directory, `candidate-${index}`);
|
|
549
|
+
if (!isCanonicalPathInside(ownership.directory, path)) {
|
|
550
|
+
throw new Error(`candidate ${index} path escapes compete group ${ownership.group}`);
|
|
551
|
+
}
|
|
552
|
+
let fallback = "mux-unavailable";
|
|
553
|
+
if (mux?.available()) {
|
|
554
|
+
const created = await mux.worktreeCreate({
|
|
555
|
+
cwd: ownership.root,
|
|
556
|
+
branch,
|
|
557
|
+
base: baseline,
|
|
558
|
+
path,
|
|
559
|
+
label: `clio compete ${ownership.group} candidate ${index}`,
|
|
560
|
+
focus: false
|
|
561
|
+
}).catch(() => null);
|
|
562
|
+
if (created !== null) {
|
|
563
|
+
if (resolve2(created.worktree.path) !== resolve2(path) || created.worktree.branch !== branch) {
|
|
564
|
+
throw new Error(`herdr created candidate ${index} at an unexpected path or branch`);
|
|
565
|
+
}
|
|
566
|
+
return {
|
|
567
|
+
index,
|
|
568
|
+
branch,
|
|
569
|
+
path,
|
|
570
|
+
provenance: { backend: "herdr", path, branch, workspaceId: created.workspaceId }
|
|
571
|
+
};
|
|
572
|
+
}
|
|
573
|
+
fallback = "mux-operation-failed";
|
|
574
|
+
}
|
|
575
|
+
const native = createCandidateWorktree(ownership, index, baseline);
|
|
576
|
+
return { ...native, provenance: { backend: "native", path, branch, fallback } };
|
|
577
|
+
}
|
|
545
578
|
function commitCandidateWork(worktree, message) {
|
|
546
579
|
return commitWorktreePath(worktree.path, COMPETE_COMMIT_IDENTITY, message);
|
|
547
580
|
}
|
|
@@ -588,6 +621,13 @@ function removeCandidateWorktree(ownership, worktree, deleteBranch) {
|
|
|
588
621
|
throw new Error(`failed to remove candidate ${worktree.index} from compete group ${ownership.group}`);
|
|
589
622
|
}
|
|
590
623
|
}
|
|
624
|
+
async function removeCandidateWorktreeMapped(ownership, worktree, deleteBranch, mux) {
|
|
625
|
+
const workspaceId = worktree.provenance?.backend === "herdr" ? worktree.provenance.workspaceId : void 0;
|
|
626
|
+
if (workspaceId && mux?.available()) {
|
|
627
|
+
await mux.worktreeRemove(workspaceId, { force: true }).catch(() => false);
|
|
628
|
+
}
|
|
629
|
+
removeCandidateWorktree(ownership, worktree, deleteBranch);
|
|
630
|
+
}
|
|
591
631
|
function mergeWinnerBranch(root, branch) {
|
|
592
632
|
return mergeWorktreeBranch(root, branch, COMPETE_COMMIT_IDENTITY);
|
|
593
633
|
}
|
|
@@ -839,6 +879,20 @@ function diffWorkspace(snapshot) {
|
|
|
839
879
|
}
|
|
840
880
|
return changes;
|
|
841
881
|
}
|
|
882
|
+
function describeWriteBoundaryAttributionDowngrade(downgrade) {
|
|
883
|
+
if (downgrade.reason === "opaque_tool_succeeded") {
|
|
884
|
+
const tool = downgrade.tool ?? "unknown";
|
|
885
|
+
const call = downgrade.toolCallId === null ? "" : ` (call ${downgrade.toolCallId})`;
|
|
886
|
+
return `a successful '${tool}' call${call} can write paths its arguments do not name`;
|
|
887
|
+
}
|
|
888
|
+
if (downgrade.reason === "incomplete_tool_telemetry") {
|
|
889
|
+
return downgrade.runId === null ? "tool telemetry was incomplete" : `run '${downgrade.runId}' reported incomplete tool telemetry`;
|
|
890
|
+
}
|
|
891
|
+
if (downgrade.reason === "code_step_untracked") {
|
|
892
|
+
return downgrade.stepId === null ? "a code step ran through the untracked command runner" : `code step '${downgrade.stepId}' ran through the untracked command runner`;
|
|
893
|
+
}
|
|
894
|
+
return downgrade.stepId === null ? "no usable write record was available" : `step '${downgrade.stepId}' supplied no usable write record`;
|
|
895
|
+
}
|
|
842
896
|
function canonicalVerdict(verdict) {
|
|
843
897
|
return JSON.stringify(verdict);
|
|
844
898
|
}
|
|
@@ -893,6 +947,15 @@ function enforceWriteBoundary(input) {
|
|
|
893
947
|
const changes = diffWorkspace(input.snapshot);
|
|
894
948
|
const outside = changes.filter((change) => !writeBoundaryCovers(allow, change.path));
|
|
895
949
|
const attributionComplete = input.attribution?.complete === true;
|
|
950
|
+
const attributionDowngrades = attributionComplete ? [] : input.attribution?.downgrades !== void 0 && input.attribution.downgrades.length > 0 ? input.attribution.downgrades.map((entry) => ({ ...entry })) : [
|
|
951
|
+
{
|
|
952
|
+
reason: "write_record_unavailable",
|
|
953
|
+
tool: null,
|
|
954
|
+
toolCallId: null,
|
|
955
|
+
runId: null,
|
|
956
|
+
stepId: input.stepIds.length === 1 ? input.stepIds[0] ?? null : null
|
|
957
|
+
}
|
|
958
|
+
];
|
|
896
959
|
const recorded = /* @__PURE__ */ new Set();
|
|
897
960
|
for (const target of input.attribution?.recorded ?? []) {
|
|
898
961
|
const relativeTarget = repoRelative(input.snapshot.root, target);
|
|
@@ -914,7 +977,7 @@ function enforceWriteBoundary(input) {
|
|
|
914
977
|
`Unauthorized paths: ${violations.map((change) => change.path).join(", ")}.`,
|
|
915
978
|
`Declared writes: ${describeWriteBoundary(allow)}.`,
|
|
916
979
|
status === "rolled-back" ? "Those paths were rolled back to the baseline commit." : `Rollback is incomplete; the working tree is left as the step made it. Unrestorable: ${unrecoverable.map((entry) => `${entry.path} (${entry.reason})`).join("; ")}.`,
|
|
917
|
-
attributionComplete ? "Each was blamed on this window because a run in it recorded writing that path." :
|
|
980
|
+
attributionComplete ? "Each was blamed on this window because a run in it recorded writing that path." : `Attribution was incomplete because ${attributionDowngrades.map(describeWriteBoundaryAttributionDowngrade).join("; ")}, so every change outside the declaration was blamed on this window.`,
|
|
918
981
|
"If the change was legitimate, widen the step's `writes:` declaration to cover it."
|
|
919
982
|
];
|
|
920
983
|
const concurrentDetail = unattributed.length === 0 ? [] : [
|
|
@@ -934,6 +997,7 @@ function enforceWriteBoundary(input) {
|
|
|
934
997
|
violations: violations.map((change) => change.path),
|
|
935
998
|
unattributed: unattributed.map((change) => change.path),
|
|
936
999
|
attributionComplete,
|
|
1000
|
+
attributionDowngrades,
|
|
937
1001
|
rolledBack,
|
|
938
1002
|
unrecoverable,
|
|
939
1003
|
status,
|
|
@@ -1024,16 +1088,32 @@ function createWriteBoundaryEnforcer(input) {
|
|
|
1024
1088
|
const recordedWritesFor = input.recordedWritesFor;
|
|
1025
1089
|
if (recordedWritesFor === void 0) return void 0;
|
|
1026
1090
|
const recorded = /* @__PURE__ */ new Set();
|
|
1091
|
+
const downgrades = [];
|
|
1027
1092
|
let complete = true;
|
|
1028
1093
|
for (const stepId of stepIds) {
|
|
1029
1094
|
const observed = recordedWritesFor(stepId);
|
|
1030
1095
|
if (observed === null) {
|
|
1031
1096
|
complete = false;
|
|
1097
|
+
downgrades.push({
|
|
1098
|
+
reason: "write_record_unavailable",
|
|
1099
|
+
tool: null,
|
|
1100
|
+
toolCallId: null,
|
|
1101
|
+
runId: null,
|
|
1102
|
+
stepId
|
|
1103
|
+
});
|
|
1032
1104
|
continue;
|
|
1033
1105
|
}
|
|
1034
|
-
|
|
1106
|
+
if (!("recorded" in observed)) {
|
|
1107
|
+
for (const target of observed) recorded.add(target);
|
|
1108
|
+
continue;
|
|
1109
|
+
}
|
|
1110
|
+
for (const target of observed.recorded) recorded.add(target);
|
|
1111
|
+
if (!observed.complete) complete = false;
|
|
1112
|
+
for (const downgrade of observed.downgrades ?? []) {
|
|
1113
|
+
downgrades.push({ ...downgrade, stepId: downgrade.stepId ?? stepId });
|
|
1114
|
+
}
|
|
1035
1115
|
}
|
|
1036
|
-
return { recorded: [...recorded].sort(), complete };
|
|
1116
|
+
return { recorded: [...recorded].sort(), complete, downgrades };
|
|
1037
1117
|
};
|
|
1038
1118
|
return {
|
|
1039
1119
|
begin(window, stepIds) {
|
|
@@ -1083,18 +1163,19 @@ export {
|
|
|
1083
1163
|
settleCompeteGroupRun,
|
|
1084
1164
|
markCompeteGroupCleanupReady,
|
|
1085
1165
|
markCompeteGroupWinnerPreserved,
|
|
1086
|
-
|
|
1166
|
+
createCandidateWorktreeMapped,
|
|
1087
1167
|
commitCandidateWork,
|
|
1088
1168
|
candidateDiffStat,
|
|
1089
1169
|
protectedPathsChangedByCompeteBranch,
|
|
1090
|
-
|
|
1170
|
+
removeCandidateWorktreeMapped,
|
|
1091
1171
|
mergeWinnerBranch,
|
|
1092
1172
|
cleanupCompeteGroup,
|
|
1093
1173
|
settleRecoveredCompeteDecision,
|
|
1094
1174
|
recoverCleanupReadyCompeteGroups,
|
|
1095
1175
|
WRITE_BOUNDARY_VIOLATION_REASON,
|
|
1096
1176
|
captureWorkspaceSnapshot,
|
|
1177
|
+
describeWriteBoundaryAttributionDowngrade,
|
|
1097
1178
|
preflightWriteBoundaries,
|
|
1098
1179
|
createWriteBoundaryEnforcer
|
|
1099
1180
|
};
|
|
1100
|
-
//# sourceMappingURL=chunk-
|
|
1181
|
+
//# sourceMappingURL=chunk-U77AMWDL.js.map
|
|
@@ -1,25 +1,29 @@
|
|
|
1
1
|
import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
|
-
loadFragments,
|
|
4
3
|
loadOperatorProfile,
|
|
5
4
|
loadProjectRules,
|
|
6
5
|
renderOperatorProfile,
|
|
7
6
|
selectActiveRules
|
|
8
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-I5VEOC6I.js";
|
|
8
|
+
import {
|
|
9
|
+
loadFragments
|
|
10
|
+
} from "./chunk-VAZSBTKF.js";
|
|
9
11
|
import {
|
|
10
12
|
compile,
|
|
11
|
-
compileWorker
|
|
13
|
+
compileWorker
|
|
14
|
+
} from "./chunk-BUMFYQFY.js";
|
|
15
|
+
import {
|
|
12
16
|
sha256
|
|
13
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-B7OBL7PK.js";
|
|
14
18
|
import {
|
|
15
19
|
classifyProjectPreload
|
|
16
20
|
} from "./chunk-JVCV3ICN.js";
|
|
17
21
|
import {
|
|
18
22
|
isUserVisibleAgent
|
|
19
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-DYJP44XW.js";
|
|
20
24
|
import {
|
|
21
25
|
BusChannels
|
|
22
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-HLW2MRKE.js";
|
|
23
27
|
import {
|
|
24
28
|
init_esm_shims
|
|
25
29
|
} from "./chunk-3R73A4XB.js";
|
|
@@ -655,4 +659,4 @@ export {
|
|
|
655
659
|
createPromptsDomainModule,
|
|
656
660
|
SchedulingDomainModule
|
|
657
661
|
};
|
|
658
|
-
//# sourceMappingURL=chunk-
|
|
662
|
+
//# sourceMappingURL=chunk-ULC6OTWO.js.map
|
|
@@ -2,7 +2,7 @@ import { createRequire as __clioCreateRequire } from "node:module"; const requir
|
|
|
2
2
|
import {
|
|
3
3
|
cwdHash,
|
|
4
4
|
sessionPaths
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-76ONBSIA.js";
|
|
6
6
|
import {
|
|
7
7
|
init_esm_shims
|
|
8
8
|
} from "./chunk-3R73A4XB.js";
|
|
@@ -170,14 +170,6 @@ function buildContextLedger(input) {
|
|
|
170
170
|
});
|
|
171
171
|
}
|
|
172
172
|
const meter = [...groups];
|
|
173
|
-
if (reserveTokens > 0) {
|
|
174
|
-
meter.push({
|
|
175
|
-
category: "reserve",
|
|
176
|
-
label: CONTEXT_CATEGORY_LABEL.reserve,
|
|
177
|
-
tokens: reserveTokens,
|
|
178
|
-
percent: percentOf(reserveTokens, window)
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
173
|
if (window > 0) {
|
|
182
174
|
meter.push({
|
|
183
175
|
category: "free",
|
|
@@ -186,6 +178,14 @@ function buildContextLedger(input) {
|
|
|
186
178
|
percent: percentOf(freeTokens, window)
|
|
187
179
|
});
|
|
188
180
|
}
|
|
181
|
+
if (reserveTokens > 0) {
|
|
182
|
+
meter.push({
|
|
183
|
+
category: "reserve",
|
|
184
|
+
label: CONTEXT_CATEGORY_LABEL.reserve,
|
|
185
|
+
tokens: reserveTokens,
|
|
186
|
+
percent: percentOf(reserveTokens, window)
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
189
|
return {
|
|
190
190
|
provider: input.provider ?? null,
|
|
191
191
|
model: input.model ?? null,
|
|
@@ -205,7 +205,8 @@ function buildContextLedger(input) {
|
|
|
205
205
|
groups,
|
|
206
206
|
meter,
|
|
207
207
|
lastCompaction: input.lastCompaction ?? null,
|
|
208
|
-
promptCache: input.promptCache ?? null
|
|
208
|
+
promptCache: input.promptCache ?? null,
|
|
209
|
+
prewarm: input.prewarm ?? null
|
|
209
210
|
};
|
|
210
211
|
}
|
|
211
212
|
|
|
@@ -405,6 +406,17 @@ function getLatestContextSnapshot(meta) {
|
|
|
405
406
|
const list = getContextSnapshots(meta);
|
|
406
407
|
return list.at(-1) ?? null;
|
|
407
408
|
}
|
|
409
|
+
function lastLoadedContextWindow(meta, providerId, modelId) {
|
|
410
|
+
const snapshots = getContextSnapshots(meta);
|
|
411
|
+
for (let i = snapshots.length - 1; i >= 0; i -= 1) {
|
|
412
|
+
const snapshot = snapshots[i];
|
|
413
|
+
if (snapshot?.contextWindowSource !== "loaded") continue;
|
|
414
|
+
if (snapshot.providerId !== providerId || snapshot.modelId !== modelId) continue;
|
|
415
|
+
const window = snapshot.effectiveContextWindow;
|
|
416
|
+
if (typeof window === "number" && Number.isFinite(window) && window > 0) return window;
|
|
417
|
+
}
|
|
418
|
+
return null;
|
|
419
|
+
}
|
|
408
420
|
function buildSnapshotCategories(inputs) {
|
|
409
421
|
const raw = {
|
|
410
422
|
system: 0,
|
|
@@ -477,6 +489,7 @@ function captureContextSnapshot(input) {
|
|
|
477
489
|
compactionThreshold: input.compactionThreshold
|
|
478
490
|
});
|
|
479
491
|
return {
|
|
492
|
+
estimatedTokens: sumSplitTokens(categories),
|
|
480
493
|
snapshotId: nextSnapshotId(),
|
|
481
494
|
sessionId: input.sessionId,
|
|
482
495
|
turnId: input.turnId,
|
|
@@ -499,8 +512,11 @@ function captureContextSnapshot(input) {
|
|
|
499
512
|
messageRange: input.conversationMessages.length > 0 ? { start: 0, end: input.conversationMessages.length - 1 } : void 0
|
|
500
513
|
};
|
|
501
514
|
}
|
|
515
|
+
function sumSplitTokens(categories) {
|
|
516
|
+
return SNAPSHOT_SPLIT_KEYS.reduce((sum, key) => sum + (categories[key] ?? 0), 0);
|
|
517
|
+
}
|
|
502
518
|
function snapshotInputTokens(snapshot) {
|
|
503
|
-
return
|
|
519
|
+
return sumSplitTokens(snapshot.categories);
|
|
504
520
|
}
|
|
505
521
|
function reconcileSnapshot(snapshot, usage) {
|
|
506
522
|
const exactInput = (usage.input || 0) + (usage.cacheRead || 0) + (usage.cacheWrite || 0);
|
|
@@ -580,9 +596,13 @@ function reconcileSnapshot(snapshot, usage) {
|
|
|
580
596
|
},
|
|
581
597
|
{}
|
|
582
598
|
);
|
|
599
|
+
const estimatedTokens = snapshot.estimatedTokens ?? sumSplitTokens(snapshot.categories);
|
|
583
600
|
return {
|
|
584
601
|
...snapshot,
|
|
585
602
|
categories: updatedCategories,
|
|
603
|
+
estimatedTokens,
|
|
604
|
+
reconciledTokens: exactInput,
|
|
605
|
+
divergenceRatio: estimatedTokens > 0 ? Math.round(exactInput / estimatedTokens * 1e3) / 1e3 : void 0,
|
|
586
606
|
sources: {
|
|
587
607
|
total: "reconciled",
|
|
588
608
|
splits: splitsSources
|
|
@@ -606,8 +626,9 @@ export {
|
|
|
606
626
|
contextUsageSnapshot,
|
|
607
627
|
appendContextSnapshot,
|
|
608
628
|
getLatestContextSnapshot,
|
|
629
|
+
lastLoadedContextWindow,
|
|
609
630
|
captureContextSnapshot,
|
|
610
631
|
snapshotInputTokens,
|
|
611
632
|
reconcileSnapshot
|
|
612
633
|
};
|
|
613
|
-
//# sourceMappingURL=chunk-
|
|
634
|
+
//# sourceMappingURL=chunk-UM7N4G5A.js.map
|
|
@@ -210,6 +210,7 @@ registerEngineBuiltins();
|
|
|
210
210
|
|
|
211
211
|
// src/engine/ai.ts
|
|
212
212
|
var stream = engineStream;
|
|
213
|
+
var streamSimple = engineStreamSimple;
|
|
213
214
|
async function completeEngineText(input) {
|
|
214
215
|
const response = await completeEngineSimple(
|
|
215
216
|
input.model,
|
|
@@ -231,7 +232,17 @@ async function completeEngineText(input) {
|
|
|
231
232
|
return {
|
|
232
233
|
text: response.content.filter((block) => block.type === "text").map((block) => block.text).join(""),
|
|
233
234
|
inputTokens: response.usage.input,
|
|
234
|
-
outputTokens: response.usage.output
|
|
235
|
+
outputTokens: response.usage.output,
|
|
236
|
+
usage: {
|
|
237
|
+
input: response.usage.input,
|
|
238
|
+
output: response.usage.output,
|
|
239
|
+
cacheRead: response.usage.cacheRead,
|
|
240
|
+
cacheWrite: response.usage.cacheWrite,
|
|
241
|
+
reasoning: response.usage.reasoning ?? 0,
|
|
242
|
+
totalTokens: response.usage.totalTokens,
|
|
243
|
+
costUsd: response.usage.cost.total
|
|
244
|
+
},
|
|
245
|
+
backend: response.backendTimings ?? null
|
|
235
246
|
};
|
|
236
247
|
}
|
|
237
248
|
var registered = false;
|
|
@@ -325,6 +336,7 @@ export {
|
|
|
325
336
|
activateExternalPluginApiBridge,
|
|
326
337
|
StringEnum,
|
|
327
338
|
stream,
|
|
339
|
+
streamSimple,
|
|
328
340
|
completeEngineText,
|
|
329
341
|
ensurePiAiRegistered,
|
|
330
342
|
createEngineAi,
|
|
@@ -335,4 +347,4 @@ export {
|
|
|
335
347
|
calculateEngineCost,
|
|
336
348
|
registerFauxFromEnv
|
|
337
349
|
};
|
|
338
|
-
//# sourceMappingURL=chunk-
|
|
350
|
+
//# sourceMappingURL=chunk-UOSL25KY.js.map
|