@iowarp/clio-coder 0.3.9 → 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 +92 -0
- package/NOTICE +33 -0
- package/README.md +121 -16
- package/dist/{acp-7LOELQFP.js → acp-ZILU3AUO.js} +19 -18
- package/dist/{agents-FIBG2SHA.js → agents-HYWGBGQR.js} +53 -39
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-OI4LIH2I.js → auth-N3QT7CBO.js} +24 -21
- package/dist/{builtins-AD25UL3C.js → builtins-UJLMOVOV.js} +6 -6
- package/dist/{chunk-I4HZDVNP.js → chunk-2LEAKD4C.js} +2 -3
- package/dist/{chunk-465CC7FK.js → chunk-2NM363SV.js} +60 -64
- package/dist/{chunk-4H6ULJ3H.js → chunk-2VG7KLYV.js} +1046 -1370
- package/dist/{chunk-SST6Z5JA.js → chunk-336NSSKI.js} +1 -1
- package/dist/{chunk-NZU6YDNV.js → chunk-3I5NY75V.js} +5 -5
- package/dist/{chunk-47CMYGET.js → chunk-3QSOM6PA.js} +2 -2
- package/dist/chunk-42FMPA75.js +101 -0
- package/dist/{chunk-HAY4ZE2P.js → chunk-5PSMVOLM.js} +2 -2
- package/dist/{chunk-IHKBWSXF.js → chunk-5QIAJV2D.js} +3 -3
- package/dist/chunk-5YHDIDBP.js +97 -0
- package/dist/chunk-6CCS4G3W.js +1529 -0
- package/dist/{chunk-2JDWVJND.js → chunk-6DWBAZ5U.js} +2 -2
- package/dist/{chunk-BVDVID7E.js → chunk-6FN3E6KX.js} +6 -6
- package/dist/{chunk-DG4M6ZUE.js → chunk-6HMJX2VU.js} +59 -59
- package/dist/{chunk-3MRC2YSQ.js → chunk-6I5ILFOF.js} +3 -2
- package/dist/chunk-6NJQITNH.js +1412 -0
- package/dist/chunk-6VC4OV3Z.js +365 -0
- package/dist/{chunk-LU7P4LHA.js → chunk-72GZI5EV.js} +2 -2
- package/dist/{chunk-5T7RBWN2.js → chunk-74YWRRU5.js} +9 -8
- package/dist/{chunk-VPTUJU4P.js → chunk-7EPLI7VL.js} +2 -2
- package/dist/{chunk-CA42X6KT.js → chunk-7OBGU7UB.js} +7 -7
- package/dist/{chunk-56KB5IJP.js → chunk-7PWAODYW.js} +3 -3
- package/dist/chunk-7RY5VZPH.js +573 -0
- package/dist/{chunk-OEDBCISO.js → chunk-ABLSQ6JX.js} +3 -3
- package/dist/{chunk-5HFBWUMU.js → chunk-AFKWHWXF.js} +13 -23
- package/dist/{chunk-FWDFM5ZU.js → chunk-AK5XEFVZ.js} +3 -3
- package/dist/{chunk-WXCJ7VME.js → chunk-AKB4GYDL.js} +7 -7
- package/dist/chunk-AP73CFDC.js +308 -0
- package/dist/{chunk-4LJX2PUC.js → chunk-BBTJOK6Y.js} +5 -5
- package/dist/{chunk-QQ7EKM72.js → chunk-BDPT6GTK.js} +13 -61
- package/dist/chunk-BJGUKIG4.js +302 -0
- package/dist/chunk-BMS5RKQY.js +27 -0
- package/dist/{chunk-TD7UE2L5.js → chunk-BTGG6BG2.js} +81 -40
- 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-BNAZZHFG.js → chunk-BYP5D4HI.js} +1 -1
- package/dist/{chunk-HJB5IUKP.js → chunk-C537JADH.js} +18 -18
- package/dist/{chunk-774ILSRL.js → chunk-CDNVLKUX.js} +5 -4
- package/dist/{chunk-HPCTNZM2.js → chunk-CTJ4RNAA.js} +4 -4
- package/dist/{chunk-AEYBF3TB.js → chunk-CWVRRIEI.js} +2 -2
- package/dist/chunk-D4CJV46V.js +462 -0
- package/dist/chunk-D7E7WCDF.js +27 -0
- package/dist/{chunk-5PVQ4SRS.js → chunk-E67WX76H.js} +10 -126
- package/dist/{chunk-FQ4SKYE4.js → chunk-EBY63B7G.js} +2 -5
- package/dist/chunk-EIMVLWB3.js +1842 -0
- package/dist/{chunk-AMKHQW3C.js → chunk-FEFIFZTL.js} +3 -3
- package/dist/{chunk-RAPCMZL4.js → chunk-FSP7CMNU.js} +9 -1
- package/dist/{chunk-3DUR4WUA.js → chunk-FYUN5KZ3.js} +25 -25
- package/dist/{chunk-MV3K5QF2.js → chunk-GCSMB2KY.js} +2 -2
- package/dist/chunk-GIZNH63R.js +40 -0
- package/dist/chunk-GPPB3JBE.js +688 -0
- package/dist/{chunk-B5XRQOLB.js → chunk-GVQJ5CCZ.js} +17 -11
- package/dist/chunk-HHV2GANA.js +88 -0
- package/dist/chunk-HJWWJ6IL.js +184 -0
- package/dist/{chunk-RKRLDWD3.js → chunk-HLW2MRKE.js} +1 -1
- package/dist/chunk-HRQMFLJP.js +75 -0
- package/dist/{chunk-AD7Y7STJ.js → chunk-HUAS7ITX.js} +107 -97
- package/dist/{chunk-O6I4CIEU.js → chunk-I66EAJFY.js} +6 -6
- package/dist/{chunk-S4COXYBG.js → chunk-IG7BCQBA.js} +129 -106
- package/dist/{chunk-N3PBVRTZ.js → chunk-IXJT6DCX.js} +9 -7
- package/dist/chunk-J4HBWF6Y.js +2635 -0
- package/dist/chunk-J5LZHVIT.js +284 -0
- package/dist/{chunk-GAYUJ7LE.js → chunk-JA5QWE4Z.js} +544 -227
- package/dist/{chunk-B5CSFE7B.js → chunk-JIEGK6UF.js} +6 -174
- package/dist/{chunk-VKBMFOYV.js → chunk-JZWT5J3Y.js} +23 -27
- package/dist/chunk-K6BF4U2H.js +1785 -0
- package/dist/{chunk-CGKSTWHD.js → chunk-K6BSR66V.js} +2 -1
- package/dist/{chunk-YSEHGPCT.js → chunk-MA3H6DM5.js} +6 -6
- package/dist/{chunk-EBOC7MT3.js → chunk-MOPSG2X7.js} +9 -9
- package/dist/{chunk-KV2AOLDF.js → chunk-MQXIVJ35.js} +18 -29
- package/dist/{chunk-P3JGPQFL.js → chunk-N5UK64DP.js} +4 -4
- package/dist/chunk-NDDGJUXD.js +81 -0
- package/dist/chunk-NEKRRTYW.js +56 -0
- package/dist/{chunk-4ZG3XFUR.js → chunk-NLFAQR7Z.js} +12 -1
- package/dist/{chunk-VO2LKSTM.js → chunk-O42A54GG.js} +2 -2
- package/dist/{chunk-T3Z6VAAF.js → chunk-OJTRZGR3.js} +53 -92
- package/dist/{chunk-5DQRIYDZ.js → chunk-PBP4B7XR.js} +3 -3
- package/dist/{chunk-NQ6UCCOD.js → chunk-PJJ6MY27.js} +8 -8
- package/dist/chunk-PMZCIOCJ.js +25 -0
- package/dist/{chunk-ZGVHUX3M.js → chunk-PMZVFWSR.js} +2 -2
- package/dist/{chunk-7C6RYZGQ.js → chunk-PVAMAVBB.js} +5 -4
- package/dist/chunk-QDC3K2U3.js +262 -0
- package/dist/{chunk-JEQQR47K.js → chunk-QKIFBZKT.js} +173 -14
- package/dist/{chunk-R7LNVMCS.js → chunk-QMXC4JB7.js} +70 -78
- package/dist/chunk-QSNYB6ZV.js +195 -0
- package/dist/chunk-QTFGO774.js +644 -0
- package/dist/{chunk-ODFEOB4F.js → chunk-R23Z6K6I.js} +27 -9
- package/dist/{chunk-3UUY7R3Z.js → chunk-R32CLGZ6.js} +14 -14
- package/dist/chunk-R346GLFC.js +31 -0
- package/dist/chunk-RKSR6VSF.js +132 -0
- package/dist/{chunk-N5XKWMDW.js → chunk-SCYB3HA4.js} +73 -27
- package/dist/{chunk-PZ4I4JE2.js → chunk-SINK3QR6.js} +135 -125
- package/dist/{chunk-5QKCQQ3E.js → chunk-SUW5DORT.js} +2 -2
- package/dist/chunk-T56WDKA5.js +183 -0
- package/dist/{chunk-ECUO3KDP.js → chunk-TD3PGPQA.js} +87 -26
- package/dist/{chunk-HKO36JWF.js → chunk-THYWACCR.js} +31 -3
- package/dist/{chunk-LXPJXFM5.js → chunk-TVH4ONAM.js} +18 -12
- package/dist/chunk-TVHHYFHE.js +255 -0
- package/dist/chunk-U2WB7TZS.js +271 -0
- package/dist/{chunk-NNNWO6F2.js → chunk-UAPGZHYC.js} +237 -33
- package/dist/{chunk-MIX5N5AC.js → chunk-UEDMSP56.js} +415 -160
- package/dist/{chunk-WIE7ZOSW.js → chunk-UXN6JT4W.js} +3 -3
- package/dist/{chunk-CMZWFGD2.js → chunk-VAVR4IJY.js} +19 -15
- package/dist/{chunk-MV2VUEJC.js → chunk-VEGN6WIQ.js} +2 -2
- package/dist/chunk-VKFQTNDV.js +66 -0
- package/dist/{chunk-FALJGAWU.js → chunk-VKRH2TCS.js} +2 -2
- package/dist/{chunk-A2NJGIB3.js → chunk-VN3SHNBN.js} +2 -2
- package/dist/{chunk-XK56QHLX.js → chunk-VPKWYKEY.js} +19 -5
- package/dist/{chunk-UOSL25KY.js → chunk-VXMFAE2W.js} +1 -1
- package/dist/{chunk-EQ63NRB7.js → chunk-WNP7O5WZ.js} +3 -3
- package/dist/chunk-WR6U3OVP.js +45 -0
- package/dist/{chunk-TEO2TLVN.js → chunk-XKA2ICR3.js} +1051 -1196
- package/dist/{chunk-3V5AYSEQ.js → chunk-Y45G3AXC.js} +72 -65
- package/dist/{chunk-J5Q24KAG.js → chunk-Y4CAGMM6.js} +2 -2
- package/dist/chunk-YAKGTXEV.js +17 -0
- package/dist/{chunk-ZI647VB5.js → chunk-YPI3QQCF.js} +2 -2
- package/dist/{chunk-YW7UVM5V.js → chunk-ZAZB4JMW.js} +55 -11
- package/dist/{chunk-HCBCAYZU.js → chunk-ZJLUDYFY.js} +11 -11
- package/dist/{chunk-HKIYEGME.js → chunk-ZTJUVLTU.js} +2 -2
- package/dist/{chunk-IFBNV6H6.js → chunk-ZW55JB7N.js} +3 -3
- package/dist/cli/index.js +48 -37
- package/dist/clio-IT3G3VQH.js +25 -0
- package/dist/{code-nav-LMW275PA.js → code-nav-RK6S7F6E.js} +8 -8
- package/dist/codewiki/build-worker.js +1 -1
- package/dist/{compile-cache-CVJMMODC.js → compile-cache-OQAVB7Y5.js} +3 -5
- package/dist/{components-ZFA3SAER.js → components-UBWCQSRW.js} +6 -6
- package/dist/{config-RXS5T3JT.js → config-3QZRWZJF.js} +73 -61
- package/dist/configure-FL7Y3KJF.js +54 -0
- package/dist/{context-MVOORGMF.js → context-5HE7ODYK.js} +61 -49
- package/dist/{context-I3BTOTCS.js → context-KYQFRVDC.js} +11 -11
- package/dist/{context-PALKKQYL.js → context-XNHL75JV.js} +43 -28
- package/dist/{context-clear-N2WOYZ2K.js → context-clear-N545L53A.js} +60 -48
- package/dist/{context-working-set-MIEVECVZ.js → context-working-set-QHKXSV2F.js} +15 -13
- package/dist/{dispatch-runner-VVA4SRRH.js → dispatch-runner-RGIE5PCT.js} +109 -72
- package/dist/{docs-7LQ23DLM.js → docs-5NAF6AU7.js} +7 -13
- package/dist/doctor-ZGPEGHIP.js +772 -0
- package/dist/{eval-IJ5VEZDJ.js → eval-GXLL44RD.js} +106 -86
- package/dist/eval-inventory-HBWSWQOK.js +315 -0
- package/dist/{evidence-L5APPXNV.js → evidence-HWLBRH3Q.js} +209 -51
- package/dist/{evolve-RGNKFJ52.js → evolve-FTZBMNVW.js} +57 -45
- package/dist/{extensions-7WYWUX5A.js → extensions-VHRBEID7.js} +7 -7
- package/dist/{fleet-6CNVBZZP.js → fleet-CKZHJWZJ.js} +215 -114
- package/dist/{fleet-commands-L2SXSYEI.js → fleet-commands-EXDXBMV6.js} +13 -12
- package/dist/fleet-decisions-OTHB6KRL.js +157 -0
- package/dist/{fleet-graph-2J3OOIPO.js → fleet-graph-YTEZUCUT.js} +20 -17
- package/dist/fleet-inspect-SS6YMDCK.js +445 -0
- package/dist/{fleet-preflight-CZRJ4JP5.js → fleet-preflight-PBY4VYOM.js} +6 -9
- package/dist/{fleet-validate-C5RI6DP7.js → fleet-validate-KMEM5L3S.js} +25 -20
- package/dist/fleet-verify-QD5M7E7Q.js +178 -0
- package/dist/fleet-view-WAMJYNDT.js +94 -0
- package/dist/{init-VBN2ACVA.js → init-5XQRBOFV.js} +79 -66
- package/dist/install-NKNG7KD4.js +13 -0
- package/dist/interop-34TVO25M.js +116 -0
- package/dist/{library-JHGUMLY2.js → library-3QY6KF57.js} +25 -21
- package/dist/{memory-K4OQIYWG.js → memory-L4UTIIIW.js} +59 -47
- package/dist/{models-2NCZUWDD.js → models-ZVX3QOWE.js} +47 -37
- package/dist/{monitor-MMVTJABD.js → monitor-CEKVSYTS.js} +67 -57
- package/dist/{orchestrator-ZKBPCHW6.js → orchestrator-77BAP6BC.js} +7633 -7699
- package/dist/panes-7STHOAUJ.js +103 -0
- package/dist/panes-SHAUIRXY.js +60 -0
- package/dist/{paths-DBXMZMDU.js → paths-L7LGY6RN.js} +6 -6
- package/dist/{reset-DD5JGOY3.js → reset-EOLM7GVE.js} +15 -14
- package/dist/resources-74GKTLSF.js +115 -0
- package/dist/{run-QEGNX7FL.js → run-HBAUJNNZ.js} +139 -98
- package/dist/{share-JKD3BQMW.js → share-G3APVLVP.js} +25 -21
- package/dist/{skills-LMQIKDOZ.js → skills-35HHUKCR.js} +37 -27
- package/dist/{skills-eval-I7X2774U.js → skills-eval-QN4HSHDC.js} +80 -73
- package/dist/skills-inventory-J357J34F.js +129 -0
- package/dist/slash-commands-JZZCQA32.js +79 -0
- package/dist/{steer-CF5TDANS.js → steer-XAVHJM22.js} +4 -4
- package/dist/{support-I7LOJLIF.js → support-U7QOWY26.js} +7 -7
- package/dist/{targets-RUSR6B5Z.js → targets-DSM6CY3M.js} +67 -59
- package/dist/{terminal-lease-QYVORFR4.js → terminal-lease-JOPFUVEM.js} +15 -10
- package/dist/tools-MKNWVPBH.js +29 -0
- package/dist/{trace-ODOQIVIW.js → trace-ECQ7TIYZ.js} +194 -7
- package/dist/tui-primitives-K5PASC3O.js +17 -0
- package/dist/{uninstall-ZJF5H5ZN.js → uninstall-N34PCTGJ.js} +6 -8
- package/dist/{upgrade-XANW3FXB.js → upgrade-H7TOM7YL.js} +37 -62
- package/dist/{usage-4H7ZRXQT.js → usage-X52N3IDJ.js} +70 -59
- package/dist/{verifiers-UZXNBZEB.js → verifiers-EJTVVSMA.js} +174 -14
- package/dist/{verify-BVKWTNDL.js → verify-YJL6XET2.js} +12 -11
- package/dist/{web-fetch-2YHJ3KTG.js → web-fetch-MPIFL3LL.js} +3 -4
- package/dist/{wiki-generate-MY7WV2QI.js → wiki-generate-4NDZTQ4B.js} +86 -75
- package/dist/with-panes-OBOBFIIR.js +818 -0
- package/dist/worker/entry.js +131 -91
- package/docs/README.md +3 -2
- package/docs/acp.md +25 -4
- package/docs/alcf-provider.md +1 -1
- package/docs/architecture.md +2 -2
- package/docs/artifact-versions.md +4 -1
- package/docs/built-in-agents.md +40 -32
- package/docs/capacity-and-scheduling.md +43 -5
- package/docs/commands-and-modes.md +39 -4
- package/docs/config-knobs-audit.md +3 -0
- package/docs/configuration-and-targets.md +138 -167
- package/docs/context-engine.md +1 -1
- package/docs/development-pipeline.md +19 -0
- package/docs/dispatch-typed-intent.md +385 -0
- package/docs/documentation-coverage.md +2 -2
- package/docs/documentation-guide.md +1 -1
- package/docs/environment-variables.md +3 -1
- package/docs/eval-runner.md +1 -1
- package/docs/evals-internal.md +1 -1
- package/docs/evidence-and-memory.md +2 -2
- package/docs/evolution.md +1 -1
- package/docs/exit-codes-and-output.md +3 -1
- package/docs/extensions-and-sharing.md +25 -1
- package/docs/fleet-demo-runbook.md +6 -3
- package/docs/fleet-dispatch.md +30 -7
- package/docs/installation-and-lifecycle.md +16 -3
- package/docs/middleware-and-components.md +1 -1
- package/docs/model-catalog.md +10 -1
- package/docs/observability.md +3 -3
- package/docs/proactive-memory.md +1 -1
- package/docs/prompt-envelope-and-tools.md +1 -1
- package/docs/provider-adapter-cookbook.md +1 -1
- package/docs/release-cut-checklist.md +164 -177
- package/docs/safety-model.md +2 -2
- package/docs/scientific-validation.md +3 -3
- package/docs/session-lifecycle.md +1 -1
- package/docs/skills-marketplace.md +1 -1
- package/docs/tool-usage.md +18 -8
- package/docs/trace-store.md +16 -11
- package/docs/troubleshooting.md +2 -2
- package/docs/tui-design.md +1 -1
- package/docs/worker-dispatch-mechanics.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 +8 -16
- 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 +8 -4
- package/src/cli/argv.ts +25 -0
- 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 +50 -48
- 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 +156 -0
- package/src/cli/doctor-toolchain.ts +78 -0
- package/src/cli/doctor.ts +34 -1
- package/src/cli/eval-inventory.ts +436 -0
- package/src/cli/eval.ts +13 -0
- package/src/cli/evidence-detail.ts +88 -0
- package/src/cli/evidence-inventory.ts +183 -0
- package/src/cli/evidence.ts +30 -5
- package/src/cli/fleet-decisions.ts +69 -0
- package/src/cli/fleet-inspect.ts +334 -0
- package/src/cli/fleet-preflight.ts +1 -1
- package/src/cli/fleet-verify.ts +133 -0
- package/src/cli/fleet-view.ts +827 -0
- package/src/cli/fleet.ts +154 -40
- package/src/cli/index.ts +14 -2
- package/src/cli/interop-inspect.ts +128 -0
- package/src/cli/interop.ts +34 -0
- package/src/cli/models.ts +3 -3
- package/src/cli/modes/print.ts +1 -1
- package/src/cli/panes.ts +35 -0
- package/src/cli/reset.ts +6 -3
- package/src/cli/run.ts +67 -13
- package/src/cli/share.ts +1 -1
- package/src/cli/skills-eval.ts +11 -11
- package/src/cli/skills-inventory.ts +185 -0
- package/src/cli/skills.ts +16 -13
- package/src/cli/targets.ts +23 -24
- package/src/cli/tools.ts +321 -0
- package/src/cli/trace-inspect.ts +252 -0
- package/src/cli/trace.ts +64 -2
- 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 +347 -0
- package/src/cli/verifiers.ts +9 -0
- 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-events.ts +4 -0
- package/src/core/bus-trace.ts +2 -2
- package/src/core/compile-cache.ts +1 -1
- package/src/core/config.ts +1070 -845
- package/src/core/defaults.ts +342 -463
- 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/response-schema.ts +44 -4
- 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/theme-token-hex.ts +43 -0
- package/src/core/timers.ts +2 -12
- package/src/core/tool-names.ts +2 -1
- package/src/core/xdg.ts +1 -1
- package/src/domains/agents/catalog.ts +2 -12
- package/src/domains/agents/extension.ts +3 -3
- package/src/domains/agents/fleets/build-review.md +0 -3
- package/src/domains/agents/fleets/build-test.md +0 -3
- package/src/domains/agents/registry.ts +7 -7
- package/src/domains/agents/result-contract-filesystem.ts +32 -0
- package/src/domains/agents/result-contract.ts +165 -36
- package/src/domains/agents/spec.ts +0 -11
- package/src/domains/config/classify.ts +37 -46
- 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/admission-error.ts +9 -0
- package/src/domains/dispatch/admission.ts +22 -21
- 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 +23 -6
- package/src/domains/dispatch/code-step.ts +1 -1
- package/src/domains/dispatch/contract.ts +2 -2
- package/src/domains/dispatch/council-topology.ts +398 -0
- package/src/domains/dispatch/extension.ts +287 -111
- package/src/domains/dispatch/fleet-node-prompt.ts +62 -0
- package/src/domains/dispatch/fleet-plan.ts +7 -2
- package/src/domains/dispatch/fleet-preflight.ts +8 -17
- package/src/domains/dispatch/fleet-run.ts +59 -3
- package/src/domains/dispatch/gate-decisions.ts +36 -15
- package/src/domains/dispatch/gate-role-prompts.ts +9 -0
- package/src/domains/dispatch/gate-topology.ts +289 -0
- package/src/domains/dispatch/index.ts +19 -0
- package/src/domains/dispatch/intent-compatibility.ts +330 -0
- package/src/domains/dispatch/intent.ts +85 -1
- 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 +24 -27
- 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-bridge.ts +149 -0
- package/src/domains/dispatch/run-event-journal.ts +599 -0
- package/src/domains/dispatch/state.ts +45 -1
- package/src/domains/dispatch/tool-stats.ts +1 -1
- package/src/domains/dispatch/transport.ts +2 -19
- package/src/domains/dispatch/types.ts +16 -3
- package/src/domains/dispatch/validation.ts +33 -8
- package/src/domains/dispatch/worker-protocol.ts +2 -2
- package/src/domains/eval/artifacts/store.ts +5 -4
- package/src/domains/eval/compare/compare.ts +3 -16
- package/src/domains/eval/compare/thresholds.ts +0 -8
- package/src/domains/eval/execution-provenance.ts +1 -1
- package/src/domains/eval/inventory.ts +113 -0
- 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/serving.ts +31 -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/evidence/store.ts +6 -0
- 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/index.ts +0 -1
- package/src/domains/memory/task-memory-handoff.ts +6 -3
- package/src/domains/memory/task-memory-policy.ts +6 -10
- package/src/domains/memory/task-memory-telemetry.ts +1 -0
- package/src/domains/middleware/index.ts +7 -0
- package/src/domains/middleware/marketplace-offer.ts +339 -0
- package/src/domains/middleware/memory-intervention.ts +33 -21
- package/src/domains/middleware/runtime.ts +2 -2
- package/src/domains/mux/contract.ts +566 -0
- package/src/domains/mux/detect.ts +182 -0
- package/src/domains/mux/dock-controller.ts +365 -0
- package/src/domains/mux/extension.ts +53 -0
- package/src/domains/mux/index.ts +116 -0
- package/src/domains/mux/manifest.ts +6 -0
- package/src/domains/mux/operations.ts +192 -0
- package/src/domains/mux/pane-registry.ts +90 -0
- package/src/domains/mux/protocol.ts +62 -0
- package/src/domains/mux/socket-client.ts +964 -0
- package/src/domains/mux/types.ts +265 -0
- package/src/domains/mux/viewer-command.ts +59 -0
- package/src/domains/mux/yazi/assets/init.lua +2 -0
- package/src/domains/mux/yazi/assets/plugins/git.yazi/LICENSE +21 -0
- package/src/domains/mux/yazi/assets/plugins/git.yazi/README.md +78 -0
- package/src/domains/mux/yazi/assets/plugins/git.yazi/main.lua +255 -0
- package/src/domains/mux/yazi/assets/plugins/git.yazi/types.lua +12 -0
- package/src/domains/mux/yazi/assets/yazi.toml +17 -0
- package/src/domains/mux/yazi/event-stream.ts +182 -0
- package/src/domains/mux/yazi/profile.ts +299 -0
- package/src/domains/mux/yazi/session.ts +251 -0
- package/src/domains/mux/yazi/theme.ts +30 -0
- package/src/domains/observability/cost.ts +21 -0
- package/src/domains/observability/extension.ts +1 -1
- package/src/domains/observability/index.ts +2 -0
- 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 +63 -11
- 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/endpoint-capacity.ts +154 -22
- package/src/domains/providers/endpoint-slots-store.ts +189 -0
- package/src/domains/providers/extension.ts +25 -8
- package/src/domains/providers/index.ts +22 -0
- package/src/domains/providers/knowledge-base-path.ts +1 -1
- package/src/domains/providers/model-runtime-capabilities.ts +46 -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/boot-manifest.ts +1 -0
- package/src/domains/providers/runtimes/builtins.ts +2 -0
- 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 +285 -0
- package/src/domains/providers/support.ts +1 -0
- package/src/domains/providers/target-model-cache.ts +124 -0
- 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/index.ts +3 -0
- 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 +72 -13
- package/src/domains/resources/skills/marketplace.ts +21 -2
- package/src/domains/resources/skills/promotion.ts +214 -0
- package/src/domains/safety/action-classifier.ts +6 -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/archive.ts +175 -0
- package/src/domains/toolchain/contract.ts +28 -0
- package/src/domains/toolchain/extension.ts +47 -0
- package/src/domains/toolchain/index.ts +39 -0
- package/src/domains/toolchain/install.ts +327 -0
- package/src/domains/toolchain/manifest.ts +8 -0
- package/src/domains/toolchain/paths.ts +34 -0
- package/src/domains/toolchain/registry.ts +265 -0
- package/src/domains/toolchain/remove.ts +218 -0
- package/src/domains/toolchain/resolve.ts +182 -0
- package/src/domains/toolchain/types.ts +113 -0
- package/src/domains/toolchain/version.ts +88 -0
- package/src/engine/acp/adapter.ts +3 -3
- package/src/engine/acp/event-mapper.ts +3 -3
- package/src/engine/acp/server.ts +440 -96
- package/src/engine/acp/tool-mediator.ts +2 -2
- package/src/engine/acp/types.ts +20 -2
- 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 +87 -0
- package/src/engine/claude/sdk-runtime.ts +25 -17
- 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 +21 -0
- package/src/engine/tui.ts +1 -0
- package/src/engine/worker-events.ts +6 -6
- package/src/engine/worker-runtime.ts +16 -26
- package/src/entry/boot-options.ts +2 -0
- package/src/entry/orchestrator.ts +207 -90
- package/src/entry/panes-activation.ts +31 -0
- package/src/entry/with-panes.ts +20 -0
- 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 +2 -1
- package/src/interactive/cost-overlay.ts +3 -1
- package/src/interactive/council-grid.ts +3 -5
- package/src/interactive/council.ts +11 -0
- package/src/interactive/dispatch-board.ts +56 -49
- 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 +229 -62
- package/src/interactive/interactive-event-projection.ts +1 -1
- package/src/interactive/interactive-input-runtime.ts +9 -2
- package/src/interactive/interactive-presentation.ts +21 -16
- package/src/interactive/interactive-shell.ts +2 -2
- package/src/interactive/interactive-slash-runtime.ts +99 -23
- 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 +3 -2
- package/src/interactive/modal-marker.ts +151 -0
- package/src/interactive/mutation-preview.ts +1 -1
- package/src/interactive/mux-bridge.ts +214 -0
- package/src/interactive/overlay-frame.ts +62 -14
- package/src/interactive/overlay-general-openers.ts +7 -2
- package/src/interactive/overlay-key-routing.ts +21 -10
- package/src/interactive/overlay-lifecycle.ts +20 -4
- package/src/interactive/overlay-model-selectors.ts +43 -6
- package/src/interactive/overlay-permission-lifecycle.ts +90 -22
- package/src/interactive/overlay-transitions.ts +18 -4
- package/src/interactive/overlays/agents.ts +3 -2
- package/src/interactive/overlays/ask-user.ts +161 -41
- package/src/interactive/overlays/auth-dialog.ts +1 -0
- package/src/interactive/overlays/context-reset.ts +29 -4
- package/src/interactive/overlays/cwd-fallback.ts +29 -4
- package/src/interactive/overlays/decisions.ts +15 -13
- package/src/interactive/overlays/extensions.ts +1 -0
- package/src/interactive/overlays/fleet-run-approval.ts +4 -3
- package/src/interactive/overlays/handoff-review.ts +3 -2
- package/src/interactive/overlays/help-reference.ts +2 -0
- package/src/interactive/overlays/interop.ts +2 -1
- package/src/interactive/overlays/library-install-confirm.ts +2 -1
- package/src/interactive/overlays/library-tabs.ts +28 -0
- package/src/interactive/overlays/list-overlay.ts +10 -1
- package/src/interactive/overlays/message-picker.ts +2 -1
- package/src/interactive/overlays/model-scope.ts +86 -0
- package/src/interactive/overlays/model-selector.ts +40 -31
- package/src/interactive/overlays/prompts.ts +11 -4
- package/src/interactive/overlays/session-selector.ts +3 -2
- package/src/interactive/overlays/settings-sections.ts +30 -0
- package/src/interactive/overlays/settings.ts +849 -268
- package/src/interactive/overlays/side-question.ts +3 -2
- package/src/interactive/overlays/skills-hub.ts +11 -19
- package/src/interactive/overlays/tree-selector.ts +3 -2
- package/src/interactive/pane-policy.ts +46 -0
- package/src/interactive/panes-runtime.ts +318 -0
- package/src/interactive/permission-overlay.ts +2 -2
- package/src/interactive/renderers/compaction-summary.ts +29 -0
- package/src/interactive/renderers/retry-status.ts +12 -4
- package/src/interactive/renderers/tool-execution.ts +4 -4
- package/src/interactive/renderers/worker-entry.ts +122 -14
- package/src/interactive/session-transcript.ts +3 -3
- package/src/interactive/slash-autocomplete.ts +454 -165
- package/src/interactive/slash-commands.ts +521 -189
- 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 +21 -13
- package/src/interactive/terminal-lease.ts +6 -7
- package/src/interactive/theme/tokens.ts +3 -14
- package/src/interactive/turn-context.ts +58 -13
- 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 +120 -9
- package/src/interactive/view/view-overlay.ts +14 -10
- package/src/interactive/watch-pane.ts +180 -0
- package/src/interactive/welcome-dashboard.ts +15 -15
- package/src/interactive/worker-progress.ts +11 -5
- package/src/interactive/worker-receipts.ts +20 -2
- package/src/interactive/worker-stream.ts +6 -4
- package/src/interactive/yazi-bridge.ts +451 -0
- package/src/tools/ask-user.ts +3 -3
- package/src/tools/bash.ts +1 -1
- package/src/tools/bootstrap.ts +26 -2
- package/src/tools/builtin-tool-catalog.ts +16 -1
- package/src/tools/compete-worktrees.ts +108 -17
- package/src/tools/context/index.ts +15 -1
- package/src/tools/core-bootstrap.ts +2 -1
- package/src/tools/dispatch-admission.ts +18 -5
- package/src/tools/dispatch-arguments.ts +21 -21
- package/src/tools/dispatch-plan.ts +0 -11
- package/src/tools/dispatch-run-events.ts +145 -28
- package/src/tools/dispatch-runner.ts +40 -13
- package/src/tools/dispatch-types.ts +15 -3
- package/src/tools/dispatch.ts +2 -2
- package/src/tools/executables.ts +17 -14
- package/src/tools/find.ts +1 -6
- package/src/tools/monitor.ts +4 -4
- package/src/tools/observation.ts +54 -4
- package/src/tools/observers.ts +0 -33
- package/src/tools/panes-surface.ts +38 -0
- package/src/tools/panes.ts +112 -0
- package/src/tools/policy.ts +10 -1
- package/src/tools/presentation.ts +1 -0
- package/src/tools/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-D73KXYPF.js +0 -37
- package/dist/chunk-MLOK6ZOS.js +0 -2888
- package/dist/chunk-PNY46YEY.js +0 -1581
- package/dist/chunk-XDOQXGFO.js +0 -515
- package/dist/chunk-YKOFT37S.js +0 -279
- package/dist/clio-LT5V7SSZ.js +0 -26
- package/dist/configure-2WYWSCSD.js +0 -49
- package/dist/doctor-TWBWFK5V.js +0 -165
- 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
|
@@ -12,6 +12,8 @@ import type { ExtensionsContract } from "../domains/extensions/index.js";
|
|
|
12
12
|
import type { InteropContract } from "../domains/interop/index.js";
|
|
13
13
|
import type { TaskMemoryOperatorStatus } from "../domains/memory/index.js";
|
|
14
14
|
import { openDetachedBatchViews } from "../domains/middleware/index.js";
|
|
15
|
+
import type { MuxContract } from "../domains/mux/index.js";
|
|
16
|
+
import type { PanesOperations, PanesWatchController } from "../domains/mux/operations.js";
|
|
15
17
|
import type { ObservabilityContract } from "../domains/observability/index.js";
|
|
16
18
|
import type { ProvidersContract, ThinkingLevel } from "../domains/providers/index.js";
|
|
17
19
|
import type { ResourcesContract } from "../domains/resources/index.js";
|
|
@@ -40,8 +42,10 @@ import { createProcessInteractiveShell, getActiveRenderTrace } from "./interacti
|
|
|
40
42
|
import { createInteractiveSlashRuntime, resolveAvailableThinkingLevels } from "./interactive-slash-runtime.js";
|
|
41
43
|
import { createInteractiveSubscriptions } from "./interactive-subscriptions.js";
|
|
42
44
|
import { createInteractiveTickers } from "./interactive-tickers.js";
|
|
45
|
+
import type { createMuxBridge } from "./mux-bridge.js";
|
|
43
46
|
import { createOverlayLifecycle, type OverlayLifecycleController, type OverlayState } from "./overlay-lifecycle.js";
|
|
44
47
|
import { interopOverlaySurface } from "./overlays/interop.js";
|
|
48
|
+
import { paneWatchDecision } from "./pane-policy.js";
|
|
45
49
|
import { writeInputWedgeDump } from "./render-trace.js";
|
|
46
50
|
import { settleChatBeforeSessionSwitch } from "./session-switch-settlement.js";
|
|
47
51
|
import { createSessionTranscript } from "./session-transcript.js";
|
|
@@ -49,11 +53,14 @@ import type {
|
|
|
49
53
|
ContextClearCommandOptions,
|
|
50
54
|
InitCommandOptions,
|
|
51
55
|
RunIo,
|
|
56
|
+
SettingsAreaId,
|
|
52
57
|
TaskMemorySeedCommandResult,
|
|
53
58
|
} from "./slash-commands.js";
|
|
54
59
|
import { processAutoPacingAllowed, resolveSmoothStreamingMode } from "./stream-pacing-policy.js";
|
|
55
60
|
import type { TerminalLease } from "./terminal-lease.js";
|
|
61
|
+
import type { createWatchPaneController } from "./watch-pane.js";
|
|
56
62
|
import { createWorkspaceFacts } from "./workspace-facts.js";
|
|
63
|
+
import type { createYaziBridge, YaziBridge } from "./yazi-bridge.js";
|
|
57
64
|
|
|
58
65
|
export {
|
|
59
66
|
IDLE_LEADER_STATE,
|
|
@@ -85,20 +92,6 @@ export {
|
|
|
85
92
|
type SlashCommandKind,
|
|
86
93
|
} from "./slash-commands.js";
|
|
87
94
|
|
|
88
|
-
export function shouldAnnouncePermissionRequest(
|
|
89
|
-
seenRequestIds: Set<string>,
|
|
90
|
-
requestId: string,
|
|
91
|
-
maxSize = 2048,
|
|
92
|
-
): boolean {
|
|
93
|
-
if (seenRequestIds.has(requestId)) return false;
|
|
94
|
-
seenRequestIds.add(requestId);
|
|
95
|
-
if (seenRequestIds.size > maxSize) {
|
|
96
|
-
const oldest = seenRequestIds.values().next().value;
|
|
97
|
-
if (oldest !== undefined) seenRequestIds.delete(oldest);
|
|
98
|
-
}
|
|
99
|
-
return true;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
95
|
export function isLiveWorkerEscalationRequest(payload: PermissionRequestedPayload): boolean {
|
|
103
96
|
if (typeof payload.requestId !== "string") return false;
|
|
104
97
|
if (payload.escalation !== true) return false;
|
|
@@ -130,6 +123,36 @@ export interface InteractiveDeps {
|
|
|
130
123
|
extensions?: ExtensionsContract;
|
|
131
124
|
interop?: InteropContract;
|
|
132
125
|
share?: ShareContract;
|
|
126
|
+
/**
|
|
127
|
+
* Pane layer. A `none` contract still reaches the interactive surface so the
|
|
128
|
+
* files preset can use its terminal chooser; every mux operation remains
|
|
129
|
+
* best-effort and never reaches a dispatch or a turn.
|
|
130
|
+
*/
|
|
131
|
+
mux?: MuxContract;
|
|
132
|
+
/**
|
|
133
|
+
* Pane-layer operations behind `/panes` and the `panes` tool. Built by the
|
|
134
|
+
* composition root so the tool registry and this surface drive one instance.
|
|
135
|
+
*/
|
|
136
|
+
panes?: PanesOperations;
|
|
137
|
+
/**
|
|
138
|
+
* Factory seam for the dispatch-to-pane bridge, so a contract test can drive
|
|
139
|
+
* it without a TUI. Production leaves it unset and gets `createMuxBridge`.
|
|
140
|
+
*/
|
|
141
|
+
createMuxBridge?: typeof createMuxBridge;
|
|
142
|
+
/** Bind the file-pane return path after the composer and TUI exist. */
|
|
143
|
+
attachYaziBridge?: (bridge: YaziBridge) => () => void;
|
|
144
|
+
/**
|
|
145
|
+
* Watch-pane factory from the `--with-panes` composition root; absent on a
|
|
146
|
+
* plain boot. The controller it builds backs Enter in the workers view.
|
|
147
|
+
*/
|
|
148
|
+
createWatchPane?: typeof createWatchPaneController;
|
|
149
|
+
/** Bind the watch controller into the shared PanesOperations for `/panes show`. */
|
|
150
|
+
attachWatchPane?: (controller: PanesWatchController) => () => void;
|
|
151
|
+
/**
|
|
152
|
+
* File-pane factory. Supplied by the `--with-panes` composition root (or a
|
|
153
|
+
* contract test); absent on a plain boot, which therefore loads no yazi code.
|
|
154
|
+
*/
|
|
155
|
+
createYaziBridge?: typeof createYaziBridge;
|
|
133
156
|
/**
|
|
134
157
|
* Shared tool registry. When wired, the permission overlay opens automatically
|
|
135
158
|
* whenever a tool call is parked waiting for operator confirmation, and the
|
|
@@ -173,12 +196,19 @@ export interface InteractiveDeps {
|
|
|
173
196
|
registerAskUserHandler?: (handler: AskUserHandler) => () => void;
|
|
174
197
|
/** Live CLIO-CODER.md and memory state for the footer Context quadrant. */
|
|
175
198
|
getContextState?: (cwd?: string) => ContextState;
|
|
176
|
-
/**
|
|
177
|
-
|
|
199
|
+
/**
|
|
200
|
+
* Persist a thinking level set by `/thinking <level>` or `/model <pattern>:<level>`.
|
|
201
|
+
* Scope "session" leaves settings.yaml alone; omitted means the historical
|
|
202
|
+
* write-through, which is what the Shift+Tab cycle and `/thinking` still want.
|
|
203
|
+
*/
|
|
204
|
+
onSetThinkingLevel?: (level: ThinkingLevel, scope?: "session" | "global") => void;
|
|
178
205
|
/** Persist the next thinking level when Shift+Tab is pressed. */
|
|
179
206
|
onCycleThinking?: () => void;
|
|
180
|
-
/**
|
|
181
|
-
|
|
207
|
+
/**
|
|
208
|
+
* Apply the orchestrator target selected in /model at the scope the operator
|
|
209
|
+
* chose. "session" routes this session only and never touches settings.yaml.
|
|
210
|
+
*/
|
|
211
|
+
onSelectModel?: (ref: { target: string; model: string }, scope: "session" | "global") => void;
|
|
182
212
|
/** Write handler the /settings overlay uses to persist cycled values. */
|
|
183
213
|
writeSettings?: (next: ClioSettings) => void;
|
|
184
214
|
/**
|
|
@@ -200,7 +230,7 @@ export interface InteractiveDeps {
|
|
|
200
230
|
onForkSession?: (parentTurnId: string) => void;
|
|
201
231
|
/**
|
|
202
232
|
* Run `/context compact` for the current session. Resolves the compaction model
|
|
203
|
-
* (settings.compaction.model with fallback to the
|
|
233
|
+
* (settings.context.compaction.model with fallback to the chat target),
|
|
204
234
|
* reads session entries, streams a summary via the session compaction
|
|
205
235
|
* engine, and persists a compactionSummary entry.
|
|
206
236
|
*/
|
|
@@ -239,7 +269,7 @@ export interface InteractiveSubmitExpansion {
|
|
|
239
269
|
pendingSkillRequests: PendingSkillRequest[];
|
|
240
270
|
}
|
|
241
271
|
|
|
242
|
-
|
|
272
|
+
async function expandInteractiveSubmitAsync(
|
|
243
273
|
text: string,
|
|
244
274
|
resources: ResourcesContract | undefined,
|
|
245
275
|
cwd = process.cwd(),
|
|
@@ -271,7 +301,7 @@ function availableInteractiveThinkingLevels(deps: InteractiveDeps): ReadonlyArra
|
|
|
271
301
|
export interface KeyBindingDeps {
|
|
272
302
|
/**
|
|
273
303
|
* Keybinding lookup injected by startInteractive. Defaults come from
|
|
274
|
-
* CLIO_KEYBINDINGS; user overrides from settings.keybindings. Tests may
|
|
304
|
+
* CLIO_KEYBINDINGS; user overrides from settings.interface.keybindings. Tests may
|
|
275
305
|
* substitute a narrower matcher via createKeybindingManagerForTesting.
|
|
276
306
|
*/
|
|
277
307
|
matches: (data: string, id: ClioKeybinding) => boolean;
|
|
@@ -322,73 +352,73 @@ export function resolveCtrlCAction(deps: CtrlCActionDeps): CtrlCAction {
|
|
|
322
352
|
return "arm-shutdown";
|
|
323
353
|
}
|
|
324
354
|
|
|
325
|
-
|
|
355
|
+
function dispatchInteractiveAction(id: ClioKeybinding, deps: KeyBindingDeps): boolean {
|
|
326
356
|
switch (id) {
|
|
327
|
-
case "clio.notifications.dismiss":
|
|
357
|
+
case "clio-coder.notifications.dismiss":
|
|
328
358
|
deps.dismissNotifications();
|
|
329
359
|
return true;
|
|
330
|
-
case "clio.tool.expand":
|
|
360
|
+
case "clio-coder.tool.expand":
|
|
331
361
|
deps.toggleToolExpansion();
|
|
332
362
|
return true;
|
|
333
|
-
case "clio.tool.expandAll":
|
|
363
|
+
case "clio-coder.tool.expandAll":
|
|
334
364
|
deps.toggleAllToolExpansion();
|
|
335
365
|
return true;
|
|
336
|
-
case "clio.tool.liveOutput":
|
|
366
|
+
case "clio-coder.tool.liveOutput":
|
|
337
367
|
deps.toggleLiveToolOutput();
|
|
338
368
|
return true;
|
|
339
|
-
case "clio.editor.external":
|
|
369
|
+
case "clio-coder.editor.external":
|
|
340
370
|
deps.openExternalEditor();
|
|
341
371
|
return true;
|
|
342
|
-
case "clio.message.followUp":
|
|
372
|
+
case "clio-coder.message.followUp":
|
|
343
373
|
deps.queueFollowUp();
|
|
344
374
|
return true;
|
|
345
|
-
case "clio.message.interrupt":
|
|
375
|
+
case "clio-coder.message.interrupt":
|
|
346
376
|
deps.interruptWithMessage();
|
|
347
377
|
return true;
|
|
348
|
-
case "clio.message.dequeue":
|
|
378
|
+
case "clio-coder.message.dequeue":
|
|
349
379
|
deps.restoreQueuedFollowUps();
|
|
350
380
|
return true;
|
|
351
|
-
case "clio.thinking.expand":
|
|
381
|
+
case "clio-coder.thinking.expand":
|
|
352
382
|
deps.toggleThinkingExpansion();
|
|
353
383
|
return true;
|
|
354
|
-
case "clio.thinking.expandAll":
|
|
384
|
+
case "clio-coder.thinking.expandAll":
|
|
355
385
|
deps.toggleAllThinkingExpansion();
|
|
356
386
|
return true;
|
|
357
|
-
case "clio.status.toggle":
|
|
387
|
+
case "clio-coder.status.toggle":
|
|
358
388
|
deps.toggleStatus();
|
|
359
389
|
return true;
|
|
360
|
-
case "clio.thinking.cycle":
|
|
390
|
+
case "clio-coder.thinking.cycle":
|
|
361
391
|
deps.cycleThinking();
|
|
362
392
|
return true;
|
|
363
|
-
case "clio.session.tree":
|
|
393
|
+
case "clio-coder.session.tree":
|
|
364
394
|
deps.openTree();
|
|
365
395
|
return true;
|
|
366
|
-
case "clio.dispatchBoard.toggle":
|
|
396
|
+
case "clio-coder.dispatchBoard.toggle":
|
|
367
397
|
deps.toggleDispatchBoard();
|
|
368
398
|
return true;
|
|
369
|
-
case "clio.tasks.open":
|
|
399
|
+
case "clio-coder.tasks.open":
|
|
370
400
|
deps.openTasks();
|
|
371
401
|
return true;
|
|
372
|
-
case "clio.decisions.open":
|
|
402
|
+
case "clio-coder.decisions.open":
|
|
373
403
|
deps.openDecisions();
|
|
374
404
|
return true;
|
|
375
|
-
case "clio.dispatch.background":
|
|
405
|
+
case "clio-coder.dispatch.background":
|
|
376
406
|
deps.backgroundDispatch();
|
|
377
407
|
return true;
|
|
378
|
-
case "clio.model.select":
|
|
408
|
+
case "clio-coder.model.select":
|
|
379
409
|
deps.openModelSelector();
|
|
380
410
|
return true;
|
|
381
|
-
case "clio.model.cycleBackward":
|
|
411
|
+
case "clio-coder.model.cycleBackward":
|
|
382
412
|
deps.cycleScopedModelBackward();
|
|
383
413
|
return true;
|
|
384
|
-
case "clio.model.cycleForward":
|
|
414
|
+
case "clio-coder.model.cycleForward":
|
|
385
415
|
deps.cycleScopedModelForward();
|
|
386
416
|
return true;
|
|
387
|
-
case "clio.exit":
|
|
417
|
+
case "clio-coder.exit":
|
|
388
418
|
if (deps.canExit && !deps.canExit()) return false;
|
|
389
419
|
deps.requestShutdown();
|
|
390
420
|
return true;
|
|
391
|
-
case "clio.leader":
|
|
421
|
+
case "clio-coder.leader":
|
|
392
422
|
return false;
|
|
393
423
|
}
|
|
394
424
|
}
|
|
@@ -396,20 +426,20 @@ export function dispatchInteractiveAction(id: ClioKeybinding, deps: KeyBindingDe
|
|
|
396
426
|
/** Pure key router: returns true when the input was consumed. */
|
|
397
427
|
export function routeInteractiveKey(data: string, deps: KeyBindingDeps): boolean {
|
|
398
428
|
const order: ClioKeybinding[] = [
|
|
399
|
-
"clio.status.toggle",
|
|
400
|
-
"clio.thinking.cycle",
|
|
401
|
-
"clio.session.tree",
|
|
402
|
-
"clio.dispatchBoard.toggle",
|
|
403
|
-
"clio.tasks.open",
|
|
404
|
-
"clio.decisions.open",
|
|
405
|
-
"clio.dispatch.background",
|
|
406
|
-
"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",
|
|
407
437
|
// Match cycleBackward before cycleForward so a user rebind where one key
|
|
408
438
|
// is a prefix of the other resolves to the more specific binding first.
|
|
409
439
|
// The defaults (alt+k / alt+j) do not prefix-match each other.
|
|
410
|
-
"clio.model.cycleBackward",
|
|
411
|
-
"clio.model.cycleForward",
|
|
412
|
-
"clio.exit",
|
|
440
|
+
"clio-coder.model.cycleBackward",
|
|
441
|
+
"clio-coder.model.cycleForward",
|
|
442
|
+
"clio-coder.exit",
|
|
413
443
|
];
|
|
414
444
|
for (const id of order) {
|
|
415
445
|
if (deps.matches(data, id)) return dispatchInteractiveAction(id, deps);
|
|
@@ -418,13 +448,13 @@ export function routeInteractiveKey(data: string, deps: KeyBindingDeps): boolean
|
|
|
418
448
|
}
|
|
419
449
|
|
|
420
450
|
export async function createInteractiveApplication(deps: InteractiveDeps): Promise<number> {
|
|
421
|
-
const initialSmoothStreaming = resolveSmoothStreamingMode(deps.getSettings?.().
|
|
451
|
+
const initialSmoothStreaming = resolveSmoothStreamingMode(deps.getSettings?.().interface.smoothStreaming ?? "off");
|
|
422
452
|
const initialAutoPacingAllowed = processAutoPacingAllowed(false);
|
|
423
453
|
const lease = deps.terminalLease;
|
|
424
454
|
const shell =
|
|
425
455
|
lease?.shell ??
|
|
426
456
|
createProcessInteractiveShell({
|
|
427
|
-
tuiMode: deps.getSettings?.().
|
|
457
|
+
tuiMode: deps.getSettings?.().interface.mode ?? "regular",
|
|
428
458
|
streamPacingActive:
|
|
429
459
|
initialSmoothStreaming === "on" || (initialSmoothStreaming === "auto" && initialAutoPacingAllowed),
|
|
430
460
|
...(deps.onFirstFrameCommit ? { onFirstFrameCommit: deps.onFirstFrameCommit } : {}),
|
|
@@ -567,6 +597,31 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
567
597
|
chatRenderer,
|
|
568
598
|
io,
|
|
569
599
|
} = presentation;
|
|
600
|
+
// The factory arrives only from an active `--with-panes` boot (or a test); a
|
|
601
|
+
// plain session has no deps.panes and no factory, and loads no yazi code.
|
|
602
|
+
const yaziBridge =
|
|
603
|
+
deps.panes && deps.createYaziBridge
|
|
604
|
+
? deps.createYaziBridge({
|
|
605
|
+
...(deps.mux ? { mux: deps.mux } : {}),
|
|
606
|
+
getDraft: () => editor.getText(),
|
|
607
|
+
setDraft: (text) => editor.setText(text),
|
|
608
|
+
requestRender: () => tui.requestRender(),
|
|
609
|
+
notice: (level, text) => notify(level, text, `yazi:${level}`),
|
|
610
|
+
getCwd: () => process.cwd(),
|
|
611
|
+
getSettings: () =>
|
|
612
|
+
deps.getSettings?.().interface.panes.files ?? {
|
|
613
|
+
mode: "companion",
|
|
614
|
+
profile: "managed",
|
|
615
|
+
followCwd: true,
|
|
616
|
+
},
|
|
617
|
+
stopUi: () => tui.stop(),
|
|
618
|
+
startUi: () => {
|
|
619
|
+
tui.start();
|
|
620
|
+
tui.requestRender(true);
|
|
621
|
+
},
|
|
622
|
+
})
|
|
623
|
+
: null;
|
|
624
|
+
const detachYaziBridge = yaziBridge ? deps.attachYaziBridge?.(yaziBridge) : undefined;
|
|
570
625
|
refreshPresentationFooter = () => footer.refresh();
|
|
571
626
|
const agentProgress = createAgentProgress(terminal);
|
|
572
627
|
// Desktop notifications are a protocol write on the terminal owner, issued
|
|
@@ -575,7 +630,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
575
630
|
// `CLIO_CODER_INTERACTIVE=1` forced the interactive surface on.
|
|
576
631
|
const desktopNotifications = createInteractiveDesktopNotifications({
|
|
577
632
|
write: (data) => terminal.write(data),
|
|
578
|
-
enabled: () => deps.getSettings?.().
|
|
633
|
+
enabled: () => deps.getSettings?.().interface.desktopNotifications ?? false,
|
|
579
634
|
interactiveTty: () => process.stdout.isTTY === true,
|
|
580
635
|
getOpenBatches: () => openDetachedBatchViews(deps.dispatch),
|
|
581
636
|
});
|
|
@@ -617,7 +672,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
617
672
|
appendTranscriptNotice: (level, text) => appendNotice(level, text, busNoticeSink),
|
|
618
673
|
refreshSettingsOverlay: () => overlayLifecycle.refreshSettingsOverlay(),
|
|
619
674
|
onConfigHotReload: (settings) => {
|
|
620
|
-
const mode = resolveSmoothStreamingMode(settings.
|
|
675
|
+
const mode = resolveSmoothStreamingMode(settings.interface.smoothStreaming);
|
|
621
676
|
const autoAllowed = processAutoPacingAllowed(shell.hasObservedBackpressure());
|
|
622
677
|
chatRenderer.setSmoothStreamingMode(mode);
|
|
623
678
|
shell.setStreamPacingActive(mode === "on" || (mode === "auto" && autoAllowed));
|
|
@@ -674,6 +729,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
674
729
|
openSideQuestion: (question) => openSideQuestionOverlayState(question),
|
|
675
730
|
startHandoff: (goal) => startHandoffState(goal),
|
|
676
731
|
startFleetRun: (name, vars) => startFleetRunState(name, vars),
|
|
732
|
+
openFleetRuns: () => toggleDispatchBoardOverlay(),
|
|
677
733
|
...(toolRegistry ? { runCouncilDispatch: (args) => dispatchCouncilThroughRegistry(toolRegistry, args) } : {}),
|
|
678
734
|
openContextView: () => openContextViewOverlayState(),
|
|
679
735
|
openTasks: () => openTasksOverlayState(),
|
|
@@ -681,8 +737,25 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
681
737
|
openMemory: () => openMemoryOverlayState(),
|
|
682
738
|
...(deps.seedTaskMemory ? { seedTaskMemory: deps.seedTaskMemory } : {}),
|
|
683
739
|
openView: (filter) => openViewOverlayState(filter),
|
|
740
|
+
...(deps.panes ? { panes: deps.panes } : {}),
|
|
684
741
|
openModel: () => openModelOverlayState(),
|
|
685
|
-
|
|
742
|
+
openModelScope: (ref) => openModelScopeState(ref),
|
|
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
|
+
},
|
|
686
759
|
openResume: () => openResumeOverlayState(),
|
|
687
760
|
startNewSession: () => startNewSession(),
|
|
688
761
|
openTree: () => openTreeOverlayState(),
|
|
@@ -789,6 +862,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
789
862
|
openMemoryOverlayState,
|
|
790
863
|
openViewOverlayState,
|
|
791
864
|
openModelOverlayState,
|
|
865
|
+
openModelScopeState,
|
|
792
866
|
openSettingsOverlayState,
|
|
793
867
|
openResumeOverlayState,
|
|
794
868
|
openTreeOverlayState,
|
|
@@ -799,6 +873,7 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
799
873
|
openPromptsOverlayState,
|
|
800
874
|
openExtensionsOverlayState,
|
|
801
875
|
openInteropOverlayState,
|
|
876
|
+
toggleDispatchBoardOverlay,
|
|
802
877
|
} = overlayLifecycle;
|
|
803
878
|
|
|
804
879
|
const dispatchSteering = createDispatchSteering({
|
|
@@ -866,6 +941,80 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
866
941
|
};
|
|
867
942
|
notify(outcome.ok ? "success" : "info", outcome.message, "dispatch:background");
|
|
868
943
|
};
|
|
944
|
+
// Built only when a pane host answered detection, so a session with no
|
|
945
|
+
// panes subscribes to nothing and the bus handlers do not exist at all.
|
|
946
|
+
// The factories arrive from the `--with-panes` composition root (or a
|
|
947
|
+
// test); a plain session loads none of the bridge code.
|
|
948
|
+
const mux = deps.mux;
|
|
949
|
+
const muxBridge =
|
|
950
|
+
mux && mux.mode !== "none" && deps.createMuxBridge
|
|
951
|
+
? deps.createMuxBridge({
|
|
952
|
+
bus: deps.bus,
|
|
953
|
+
mux,
|
|
954
|
+
notificationsPolicy: () => deps.getSettings?.().interface.panes.notifications ?? "failures",
|
|
955
|
+
log: (level, message) => {
|
|
956
|
+
if (level === "warning") notify("warning", message, "mux:bridge");
|
|
957
|
+
},
|
|
958
|
+
notice: (level, text) => appendNotice(level, text, busNoticeSink),
|
|
959
|
+
})
|
|
960
|
+
: null;
|
|
961
|
+
// The workers-view watch pane: opened on Enter over a live run, retargeted
|
|
962
|
+
// by arrow keys through its selection file. `/panes show` and the panes
|
|
963
|
+
// tool drive the same controller through the shared operations object.
|
|
964
|
+
const watchPane =
|
|
965
|
+
mux && mux.mode !== "none" && deps.createWatchPane
|
|
966
|
+
? deps.createWatchPane({
|
|
967
|
+
mux,
|
|
968
|
+
getCwd: () => process.cwd(),
|
|
969
|
+
getWorkersRatio: () => deps.getSettings?.().interface.panes.workers.ratio ?? 0.34,
|
|
970
|
+
})
|
|
971
|
+
: null;
|
|
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
|
+
}
|
|
985
|
+
const selectedWatchableRun = (): { runId: string; agentId: string } | null => {
|
|
986
|
+
if (!watchPane) return null;
|
|
987
|
+
const row = dispatchBoard.selectedRow();
|
|
988
|
+
if (!row) return null;
|
|
989
|
+
const decision = paneWatchDecision({ source: "workers-view", runStatus: row.status });
|
|
990
|
+
return decision.open ? { runId: row.runId, agentId: row.agentId } : null;
|
|
991
|
+
};
|
|
992
|
+
/**
|
|
993
|
+
* Enter in the workers view. True means the watch pane took the key; false
|
|
994
|
+
* (panes off, nothing watchable under the policy) falls back to the inline
|
|
995
|
+
* worker-progress detail, so a terminal run's Enter still expands its card.
|
|
996
|
+
*/
|
|
997
|
+
const watchSelectedDispatch = (): boolean => {
|
|
998
|
+
const selected = selectedWatchableRun();
|
|
999
|
+
if (!watchPane || !selected) return false;
|
|
1000
|
+
void watchPane.watch(selected.runId).then((result) => {
|
|
1001
|
+
if (result.status === "watching") {
|
|
1002
|
+
if (result.opened) {
|
|
1003
|
+
notify("success", `watching ${selected.agentId} (${selected.runId}) in a pane`, "panes:watch");
|
|
1004
|
+
}
|
|
1005
|
+
} else {
|
|
1006
|
+
notify("warning", result.reason, "panes:watch");
|
|
1007
|
+
}
|
|
1008
|
+
tui.requestRender();
|
|
1009
|
+
});
|
|
1010
|
+
return true;
|
|
1011
|
+
};
|
|
1012
|
+
/** Arrow keys: the watch pane follows the cursor, but only once it exists. */
|
|
1013
|
+
const followBoardSelection = (): void => {
|
|
1014
|
+
if (!watchPane?.isOpen()) return;
|
|
1015
|
+
const selected = selectedWatchableRun();
|
|
1016
|
+
if (selected) watchPane.follow(selected.runId);
|
|
1017
|
+
};
|
|
869
1018
|
const interactiveSubscriptions = createInteractiveSubscriptions({
|
|
870
1019
|
bus: deps.bus,
|
|
871
1020
|
refreshFooter: () => footer.refresh(),
|
|
@@ -916,7 +1065,18 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
916
1065
|
onShutdownArmedChange: (armed) => {
|
|
917
1066
|
shutdownArmed = armed;
|
|
918
1067
|
},
|
|
919
|
-
dispatchBoard
|
|
1068
|
+
dispatchBoard: {
|
|
1069
|
+
selectPrevious: () => {
|
|
1070
|
+
dispatchBoard.selectPrevious();
|
|
1071
|
+
followBoardSelection();
|
|
1072
|
+
},
|
|
1073
|
+
selectNext: () => {
|
|
1074
|
+
dispatchBoard.selectNext();
|
|
1075
|
+
followBoardSelection();
|
|
1076
|
+
},
|
|
1077
|
+
toggleDetail: () => dispatchBoard.toggleDetail(),
|
|
1078
|
+
},
|
|
1079
|
+
watchSelectedDispatch,
|
|
920
1080
|
steerSelectedDispatch,
|
|
921
1081
|
cancelSelectedDispatch,
|
|
922
1082
|
cancelActiveEditorBash: () => editorSubmit.cancelActiveEditorBash(),
|
|
@@ -955,7 +1115,14 @@ export async function createInteractiveApplication(deps: InteractiveDeps): Promi
|
|
|
955
1115
|
disposeOverlay: overlayLifecycle.dispose,
|
|
956
1116
|
stopAgentProgress: agentProgress.stop,
|
|
957
1117
|
disposeChat: () => deps.chat.dispose(),
|
|
958
|
-
disposeSubscriptions:
|
|
1118
|
+
disposeSubscriptions: () => {
|
|
1119
|
+
detachYaziBridge?.();
|
|
1120
|
+
yaziBridge?.dispose();
|
|
1121
|
+
detachWatchPane?.();
|
|
1122
|
+
watchPane?.dispose();
|
|
1123
|
+
muxBridge?.dispose();
|
|
1124
|
+
interactiveSubscriptions.dispose();
|
|
1125
|
+
},
|
|
959
1126
|
},
|
|
960
1127
|
beforeStopUi: (() => {
|
|
961
1128
|
let settlement: Promise<void> | null = null;
|
|
@@ -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();
|
|
@@ -82,6 +82,8 @@ export interface InteractiveInputRuntimeDeps {
|
|
|
82
82
|
selectNext(): void;
|
|
83
83
|
toggleDetail(): void;
|
|
84
84
|
};
|
|
85
|
+
/** Enter in the workers view; false falls through to the detail toggle. */
|
|
86
|
+
watchSelectedDispatch: () => boolean;
|
|
85
87
|
steerSelectedDispatch: () => void;
|
|
86
88
|
cancelSelectedDispatch: () => void;
|
|
87
89
|
cancelActiveEditorBash: () => boolean;
|
|
@@ -183,7 +185,7 @@ export function createInteractiveInputRuntime(deps: InteractiveInputRuntimeDeps)
|
|
|
183
185
|
restoreQueuedFollowUps: deps.editorSubmit.restoreQueuedFollowUpsToEditor,
|
|
184
186
|
});
|
|
185
187
|
const leaderKeys = createLeaderKeyController({
|
|
186
|
-
matchesLeader: (input) => deps.keybindings.matches(input, "clio.leader"),
|
|
188
|
+
matchesLeader: (input) => deps.keybindings.matches(input, "clio-coder.leader"),
|
|
187
189
|
leaderTargets: () => deps.keybindings.leaderTargets(),
|
|
188
190
|
dispatchAction: (id) => deps.dispatchAction(id, keyActionDeps()),
|
|
189
191
|
isRelease: isKeyRelease,
|
|
@@ -238,6 +240,11 @@ export function createInteractiveInputRuntime(deps: InteractiveInputRuntimeDeps)
|
|
|
238
240
|
deps.dispatchBoard.toggleDetail();
|
|
239
241
|
deps.requestRender();
|
|
240
242
|
},
|
|
243
|
+
watchSelectedDispatch: () => {
|
|
244
|
+
const handled = deps.watchSelectedDispatch();
|
|
245
|
+
if (handled) deps.requestRender();
|
|
246
|
+
return handled;
|
|
247
|
+
},
|
|
241
248
|
steerSelectedDispatch: deps.steerSelectedDispatch,
|
|
242
249
|
cancelSelectedDispatch: deps.cancelSelectedDispatch,
|
|
243
250
|
cancelAskUser: () => deps.overlay.cancelAskUser(),
|
|
@@ -295,7 +302,7 @@ export function createInteractiveInputRuntime(deps: InteractiveInputRuntimeDeps)
|
|
|
295
302
|
deps.reportShutdownFailure ??
|
|
296
303
|
((step, error) => {
|
|
297
304
|
process.stderr.write(
|
|
298
|
-
`[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`,
|
|
299
306
|
);
|
|
300
307
|
}),
|
|
301
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);
|