@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
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
import {
|
|
14
|
+
type Component,
|
|
14
15
|
type OverlayHandle,
|
|
15
16
|
type SelectItem,
|
|
16
17
|
SelectList,
|
|
@@ -18,6 +19,7 @@ import {
|
|
|
18
19
|
type TUI,
|
|
19
20
|
truncateToWidth,
|
|
20
21
|
visibleWidth,
|
|
22
|
+
wrapTextWithAnsi,
|
|
21
23
|
} from "../../engine/tui.js";
|
|
22
24
|
import { buildHint, DEFAULT_SELECT_THEME, FocusBox, showClioOverlayFrame } from "../overlay-frame.js";
|
|
23
25
|
import { clioTheme } from "../theme/index.js";
|
|
@@ -69,6 +71,10 @@ function buildSelectPresentation(items: ReadonlyArray<SelectItem>): {
|
|
|
69
71
|
truncatePrimary: ({ text, maxWidth, item, isSelected }) => {
|
|
70
72
|
const label = singleLine(text);
|
|
71
73
|
const description = descriptions.get(item.value) ?? "";
|
|
74
|
+
// The selected explanation is the recovery decision the operator is
|
|
75
|
+
// reading, so it renders in full beneath the list instead of appearing
|
|
76
|
+
// here as an ellipsized fragment.
|
|
77
|
+
if (isSelected) return truncateToWidth(label, maxWidth, ELLIPSIS, true);
|
|
72
78
|
if (description.length === 0 || maxWidth < 32) {
|
|
73
79
|
return truncateToWidth(label, maxWidth, ELLIPSIS, true);
|
|
74
80
|
}
|
|
@@ -80,18 +86,36 @@ function buildSelectPresentation(items: ReadonlyArray<SelectItem>): {
|
|
|
80
86
|
const spacing = " ".repeat(Math.max(1, labelWidth + 2 - visibleWidth(fittedLabel)));
|
|
81
87
|
const descWidth = Math.max(1, maxWidth - visibleWidth(fittedLabel) - visibleWidth(spacing));
|
|
82
88
|
const fittedDescription = truncateToWidth(description, descWidth, ELLIPSIS, true);
|
|
83
|
-
|
|
84
|
-
return isSelected ? body : `${fittedLabel}${theme.fg("muted", `${spacing}${fittedDescription}`)}`;
|
|
89
|
+
return `${fittedLabel}${theme.fg("muted", `${spacing}${fittedDescription}`)}`;
|
|
85
90
|
},
|
|
86
91
|
},
|
|
87
92
|
};
|
|
88
93
|
}
|
|
89
94
|
|
|
95
|
+
function describedSelect(list: SelectList, choices: ReadonlyArray<SelectItem>): Component {
|
|
96
|
+
return {
|
|
97
|
+
render(width: number): string[] {
|
|
98
|
+
const rows = list.render(width);
|
|
99
|
+
const selected = list.getSelectedItem();
|
|
100
|
+
const description = choices.find((choice) => choice.value === selected?.value)?.description;
|
|
101
|
+
if (!description) return rows;
|
|
102
|
+
const indent = " ";
|
|
103
|
+
const wrapped = wrapTextWithAnsi(
|
|
104
|
+
clioTheme().fg("muted", singleLine(description)),
|
|
105
|
+
Math.max(1, width - visibleWidth(indent)),
|
|
106
|
+
).map((line) => `${indent}${line}`);
|
|
107
|
+
return [...rows, ...wrapped];
|
|
108
|
+
},
|
|
109
|
+
handleInput: (data: string) => list.handleInput(data),
|
|
110
|
+
invalidate: () => list.invalidate(),
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
|
|
90
114
|
/**
|
|
91
115
|
* Pure builder. Exposed so tests can assert row shape without booting the TUI.
|
|
92
116
|
* Two rows: Continue (uses process cwd) and Cancel (returns to picker).
|
|
93
117
|
*/
|
|
94
|
-
|
|
118
|
+
function buildCwdFallbackItems(args: {
|
|
95
119
|
currentCwd: string;
|
|
96
120
|
sessionCwd: string;
|
|
97
121
|
reason: CwdFallbackReason;
|
|
@@ -131,7 +155,7 @@ export function openCwdFallbackOverlay(tui: TUI, deps: OpenCwdFallbackOverlayDep
|
|
|
131
155
|
deps.onCancel();
|
|
132
156
|
deps.onClose();
|
|
133
157
|
};
|
|
134
|
-
const box = new FocusBox(list);
|
|
158
|
+
const box = new FocusBox(describedSelect(list, items));
|
|
135
159
|
return showClioOverlayFrame(tui, box, {
|
|
136
160
|
anchor: "center",
|
|
137
161
|
width: CWD_FALLBACK_OVERLAY_WIDTH,
|
|
@@ -113,7 +113,7 @@ function decisionLines(decision: DecisionRecord, selected: boolean, expanded: bo
|
|
|
113
113
|
return lines;
|
|
114
114
|
}
|
|
115
115
|
|
|
116
|
-
|
|
116
|
+
function formatDecisionsOverlayBodyLines(
|
|
117
117
|
interviews: ReadonlyArray<DecisionLedgerEntry>,
|
|
118
118
|
selectedIndex = 0,
|
|
119
119
|
expandedKey: string | null = null,
|
|
@@ -183,7 +183,9 @@ class DecisionsOverlayBody implements Component {
|
|
|
183
183
|
),
|
|
184
184
|
);
|
|
185
185
|
}
|
|
186
|
-
if (this.status)
|
|
186
|
+
if (this.status) {
|
|
187
|
+
body.push("", ...wrapTextWithAnsi(clioTheme().fg("warning", this.status), Math.max(1, width)));
|
|
188
|
+
}
|
|
187
189
|
return body;
|
|
188
190
|
}
|
|
189
191
|
|
|
@@ -51,14 +51,14 @@ export interface OpenFleetRunApprovalOverlayOptions {
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
/** The declared boundary as one phrase: an empty allowlist is a claim, not an absence. */
|
|
54
|
-
|
|
54
|
+
function formatWriteBoundary(writes: ReadonlyArray<string> | undefined): string {
|
|
55
55
|
if (writes === undefined) return "writes unenforced";
|
|
56
56
|
if (writes.length === 0) return "writes nothing";
|
|
57
57
|
return `writes ${writes.join(", ")}`;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
/** One step as its facts: kind, who runs it, where, its scope, and its boundary. */
|
|
61
|
-
|
|
61
|
+
function formatFleetRunPreviewStep(step: FleetRunPreviewStep): string {
|
|
62
62
|
const loop = step.loop === undefined ? "" : ` (${step.loop.loopId} ${step.loop.role} ${step.loop.attempt})`;
|
|
63
63
|
if (step.kind === "code") {
|
|
64
64
|
const gate = step.gate === undefined ? "" : ` · gate path ${step.gate.path}`;
|
|
@@ -95,7 +95,7 @@ function formatBudgetLine(preview: FleetRunPreview): string {
|
|
|
95
95
|
* Render the body. Waves in order, each step with its facts, then the argv a
|
|
96
96
|
* code step will actually run, and last the budget the run is admitted under.
|
|
97
97
|
*/
|
|
98
|
-
|
|
98
|
+
function formatFleetRunApprovalBody(subject: FleetRunApprovalSubject, width: number, scroll: number): string[] {
|
|
99
99
|
const theme = clioTheme();
|
|
100
100
|
const contentWidth = Math.max(1, Math.floor(width));
|
|
101
101
|
const rows: string[] = [];
|
|
@@ -27,7 +27,7 @@ const HANDOFF_REVIEW_MAX_WIDTH = 100;
|
|
|
27
27
|
/** Rows of document shown at once. Anything longer scrolls. */
|
|
28
28
|
export const HANDOFF_REVIEW_VISIBLE_ROWS = 20;
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
function handoffReviewOverlayWidth(columns: number): number {
|
|
31
31
|
return Math.max(HANDOFF_REVIEW_MIN_WIDTH, Math.min(HANDOFF_REVIEW_MAX_WIDTH, columns - 4));
|
|
32
32
|
}
|
|
33
33
|
|
|
@@ -57,7 +57,7 @@ export interface HandoffReviewOverlaySession extends OverlayHandle {
|
|
|
57
57
|
* Render the body. Pure so the layout is testable without a TUI: the goal, a
|
|
58
58
|
* rule, then the scrolled document window.
|
|
59
59
|
*/
|
|
60
|
-
|
|
60
|
+
function formatHandoffReviewBody(goal: string, document: string, width: number, scroll: number): string[] {
|
|
61
61
|
const theme = clioTheme();
|
|
62
62
|
const contentWidth = Math.max(1, Math.floor(width));
|
|
63
63
|
const lines: string[] = [];
|
|
@@ -62,7 +62,7 @@ function planLines(proposal: InteropProposal): string[] {
|
|
|
62
62
|
...renderProposalEntry(proposal).split("\n"),
|
|
63
63
|
"```",
|
|
64
64
|
`**projectContext:** ${INHERITED_PROJECT_CONTEXT} (inherited; the peer receives your task text, never the project projection)`,
|
|
65
|
-
"**toolGovernance:** clio-policy (its tool calls are gated by Clio safety)",
|
|
65
|
+
"**toolGovernance:** clio-coder-policy (its tool calls are gated by Clio safety)",
|
|
66
66
|
];
|
|
67
67
|
if (proposal.needsNetworkInstall) {
|
|
68
68
|
lines.push("**Adapter:** not installed locally; npx fetches it the first time you delegate");
|
|
@@ -62,7 +62,7 @@ function confirmOverlayWidth(columns: number): number {
|
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
/** Render the plan: what is being installed, alongside what, and to where. */
|
|
65
|
-
|
|
65
|
+
function formatLibraryInstallConfirmBody(subject: LibraryInstallConfirmSubject, width: number): string[] {
|
|
66
66
|
const theme = clioTheme();
|
|
67
67
|
const contentWidth = Math.max(1, Math.floor(width));
|
|
68
68
|
const rows: string[] = [];
|
|
@@ -107,7 +107,7 @@ function rowsToItems(rows: ReadonlyArray<MessagePickerRow>): SelectItem[] {
|
|
|
107
107
|
}));
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
-
|
|
110
|
+
function createMessagePickerContent(
|
|
111
111
|
rows: ReadonlyArray<MessagePickerRow>,
|
|
112
112
|
onFork: (parentTurnId: string) => void,
|
|
113
113
|
onClose: () => void,
|
|
@@ -30,13 +30,14 @@ import {
|
|
|
30
30
|
type TUI,
|
|
31
31
|
truncateToWidth,
|
|
32
32
|
visibleWidth,
|
|
33
|
+
wrapTextWithAnsi,
|
|
33
34
|
} from "../../engine/tui.js";
|
|
34
35
|
import {
|
|
35
36
|
buildHint,
|
|
36
37
|
clioError,
|
|
38
|
+
diagnosticSeverityToken,
|
|
37
39
|
FILTER_HINT,
|
|
38
40
|
formatRuntimeResolutionDiagnostic,
|
|
39
|
-
runtimeResolutionDiagnosticLine,
|
|
40
41
|
showClioOverlayFrame,
|
|
41
42
|
} from "../overlay-frame.js";
|
|
42
43
|
import { type ClioToken, clioTheme, GLYPH } from "../theme/index.js";
|
|
@@ -357,18 +358,15 @@ function buildSummary(rows: ReadonlyArray<ModelRow>, targets: number, activeRef:
|
|
|
357
358
|
* row per candidate wire model (see `modelsForTarget`). Targets without
|
|
358
359
|
* a resolvable wire model still render a single "no-model" row so users can
|
|
359
360
|
* see the target exists and why it is not selectable. Scope stars come from
|
|
360
|
-
* `settings.
|
|
361
|
+
* `settings.chat.modelPicker.cycleSet`: both plain `targetId` and `targetId/wireModelId` refs
|
|
361
362
|
* match so a user can pin either granularity.
|
|
362
363
|
*/
|
|
363
|
-
|
|
364
|
-
settings
|
|
365
|
-
|
|
366
|
-
}): ModelItemsResult {
|
|
367
|
-
const activeTarget = deps.settings.orchestrator?.target?.trim() ?? "";
|
|
368
|
-
const activeModel = deps.settings.orchestrator?.model?.trim() ?? "";
|
|
364
|
+
function buildModelItems(deps: { settings: Readonly<ClioSettings>; providers: ProvidersContract }): ModelItemsResult {
|
|
365
|
+
const activeTarget = deps.settings.chat?.target?.trim() ?? "";
|
|
366
|
+
const activeModel = deps.settings.chat?.model?.trim() ?? "";
|
|
369
367
|
const activeRef = activeTarget && activeModel ? `${activeTarget}/${activeModel}` : activeTarget;
|
|
370
|
-
const favoriteSet = new Set(deps.settings.
|
|
371
|
-
const recentSet = new Set(listRecentModels({ limit: deps.settings.
|
|
368
|
+
const favoriteSet = new Set(deps.settings.chat.modelPicker?.favorites ?? []);
|
|
369
|
+
const recentSet = new Set(listRecentModels({ limit: deps.settings.chat.modelPicker?.recentLimit ?? 12 }));
|
|
372
370
|
const list = [...deps.providers.list()]
|
|
373
371
|
.filter((status) => {
|
|
374
372
|
return status.runtime !== null && isOrchestratorEligibleRuntime(status.runtime);
|
|
@@ -383,7 +381,7 @@ export function buildModelItems(deps: {
|
|
|
383
381
|
a.target.id.localeCompare(b.target.id)
|
|
384
382
|
);
|
|
385
383
|
});
|
|
386
|
-
const scopeSet = new Set(deps.settings.
|
|
384
|
+
const scopeSet = new Set(deps.settings.chat.modelPicker.cycleSet ?? []);
|
|
387
385
|
const items: SelectItem[] = [];
|
|
388
386
|
const refs: ModelSelection[] = [];
|
|
389
387
|
const rows: ModelRow[] = [];
|
|
@@ -403,7 +401,7 @@ export function buildModelItems(deps: {
|
|
|
403
401
|
providers: deps.providers,
|
|
404
402
|
status,
|
|
405
403
|
wireModelId: fallbackModel,
|
|
406
|
-
requestedThinkingLevel: deps.settings.
|
|
404
|
+
requestedThinkingLevel: deps.settings.chat?.thinkingLevel,
|
|
407
405
|
})
|
|
408
406
|
: null;
|
|
409
407
|
const rowCaps = resolution?.capabilities ?? status.capabilities;
|
|
@@ -457,7 +455,7 @@ export function buildModelItems(deps: {
|
|
|
457
455
|
providers: deps.providers,
|
|
458
456
|
status,
|
|
459
457
|
wireModelId: wireModel,
|
|
460
|
-
requestedThinkingLevel: deps.settings.
|
|
458
|
+
requestedThinkingLevel: deps.settings.chat?.thinkingLevel,
|
|
461
459
|
});
|
|
462
460
|
const rowCaps = resolution.capabilities;
|
|
463
461
|
const decisions = resolution.capabilityDecisions;
|
|
@@ -665,18 +663,23 @@ function formatModelDetail(row: ModelRow, width: number): string[] {
|
|
|
665
663
|
// The detail block is quiet scaffolding beneath the selected row; only the
|
|
666
664
|
// diagnostics carry a semantic token, so the two fact lines render dim.
|
|
667
665
|
return [
|
|
668
|
-
theme.fg("dim",
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
666
|
+
...wrapTextWithAnsi(theme.fg("dim", `${state} ${ref} · ${availability} · auth ${row.authText}`), width),
|
|
667
|
+
...wrapTextWithAnsi(
|
|
668
|
+
theme.fg(
|
|
669
|
+
"dim",
|
|
672
670
|
`source ${sourceLabel(row.source)}${loadState} · ${row.runtimeName} · ${row.apiFamily} · max output ${row.maxTokens} · thinking ${row.thinking ?? "-"} · streaming ${row.streaming === false ? "no" : "yes"} · ${capabilityNames(row.caps)}`,
|
|
673
|
-
width,
|
|
674
671
|
),
|
|
672
|
+
width,
|
|
675
673
|
),
|
|
676
674
|
...(row.diagnostics ?? [])
|
|
677
675
|
.filter((entry) => entry.severity !== "info")
|
|
678
676
|
.slice(0, 2)
|
|
679
|
-
.
|
|
677
|
+
.flatMap((entry) =>
|
|
678
|
+
wrapTextWithAnsi(
|
|
679
|
+
theme.fg(diagnosticSeverityToken(entry.severity), formatRuntimeResolutionDiagnostic(entry)),
|
|
680
|
+
width,
|
|
681
|
+
),
|
|
682
|
+
),
|
|
680
683
|
];
|
|
681
684
|
}
|
|
682
685
|
|
|
@@ -765,23 +768,24 @@ function renderModelOverlayLines(input: {
|
|
|
765
768
|
width,
|
|
766
769
|
),
|
|
767
770
|
),
|
|
768
|
-
|
|
771
|
+
...wrapTextWithAnsi(
|
|
772
|
+
theme.fg("dim", `current ${active} · focus shows current, favorites, recent, and target defaults`),
|
|
773
|
+
width,
|
|
774
|
+
),
|
|
769
775
|
];
|
|
770
776
|
const refreshLine = refreshStatusLine(input.refreshing, input.refreshError);
|
|
771
777
|
if (refreshLine)
|
|
772
|
-
lines.push(
|
|
773
|
-
|
|
774
|
-
);
|
|
775
|
-
if (input.selectionError) lines.push(clioError(fitLine(input.selectionError, width)));
|
|
778
|
+
lines.push(...wrapTextWithAnsi(input.refreshError ? clioError(refreshLine) : theme.fg("dim", refreshLine), width));
|
|
779
|
+
if (input.selectionError) lines.push(...wrapTextWithAnsi(clioError(input.selectionError), width));
|
|
776
780
|
lines.push(formatModelHeader(width));
|
|
777
781
|
if (filtered.length === 0) {
|
|
778
782
|
lines.push(
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
783
|
+
...wrapTextWithAnsi(
|
|
784
|
+
theme.fg(
|
|
785
|
+
"muted",
|
|
782
786
|
searching ? " no models match the current filter" : " no focused models; type to search or press Tab for all",
|
|
783
|
-
width,
|
|
784
787
|
),
|
|
788
|
+
width,
|
|
785
789
|
),
|
|
786
790
|
);
|
|
787
791
|
} else {
|
|
@@ -989,8 +993,12 @@ export class ModelOverlayView implements Component {
|
|
|
989
993
|
if (kb.matches(data, "tui.select.confirm") || matchesKey(data, "enter") || data === "\n") {
|
|
990
994
|
const row = this.selectedRow();
|
|
991
995
|
if (row?.selectable) {
|
|
992
|
-
|
|
996
|
+
// Close the picker before handing the selection to its owner. The
|
|
997
|
+
// application opens the session/global scope confirmation from
|
|
998
|
+
// onSelect; closing afterwards would immediately close that new overlay
|
|
999
|
+
// and leave the model binding unchanged.
|
|
993
1000
|
this.onClose();
|
|
1001
|
+
this.onSelect({ target: row.target, model: row.model });
|
|
994
1002
|
return;
|
|
995
1003
|
}
|
|
996
1004
|
this.selectionError = row
|
|
@@ -1056,8 +1064,8 @@ export function openModelOverlay(tui: TUI, deps: OpenModelOverlayDeps): OverlayH
|
|
|
1056
1064
|
};
|
|
1057
1065
|
const initial = build();
|
|
1058
1066
|
const overlayWidth = resolveOverlayWidth(tui.terminal?.columns ?? 0);
|
|
1059
|
-
const activeTarget = currentSettings().
|
|
1060
|
-
const activeModel = currentSettings().
|
|
1067
|
+
const activeTarget = currentSettings().chat?.target?.trim();
|
|
1068
|
+
const activeModel = currentSettings().chat?.model?.trim();
|
|
1061
1069
|
const view = new ModelOverlayView(
|
|
1062
1070
|
initial.rows,
|
|
1063
1071
|
initial.summary,
|
|
@@ -11,7 +11,12 @@ export function openPromptsOverlay(tui: TUI, ctx: SlashCommandContext, onClose:
|
|
|
11
11
|
const promptsList = ctx.listPrompts();
|
|
12
12
|
const items: ListOverlayItem[] = promptsList.items.map((template) => {
|
|
13
13
|
const usage = `/${template.name}${template.argumentHint ? ` ${template.argumentHint}` : ""}`;
|
|
14
|
-
|
|
14
|
+
// The usage already carries the argument synopsis. Repeating it in the
|
|
15
|
+
// right-aligned metadata column starves the description at 60 columns, and
|
|
16
|
+
// a usage longer than the alignment stop used to join directly to its first
|
|
17
|
+
// word (`[description]Capture`). Two literal cells remain a separator even
|
|
18
|
+
// when the command has outgrown the nominal column.
|
|
19
|
+
const label = `${usage.padEnd(28)} ${template.description}`;
|
|
15
20
|
const item: ListOverlayItem = {
|
|
16
21
|
id: template.name,
|
|
17
22
|
label,
|
|
@@ -26,7 +31,9 @@ export function openPromptsOverlay(tui: TUI, ctx: SlashCommandContext, onClose:
|
|
|
26
31
|
lines.push(`**Unavailable:** ${template.unavailable}`);
|
|
27
32
|
}
|
|
28
33
|
if (!template.trusted) {
|
|
29
|
-
lines.push(
|
|
34
|
+
lines.push(
|
|
35
|
+
"**Untrusted:** set `integrations.projectResources.trustProjectImports` before this template will expand.",
|
|
36
|
+
);
|
|
30
37
|
}
|
|
31
38
|
return lines;
|
|
32
39
|
},
|
|
@@ -39,8 +46,7 @@ export function openPromptsOverlay(tui: TUI, ctx: SlashCommandContext, onClose:
|
|
|
39
46
|
: template.trusted
|
|
40
47
|
? undefined
|
|
41
48
|
: clioTheme().fg("warning", "untrusted");
|
|
42
|
-
if (marker) item.meta =
|
|
43
|
-
else if (template.argumentHint) item.meta = template.argumentHint;
|
|
49
|
+
if (marker) item.meta = marker;
|
|
44
50
|
return item;
|
|
45
51
|
});
|
|
46
52
|
|
|
@@ -74,7 +74,7 @@ function metaStrip(meta: SessionMeta, now: number): string {
|
|
|
74
74
|
* (status, last-activity, msg count, target/model) in the primary column
|
|
75
75
|
* and the first user-message preview in the description column.
|
|
76
76
|
*/
|
|
77
|
-
|
|
77
|
+
function buildSessionItems(sessions: ReadonlyArray<SessionMeta>, now: number = Date.now()): SelectItem[] {
|
|
78
78
|
return sessions.map((meta) => {
|
|
79
79
|
const labels = meta.labels && meta.labels.length > 0 ? ` labels: ${meta.labels.join(", ")}` : "";
|
|
80
80
|
return {
|
|
@@ -117,7 +117,7 @@ function isBareEscape(data: string): boolean {
|
|
|
117
117
|
}
|
|
118
118
|
|
|
119
119
|
/** @internal */
|
|
120
|
-
|
|
120
|
+
function createSessionOverlayBox(
|
|
121
121
|
sessions: ReadonlyArray<SessionMeta>,
|
|
122
122
|
onSelect: (sessionId: string) => void,
|
|
123
123
|
onClose: () => void,
|