@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
package/src/core/defaults.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// Default constants for Clio Coder settings.
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Default settings shipped with Clio Coder. Written to the resolved config
|
|
3
5
|
* directory's settings.yaml on first install if the file does not already
|
|
@@ -151,6 +153,49 @@ export interface WorkingSetSettings {
|
|
|
151
153
|
minEvictableTokens: number;
|
|
152
154
|
}
|
|
153
155
|
|
|
156
|
+
/**
|
|
157
|
+
* Prompt pre-warm settings (`prewarm`). On a local server prefill is the cost,
|
|
158
|
+
* and the prefix the next turn will send is fully known before the operator
|
|
159
|
+
* types anything: at session start, after a resume rebuilds the message array,
|
|
160
|
+
* and after a compaction settles. Clio sends that prefix to the backend right
|
|
161
|
+
* then so the slot's prefix cache already holds it when the real turn arrives.
|
|
162
|
+
*
|
|
163
|
+
* - enabled: master switch. The feature is off on every tier but
|
|
164
|
+
* `local-native` whatever this says, and off for workers and headless runs,
|
|
165
|
+
* because it buys latency for an operator watching a local server.
|
|
166
|
+
*/
|
|
167
|
+
export interface PrewarmSettings {
|
|
168
|
+
enabled: boolean;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* The pane layer's settings block.
|
|
173
|
+
*
|
|
174
|
+
* `journal` is the durable half: the run event journal, which every other pane
|
|
175
|
+
* surface reads and which the standalone run viewer needs whether or not a pane
|
|
176
|
+
* host is installed. The run-view settings govern the live projection. The
|
|
177
|
+
* Yazi chooser remains useful without a pane host because it can borrow the
|
|
178
|
+
* terminal for one selection.
|
|
179
|
+
*/
|
|
180
|
+
export interface PanesSettings {
|
|
181
|
+
/**
|
|
182
|
+
* Capability rung the pane layer may reach. `auto` takes guest mode when a
|
|
183
|
+
* pane host is detected; `embedded` asks Clio to own a private session, which
|
|
184
|
+
* degrades to none until that ships; `off` skips detection entirely.
|
|
185
|
+
*/
|
|
186
|
+
enabled: "auto" | "embedded" | "off";
|
|
187
|
+
/** Which terminal run states raise a pane-host toast. */
|
|
188
|
+
notifications: "failures" | "all" | "off";
|
|
189
|
+
journal: boolean;
|
|
190
|
+
/** File-pane round-trip settings read live for each explicit open. */
|
|
191
|
+
yazi: {
|
|
192
|
+
enabled: boolean;
|
|
193
|
+
mode: "companion" | "chooser";
|
|
194
|
+
profile: "managed" | "user";
|
|
195
|
+
followCwd: boolean;
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
|
|
154
199
|
/**
|
|
155
200
|
* Transient provider retry controls for the interactive chat loop. These are
|
|
156
201
|
* intentionally small and mirror the session retry helper defaults. Dispatched
|
|
@@ -353,12 +398,20 @@ export const DEFAULT_SETTINGS = {
|
|
|
353
398
|
enabled: true,
|
|
354
399
|
everyNTools: 10,
|
|
355
400
|
windowSteps: 8,
|
|
356
|
-
|
|
357
|
-
//
|
|
358
|
-
//
|
|
359
|
-
//
|
|
360
|
-
|
|
361
|
-
|
|
401
|
+
// Budget for the answer and any reasoning tokens that precede it.
|
|
402
|
+
// An always-on-thinking 35B spent the measured 400/400 completion
|
|
403
|
+
// tokens on reasoning and stopped with finish_reason=length before it
|
|
404
|
+
// emitted content, so the old budget made a useful step unreachable.
|
|
405
|
+
maxTokens: 2000,
|
|
406
|
+
// A memory step runs detached from the turn that triggered it, but it
|
|
407
|
+
// runs on a real inference endpoint that the operator's own turns and
|
|
408
|
+
// dispatched workers also queue against. The operator's ledger over 14
|
|
409
|
+
// days recorded 60 llm-tier steps spending 1,666 seconds of model time
|
|
410
|
+
// for 6 injections, with one step holding a local server for 102.5
|
|
411
|
+
// seconds to answer nothing. A viable output budget earns one minute,
|
|
412
|
+
// while consecutive timeouts degrade the plane to its free rules tier
|
|
413
|
+
// instead of repeatedly occupying the endpoint for that full minute.
|
|
414
|
+
timeoutMs: 60_000,
|
|
362
415
|
},
|
|
363
416
|
},
|
|
364
417
|
watchdog: { enabled: false } as WatchdogSettings,
|
|
@@ -444,6 +497,35 @@ export const DEFAULT_SETTINGS = {
|
|
|
444
497
|
context: {
|
|
445
498
|
workingSet: DEFAULT_WORKING_SET_SETTINGS,
|
|
446
499
|
},
|
|
500
|
+
prewarm: {
|
|
501
|
+
enabled: true,
|
|
502
|
+
} as PrewarmSettings,
|
|
503
|
+
panes: {
|
|
504
|
+
/**
|
|
505
|
+
* Off: a plain `clio-coder` performs zero pane-host work, and none of the
|
|
506
|
+
* mux domain even loads. The extension is activated per session with
|
|
507
|
+
* `clio-coder --with-panes`, or durably by setting this to `auto` (guest
|
|
508
|
+
* mode when a pane host is detected). The flag beats the setting in both
|
|
509
|
+
* directions.
|
|
510
|
+
*/
|
|
511
|
+
enabled: "off",
|
|
512
|
+
/** A toast per finished run is noise; a toast per failure is the signal. */
|
|
513
|
+
notifications: "failures",
|
|
514
|
+
/**
|
|
515
|
+
* Tee every dispatched run's display event tail to
|
|
516
|
+
* `<state>/runs/<runId>/events.ndjson`. The live tail is otherwise
|
|
517
|
+
* in-process only, so this is what lets `clio-coder fleet view` follow a
|
|
518
|
+
* run from a second terminal. Written regardless of any pane host being
|
|
519
|
+
* present; turning it off costs the viewer its transcript and nothing else.
|
|
520
|
+
*/
|
|
521
|
+
journal: true,
|
|
522
|
+
yazi: {
|
|
523
|
+
enabled: true,
|
|
524
|
+
mode: "companion",
|
|
525
|
+
profile: "managed",
|
|
526
|
+
followCwd: true,
|
|
527
|
+
},
|
|
528
|
+
} as PanesSettings,
|
|
447
529
|
retry: {
|
|
448
530
|
enabled: true,
|
|
449
531
|
maxRetries: 3,
|
|
@@ -538,8 +620,10 @@ memory:
|
|
|
538
620
|
enabled: true
|
|
539
621
|
everyNTools: 10
|
|
540
622
|
windowSteps: 8
|
|
541
|
-
|
|
542
|
-
|
|
623
|
+
# Covers the answer and any thinking before it. An always-on-thinking 35B
|
|
624
|
+
# spent the measured 400/400 tokens on reasoning, then stopped at length.
|
|
625
|
+
maxTokens: 2000
|
|
626
|
+
timeoutMs: 60000
|
|
543
627
|
|
|
544
628
|
# Opt-in turn-end watchdog. When enabled, a turn that changed the tree is
|
|
545
629
|
# reviewed by one read-only verifier run briefed with the turn's coalesced diff
|
|
@@ -751,6 +835,38 @@ context:
|
|
|
751
835
|
protectLastTurns: 6
|
|
752
836
|
minEvictableTokens: 200
|
|
753
837
|
|
|
838
|
+
# Prompt pre-warm. At session start, after a resume rebuilds the message array,
|
|
839
|
+
# and after a compaction settles, Clio sends the prefix the next turn would send
|
|
840
|
+
# (minus your text) so a local server has already prefilled it when you press
|
|
841
|
+
# Enter. Local-native targets only, interactive sessions only, and never while a
|
|
842
|
+
# turn or a dispatch is running.
|
|
843
|
+
prewarm:
|
|
844
|
+
enabled: true
|
|
845
|
+
|
|
846
|
+
# The pane layer. Off by default: plain \`clio-coder\` does no pane-host work at
|
|
847
|
+
# all. Start \`clio-coder --with-panes\` to activate the extension for one
|
|
848
|
+
# session, or set enabled: auto to activate it whenever a pane host is
|
|
849
|
+
# detected (embedded, a Clio-owned private session, is not implemented yet).
|
|
850
|
+
# The command-line flag beats this setting in both directions. notifications
|
|
851
|
+
# picks which terminal run states raise a toast. journal tees every dispatched
|
|
852
|
+
# run's event tail to <state>/runs/<runId>/events.ndjson so
|
|
853
|
+
# \`clio-coder fleet view <runId> --follow\` can watch a run from a second
|
|
854
|
+
# terminal; it is written regardless of any pane host being present. Journal
|
|
855
|
+
# directories are removed when their run leaves the run ledger ring, and
|
|
856
|
+
# \`clio-coder reset --state\` clears them with the rest of the state root.
|
|
857
|
+
panes:
|
|
858
|
+
enabled: off
|
|
859
|
+
notifications: failures
|
|
860
|
+
journal: true
|
|
861
|
+
# The files pane uses a managed, reproducible Yazi profile by default.
|
|
862
|
+
# profile: user preserves the operator's Yazi configuration and therefore
|
|
863
|
+
# forces one-shot chooser mode, since that profile has no Clio pick chord.
|
|
864
|
+
yazi:
|
|
865
|
+
enabled: true
|
|
866
|
+
mode: companion
|
|
867
|
+
profile: managed
|
|
868
|
+
followCwd: true
|
|
869
|
+
|
|
754
870
|
# Transient provider/stream retry controls for interactive chat.
|
|
755
871
|
# Retryable errors include overloads, rate limits, 5xx responses, network
|
|
756
872
|
# resets, and timeouts. Context overflow uses compaction recovery instead.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical identity of an OpenAI-compatible inference endpoint: normalized
|
|
3
|
+
* HTTP scheme, lower-cased host, normalized port, and normalized base path with
|
|
4
|
+
* a conventional terminal `/v1` mount stripped. Credentials, query, and
|
|
5
|
+
* fragment do not participate. Host aliases are not resolved, so
|
|
6
|
+
* `localhost` and `127.0.0.1` stay distinct. Shared by dispatch capacity and
|
|
7
|
+
* residency locking so both speak the same key for one server.
|
|
8
|
+
*/
|
|
9
|
+
export function canonicalEndpointUrl(raw: string | null | undefined): string | null {
|
|
10
|
+
if (!raw?.trim()) return null;
|
|
11
|
+
try {
|
|
12
|
+
const url = new URL(raw.trim().replace(/^ws:/u, "http:").replace(/^wss:/u, "https:"));
|
|
13
|
+
url.protocol = url.protocol.toLowerCase();
|
|
14
|
+
if (url.protocol !== "http:" && url.protocol !== "https:") return null;
|
|
15
|
+
url.hostname = url.hostname.toLowerCase();
|
|
16
|
+
url.username = "";
|
|
17
|
+
url.password = "";
|
|
18
|
+
url.hash = "";
|
|
19
|
+
url.search = "";
|
|
20
|
+
let path = url.pathname.replace(/\/{2,}/gu, "/").replace(/\/$/u, "");
|
|
21
|
+
if (path.endsWith("/v1")) path = path.slice(0, -3);
|
|
22
|
+
url.pathname = path || "/";
|
|
23
|
+
return url.toString().replace(/\/$/u, "");
|
|
24
|
+
} catch {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { canonicalEndpointUrl } from "./endpoint-key.js";
|
|
2
|
+
|
|
3
|
+
/** Runtime families whose model residency Clio can actively mutate. */
|
|
4
|
+
export type ResidencyRuntimeId = "llamacpp" | "lmstudio" | "ollama-native";
|
|
5
|
+
|
|
6
|
+
const RESIDENCY_RUNTIME_IDS: ReadonlySet<string> = new Set<ResidencyRuntimeId>([
|
|
7
|
+
"llamacpp",
|
|
8
|
+
"lmstudio",
|
|
9
|
+
"ollama-native",
|
|
10
|
+
]);
|
|
11
|
+
|
|
12
|
+
export function residencyTargetKey(runtimeId: ResidencyRuntimeId, baseUrl: string): string;
|
|
13
|
+
export function residencyTargetKey(runtimeId: string, baseUrl: string | null | undefined): string | null;
|
|
14
|
+
/** Stable key for one residency-managed server endpoint: its canonical URL. */
|
|
15
|
+
export function residencyTargetKey(runtimeId: string, baseUrl: string | null | undefined): string | null {
|
|
16
|
+
if (!RESIDENCY_RUNTIME_IDS.has(runtimeId) || typeof baseUrl !== "string") return null;
|
|
17
|
+
// The key is the canonical endpoint itself, without a runtime prefix, so the
|
|
18
|
+
// residency lock and dispatch capacity name one server the same way (#250).
|
|
19
|
+
// A base url the canonical form refuses, such as one written without a
|
|
20
|
+
// scheme, still gets a key: callers store this in `ResidencyAdapter.targetKey`,
|
|
21
|
+
// which is a `string`, and dispatch capacity has no key for that target
|
|
22
|
+
// either, so there is nothing to agree with and nothing to gain by dropping
|
|
23
|
+
// the lock the reconciler serializes on.
|
|
24
|
+
return canonicalEndpointUrl(baseUrl) ?? baseUrl;
|
|
25
|
+
}
|
|
@@ -11,16 +11,90 @@ export const RESPONSE_SCHEMA_MAX_SERIALIZED_BYTES = 64 * 1024;
|
|
|
11
11
|
* `schema` key, and returns HTTP 200 with unconstrained JSON, so widening this
|
|
12
12
|
* to the api family would convert a clean refusal into a silent
|
|
13
13
|
* non-enforcement. lmstudio declares `structuredOutputs: "json-schema"`
|
|
14
|
-
* truthfully and is still excluded here, because
|
|
15
|
-
* transport. Widen this only together with a dialect for the
|
|
14
|
+
* truthfully and is still excluded here, because the worker seam has no
|
|
15
|
+
* dialect for its transport. Widen this only together with a dialect for the
|
|
16
|
+
* runtime added; {@link responseSchemaDialectFor} is where the out-of-turn
|
|
17
|
+
* seam did exactly that (issue #223).
|
|
16
18
|
*/
|
|
17
19
|
export const RESPONSE_SCHEMA_RUNTIME_ID = "llamacpp";
|
|
18
20
|
|
|
19
|
-
/**
|
|
21
|
+
/** The runtime that takes the standard OpenAI `json_schema` response format. */
|
|
22
|
+
export const OPENAI_SCHEMA_RUNTIME_ID = "lmstudio";
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* The LiteLLM gateway, which takes the same standard `json_schema` format.
|
|
26
|
+
*
|
|
27
|
+
* This is the one gateway admitted to the table above, and it is admitted on
|
|
28
|
+
* measurement rather than on the api family the warning describes. Against a
|
|
29
|
+
* LiteLLM v1.98.0 proxy fronting both a llama.cpp and an LM Studio upstream:
|
|
30
|
+
* `{"type":"json_schema", json_schema:{...}}` was grammar-enforced end to end
|
|
31
|
+
* through both, `{"type":"json_object", schema:{...}}` was enforced through
|
|
32
|
+
* llama.cpp but rejected HTTP 400 by LM Studio, and the same prompt with no
|
|
33
|
+
* `response_format` returned plain prose. LiteLLM's `drop_params` did not strip
|
|
34
|
+
* either spelling, because `response_format` is a parameter it recognizes and
|
|
35
|
+
* forwards whole.
|
|
36
|
+
*
|
|
37
|
+
* The standard dialect is therefore the only one that holds across every
|
|
38
|
+
* upstream a gateway may route to, which is why LiteLLM belongs with LM Studio
|
|
39
|
+
* here and not with llama.cpp. Re-verify with the gateway's own smoke test
|
|
40
|
+
* before trusting this against a proxy other than LiteLLM: the hazard the
|
|
41
|
+
* warning names is real, and the only thing that makes this entry safe is that
|
|
42
|
+
* somebody measured it.
|
|
43
|
+
*/
|
|
44
|
+
export const GATEWAY_SCHEMA_RUNTIME_ID = "litellm";
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* How a runtime spells a JSON-schema response constraint on the wire.
|
|
48
|
+
*
|
|
49
|
+
* `llamacpp-json-object` is llama-server's own `response_format: { type:
|
|
50
|
+
* "json_object", schema }`, which it compiles into a sampler grammar.
|
|
51
|
+
* `openai-json-schema` is the standard `response_format: { type:
|
|
52
|
+
* "json_schema", json_schema: { name, strict, schema } }` that LM Studio
|
|
53
|
+
* implements.
|
|
54
|
+
*/
|
|
55
|
+
export type ResponseSchemaDialect = "llamacpp-json-object" | "openai-json-schema";
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* The dialect this runtime takes, or null when Clio has none for it and the
|
|
59
|
+
* request has to go unconstrained.
|
|
60
|
+
*
|
|
61
|
+
* Deliberately a name check, for the reason {@link RESPONSE_SCHEMA_RUNTIME_ID}
|
|
62
|
+
* gives: a generic OpenAI-compatible gateway answers HTTP 200 to a spelling it
|
|
63
|
+
* does not implement and returns unconstrained JSON, so a capability flag would
|
|
64
|
+
* turn a known non-enforcement into a silent one. This is the out-of-turn
|
|
65
|
+
* seam's table; the worker seam keeps the narrower
|
|
66
|
+
* {@link runtimeSpeaksResponseSchemaDialect} check, because a worker that
|
|
67
|
+
* cannot enforce a contract must refuse admission rather than degrade.
|
|
68
|
+
*/
|
|
69
|
+
export function responseSchemaDialectFor(runtimeId: string): ResponseSchemaDialect | null {
|
|
70
|
+
if (runtimeId === RESPONSE_SCHEMA_RUNTIME_ID) return "llamacpp-json-object";
|
|
71
|
+
if (runtimeId === OPENAI_SCHEMA_RUNTIME_ID) return "openai-json-schema";
|
|
72
|
+
if (runtimeId === GATEWAY_SCHEMA_RUNTIME_ID) return "openai-json-schema";
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Whether this runtime speaks the dialect above. Transport shape, not capability.
|
|
78
|
+
*
|
|
79
|
+
* LiteLLM joins llama.cpp here because a gateway in front of llama.cpp is the
|
|
80
|
+
* same transport with one hop added, and the hop was measured not to alter it.
|
|
81
|
+
* That is what admits a contract-bearing worker to a gateway target; without
|
|
82
|
+
* it, every typed agent behind a proxy is refused rather than enforced.
|
|
83
|
+
*
|
|
84
|
+
* It also opts LiteLLM into {@link responseSchemaConflictsWithTools}, which is
|
|
85
|
+
* deliberately conservative. Whether a schema and a tool surface can constrain
|
|
86
|
+
* the same completion is a property of the upstream, and one alias may route to
|
|
87
|
+
* llama.cpp (which refuses both with HTTP 400) while another routes to LM Studio
|
|
88
|
+
* (which accepts them). A runtime id cannot tell those apart, so this treats
|
|
89
|
+
* every gateway upstream as if it were the refusing one. The cost is a
|
|
90
|
+
* tool-bearing contract run through an LM Studio upstream falling back to the
|
|
91
|
+
* prompt parser when it did not strictly have to. The alternative is paying a
|
|
92
|
+
* round trip to discover a predictable 400, and having the answer depend on
|
|
93
|
+
* which deployment the proxy happened to pick for that request.
|
|
94
|
+
*/
|
|
20
95
|
export function runtimeSpeaksResponseSchemaDialect(runtime: { id: string; kind: string; apiFamily: string }): boolean {
|
|
21
|
-
return
|
|
22
|
-
|
|
23
|
-
);
|
|
96
|
+
if (runtime.kind !== "http" || runtime.apiFamily !== "openai-completions") return false;
|
|
97
|
+
return runtime.id === RESPONSE_SCHEMA_RUNTIME_ID || runtime.id === GATEWAY_SCHEMA_RUNTIME_ID;
|
|
24
98
|
}
|
|
25
99
|
|
|
26
100
|
/**
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/** Semantic colors shared by Clio's terminal surfaces and generated companion profiles. */
|
|
2
|
+
export type ClioToken =
|
|
3
|
+
| "accent"
|
|
4
|
+
| "accentDeep"
|
|
5
|
+
| "action"
|
|
6
|
+
| "success"
|
|
7
|
+
| "warning"
|
|
8
|
+
| "error"
|
|
9
|
+
| "info"
|
|
10
|
+
| "reason"
|
|
11
|
+
| "dim"
|
|
12
|
+
| "muted"
|
|
13
|
+
| "title"
|
|
14
|
+
| "frame"
|
|
15
|
+
| "frameStrong";
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The palette's lowercase hex projection.
|
|
19
|
+
*
|
|
20
|
+
* Keep this leaf free of interactive imports. Generated companion profiles
|
|
21
|
+
* need the color vocabulary without becoming a second reacher of the terminal
|
|
22
|
+
* renderer and splitting the instant shell's Stage 0 chunk.
|
|
23
|
+
*/
|
|
24
|
+
const TOKEN_HEX: Readonly<Record<ClioToken, `#${string}`>> = {
|
|
25
|
+
accent: "#46e5d0",
|
|
26
|
+
accentDeep: "#1fb7a6",
|
|
27
|
+
action: "#ff7e29",
|
|
28
|
+
success: "#57e389",
|
|
29
|
+
warning: "#ffb454",
|
|
30
|
+
error: "#ff5c66",
|
|
31
|
+
info: "#5ba8ff",
|
|
32
|
+
reason: "#9d8cff",
|
|
33
|
+
dim: "#6a7a85",
|
|
34
|
+
muted: "#8a99a4",
|
|
35
|
+
title: "#46e5d0",
|
|
36
|
+
frame: "#2f5d5a",
|
|
37
|
+
frameStrong: "#2aab9e",
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
/** The canonical lowercase `#rrggbb` value for one Clio theme token. */
|
|
41
|
+
export function tokenHex(token: ClioToken): `#${string}` {
|
|
42
|
+
return TOKEN_HEX[token];
|
|
43
|
+
}
|
package/src/core/tool-names.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* OBSERVE read, grep, find, ls, code_nav, context, credential_present
|
|
8
8
|
* MUTATE write, edit
|
|
9
9
|
* EXECUTE bash, git, verify
|
|
10
|
-
* ORCHESTRATE dispatch, monitor, steer, tasks
|
|
10
|
+
* ORCHESTRATE dispatch, monitor, steer, tasks, panes
|
|
11
11
|
* RETRIEVE web_fetch
|
|
12
12
|
* INTERACT ask_user
|
|
13
13
|
* ARTIFACT artifact
|
|
@@ -35,6 +35,7 @@ export const ToolNames = {
|
|
|
35
35
|
Steer: "steer",
|
|
36
36
|
Tasks: "tasks",
|
|
37
37
|
Ledger: "ledger",
|
|
38
|
+
Panes: "panes",
|
|
38
39
|
// RETRIEVE
|
|
39
40
|
WebFetch: "web_fetch",
|
|
40
41
|
// INTERACT
|
package/src/core/xdg.ts
CHANGED
|
@@ -20,7 +20,7 @@ import { join } from "node:path";
|
|
|
20
20
|
*
|
|
21
21
|
* Role contents: config holds user-authored files (settings, credentials,
|
|
22
22
|
* agents, skills, prompts, extensions, runtimes); data holds durable artifacts
|
|
23
|
-
* (memory, evidence, evals); state holds machine-produced session state
|
|
23
|
+
* (memory, evidence, evals, vendored tools); state holds machine-produced session state
|
|
24
24
|
* (sessions, audit, receipts, runs.json, recent-models.json, install.json,
|
|
25
25
|
* interviews, scratch); cache holds disposable derived files.
|
|
26
26
|
*/
|
|
@@ -29,6 +29,3 @@ task above. Nothing you write here persuades it.
|
|
|
29
29
|
|
|
30
30
|
If it fails you, you receive its failed checks as input data and get exactly one
|
|
31
31
|
revision. Close the findings it reported and nothing else.
|
|
32
|
-
|
|
33
|
-
Answer with your `mutation-report`. Include `commitMessage`: one imperative
|
|
34
|
-
subject line describing this change, as you would write it in the log.
|
|
@@ -30,6 +30,3 @@ If the suite comes back red you will receive its output as input data. Repair
|
|
|
30
30
|
exactly what it reported. Do not restate the failure, do not weaken or delete a
|
|
31
31
|
test to make it pass, and do not widen the change beyond the repair. You get at
|
|
32
32
|
most two repair attempts before the run fails with the suite still red.
|
|
33
|
-
|
|
34
|
-
Answer with your `mutation-report`. Include `commitMessage`: one imperative
|
|
35
|
-
subject line describing this change, as you would write it in the log.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one live-disk implementation of `ResultContractFilesystem`.
|
|
3
|
+
*
|
|
4
|
+
* `result-contract.ts` takes filesystem access as an argument so the validators
|
|
5
|
+
* stay deterministic and testable without touching a disk. That leaves every
|
|
6
|
+
* caller to supply the same three accessors, and the worker and the
|
|
7
|
+
* orchestrator had each written their own copy. A capability added to the
|
|
8
|
+
* interface then lands in one of them and not the other, which is how a Scout
|
|
9
|
+
* citation could ground inside the worker's repair rounds and fail the
|
|
10
|
+
* orchestrator's sealed revalidation of the identical result. One factory, both
|
|
11
|
+
* callers, no drift.
|
|
12
|
+
*/
|
|
13
|
+
import { existsSync, readFileSync, statSync } from "node:fs";
|
|
14
|
+
import type { ResultContractFilesystem } from "./result-contract.js";
|
|
15
|
+
|
|
16
|
+
export function nodeResultContractFilesystem(): ResultContractFilesystem {
|
|
17
|
+
return {
|
|
18
|
+
readFile(filePath) {
|
|
19
|
+
try {
|
|
20
|
+
return readFileSync(filePath, "utf8");
|
|
21
|
+
} catch {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
pathExists(filePath) {
|
|
26
|
+
return existsSync(filePath);
|
|
27
|
+
},
|
|
28
|
+
isDirectory(filePath) {
|
|
29
|
+
return statSync(filePath, { throwIfNoEntry: false })?.isDirectory() === true;
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
}
|