@iowarp/clio-coder 0.4.0 → 0.4.1
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 +39 -0
- package/README.md +116 -16
- package/dist/{acp-G5WJBNCT.js → acp-ZILU3AUO.js} +14 -14
- package/dist/{agents-FMV2Q5G4.js → agents-HYWGBGQR.js} +40 -29
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-3IDSJEIK.js → auth-N3QT7CBO.js} +21 -19
- package/dist/{builtins-XCZWXSC7.js → builtins-UJLMOVOV.js} +6 -6
- package/dist/{chunk-PQEFIJ36.js → chunk-2LEAKD4C.js} +1 -2
- package/dist/{chunk-3BT2XMV4.js → chunk-2NM363SV.js} +50 -57
- package/dist/{chunk-J4W7KFM7.js → chunk-2VG7KLYV.js} +24 -279
- package/dist/{chunk-SST6Z5JA.js → chunk-336NSSKI.js} +1 -1
- package/dist/{chunk-K5C3NCBD.js → chunk-3I5NY75V.js} +5 -5
- package/dist/{chunk-VAZSBTKF.js → chunk-3QSOM6PA.js} +2 -2
- package/dist/{chunk-TZ3SGWZZ.js → chunk-5QIAJV2D.js} +2 -2
- package/dist/{chunk-OQBA45DZ.js → chunk-5YHDIDBP.js} +2 -2
- package/dist/{chunk-NHLBIGRH.js → chunk-6CCS4G3W.js} +40 -17
- package/dist/{chunk-2JDWVJND.js → chunk-6DWBAZ5U.js} +2 -2
- package/dist/{chunk-LDQ2ZF2M.js → chunk-6FN3E6KX.js} +5 -5
- package/dist/{chunk-X3YGUTOB.js → chunk-6HMJX2VU.js} +59 -59
- package/dist/{chunk-VEO4AP2K.js → chunk-6I5ILFOF.js} +3 -2
- package/dist/{chunk-B7OBL7PK.js → chunk-6NJQITNH.js} +18 -11
- package/dist/{chunk-IQ7KR472.js → chunk-6VC4OV3Z.js} +6 -3
- package/dist/{chunk-P3FOHJT4.js → chunk-72GZI5EV.js} +2 -2
- package/dist/{chunk-AB44T6BB.js → chunk-74YWRRU5.js} +8 -7
- package/dist/{chunk-SJ5ZKQ4S.js → chunk-7EPLI7VL.js} +2 -2
- package/dist/{chunk-HWHKMHUA.js → chunk-7OBGU7UB.js} +3 -3
- package/dist/{chunk-2OQE55CK.js → chunk-7PWAODYW.js} +2 -2
- package/dist/{chunk-IBEBSCYA.js → chunk-7RY5VZPH.js} +42 -33
- package/dist/{chunk-LQ3DZAMX.js → chunk-ABLSQ6JX.js} +2 -2
- package/dist/{chunk-QLFS5GO2.js → chunk-AFKWHWXF.js} +12 -22
- package/dist/{chunk-FWDFM5ZU.js → chunk-AK5XEFVZ.js} +3 -3
- package/dist/{chunk-O6TL7WWY.js → chunk-AKB4GYDL.js} +4 -4
- package/dist/chunk-AP73CFDC.js +308 -0
- package/dist/{chunk-JDG2WCRO.js → chunk-BBTJOK6Y.js} +5 -5
- package/dist/{chunk-SP2RXXYO.js → chunk-BDPT6GTK.js} +10 -10
- package/dist/{chunk-NQQH3YT7.js → chunk-BJGUKIG4.js} +3 -3
- package/dist/{chunk-O4XIVISU.js → chunk-BTGG6BG2.js} +79 -38
- package/dist/chunk-BTK3SSSK.js +67 -0
- package/dist/{chunk-M6L6IDJG.js → chunk-BWH6N36D.js} +1 -1
- package/dist/chunk-BWW4HLO4.js +301 -0
- package/dist/{chunk-I5VEOC6I.js → chunk-C537JADH.js} +10 -10
- package/dist/{chunk-HI63TFOG.js → chunk-CDNVLKUX.js} +3 -3
- package/dist/{chunk-UM7N4G5A.js → chunk-CWVRRIEI.js} +2 -2
- package/dist/{chunk-BKFM6EJV.js → chunk-D4CJV46V.js} +2 -2
- package/dist/chunk-D7E7WCDF.js +27 -0
- package/dist/{chunk-WZR7K7ZX.js → chunk-E67WX76H.js} +6 -6
- package/dist/{chunk-FQ4SKYE4.js → chunk-EBY63B7G.js} +2 -5
- package/dist/chunk-EIMVLWB3.js +1842 -0
- package/dist/{chunk-RAPCMZL4.js → chunk-FSP7CMNU.js} +9 -1
- package/dist/{chunk-MLKNTWH2.js → chunk-FYUN5KZ3.js} +21 -21
- package/dist/{chunk-YJX4SHTD.js → chunk-GIZNH63R.js} +1 -1
- package/dist/{chunk-X75E3D2N.js → chunk-GPPB3JBE.js} +18 -16
- package/dist/{chunk-GR5G2PVF.js → chunk-GVQJ5CCZ.js} +15 -10
- package/dist/chunk-HJWWJ6IL.js +184 -0
- package/dist/{chunk-VO67MWHC.js → chunk-HRQMFLJP.js} +3 -3
- package/dist/{chunk-VYMXRQI6.js → chunk-HUAS7ITX.js} +89 -93
- package/dist/{chunk-BKFJHQCA.js → chunk-I66EAJFY.js} +2 -2
- package/dist/{chunk-DYJP44XW.js → chunk-IG7BCQBA.js} +1 -1
- package/dist/{chunk-32KWKNSF.js → chunk-IXJT6DCX.js} +3 -3
- package/dist/{chunk-C2LTL2W6.js → chunk-J4HBWF6Y.js} +360 -172
- package/dist/chunk-J5LZHVIT.js +284 -0
- package/dist/{chunk-QLL7ILRG.js → chunk-JA5QWE4Z.js} +510 -202
- package/dist/{chunk-BBVJUZHB.js → chunk-JIEGK6UF.js} +5 -173
- package/dist/{chunk-36EJLSQQ.js → chunk-JZWT5J3Y.js} +4 -4
- package/dist/{chunk-HZHHCK24.js → chunk-K6BF4U2H.js} +476 -322
- package/dist/{chunk-Z2RR6MAK.js → chunk-MA3H6DM5.js} +6 -6
- package/dist/{chunk-CODPRO7Q.js → chunk-MOPSG2X7.js} +6 -6
- package/dist/{chunk-76ONBSIA.js → chunk-MQXIVJ35.js} +14 -5
- package/dist/{chunk-YDFRH54B.js → chunk-N5UK64DP.js} +4 -4
- package/dist/chunk-NDDGJUXD.js +81 -0
- package/dist/{chunk-4ZG3XFUR.js → chunk-NLFAQR7Z.js} +12 -1
- package/dist/{chunk-VO2LKSTM.js → chunk-O42A54GG.js} +2 -2
- package/dist/{chunk-W5VSYASO.js → chunk-OJTRZGR3.js} +46 -87
- package/dist/{chunk-NHCZP4K7.js → chunk-PBP4B7XR.js} +2 -2
- package/dist/{chunk-3URVFKWK.js → chunk-PJJ6MY27.js} +5 -5
- package/dist/{chunk-ZGVHUX3M.js → chunk-PMZVFWSR.js} +2 -2
- package/dist/{chunk-GKF55TAZ.js → chunk-PVAMAVBB.js} +3 -2
- package/dist/{chunk-6DB53AJS.js → chunk-QKIFBZKT.js} +7 -7
- package/dist/{chunk-HJJTYUHX.js → chunk-QMXC4JB7.js} +20 -20
- package/dist/chunk-QTFGO774.js +644 -0
- package/dist/{chunk-CY6FY24N.js → chunk-R23Z6K6I.js} +2 -2
- package/dist/{chunk-ULC6OTWO.js → chunk-R32CLGZ6.js} +13 -13
- package/dist/{chunk-KMVISBZR.js → chunk-RKSR6VSF.js} +1 -1
- package/dist/{chunk-F4CKPOEQ.js → chunk-SCYB3HA4.js} +72 -26
- package/dist/{chunk-LY4S7GJC.js → chunk-SINK3QR6.js} +18 -16
- package/dist/{chunk-U77AMWDL.js → chunk-TD3PGPQA.js} +43 -22
- package/dist/{chunk-QBJA7R7N.js → chunk-THYWACCR.js} +2 -2
- package/dist/{chunk-QREDIESB.js → chunk-TVH4ONAM.js} +14 -8
- package/dist/chunk-U2WB7TZS.js +271 -0
- package/dist/{chunk-KFZI4NIL.js → chunk-UAPGZHYC.js} +145 -31
- package/dist/{chunk-DQITNCXG.js → chunk-UEDMSP56.js} +29 -14
- package/dist/{chunk-3XML7CDN.js → chunk-UXN6JT4W.js} +2 -2
- package/dist/{chunk-CMZWFGD2.js → chunk-VAVR4IJY.js} +19 -15
- package/dist/{chunk-BPKCPIL7.js → chunk-VEGN6WIQ.js} +2 -2
- package/dist/chunk-VKFQTNDV.js +66 -0
- package/dist/{chunk-7MCTRUCE.js → chunk-VKRH2TCS.js} +2 -2
- package/dist/{chunk-5LXZXPKX.js → chunk-VN3SHNBN.js} +2 -2
- package/dist/{chunk-UOSL25KY.js → chunk-VXMFAE2W.js} +1 -1
- package/dist/{chunk-BBVYXMFO.js → chunk-WNP7O5WZ.js} +2 -2
- package/dist/{chunk-SUCTJL45.js → chunk-WR6U3OVP.js} +3 -3
- package/dist/{chunk-BUMFYQFY.js → chunk-XKA2ICR3.js} +124 -113
- package/dist/{chunk-UXMFQ54G.js → chunk-Y45G3AXC.js} +39 -39
- package/dist/{chunk-J5Q24KAG.js → chunk-Y4CAGMM6.js} +2 -2
- package/dist/{chunk-NYS75XW5.js → chunk-YAKGTXEV.js} +5 -3
- package/dist/{chunk-V5DHCITQ.js → chunk-ZAZB4JMW.js} +23 -12
- package/dist/{chunk-Z4TXYIEG.js → chunk-ZJLUDYFY.js} +9 -9
- package/dist/{chunk-HKIYEGME.js → chunk-ZTJUVLTU.js} +2 -2
- package/dist/{chunk-2ANTL7MR.js → chunk-ZW55JB7N.js} +2 -2
- package/dist/cli/index.js +36 -36
- package/dist/{clio-2JXHBBY5.js → clio-IT3G3VQH.js} +12 -13
- package/dist/{code-nav-3YYRMYNF.js → code-nav-RK6S7F6E.js} +5 -5
- package/dist/codewiki/build-worker.js +1 -1
- package/dist/{compile-cache-7FPE6PS3.js → compile-cache-OQAVB7Y5.js} +2 -4
- package/dist/{components-RYZV4JGP.js → components-UBWCQSRW.js} +4 -4
- package/dist/{config-QZPCMYSO.js → config-3QZRWZJF.js} +53 -49
- package/dist/{configure-TEGEBYCA.js → configure-FL7Y3KJF.js} +25 -22
- package/dist/{context-E6H5RNMC.js → context-5HE7ODYK.js} +47 -43
- package/dist/{context-AV7OEZ4D.js → context-KYQFRVDC.js} +11 -11
- package/dist/{context-GSXUE4CT.js → context-XNHL75JV.js} +32 -19
- package/dist/{context-clear-SHIBYK6T.js → context-clear-N545L53A.js} +47 -43
- package/dist/{context-working-set-5ZGKPGZQ.js → context-working-set-QHKXSV2F.js} +10 -9
- package/dist/{dispatch-runner-EFMJT4LD.js → dispatch-runner-RGIE5PCT.js} +56 -47
- package/dist/{docs-23KQS3XK.js → docs-5NAF6AU7.js} +5 -11
- package/dist/doctor-ZGPEGHIP.js +772 -0
- package/dist/{eval-TFBYQH4H.js → eval-GXLL44RD.js} +63 -45
- package/dist/{eval-inventory-SXH7PDKX.js → eval-inventory-HBWSWQOK.js} +7 -8
- package/dist/{evidence-ERGESKGN.js → evidence-HWLBRH3Q.js} +44 -40
- package/dist/{evolve-VDXTSYCJ.js → evolve-FTZBMNVW.js} +43 -39
- package/dist/{extensions-7BGBHN57.js → extensions-VHRBEID7.js} +4 -4
- package/dist/{fleet-2RRVDF2V.js → fleet-CKZHJWZJ.js} +86 -73
- package/dist/{fleet-commands-VJ726XIA.js → fleet-commands-EXDXBMV6.js} +10 -9
- package/dist/{fleet-decisions-EPAPM3XJ.js → fleet-decisions-OTHB6KRL.js} +5 -5
- package/dist/{fleet-graph-JF5QOATM.js → fleet-graph-YTEZUCUT.js} +13 -11
- package/dist/{fleet-inspect-VLY4S7QM.js → fleet-inspect-SS6YMDCK.js} +44 -41
- package/dist/{fleet-preflight-AIZUEJOY.js → fleet-preflight-PBY4VYOM.js} +5 -9
- package/dist/{fleet-validate-AJRPDMDV.js → fleet-validate-KMEM5L3S.js} +16 -13
- package/dist/{fleet-verify-JFEL2L3H.js → fleet-verify-QD5M7E7Q.js} +42 -39
- package/dist/{fleet-view-ZCON35AG.js → fleet-view-WAMJYNDT.js} +44 -52
- package/dist/{init-DN2WWLFE.js → init-5XQRBOFV.js} +63 -58
- package/dist/{install-XGLBQY5E.js → install-NKNG7KD4.js} +2 -2
- package/dist/{interop-OZBKXAYL.js → interop-34TVO25M.js} +13 -11
- package/dist/{library-YWZG7IMW.js → library-3QY6KF57.js} +17 -14
- package/dist/{memory-I4C4HMLW.js → memory-L4UTIIIW.js} +45 -41
- package/dist/{models-CEYXJBO6.js → models-ZVX3QOWE.js} +39 -31
- package/dist/{monitor-NZ6GCI3P.js → monitor-CEKVSYTS.js} +50 -46
- package/dist/{orchestrator-GCGQ4N5I.js → orchestrator-77BAP6BC.js} +1807 -1039
- package/dist/{panes-KY6W3V2E.js → panes-7STHOAUJ.js} +4 -4
- package/dist/{panes-HMABYVO4.js → panes-SHAUIRXY.js} +10 -8
- package/dist/{paths-II4K7DNR.js → paths-L7LGY6RN.js} +4 -4
- package/dist/{reset-DQ6FGCSH.js → reset-EOLM7GVE.js} +7 -8
- package/dist/{resources-BB3MVJMD.js → resources-74GKTLSF.js} +17 -13
- package/dist/{run-H2GQDUER.js → run-HBAUJNNZ.js} +86 -76
- package/dist/{share-GTJN6A5O.js → share-G3APVLVP.js} +17 -14
- package/dist/{skills-L55TEW6R.js → skills-35HHUKCR.js} +19 -16
- package/dist/{skills-eval-XVXPH2JI.js → skills-eval-QN4HSHDC.js} +55 -57
- package/dist/{skills-inventory-S4MXPJFV.js → skills-inventory-J357J34F.js} +15 -12
- package/dist/{slash-commands-ZSGASKJC.js → slash-commands-JZZCQA32.js} +31 -29
- package/dist/{steer-RZGSCY4R.js → steer-XAVHJM22.js} +3 -3
- package/dist/{support-PKEUNNQL.js → support-U7QOWY26.js} +6 -6
- package/dist/{targets-NCPZ644J.js → targets-DSM6CY3M.js} +59 -53
- package/dist/{terminal-lease-44SV3YCN.js → terminal-lease-JOPFUVEM.js} +14 -9
- package/dist/{tools-DAF3DI3C.js → tools-MKNWVPBH.js} +10 -8
- package/dist/{trace-FYVW2MQA.js → trace-ECQ7TIYZ.js} +48 -3
- package/dist/{tui-primitives-2AKXQNZK.js → tui-primitives-K5PASC3O.js} +8 -4
- package/dist/{uninstall-DW2PNOIC.js → uninstall-N34PCTGJ.js} +4 -6
- package/dist/{upgrade-3XPP6OQL.js → upgrade-H7TOM7YL.js} +35 -62
- package/dist/{usage-3NLHGTU2.js → usage-X52N3IDJ.js} +51 -48
- package/dist/{verifiers-SSQONKRT.js → verifiers-EJTVVSMA.js} +10 -9
- package/dist/{verify-3U6J7FZI.js → verify-YJL6XET2.js} +9 -8
- package/dist/{web-fetch-S7RR6GZ7.js → web-fetch-MPIFL3LL.js} +1 -2
- package/dist/{wiki-generate-CEHYGPGQ.js → wiki-generate-4NDZTQ4B.js} +66 -63
- package/dist/{with-panes-MKB46MPQ.js → with-panes-OBOBFIIR.js} +62 -26
- package/dist/worker/entry.js +57 -52
- package/docs/acp.md +1 -1
- package/docs/built-in-agents.md +40 -32
- package/docs/commands-and-modes.md +9 -3
- package/docs/config-knobs-audit.md +3 -0
- package/docs/configuration-and-targets.md +105 -164
- package/docs/environment-variables.md +2 -1
- package/docs/exit-codes-and-output.md +2 -0
- package/docs/fleet-demo-runbook.md +6 -3
- package/docs/fleet-dispatch.md +8 -6
- package/docs/installation-and-lifecycle.md +1 -1
- package/docs/release-cut-checklist.md +164 -177
- package/docs/trace-store.md +15 -10
- package/docs/troubleshooting.md +1 -1
- package/evals/README.md +5 -0
- package/evals/behavioral-corpus-grader.mjs +103 -0
- package/evals/behavioral-machinery-baseline.json +2276 -0
- package/evals/behavioral-machinery-driver.ts +250 -0
- package/evals/behavioral-machinery-support.ts +253 -0
- package/evals/behavioral-machinery.yaml +614 -0
- package/evals/behavioral-model-negative-control.yaml +68 -0
- package/evals/behavioral-model.yaml +216 -0
- package/evals/fixtures/behavioral-facts.txt +3 -0
- package/evals/fixtures/behavioral-main.ts +7 -0
- package/evals/fixtures/decoy/note.txt +2 -0
- package/evals/fixtures/private/credentials.txt +1 -0
- package/evals/tracked-metrics-baseline.yaml +229 -0
- package/evals/tracked-metrics-grader.mjs +129 -0
- package/package.json +5 -15
- package/skills/README.md +6 -6
- package/skills/coding/ast-grep/SKILL.md +8 -2
- package/skills/coding/coding-standards/SKILL.md +8 -2
- package/skills/coding/prototype/SKILL.md +8 -2
- package/skills/coding/tdd/SKILL.md +8 -2
- package/skills/context/context-handoff/SKILL.md +12 -3
- package/skills/context/context-handoff/evals.md +3 -3
- package/skills/context/context-prime/SKILL.md +8 -2
- package/skills/context/context-prime/evals.md +2 -2
- package/skills/git/file-ticket/SKILL.md +9 -4
- package/skills/git/file-ticket/evals.md +2 -2
- package/skills/git/fix-issue/SKILL.md +12 -5
- package/skills/git/fix-issue/evals.md +4 -4
- package/skills/git/resolve-merge-conflicts/SKILL.md +8 -2
- package/skills/git/resolve-merge-conflicts/evals.md +2 -2
- package/skills/git/ship/SKILL.md +9 -3
- package/skills/git/ship/evals.md +4 -4
- package/skills/git/worktree-create/SKILL.md +7 -2
- package/skills/git/worktree-create/evals.md +6 -6
- package/skills/git/worktree-merge/SKILL.md +7 -2
- package/skills/git/worktree-merge/evals.md +6 -6
- package/skills/meta/{clio-dev → clio-coder-dev}/SKILL.md +14 -8
- package/skills/meta/{clio-dev → clio-coder-dev}/evals.md +3 -3
- package/skills/meta/{clio-test → clio-coder-test}/SKILL.md +11 -5
- package/skills/meta/{clio-test → clio-coder-test}/evals.md +1 -1
- package/skills/meta/credentials/SKILL.md +9 -2
- package/skills/meta/find-skills/SKILL.md +8 -2
- package/skills/meta/herdr/SKILL.md +8 -2
- package/skills/meta/skill-craft/SKILL.md +21 -4
- package/skills/planning/architecture/SKILL.md +9 -3
- package/skills/planning/backlog/SKILL.md +8 -2
- package/skills/planning/prd/SKILL.md +8 -2
- package/skills/planning/product-intent/SKILL.md +8 -2
- package/skills/planning/tech-spec/SKILL.md +9 -3
- package/skills/registry.yaml +66 -66
- package/skills/research/arxiv-literature/SKILL.md +8 -2
- package/skills/research/experiment-protocol/SKILL.md +9 -2
- package/skills/research/scientific-debugging/SKILL.md +9 -2
- package/skills/research/scientific-debugging/evals.md +2 -2
- package/skills/research/scientific-modernization/SKILL.md +9 -2
- package/skills/skill-marketplace.json +257 -38
- package/skills/workflow/cut-it/SKILL.md +10 -2
- package/skills/workflow/design-council/SKILL.md +11 -2
- package/skills/workflow/grill-me/SKILL.md +8 -2
- package/skills/workflow/workflow-distiller/SKILL.md +8 -2
- package/src/cli/acp.ts +2 -2
- package/src/cli/auth.ts +2 -2
- package/src/cli/bootstrap-generate.ts +5 -5
- package/src/cli/clio.ts +6 -1
- package/src/cli/config-inspect.ts +3 -3
- package/src/cli/configure-interop.ts +1 -1
- package/src/cli/configure.ts +27 -27
- package/src/cli/default-target.ts +1 -1
- package/src/cli/docs.ts +6 -6
- package/src/cli/doctor-naming.ts +323 -0
- package/src/cli/doctor-panes.ts +46 -14
- package/src/cli/doctor-toolchain.ts +29 -8
- package/src/cli/doctor.ts +15 -1
- package/src/cli/eval-inventory.ts +8 -8
- package/src/cli/evidence-detail.ts +1 -1
- package/src/cli/evidence-inventory.ts +1 -1
- package/src/cli/fleet-decisions.ts +1 -1
- package/src/cli/fleet-inspect.ts +1 -1
- package/src/cli/fleet-preflight.ts +1 -1
- package/src/cli/fleet-verify.ts +1 -1
- package/src/cli/fleet-view.ts +40 -23
- package/src/cli/fleet.ts +8 -5
- package/src/cli/interop-inspect.ts +2 -2
- package/src/cli/models.ts +3 -3
- package/src/cli/modes/print.ts +1 -1
- package/src/cli/reset.ts +1 -1
- package/src/cli/run.ts +11 -15
- package/src/cli/share.ts +1 -1
- package/src/cli/skills-eval.ts +11 -11
- package/src/cli/targets.ts +23 -24
- package/src/cli/trace-inspect.ts +1 -1
- package/src/cli/trace.ts +41 -0
- package/src/cli/uninstall.ts +2 -2
- package/src/cli/upgrade.ts +29 -34
- package/src/cli/usage.ts +2 -2
- package/src/cli/validate-model.ts +1 -1
- package/src/cli/verifiers-inspect.ts +1 -1
- package/src/cli/wiki-generate.ts +5 -5
- package/src/core/bash-exec.ts +1 -1
- package/src/core/boot-trace.ts +3 -3
- package/src/core/bus-trace.ts +2 -2
- package/src/core/compile-cache.ts +1 -1
- package/src/core/config.ts +1062 -886
- package/src/core/defaults.ts +321 -528
- package/src/core/domain-loader.ts +6 -4
- package/src/core/event-bus.ts +1 -1
- package/src/core/file-references.ts +78 -88
- package/src/core/git-commit-attribution.ts +3 -9
- package/src/core/guardrails.ts +24 -4
- package/src/core/naming-compat.ts +45 -0
- package/src/core/naming-events.ts +62 -0
- package/src/core/recent-models.ts +1 -7
- package/src/core/residency-protection.ts +4 -8
- package/src/core/resolve-config-value.ts +1 -1
- package/src/core/response-model-id.ts +0 -14
- package/src/core/session-routing.ts +84 -74
- package/src/core/skill-activation.ts +18 -0
- package/src/core/termination.ts +4 -4
- package/src/core/timers.ts +2 -12
- package/src/domains/agents/catalog.ts +2 -12
- package/src/domains/agents/extension.ts +3 -3
- package/src/domains/agents/registry.ts +7 -7
- package/src/domains/agents/result-contract.ts +1 -1
- package/src/domains/agents/spec.ts +0 -11
- package/src/domains/config/classify.ts +35 -47
- package/src/domains/config/extension.ts +5 -5
- package/src/domains/config/keybindings.ts +48 -47
- package/src/domains/config/watcher.ts +1 -1
- package/src/domains/context/codewiki/indexer.ts +1 -1
- package/src/domains/context/extension.ts +3 -3
- package/src/domains/context/prompt-context.ts +1 -1
- package/src/domains/context/wiki/assemble.ts +2 -2
- package/src/domains/context/working-set/replay/metrics.ts +0 -4
- package/src/domains/context/working-set/replay/report.ts +1 -1
- package/src/domains/context/working-set/replay/synthetic.ts +2 -2
- package/src/domains/dispatch/active-route-planner.ts +2 -2
- package/src/domains/dispatch/agent-candidates.ts +1 -1
- package/src/domains/dispatch/agent-ledger-store.ts +1 -1
- package/src/domains/dispatch/agent-ledger.ts +1 -1
- package/src/domains/dispatch/assignment.ts +5 -5
- package/src/domains/dispatch/capacity-lease.ts +2 -5
- package/src/domains/dispatch/code-step.ts +1 -1
- package/src/domains/dispatch/contract.ts +2 -2
- package/src/domains/dispatch/extension.ts +65 -61
- package/src/domains/dispatch/fleet-node-prompt.ts +1 -1
- package/src/domains/dispatch/fleet-preflight.ts +8 -17
- package/src/domains/dispatch/fleet-run.ts +0 -7
- package/src/domains/dispatch/gate-decisions.ts +25 -14
- package/src/domains/dispatch/joint-route-resolver.ts +1 -1
- package/src/domains/dispatch/path-scope.ts +0 -61
- package/src/domains/dispatch/placement.ts +2 -2
- package/src/domains/dispatch/receipt-findings.ts +1 -1
- package/src/domains/dispatch/receipt-integrity.ts +20 -8
- package/src/domains/dispatch/reservation-store.ts +0 -23
- package/src/domains/dispatch/route-decision.ts +1 -1
- package/src/domains/dispatch/route-history.ts +1 -1
- package/src/domains/dispatch/route-policy.ts +1 -1
- package/src/domains/dispatch/route-readiness.ts +0 -28
- package/src/domains/dispatch/run-event-journal.ts +6 -5
- package/src/domains/dispatch/tool-stats.ts +1 -1
- package/src/domains/dispatch/transport.ts +2 -19
- package/src/domains/dispatch/types.ts +3 -3
- package/src/domains/dispatch/worker-protocol.ts +2 -2
- package/src/domains/eval/artifacts/store.ts +5 -4
- package/src/domains/eval/compare/thresholds.ts +0 -8
- package/src/domains/eval/execution-provenance.ts +1 -1
- package/src/domains/eval/metrics/token-stream.ts +0 -7
- package/src/domains/eval/report.ts +1 -1
- package/src/domains/eval/runner.ts +1 -1
- package/src/domains/eval/runners/clio-run.ts +7 -6
- package/src/domains/eval/runners/external-command.ts +4 -3
- package/src/domains/eval/schema/artifact.ts +1 -1
- package/src/domains/eval/schema/behavioral-metrics.ts +3 -2
- package/src/domains/eval/schema/behavioral.ts +7 -6
- package/src/domains/eval/schema/execution-envelope.ts +4 -2
- package/src/domains/eval/schema/naming.ts +10 -0
- package/src/domains/eval/schema/suite.ts +2 -2
- package/src/domains/eval/schema/validate.ts +9 -5
- package/src/domains/eval/schema/verdict.ts +4 -2
- package/src/domains/eval/store.ts +12 -2
- package/src/domains/eval/suites/run.ts +12 -6
- package/src/domains/eval/types.ts +1 -1
- package/src/domains/eval/workspaces/git.ts +1 -1
- package/src/domains/eval/workspaces/temp-copy.ts +1 -1
- package/src/domains/evidence/build.ts +13 -5
- package/src/domains/interop/consent.ts +7 -7
- package/src/domains/interop/extension.ts +1 -1
- package/src/domains/lifecycle/doctor.ts +27 -21
- package/src/domains/lifecycle/migrations/2026-09-01-clio-coder-naming.ts +155 -0
- package/src/domains/lifecycle/migrations/2026-09-01-retire-panes-knobs.ts +59 -0
- package/src/domains/lifecycle/migrations/2026-09-01-settings-v2.ts +338 -0
- package/src/domains/lifecycle/migrations/index.ts +20 -1
- package/src/domains/lifecycle/naming-history.ts +153 -0
- package/src/domains/lifecycle/naming-mutable-state.ts +104 -0
- package/src/domains/lifecycle/naming-resources.ts +261 -0
- package/src/domains/lifecycle/naming-tool-markers.ts +139 -0
- package/src/domains/lifecycle/naming-yazi.ts +81 -0
- package/src/domains/lifecycle/upgrade-notice.ts +1 -1
- package/src/domains/memory/task-memory-handoff.ts +6 -3
- package/src/domains/middleware/index.ts +7 -0
- package/src/domains/middleware/marketplace-offer.ts +339 -0
- package/src/domains/middleware/runtime.ts +2 -2
- package/src/domains/mux/contract.ts +157 -25
- package/src/domains/mux/detect.ts +29 -5
- package/src/domains/mux/dock-controller.ts +365 -0
- package/src/domains/mux/extension.ts +7 -1
- package/src/domains/mux/index.ts +20 -0
- package/src/domains/mux/operations.ts +28 -0
- package/src/domains/mux/protocol.ts +19 -6
- package/src/domains/mux/socket-client.ts +167 -19
- package/src/domains/mux/types.ts +49 -6
- package/src/domains/mux/yazi/event-stream.ts +6 -4
- package/src/domains/mux/yazi/profile.ts +1 -1
- package/src/domains/mux/yazi/session.ts +26 -3
- package/src/domains/observability/extension.ts +1 -1
- package/src/domains/observability/out-of-turn-usage.ts +2 -2
- package/src/domains/observability/projection.ts +1 -1
- package/src/domains/observability/trace-store.ts +22 -12
- package/src/domains/prompts/compiler.ts +2 -2
- package/src/domains/prompts/extension.ts +3 -3
- package/src/domains/prompts/fragments/identity/clio-worker.md +1 -1
- package/src/domains/prompts/fragments/operating/skills.md +25 -18
- package/src/domains/providers/extension.ts +5 -5
- package/src/domains/providers/knowledge-base-path.ts +1 -1
- package/src/domains/providers/model-runtime-capabilities.ts +14 -2
- package/src/domains/providers/models/cloud-models/alcf.yaml +1 -1
- package/src/domains/providers/models/local-models/{clio-local-coding-targets.yaml → clio-coder-local-coding-targets.yaml} +4 -4
- package/src/domains/providers/plugins.ts +1 -1
- package/src/domains/providers/resolver.ts +1 -1
- package/src/domains/providers/runtimes/cloud/alcf.ts +4 -4
- package/src/domains/providers/runtimes/common/lmstudio-http.ts +1 -5
- package/src/domains/providers/runtimes/common/local-synth.ts +3 -3
- package/src/domains/providers/runtimes/common/probe-helpers.ts +2 -2
- package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +1 -1
- package/src/domains/providers/runtimes/local-native/lmstudio.ts +2 -9
- package/src/domains/providers/runtimes/protocol/litellm.ts +1 -91
- package/src/domains/providers/types/knowledge-base.ts +13 -0
- package/src/domains/providers/types/local-model-quirks.ts +2 -2
- package/src/domains/providers/types/target-descriptor.ts +3 -3
- package/src/domains/resources/extension.ts +1 -1
- package/src/domains/resources/library.ts +6 -6
- package/src/domains/resources/prompts/loader.ts +1 -1
- package/src/domains/resources/skills/content-hash.ts +7 -6
- package/src/domains/resources/skills/evals.ts +1 -1
- package/src/domains/resources/skills/install.ts +36 -12
- package/src/domains/resources/skills/loader.ts +39 -13
- package/src/domains/resources/skills/marketplace.ts +21 -2
- package/src/domains/resources/skills/promotion.ts +214 -0
- package/src/domains/safety/audit.ts +2 -2
- package/src/domains/safety/finish-contract.ts +2 -1
- package/src/domains/safety/run-effects.ts +1 -1
- package/src/domains/scheduling/extension.ts +4 -4
- package/src/domains/session/archive-readers.ts +9 -1
- package/src/domains/session/compaction/branch-summary.ts +4 -0
- package/src/domains/session/compaction/compact.ts +1 -1
- package/src/domains/session/compaction/tokens.ts +4 -0
- package/src/domains/session/context-accounting.ts +1 -1
- package/src/domains/session/decision-board.ts +1 -1
- package/src/domains/session/extension.ts +1 -1
- package/src/domains/session/handoff.ts +2 -2
- package/src/domains/session/prompt-manifest.ts +0 -5
- package/src/domains/session/protected-artifact-journal.ts +12 -6
- package/src/domains/session/retry.ts +1 -1
- package/src/domains/share/archive.ts +85 -36
- package/src/domains/toolchain/install.ts +1 -1
- package/src/engine/acp/adapter.ts +3 -3
- package/src/engine/acp/event-mapper.ts +3 -3
- package/src/engine/acp/server.ts +27 -26
- package/src/engine/acp/tool-mediator.ts +2 -2
- package/src/engine/acp/types.ts +1 -1
- package/src/engine/alcf-oauth.ts +5 -5
- package/src/engine/antigravity/subprocess-runtime.ts +2 -2
- package/src/engine/api-registry.ts +1 -1
- package/src/engine/apis/llamacpp-residency.ts +1 -19
- package/src/engine/apis/lmstudio.ts +1 -6
- package/src/engine/apis/ollama-native.ts +3 -3
- package/src/engine/apis/openai-completions.ts +2 -2
- package/src/engine/apis/residency.ts +3 -9
- package/src/engine/claude/sdk-module.ts +1 -12
- package/src/engine/claude/sdk-runtime.ts +6 -6
- package/src/engine/claude/subprocess-runtime.ts +1 -1
- package/src/engine/claude/tool-safety.ts +4 -4
- package/src/engine/loop-guard.ts +0 -5
- package/src/engine/session.ts +14 -7
- package/src/engine/tui-primitives.ts +1 -1
- package/src/engine/worker-events.ts +6 -6
- package/src/engine/worker-runtime.ts +14 -13
- package/src/entry/orchestrator.ts +107 -88
- package/src/interactive/application-controller.ts +21 -21
- package/src/interactive/bus-notices.ts +2 -2
- package/src/interactive/chat-loop.ts +8 -8
- package/src/interactive/chat-panel.ts +1 -1
- package/src/interactive/clio-editor.ts +105 -1
- package/src/interactive/context-activity.ts +8 -6
- package/src/interactive/context-meter.ts +3 -6
- package/src/interactive/context-overlay.ts +1 -1
- package/src/interactive/cost-overlay.ts +1 -1
- package/src/interactive/council-grid.ts +2 -2
- package/src/interactive/dispatch-board.ts +30 -33
- package/src/interactive/editor-bash.ts +21 -0
- package/src/interactive/editor-steer.ts +9 -4
- package/src/interactive/editor-submit.ts +24 -18
- package/src/interactive/external-editor.ts +1 -1
- package/src/interactive/file-reference-completion.ts +360 -0
- package/src/interactive/footer/dashboard.ts +15 -17
- package/src/interactive/footer/notifications.ts +14 -8
- package/src/interactive/footer/widgets.ts +2 -44
- package/src/interactive/interactive-application.ts +79 -59
- package/src/interactive/interactive-event-projection.ts +1 -1
- package/src/interactive/interactive-input-runtime.ts +2 -2
- package/src/interactive/interactive-presentation.ts +21 -16
- package/src/interactive/interactive-shell.ts +2 -2
- package/src/interactive/interactive-slash-runtime.ts +63 -17
- package/src/interactive/interactive-subscriptions.ts +1 -1
- package/src/interactive/interactive-tickers.ts +1 -1
- package/src/interactive/keybinding-manager.ts +4 -4
- package/src/interactive/layout.ts +1 -1
- package/src/interactive/memory-overlay.ts +2 -2
- package/src/interactive/modal-marker.ts +2 -21
- package/src/interactive/mutation-preview.ts +1 -1
- package/src/interactive/overlay-frame.ts +4 -12
- package/src/interactive/overlay-general-openers.ts +6 -2
- package/src/interactive/overlay-key-routing.ts +7 -7
- package/src/interactive/overlay-lifecycle.ts +1 -1
- package/src/interactive/overlay-model-selectors.ts +3 -3
- package/src/interactive/overlays/agents.ts +2 -2
- package/src/interactive/overlays/ask-user.ts +25 -11
- package/src/interactive/overlays/context-reset.ts +28 -4
- package/src/interactive/overlays/cwd-fallback.ts +28 -4
- package/src/interactive/overlays/decisions.ts +4 -2
- package/src/interactive/overlays/fleet-run-approval.ts +3 -3
- package/src/interactive/overlays/handoff-review.ts +2 -2
- package/src/interactive/overlays/interop.ts +1 -1
- package/src/interactive/overlays/library-install-confirm.ts +1 -1
- package/src/interactive/overlays/message-picker.ts +1 -1
- package/src/interactive/overlays/model-selector.ts +39 -31
- package/src/interactive/overlays/prompts.ts +10 -4
- package/src/interactive/overlays/session-selector.ts +2 -2
- package/src/interactive/overlays/settings.ts +339 -293
- package/src/interactive/overlays/side-question.ts +2 -2
- package/src/interactive/overlays/skills-hub.ts +8 -8
- package/src/interactive/overlays/tree-selector.ts +2 -2
- package/src/interactive/panes-runtime.ts +36 -10
- package/src/interactive/permission-overlay.ts +2 -2
- package/src/interactive/renderers/retry-status.ts +12 -4
- package/src/interactive/renderers/tool-execution.ts +4 -4
- package/src/interactive/session-transcript.ts +3 -3
- package/src/interactive/slash-autocomplete.ts +454 -165
- package/src/interactive/slash-commands.ts +279 -183
- package/src/interactive/slash-spec.ts +160 -17
- package/src/interactive/status/controller.ts +2 -2
- package/src/interactive/stream-pacing-policy.ts +1 -1
- package/src/interactive/tasks-overlay.ts +20 -13
- package/src/interactive/terminal-lease.ts +6 -7
- package/src/interactive/turn-context.ts +11 -11
- package/src/interactive/turn-persistence.ts +2 -2
- package/src/interactive/turn-prewarm.ts +2 -2
- package/src/interactive/turn-runtime.ts +8 -8
- package/src/interactive/turn-state.ts +1 -1
- package/src/interactive/view/artifacts.ts +12 -9
- package/src/interactive/view/view-overlay.ts +13 -10
- package/src/interactive/watch-pane.ts +38 -10
- package/src/interactive/welcome-dashboard.ts +15 -15
- package/src/interactive/worker-progress.ts +4 -4
- package/src/interactive/worker-receipts.ts +1 -1
- package/src/interactive/worker-stream.ts +1 -4
- package/src/interactive/yazi-bridge.ts +12 -5
- package/src/tools/ask-user.ts +3 -3
- package/src/tools/bash.ts +1 -1
- package/src/tools/builtin-tool-catalog.ts +1 -1
- package/src/tools/compete-worktrees.ts +27 -17
- package/src/tools/context/index.ts +15 -1
- package/src/tools/dispatch-admission.ts +4 -2
- package/src/tools/dispatch-arguments.ts +1 -1
- package/src/tools/dispatch-plan.ts +0 -11
- package/src/tools/dispatch-run-events.ts +12 -10
- package/src/tools/dispatch-runner.ts +11 -6
- package/src/tools/dispatch.ts +1 -1
- package/src/tools/find.ts +1 -6
- package/src/tools/monitor.ts +4 -4
- package/src/tools/observers.ts +0 -33
- package/src/tools/task-worktree.ts +28 -7
- package/src/tools/verify/authoring.ts +3 -6
- package/src/tools/verify/frontend.ts +1 -1
- package/src/tools/web-fetch.ts +1 -1
- package/src/worker/entry.ts +4 -3
- package/src/worker/protocol.ts +16 -14
- package/src/worker/spec-contract.ts +2 -2
- package/src/worker/stdin-demux.ts +2 -2
- package/dist/chunk-GXNLGKAB.js +0 -571
- package/dist/chunk-VFA6GDY5.js +0 -1625
- package/dist/doctor-QOA5FNY5.js +0 -313
- package/src/engine/apis/degraded-inference.ts +0 -95
- /package/skills/meta/{clio-test → clio-coder-test}/references/harness.md +0 -0
- /package/skills/meta/{clio-test → clio-coder-test}/references/test-map.md +0 -0
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { OutputVerbosity } from "../../core/defaults.js";
|
|
2
|
-
import { responseModelIdObservationLabel } from "../../core/response-model-id.js";
|
|
3
2
|
import { ToolNames } from "../../core/tool-names.js";
|
|
4
3
|
import {
|
|
5
4
|
type CostAggregate,
|
|
@@ -28,7 +27,6 @@ import {
|
|
|
28
27
|
type TurnSummary,
|
|
29
28
|
} from "../status/index.js";
|
|
30
29
|
import {
|
|
31
|
-
abbreviateModelId,
|
|
32
30
|
type ClioTheme,
|
|
33
31
|
type ClioToken,
|
|
34
32
|
clioTheme,
|
|
@@ -700,46 +698,6 @@ function stopReasonStyle(reason: TurnSummary["stopReason"]): { glyph: string; to
|
|
|
700
698
|
return { glyph: GLYPH.ok, token: "success" };
|
|
701
699
|
}
|
|
702
700
|
|
|
703
|
-
/**
|
|
704
|
-
* Elegant single-line readout of the most recent completed turn. This is the
|
|
705
|
-
* footer home for the metrics that used to print faintly under each assistant
|
|
706
|
-
* reply: stop outcome, wall time, token in/out, reasoning, and tool work. The
|
|
707
|
-
* model is intentionally omitted because the editor rail already carries it.
|
|
708
|
-
*/
|
|
709
|
-
export function formatLastTurn(theme: ClioTheme, summary: TurnSummary): string {
|
|
710
|
-
const stop = stopReasonStyle(summary.stopReason);
|
|
711
|
-
const parts: string[] = [
|
|
712
|
-
theme.fg(stop.token, `${stop.glyph} ${formatCompactMs(summary.elapsedMs)}`),
|
|
713
|
-
theme.fg("muted", `${GLYPH.up}${summary.inputTokens} ${GLYPH.down}${summary.outputTokens}`),
|
|
714
|
-
];
|
|
715
|
-
// Zero suppresses the chip, the same rule the chat panel's turn line follows:
|
|
716
|
-
// a turn that spent no reasoning tokens states nothing by printing `r0`.
|
|
717
|
-
const chip = formatReasoningChip(reasoningFromSummary(summary), String);
|
|
718
|
-
if (chip !== null) parts.push(theme.fg("reason", chip));
|
|
719
|
-
if (summary.cacheReadTokens > 0 || summary.cacheWriteTokens > 0) {
|
|
720
|
-
parts.push(theme.fg("dim", `cache ${summary.cacheReadTokens}/${summary.cacheWriteTokens}`));
|
|
721
|
-
}
|
|
722
|
-
if (summary.toolCount > 0) {
|
|
723
|
-
const label = `${summary.toolCount} tool${summary.toolCount === 1 ? "" : "s"}`;
|
|
724
|
-
const errors = summary.toolErrorCount > 0 ? theme.fg("error", ` ${summary.toolErrorCount}${GLYPH.error}`) : "";
|
|
725
|
-
parts.push(`${theme.fg("muted", label)}${errors}`);
|
|
726
|
-
}
|
|
727
|
-
if (summary.watchdogPeak >= 2) parts.push(theme.fg("warning", "slow"));
|
|
728
|
-
if (summary.truncated) parts.push(theme.fg("warning", "trunc"));
|
|
729
|
-
const observation = summary.responseModelIdObservation;
|
|
730
|
-
const observedId =
|
|
731
|
-
observation.state === "reported"
|
|
732
|
-
? observation.reportedModelId
|
|
733
|
-
: observation.state === "legacy-difference-only"
|
|
734
|
-
? observation.differingModelId
|
|
735
|
-
: null;
|
|
736
|
-
const observationText = `response model id observation ${responseModelIdObservationLabel(observation)}${
|
|
737
|
-
observedId === null ? "" : ` ${abbreviateModelId(observedId)}`
|
|
738
|
-
}`;
|
|
739
|
-
parts.push(theme.fg("warning", observationText));
|
|
740
|
-
return parts.join(theme.fg("dim", " · "));
|
|
741
|
-
}
|
|
742
|
-
|
|
743
701
|
/**
|
|
744
702
|
* One row per live worker: the origin glyph, the sub-process glyph when Clio
|
|
745
703
|
* started the run for itself, the agent's own name, the fleet node it landed
|
|
@@ -1099,7 +1057,7 @@ function outputVerbosityLabel(verbosity: OutputVerbosity): string {
|
|
|
1099
1057
|
return verbosity === "minimal" ? "min" : verbosity === "verbose" ? "verbose" : "default";
|
|
1100
1058
|
}
|
|
1101
1059
|
|
|
1102
|
-
|
|
1060
|
+
function buildHarnessStatePill(
|
|
1103
1061
|
theme: ClioTheme,
|
|
1104
1062
|
status: AgentStatus,
|
|
1105
1063
|
toolCounts: ToolTallySnapshot,
|
|
@@ -1175,7 +1133,7 @@ function selectChips(
|
|
|
1175
1133
|
return surviving();
|
|
1176
1134
|
}
|
|
1177
1135
|
|
|
1178
|
-
|
|
1136
|
+
function buildMetricStrip(
|
|
1179
1137
|
theme: ClioTheme,
|
|
1180
1138
|
status: AgentStatus,
|
|
1181
1139
|
throughput: TokenThroughputSnapshot | null | undefined,
|
|
@@ -53,6 +53,7 @@ import type {
|
|
|
53
53
|
ContextClearCommandOptions,
|
|
54
54
|
InitCommandOptions,
|
|
55
55
|
RunIo,
|
|
56
|
+
SettingsAreaId,
|
|
56
57
|
TaskMemorySeedCommandResult,
|
|
57
58
|
} from "./slash-commands.js";
|
|
58
59
|
import { processAutoPacingAllowed, resolveSmoothStreamingMode } from "./stream-pacing-policy.js";
|
|
@@ -91,20 +92,6 @@ export {
|
|
|
91
92
|
type SlashCommandKind,
|
|
92
93
|
} from "./slash-commands.js";
|
|
93
94
|
|
|
94
|
-
export function shouldAnnouncePermissionRequest(
|
|
95
|
-
seenRequestIds: Set<string>,
|
|
96
|
-
requestId: string,
|
|
97
|
-
maxSize = 2048,
|
|
98
|
-
): boolean {
|
|
99
|
-
if (seenRequestIds.has(requestId)) return false;
|
|
100
|
-
seenRequestIds.add(requestId);
|
|
101
|
-
if (seenRequestIds.size > maxSize) {
|
|
102
|
-
const oldest = seenRequestIds.values().next().value;
|
|
103
|
-
if (oldest !== undefined) seenRequestIds.delete(oldest);
|
|
104
|
-
}
|
|
105
|
-
return true;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
95
|
export function isLiveWorkerEscalationRequest(payload: PermissionRequestedPayload): boolean {
|
|
109
96
|
if (typeof payload.requestId !== "string") return false;
|
|
110
97
|
if (payload.escalation !== true) return false;
|
|
@@ -243,7 +230,7 @@ export interface InteractiveDeps {
|
|
|
243
230
|
onForkSession?: (parentTurnId: string) => void;
|
|
244
231
|
/**
|
|
245
232
|
* Run `/context compact` for the current session. Resolves the compaction model
|
|
246
|
-
* (settings.compaction.model with fallback to the
|
|
233
|
+
* (settings.context.compaction.model with fallback to the chat target),
|
|
247
234
|
* reads session entries, streams a summary via the session compaction
|
|
248
235
|
* engine, and persists a compactionSummary entry.
|
|
249
236
|
*/
|
|
@@ -282,7 +269,7 @@ export interface InteractiveSubmitExpansion {
|
|
|
282
269
|
pendingSkillRequests: PendingSkillRequest[];
|
|
283
270
|
}
|
|
284
271
|
|
|
285
|
-
|
|
272
|
+
async function expandInteractiveSubmitAsync(
|
|
286
273
|
text: string,
|
|
287
274
|
resources: ResourcesContract | undefined,
|
|
288
275
|
cwd = process.cwd(),
|
|
@@ -314,7 +301,7 @@ function availableInteractiveThinkingLevels(deps: InteractiveDeps): ReadonlyArra
|
|
|
314
301
|
export interface KeyBindingDeps {
|
|
315
302
|
/**
|
|
316
303
|
* Keybinding lookup injected by startInteractive. Defaults come from
|
|
317
|
-
* CLIO_KEYBINDINGS; user overrides from settings.keybindings. Tests may
|
|
304
|
+
* CLIO_KEYBINDINGS; user overrides from settings.interface.keybindings. Tests may
|
|
318
305
|
* substitute a narrower matcher via createKeybindingManagerForTesting.
|
|
319
306
|
*/
|
|
320
307
|
matches: (data: string, id: ClioKeybinding) => boolean;
|
|
@@ -365,73 +352,73 @@ export function resolveCtrlCAction(deps: CtrlCActionDeps): CtrlCAction {
|
|
|
365
352
|
return "arm-shutdown";
|
|
366
353
|
}
|
|
367
354
|
|
|
368
|
-
|
|
355
|
+
function dispatchInteractiveAction(id: ClioKeybinding, deps: KeyBindingDeps): boolean {
|
|
369
356
|
switch (id) {
|
|
370
|
-
case "clio.notifications.dismiss":
|
|
357
|
+
case "clio-coder.notifications.dismiss":
|
|
371
358
|
deps.dismissNotifications();
|
|
372
359
|
return true;
|
|
373
|
-
case "clio.tool.expand":
|
|
360
|
+
case "clio-coder.tool.expand":
|
|
374
361
|
deps.toggleToolExpansion();
|
|
375
362
|
return true;
|
|
376
|
-
case "clio.tool.expandAll":
|
|
363
|
+
case "clio-coder.tool.expandAll":
|
|
377
364
|
deps.toggleAllToolExpansion();
|
|
378
365
|
return true;
|
|
379
|
-
case "clio.tool.liveOutput":
|
|
366
|
+
case "clio-coder.tool.liveOutput":
|
|
380
367
|
deps.toggleLiveToolOutput();
|
|
381
368
|
return true;
|
|
382
|
-
case "clio.editor.external":
|
|
369
|
+
case "clio-coder.editor.external":
|
|
383
370
|
deps.openExternalEditor();
|
|
384
371
|
return true;
|
|
385
|
-
case "clio.message.followUp":
|
|
372
|
+
case "clio-coder.message.followUp":
|
|
386
373
|
deps.queueFollowUp();
|
|
387
374
|
return true;
|
|
388
|
-
case "clio.message.interrupt":
|
|
375
|
+
case "clio-coder.message.interrupt":
|
|
389
376
|
deps.interruptWithMessage();
|
|
390
377
|
return true;
|
|
391
|
-
case "clio.message.dequeue":
|
|
378
|
+
case "clio-coder.message.dequeue":
|
|
392
379
|
deps.restoreQueuedFollowUps();
|
|
393
380
|
return true;
|
|
394
|
-
case "clio.thinking.expand":
|
|
381
|
+
case "clio-coder.thinking.expand":
|
|
395
382
|
deps.toggleThinkingExpansion();
|
|
396
383
|
return true;
|
|
397
|
-
case "clio.thinking.expandAll":
|
|
384
|
+
case "clio-coder.thinking.expandAll":
|
|
398
385
|
deps.toggleAllThinkingExpansion();
|
|
399
386
|
return true;
|
|
400
|
-
case "clio.status.toggle":
|
|
387
|
+
case "clio-coder.status.toggle":
|
|
401
388
|
deps.toggleStatus();
|
|
402
389
|
return true;
|
|
403
|
-
case "clio.thinking.cycle":
|
|
390
|
+
case "clio-coder.thinking.cycle":
|
|
404
391
|
deps.cycleThinking();
|
|
405
392
|
return true;
|
|
406
|
-
case "clio.session.tree":
|
|
393
|
+
case "clio-coder.session.tree":
|
|
407
394
|
deps.openTree();
|
|
408
395
|
return true;
|
|
409
|
-
case "clio.dispatchBoard.toggle":
|
|
396
|
+
case "clio-coder.dispatchBoard.toggle":
|
|
410
397
|
deps.toggleDispatchBoard();
|
|
411
398
|
return true;
|
|
412
|
-
case "clio.tasks.open":
|
|
399
|
+
case "clio-coder.tasks.open":
|
|
413
400
|
deps.openTasks();
|
|
414
401
|
return true;
|
|
415
|
-
case "clio.decisions.open":
|
|
402
|
+
case "clio-coder.decisions.open":
|
|
416
403
|
deps.openDecisions();
|
|
417
404
|
return true;
|
|
418
|
-
case "clio.dispatch.background":
|
|
405
|
+
case "clio-coder.dispatch.background":
|
|
419
406
|
deps.backgroundDispatch();
|
|
420
407
|
return true;
|
|
421
|
-
case "clio.model.select":
|
|
408
|
+
case "clio-coder.model.select":
|
|
422
409
|
deps.openModelSelector();
|
|
423
410
|
return true;
|
|
424
|
-
case "clio.model.cycleBackward":
|
|
411
|
+
case "clio-coder.model.cycleBackward":
|
|
425
412
|
deps.cycleScopedModelBackward();
|
|
426
413
|
return true;
|
|
427
|
-
case "clio.model.cycleForward":
|
|
414
|
+
case "clio-coder.model.cycleForward":
|
|
428
415
|
deps.cycleScopedModelForward();
|
|
429
416
|
return true;
|
|
430
|
-
case "clio.exit":
|
|
417
|
+
case "clio-coder.exit":
|
|
431
418
|
if (deps.canExit && !deps.canExit()) return false;
|
|
432
419
|
deps.requestShutdown();
|
|
433
420
|
return true;
|
|
434
|
-
case "clio.leader":
|
|
421
|
+
case "clio-coder.leader":
|
|
435
422
|
return false;
|
|
436
423
|
}
|
|
437
424
|
}
|
|
@@ -439,20 +426,20 @@ export function dispatchInteractiveAction(id: ClioKeybinding, deps: KeyBindingDe
|
|
|
439
426
|
/** Pure key router: returns true when the input was consumed. */
|
|
440
427
|
export function routeInteractiveKey(data: string, deps: KeyBindingDeps): boolean {
|
|
441
428
|
const order: ClioKeybinding[] = [
|
|
442
|
-
"clio.status.toggle",
|
|
443
|
-
"clio.thinking.cycle",
|
|
444
|
-
"clio.session.tree",
|
|
445
|
-
"clio.dispatchBoard.toggle",
|
|
446
|
-
"clio.tasks.open",
|
|
447
|
-
"clio.decisions.open",
|
|
448
|
-
"clio.dispatch.background",
|
|
449
|
-
"clio.model.select",
|
|
429
|
+
"clio-coder.status.toggle",
|
|
430
|
+
"clio-coder.thinking.cycle",
|
|
431
|
+
"clio-coder.session.tree",
|
|
432
|
+
"clio-coder.dispatchBoard.toggle",
|
|
433
|
+
"clio-coder.tasks.open",
|
|
434
|
+
"clio-coder.decisions.open",
|
|
435
|
+
"clio-coder.dispatch.background",
|
|
436
|
+
"clio-coder.model.select",
|
|
450
437
|
// Match cycleBackward before cycleForward so a user rebind where one key
|
|
451
438
|
// is a prefix of the other resolves to the more specific binding first.
|
|
452
439
|
// The defaults (alt+k / alt+j) do not prefix-match each other.
|
|
453
|
-
"clio.model.cycleBackward",
|
|
454
|
-
"clio.model.cycleForward",
|
|
455
|
-
"clio.exit",
|
|
440
|
+
"clio-coder.model.cycleBackward",
|
|
441
|
+
"clio-coder.model.cycleForward",
|
|
442
|
+
"clio-coder.exit",
|
|
456
443
|
];
|
|
457
444
|
for (const id of order) {
|
|
458
445
|
if (deps.matches(data, id)) return dispatchInteractiveAction(id, deps);
|
|
@@ -461,13 +448,13 @@ export function routeInteractiveKey(data: string, deps: KeyBindingDeps): boolean
|
|
|
461
448
|
}
|
|
462
449
|
|
|
463
450
|
export async function createInteractiveApplication(deps: InteractiveDeps): Promise<number> {
|
|
464
|
-
const initialSmoothStreaming = resolveSmoothStreamingMode(deps.getSettings?.().
|
|
451
|
+
const initialSmoothStreaming = resolveSmoothStreamingMode(deps.getSettings?.().interface.smoothStreaming ?? "off");
|
|
465
452
|
const initialAutoPacingAllowed = processAutoPacingAllowed(false);
|
|
466
453
|
const lease = deps.terminalLease;
|
|
467
454
|
const shell =
|
|
468
455
|
lease?.shell ??
|
|
469
456
|
createProcessInteractiveShell({
|
|
470
|
-
tuiMode: deps.getSettings?.().
|
|
457
|
+
tuiMode: deps.getSettings?.().interface.mode ?? "regular",
|
|
471
458
|
streamPacingActive:
|
|
472
459
|
initialSmoothStreaming === "on" || (initialSmoothStreaming === "auto" && initialAutoPacingAllowed),
|
|
473
460
|
...(deps.onFirstFrameCommit ? { onFirstFrameCommit: deps.onFirstFrameCommit } : {}),
|
|
@@ -622,7 +609,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
622
609
|
notice: (level, text) => notify(level, text, `yazi:${level}`),
|
|
623
610
|
getCwd: () => process.cwd(),
|
|
624
611
|
getSettings: () =>
|
|
625
|
-
deps.getSettings?.().panes.
|
|
612
|
+
deps.getSettings?.().interface.panes.files ?? {
|
|
626
613
|
mode: "companion",
|
|
627
614
|
profile: "managed",
|
|
628
615
|
followCwd: true,
|
|
@@ -643,7 +630,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
643
630
|
// `CLIO_CODER_INTERACTIVE=1` forced the interactive surface on.
|
|
644
631
|
const desktopNotifications = createInteractiveDesktopNotifications({
|
|
645
632
|
write: (data) => terminal.write(data),
|
|
646
|
-
enabled: () => deps.getSettings?.().
|
|
633
|
+
enabled: () => deps.getSettings?.().interface.desktopNotifications ?? false,
|
|
647
634
|
interactiveTty: () => process.stdout.isTTY === true,
|
|
648
635
|
getOpenBatches: () => openDetachedBatchViews(deps.dispatch),
|
|
649
636
|
});
|
|
@@ -685,7 +672,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
685
672
|
appendTranscriptNotice: (level, text) => appendNotice(level, text, busNoticeSink),
|
|
686
673
|
refreshSettingsOverlay: () => overlayLifecycle.refreshSettingsOverlay(),
|
|
687
674
|
onConfigHotReload: (settings) => {
|
|
688
|
-
const mode = resolveSmoothStreamingMode(settings.
|
|
675
|
+
const mode = resolveSmoothStreamingMode(settings.interface.smoothStreaming);
|
|
689
676
|
const autoAllowed = processAutoPacingAllowed(shell.hasObservedBackpressure());
|
|
690
677
|
chatRenderer.setSmoothStreamingMode(mode);
|
|
691
678
|
shell.setStreamPacingActive(mode === "on" || (mode === "auto" && autoAllowed));
|
|
@@ -742,6 +729,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
742
729
|
openSideQuestion: (question) => openSideQuestionOverlayState(question),
|
|
743
730
|
startHandoff: (goal) => startHandoffState(goal),
|
|
744
731
|
startFleetRun: (name, vars) => startFleetRunState(name, vars),
|
|
732
|
+
openFleetRuns: () => toggleDispatchBoardOverlay(),
|
|
745
733
|
...(toolRegistry ? { runCouncilDispatch: (args) => dispatchCouncilThroughRegistry(toolRegistry, args) } : {}),
|
|
746
734
|
openContextView: () => openContextViewOverlayState(),
|
|
747
735
|
openTasks: () => openTasksOverlayState(),
|
|
@@ -752,7 +740,22 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
752
740
|
...(deps.panes ? { panes: deps.panes } : {}),
|
|
753
741
|
openModel: () => openModelOverlayState(),
|
|
754
742
|
openModelScope: (ref) => openModelScopeState(ref),
|
|
755
|
-
openSettings: (
|
|
743
|
+
openSettings: (area, group) => {
|
|
744
|
+
if (!area) return openSettingsOverlayState();
|
|
745
|
+
// Compatibility adapter until the seven-area Settings shell replaces
|
|
746
|
+
// the legacy section ids. Slash grammar never exposes these old names.
|
|
747
|
+
if (area === "chat" && group === "model-picker") return openSettingsOverlayState("models", "scope");
|
|
748
|
+
const section = {
|
|
749
|
+
chat: "orchestrator",
|
|
750
|
+
fleet: "fleet",
|
|
751
|
+
targets: "targets",
|
|
752
|
+
context: "compaction",
|
|
753
|
+
safety: "safety",
|
|
754
|
+
interface: "terminal",
|
|
755
|
+
integrations: "advanced",
|
|
756
|
+
} satisfies Record<SettingsAreaId, Parameters<typeof openSettingsOverlayState>[0]>;
|
|
757
|
+
openSettingsOverlayState(section[area]);
|
|
758
|
+
},
|
|
756
759
|
openResume: () => openResumeOverlayState(),
|
|
757
760
|
startNewSession: () => startNewSession(),
|
|
758
761
|
openTree: () => openTreeOverlayState(),
|
|
@@ -870,6 +873,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
870
873
|
openPromptsOverlayState,
|
|
871
874
|
openExtensionsOverlayState,
|
|
872
875
|
openInteropOverlayState,
|
|
876
|
+
toggleDispatchBoardOverlay,
|
|
873
877
|
} = overlayLifecycle;
|
|
874
878
|
|
|
875
879
|
const dispatchSteering = createDispatchSteering({
|
|
@@ -947,7 +951,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
947
951
|
? deps.createMuxBridge({
|
|
948
952
|
bus: deps.bus,
|
|
949
953
|
mux,
|
|
950
|
-
notificationsPolicy: () => deps.getSettings?.().panes.notifications ?? "failures",
|
|
954
|
+
notificationsPolicy: () => deps.getSettings?.().interface.panes.notifications ?? "failures",
|
|
951
955
|
log: (level, message) => {
|
|
952
956
|
if (level === "warning") notify("warning", message, "mux:bridge");
|
|
953
957
|
},
|
|
@@ -959,9 +963,25 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
959
963
|
// tool drive the same controller through the shared operations object.
|
|
960
964
|
const watchPane =
|
|
961
965
|
mux && mux.mode !== "none" && deps.createWatchPane
|
|
962
|
-
? deps.createWatchPane({
|
|
966
|
+
? deps.createWatchPane({
|
|
967
|
+
mux,
|
|
968
|
+
getCwd: () => process.cwd(),
|
|
969
|
+
getWorkersRatio: () => deps.getSettings?.().interface.panes.workers.ratio ?? 0.34,
|
|
970
|
+
})
|
|
963
971
|
: null;
|
|
964
972
|
const detachWatchPane = watchPane ? deps.attachWatchPane?.(watchPane) : undefined;
|
|
973
|
+
// Boot composition per `interface.panes.layout`: `workers` opens the workers
|
|
974
|
+
// dock parked on "no selection"; `cockpit` adds the files dock. Fire and
|
|
975
|
+
// forget, and only against a live pane host: a boot must never fall through
|
|
976
|
+
// to the in-terminal chooser or block the first paint on socket traffic.
|
|
977
|
+
{
|
|
978
|
+
const bootSettings = deps.getSettings?.();
|
|
979
|
+
const layout = bootSettings?.interface.panes.layout ?? "off";
|
|
980
|
+
if (layout !== "off" && mux?.available()) {
|
|
981
|
+
void watchPane?.ensureOpen();
|
|
982
|
+
if (layout === "cockpit" && bootSettings?.interface.panes.files.enabled) void yaziBridge?.open();
|
|
983
|
+
}
|
|
984
|
+
}
|
|
965
985
|
const selectedWatchableRun = (): { runId: string; agentId: string } | null => {
|
|
966
986
|
if (!watchPane) return null;
|
|
967
987
|
const row = dispatchBoard.selectedRow();
|
|
@@ -218,7 +218,7 @@ export function createInteractiveEventProjection(deps: InteractiveEventProjectio
|
|
|
218
218
|
|
|
219
219
|
remainingUnsubscribers.push(
|
|
220
220
|
deps.chat.onEvent((event) => {
|
|
221
|
-
const showProgress = deps.getSettings?.().
|
|
221
|
+
const showProgress = deps.getSettings?.().interface.terminalProgress ?? false;
|
|
222
222
|
if (event.type === "agent_start" && showProgress) deps.startTerminalProgress();
|
|
223
223
|
else if (event.type === "agent_end") {
|
|
224
224
|
deps.stopTerminalProgress();
|
|
@@ -185,7 +185,7 @@ export function createInteractiveInputRuntime(deps: InteractiveInputRuntimeDeps)
|
|
|
185
185
|
restoreQueuedFollowUps: deps.editorSubmit.restoreQueuedFollowUpsToEditor,
|
|
186
186
|
});
|
|
187
187
|
const leaderKeys = createLeaderKeyController({
|
|
188
|
-
matchesLeader: (input) => deps.keybindings.matches(input, "clio.leader"),
|
|
188
|
+
matchesLeader: (input) => deps.keybindings.matches(input, "clio-coder.leader"),
|
|
189
189
|
leaderTargets: () => deps.keybindings.leaderTargets(),
|
|
190
190
|
dispatchAction: (id) => deps.dispatchAction(id, keyActionDeps()),
|
|
191
191
|
isRelease: isKeyRelease,
|
|
@@ -302,7 +302,7 @@ export function createInteractiveInputRuntime(deps: InteractiveInputRuntimeDeps)
|
|
|
302
302
|
deps.reportShutdownFailure ??
|
|
303
303
|
((step, error) => {
|
|
304
304
|
process.stderr.write(
|
|
305
|
-
`[clio:interactive] ${step} failed: ${error instanceof Error ? error.message : String(error)}\n`,
|
|
305
|
+
`[clio-coder:interactive] ${step} failed: ${error instanceof Error ? error.message : String(error)}\n`,
|
|
306
306
|
);
|
|
307
307
|
}),
|
|
308
308
|
});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { performance } from "node:perf_hooks";
|
|
2
2
|
import type { ClioSettings } from "../core/config.js";
|
|
3
|
+
import { DEFAULT_SETTINGS } from "../core/defaults.js";
|
|
3
4
|
import type { SafeEventBus } from "../core/event-bus.js";
|
|
4
5
|
import type { ContextState } from "../domains/context/index.js";
|
|
5
6
|
import type { DispatchContract } from "../domains/dispatch/contract.js";
|
|
@@ -209,7 +210,7 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
|
|
|
209
210
|
const getCwd = deps.getCwd ?? (() => process.cwd());
|
|
210
211
|
const now = deps.now ?? performance.now.bind(performance);
|
|
211
212
|
const requestRender = (): void => deps.tui.requestRender();
|
|
212
|
-
const settings = deps.getSettings?.() ?? (
|
|
213
|
+
const settings = deps.getSettings?.() ?? structuredClone(DEFAULT_SETTINGS);
|
|
213
214
|
const keybindings = deps.keybindings ?? factories.createKeybindings(settings);
|
|
214
215
|
const { getExtensionStats, getLiveWorkspaceSnapshot, getWorkspaceSnapshot, refreshLiveWorkspaceGit } =
|
|
215
216
|
deps.workspaceFacts;
|
|
@@ -229,15 +230,15 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
|
|
|
229
230
|
const renderTrace = getActiveRenderTrace();
|
|
230
231
|
const chatPanel = factories.createChatPanel({
|
|
231
232
|
getToolExpandKey: () => {
|
|
232
|
-
const first = keybindings.getKeys("clio.tool.expand")[0];
|
|
233
|
+
const first = keybindings.getKeys("clio-coder.tool.expand")[0];
|
|
233
234
|
return typeof first === "string" && first.length > 0 ? first : undefined;
|
|
234
235
|
},
|
|
235
|
-
getOutputVerbosity: () => deps.getSettings?.().
|
|
236
|
+
getOutputVerbosity: () => deps.getSettings?.().interface.outputDetail ?? "default",
|
|
236
237
|
...(renderTrace ? { onRenderMetrics: (metrics) => renderTrace.recordPanelRender(metrics) } : {}),
|
|
237
238
|
});
|
|
238
239
|
const followUpQueuePanel = factories.createFollowUpQueuePanel({
|
|
239
240
|
getDequeueKey: () => {
|
|
240
|
-
const first = keybindings.getKeys("clio.message.dequeue")[0];
|
|
241
|
+
const first = keybindings.getKeys("clio-coder.message.dequeue")[0];
|
|
241
242
|
return typeof first === "string" && first.length > 0 ? first : undefined;
|
|
242
243
|
},
|
|
243
244
|
});
|
|
@@ -320,8 +321,8 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
|
|
|
320
321
|
outputTokens,
|
|
321
322
|
durationMs,
|
|
322
323
|
ttftMs: Math.max(0, liveThroughput.firstDeltaAt - liveThroughput.startedAt),
|
|
323
|
-
providerId: settings?.
|
|
324
|
-
modelId: settings?.
|
|
324
|
+
providerId: settings?.chat?.target ?? "",
|
|
325
|
+
modelId: settings?.chat?.model ?? "",
|
|
325
326
|
recordedAt: Date.now(),
|
|
326
327
|
};
|
|
327
328
|
};
|
|
@@ -337,7 +338,11 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
|
|
|
337
338
|
};
|
|
338
339
|
const dismissContextBootstrapNotices = (): void => {
|
|
339
340
|
for (const notice of notifications.list()) {
|
|
340
|
-
if (
|
|
341
|
+
if (
|
|
342
|
+
/^(?:clio-coder|clio): (No CLIO(?:-CODER)?\.md detected|malformed CLIO(?:-CODER)?\.md ignored|Imported agent context changed)/.test(
|
|
343
|
+
notice.text,
|
|
344
|
+
)
|
|
345
|
+
) {
|
|
341
346
|
notifications.dismiss(notice.id);
|
|
342
347
|
}
|
|
343
348
|
}
|
|
@@ -390,7 +395,7 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
|
|
|
390
395
|
},
|
|
391
396
|
getLastTurnSummary: () => lastTurnSummary,
|
|
392
397
|
getNotifications: () => notifications.list(),
|
|
393
|
-
dismissKeyLabel: formatKeyLabel(keybindings.getKeys("clio.notifications.dismiss")[0]),
|
|
398
|
+
dismissKeyLabel: formatKeyLabel(keybindings.getKeys("clio-coder.notifications.dismiss")[0]),
|
|
394
399
|
};
|
|
395
400
|
footer = factories.buildFooter(footerDeps);
|
|
396
401
|
const unsubscribeObservability = deps.observability.subscribe((snapshot) => {
|
|
@@ -403,18 +408,18 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
|
|
|
403
408
|
getModelLabel: () => {
|
|
404
409
|
const current = deps.getSettings?.();
|
|
405
410
|
// The rail is the narrowest of the three, so it drops the spaces.
|
|
406
|
-
return formatTargetLabel(current?.
|
|
411
|
+
return formatTargetLabel(current?.chat?.target, current?.chat?.model, { separator: "·" });
|
|
407
412
|
},
|
|
408
413
|
getThinkingLabel: () => {
|
|
409
414
|
const current = deps.getSettings?.();
|
|
410
415
|
return (
|
|
411
416
|
resolveModelRuntimeCapabilitiesForProviders(
|
|
412
417
|
deps.providers,
|
|
413
|
-
current?.
|
|
414
|
-
current?.
|
|
415
|
-
current?.
|
|
418
|
+
current?.chat?.target,
|
|
419
|
+
current?.chat?.model,
|
|
420
|
+
current?.chat?.thinkingLevel ?? "off",
|
|
416
421
|
)?.thinking.display ??
|
|
417
|
-
current?.
|
|
422
|
+
current?.chat?.thinkingLevel ??
|
|
418
423
|
"off"
|
|
419
424
|
);
|
|
420
425
|
},
|
|
@@ -447,7 +452,7 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
|
|
|
447
452
|
? {
|
|
448
453
|
streamIngress: deps.resolveStreamIngress,
|
|
449
454
|
getSmoothStreamingMode: () => {
|
|
450
|
-
const mode = resolveSmoothStreamingMode(deps.getSettings?.().
|
|
455
|
+
const mode = resolveSmoothStreamingMode(deps.getSettings?.().interface.smoothStreaming ?? "off");
|
|
451
456
|
const autoAllowed = processAutoPacingAllowed(deps.hasObservedBackpressure?.() ?? false);
|
|
452
457
|
deps.onSmoothStreamingMode?.(mode, mode === "on" || (mode === "auto" && autoAllowed));
|
|
453
458
|
return mode;
|
|
@@ -487,8 +492,8 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
|
|
|
487
492
|
footer: footer.view,
|
|
488
493
|
},
|
|
489
494
|
{
|
|
490
|
-
mode: settings.
|
|
491
|
-
fullscreenScrollbar: settings.
|
|
495
|
+
mode: settings.interface?.mode ?? "regular",
|
|
496
|
+
fullscreenScrollbar: settings.interface?.fullscreenScrollbar ?? "auto",
|
|
492
497
|
},
|
|
493
498
|
);
|
|
494
499
|
deps.mount?.(root, editor);
|
|
@@ -70,7 +70,7 @@ const KEEP_ALIVE_INTERVAL_MS = 1 << 30;
|
|
|
70
70
|
* before the keep-alive anchor. Keeping that seam explicit prevents an
|
|
71
71
|
* extraction from silently changing initialization order.
|
|
72
72
|
*/
|
|
73
|
-
|
|
73
|
+
function createInteractiveShell<TTerminal extends Terminal, TTui extends InteractiveShellTui>(
|
|
74
74
|
deps: InteractiveShellDeps<TTerminal, TTui>,
|
|
75
75
|
): InteractiveShell<TTerminal, TTui> {
|
|
76
76
|
const terminal = deps.createTerminal();
|
|
@@ -175,7 +175,7 @@ export function getActiveRenderTrace(): RenderTrace | null {
|
|
|
175
175
|
* model state. After the finite pre-render bound, exactly one caller-supplied
|
|
176
176
|
* final frame is still issued; a post-render drain wait is likewise bounded.
|
|
177
177
|
*/
|
|
178
|
-
|
|
178
|
+
async function settleLatestInteractiveFrame(
|
|
179
179
|
gate: Pick<StdoutBackpressureGate, "whenWritable"> | null,
|
|
180
180
|
timeoutMs: number,
|
|
181
181
|
renderFrame: () => Promise<number>,
|