@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
|
@@ -41,13 +41,8 @@ import { type CostProvenance, foregroundStreamUsage } from "../domains/providers
|
|
|
41
41
|
import { sanitizeCallTargetText } from "../domains/safety/call-target.js";
|
|
42
42
|
import { type Component, truncateToWidth, visibleWidth, wrapTextWithAnsi } from "../engine/tui.js";
|
|
43
43
|
import { formatWorkerContextMeter } from "./context-meter.js";
|
|
44
|
-
import {
|
|
45
|
-
|
|
46
|
-
type CouncilGroupView,
|
|
47
|
-
type CouncilMemberView,
|
|
48
|
-
councilGroupBody,
|
|
49
|
-
councilIslandLines,
|
|
50
|
-
} from "./council-grid.js";
|
|
44
|
+
import { COUNCIL_SYNTHESIS_LABEL } from "./council.js";
|
|
45
|
+
import { type CouncilGroupView, type CouncilMemberView, councilGroupBody, councilIslandLines } from "./council-grid.js";
|
|
51
46
|
import { formatFooterTokens } from "./footer-panel.js";
|
|
52
47
|
import {
|
|
53
48
|
type ClioTheme,
|
|
@@ -187,10 +182,7 @@ export interface DispatchBoardPhase {
|
|
|
187
182
|
* the column lines up across rows; a long step id is clipped with a marker
|
|
188
183
|
* rather than pushing the row's other facts out of position.
|
|
189
184
|
*/
|
|
190
|
-
|
|
191
|
-
phase: DispatchBoardPhase | undefined,
|
|
192
|
-
width = PHASE_COLUMN_WIDTH,
|
|
193
|
-
): string | null {
|
|
185
|
+
function formatDispatchPhaseCell(phase: DispatchBoardPhase | undefined, width = PHASE_COLUMN_WIDTH): string | null {
|
|
194
186
|
if (phase === undefined) return null;
|
|
195
187
|
return truncateToWidth(`w${phase.wave} ${phase.stepId}`, Math.max(1, width), "…", false);
|
|
196
188
|
}
|
|
@@ -299,9 +291,7 @@ export interface AgentAudiencePresentation {
|
|
|
299
291
|
* machinery. Returns null for base/custom agents, which the operator asked for
|
|
300
292
|
* directly and which therefore render like any other row.
|
|
301
293
|
*/
|
|
302
|
-
|
|
303
|
-
row: Pick<DispatchBoardRow, "agentAudience">,
|
|
304
|
-
): AgentAudiencePresentation | null {
|
|
294
|
+
function agentAudiencePresentation(row: Pick<DispatchBoardRow, "agentAudience">): AgentAudiencePresentation | null {
|
|
305
295
|
if (row.agentAudience === "shadow") return { glyph: GLYPH.subProcess, token: "muted" };
|
|
306
296
|
if (row.agentAudience === "internal") return { glyph: GLYPH.subProcess, token: "dim" };
|
|
307
297
|
return null;
|
|
@@ -444,10 +434,7 @@ function latestEvidenceFailureReason(notices: readonly ObservabilityNotice[], ru
|
|
|
444
434
|
* summary with an evidence bundle is ready; the latest error-level evidence
|
|
445
435
|
* notice for the run marks it failed.
|
|
446
436
|
*/
|
|
447
|
-
|
|
448
|
-
snapshot: ObservabilitySnapshot | undefined,
|
|
449
|
-
runId: string,
|
|
450
|
-
): RunEvidencePresentation {
|
|
437
|
+
function deriveRunEvidenceState(snapshot: ObservabilitySnapshot | undefined, runId: string): RunEvidencePresentation {
|
|
451
438
|
if (!snapshot || runId.length === 0) return { state: "none", viewFilter: `dispatch:${runId}` };
|
|
452
439
|
if (snapshot.pendingEvidenceBuildRunIds.includes(runId)) {
|
|
453
440
|
return { state: "pending", viewFilter: `evidence:${runId}` };
|
|
@@ -502,6 +489,16 @@ function cardUnitsLine(theme: ClioTheme, key: string, units: ReadonlyArray<strin
|
|
|
502
489
|
return visibleWidth(full) <= contentWidth ? full : fitUnits(theme, prefix, units, contentWidth);
|
|
503
490
|
}
|
|
504
491
|
|
|
492
|
+
/** A prose card value, wrapped inside the columns left by its one-time key. */
|
|
493
|
+
function cardWrappedValueLines(theme: ClioTheme, key: string, value: string, contentWidth: number): string[] {
|
|
494
|
+
const prefix = cardKvKey(theme, key);
|
|
495
|
+
const prefixWidth = visibleWidth(prefix);
|
|
496
|
+
const valueWidth = Math.max(1, contentWidth - prefixWidth);
|
|
497
|
+
return wrapTextWithAnsi(value, valueWidth).map(
|
|
498
|
+
(line, index) => `${index === 0 ? prefix : " ".repeat(prefixWidth)}${line}`,
|
|
499
|
+
);
|
|
500
|
+
}
|
|
501
|
+
|
|
505
502
|
// The `proof` row: the colored state marker, an optional failure reason, then
|
|
506
503
|
// the dim `/view` filter an operator would type.
|
|
507
504
|
function evidenceCardLine(theme: ClioTheme, evidence: RunEvidencePresentation, contentWidth: number): string | null {
|
|
@@ -514,7 +511,7 @@ function evidenceCardLine(theme: ClioTheme, evidence: RunEvidencePresentation, c
|
|
|
514
511
|
}
|
|
515
512
|
|
|
516
513
|
/** Sanitize lifecycle task text at the terminal boundary and collapse it to one bounded line. */
|
|
517
|
-
|
|
514
|
+
function sanitizeDispatchTaskSummary(value: unknown): string | undefined {
|
|
518
515
|
if (typeof value !== "string") return undefined;
|
|
519
516
|
const sanitized = sanitizeCallTargetText(value);
|
|
520
517
|
if (sanitized.length === 0) return undefined;
|
|
@@ -627,13 +624,19 @@ function trustCardLines(theme: ClioTheme, row: DispatchBoardRow, contentWidth: n
|
|
|
627
624
|
);
|
|
628
625
|
}
|
|
629
626
|
|
|
630
|
-
|
|
627
|
+
function renderDispatchCard(
|
|
631
628
|
row: DispatchBoardRow,
|
|
632
629
|
width: number,
|
|
633
630
|
evidence?: RunEvidencePresentation,
|
|
634
|
-
options: {
|
|
631
|
+
options: {
|
|
632
|
+
selected?: boolean;
|
|
633
|
+
expanded?: boolean;
|
|
634
|
+
endpointActive?: number;
|
|
635
|
+
endpointQueued?: number;
|
|
636
|
+
theme?: ClioTheme;
|
|
637
|
+
} = {},
|
|
635
638
|
): string[] {
|
|
636
|
-
const theme = clioTheme();
|
|
639
|
+
const theme = options.theme ?? clioTheme();
|
|
637
640
|
const contentWidth = Math.max(0, width - 4);
|
|
638
641
|
const agentLabel = agentDisplayLabel(row);
|
|
639
642
|
const elapsed = formatCompactMs(row.elapsedMs);
|
|
@@ -683,7 +686,12 @@ export function renderDispatchCard(
|
|
|
683
686
|
statusStr,
|
|
684
687
|
theme.fg("muted", `node ${row.node ?? "local"}`),
|
|
685
688
|
...(row.endpoint !== undefined
|
|
686
|
-
? [
|
|
689
|
+
? [
|
|
690
|
+
theme.fg(
|
|
691
|
+
"info",
|
|
692
|
+
`slots ${options.endpointActive ?? 0}/${row.endpoint.limit}${(options.endpointQueued ?? 0) > 0 ? ` +${options.endpointQueued} queued` : ""} ${row.endpoint.label}`,
|
|
693
|
+
),
|
|
694
|
+
]
|
|
687
695
|
: []),
|
|
688
696
|
...(row.gate !== undefined ? [theme.fg("info", `gate ${row.gate.role} c${row.gate.cycle}`)] : []),
|
|
689
697
|
...(row.rerouteCount !== undefined && row.rerouteCount > 0
|
|
@@ -709,24 +717,22 @@ export function renderDispatchCard(
|
|
|
709
717
|
contentWidth,
|
|
710
718
|
),
|
|
711
719
|
targetLine,
|
|
712
|
-
...(row.taskSummary
|
|
713
|
-
? [truncateToWidth(`${cardKvKey(theme, "task")}${theme.fg("muted", row.taskSummary)}`, contentWidth, "…", false)]
|
|
714
|
-
: []),
|
|
720
|
+
...(row.taskSummary ? cardWrappedValueLines(theme, "task", theme.fg("muted", row.taskSummary), contentWidth) : []),
|
|
715
721
|
cardUnitsLine(theme, "status", statusUnits, contentWidth),
|
|
716
722
|
...trustCardLines(theme, row, contentWidth),
|
|
717
723
|
...(row.budget !== undefined
|
|
718
724
|
? [
|
|
719
|
-
|
|
720
|
-
|
|
725
|
+
...cardWrappedValueLines(
|
|
726
|
+
theme,
|
|
727
|
+
"policy",
|
|
728
|
+
theme.fg("muted", `${formatBudgetPolicy(row.budget)}; requested ${formatBudgetRequest(row.budget)}`),
|
|
721
729
|
contentWidth,
|
|
722
|
-
"…",
|
|
723
|
-
false,
|
|
724
730
|
),
|
|
725
|
-
|
|
726
|
-
|
|
731
|
+
...cardWrappedValueLines(
|
|
732
|
+
theme,
|
|
733
|
+
"budget",
|
|
734
|
+
theme.fg("muted", `${formatEffectiveBudget(row.budget)}; reason ${formatBudgetReasons(row.budget)}`),
|
|
727
735
|
contentWidth,
|
|
728
|
-
"…",
|
|
729
|
-
false,
|
|
730
736
|
),
|
|
731
737
|
]
|
|
732
738
|
: []),
|
|
@@ -791,7 +797,7 @@ export function renderDispatchCard(
|
|
|
791
797
|
const proofLine = evidenceCardLine(theme, evidence, contentWidth);
|
|
792
798
|
if (proofLine !== null) bodyLines.push(proofLine);
|
|
793
799
|
}
|
|
794
|
-
if (detail !== null) bodyLines.push(
|
|
800
|
+
if (detail !== null) bodyLines.push(...cardWrappedValueLines(theme, "detail", theme.fg("dim", detail), contentWidth));
|
|
795
801
|
|
|
796
802
|
return frame(theme, cardTitle, bodyLines, width, { rightMeta: elapsed });
|
|
797
803
|
}
|
|
@@ -950,10 +956,7 @@ export type DispatchBoardItem = { kind: "run"; row: DispatchBoardRow } | { kind:
|
|
|
950
956
|
* its first row and its remaining rows are consumed, so the board never shows a
|
|
951
957
|
* member both inside its group and beside it.
|
|
952
958
|
*/
|
|
953
|
-
|
|
954
|
-
rows: ReadonlyArray<DispatchBoardRow>,
|
|
955
|
-
selectedRunId?: string | null,
|
|
956
|
-
): DispatchBoardItem[] {
|
|
959
|
+
function dispatchBoardItems(rows: ReadonlyArray<DispatchBoardRow>, selectedRunId?: string | null): DispatchBoardItem[] {
|
|
957
960
|
const byGroup = new Map<string, DispatchBoardRow[]>();
|
|
958
961
|
for (const row of rows) {
|
|
959
962
|
const group = row.council?.group;
|
|
@@ -978,14 +981,14 @@ export function dispatchBoardItems(
|
|
|
978
981
|
}
|
|
979
982
|
|
|
980
983
|
/** The framed council card: the member grid or stack, with the synthesis run full width under it. */
|
|
981
|
-
|
|
984
|
+
function renderCouncilCard(group: CouncilGroupView, width: number): string[] {
|
|
982
985
|
const theme = clioTheme();
|
|
983
986
|
const contentWidth = Math.max(0, width - 4);
|
|
984
987
|
const title = `${theme.fg("info", "council")} ${theme.paint(group.group, { bold: true })}`;
|
|
985
988
|
return frame(theme, title, councilGroupBody(theme, group, contentWidth), width, { rightMeta: group.elapsed });
|
|
986
989
|
}
|
|
987
990
|
|
|
988
|
-
|
|
991
|
+
function formatDispatchBoardLines(
|
|
989
992
|
rows: ReadonlyArray<DispatchBoardRow>,
|
|
990
993
|
width = 76,
|
|
991
994
|
observability?: ObservabilitySnapshot,
|
|
@@ -1003,13 +1006,12 @@ export function formatDispatchBoardLines(
|
|
|
1003
1006
|
}
|
|
1004
1007
|
|
|
1005
1008
|
const endpointActive: Record<string, number> = { ...foregroundStreamUsage() };
|
|
1009
|
+
const endpointQueued: Record<string, number> = {};
|
|
1006
1010
|
for (const row of rows) {
|
|
1007
|
-
if (
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
) {
|
|
1011
|
+
if (row.endpoint === undefined) continue;
|
|
1012
|
+
if (row.status === "enqueued") endpointQueued[row.endpoint.key] = (endpointQueued[row.endpoint.key] ?? 0) + 1;
|
|
1013
|
+
else if (row.status === "running" || row.status === "stale" || row.status === "cancelling")
|
|
1011
1014
|
endpointActive[row.endpoint.key] = (endpointActive[row.endpoint.key] ?? 0) + 1;
|
|
1012
|
-
}
|
|
1013
1015
|
}
|
|
1014
1016
|
|
|
1015
1017
|
// A council is one question asked of several members, so its rows render as
|
|
@@ -1020,7 +1022,12 @@ export function formatDispatchBoardLines(
|
|
|
1020
1022
|
: renderDispatchCard(item.row, width, deriveRunEvidenceState(observability, item.row.runId), {
|
|
1021
1023
|
selected: item.row.runId === selectedRunId,
|
|
1022
1024
|
expanded: detailExpanded && item.row.runId === selectedRunId,
|
|
1023
|
-
...(item.row.endpoint !== undefined
|
|
1025
|
+
...(item.row.endpoint !== undefined
|
|
1026
|
+
? {
|
|
1027
|
+
endpointActive: endpointActive[item.row.endpoint.key] ?? 0,
|
|
1028
|
+
endpointQueued: endpointQueued[item.row.endpoint.key] ?? 0,
|
|
1029
|
+
}
|
|
1030
|
+
: {}),
|
|
1024
1031
|
}),
|
|
1025
1032
|
);
|
|
1026
1033
|
const body: string[] = [];
|
|
@@ -1712,7 +1719,7 @@ export function createDispatchBoardStore(
|
|
|
1712
1719
|
entry.ttftMs = Math.round(performance.now() - entry.startedAtClockMs);
|
|
1713
1720
|
}
|
|
1714
1721
|
}
|
|
1715
|
-
if (type === "
|
|
1722
|
+
if (type === "clio_coder_write_record_downgraded") {
|
|
1716
1723
|
const rawPayload = (workerEvent as { payload?: unknown }).payload;
|
|
1717
1724
|
const payload =
|
|
1718
1725
|
typeof rawPayload === "object" && rawPayload !== null ? (rawPayload as Record<string, unknown>) : null;
|
|
@@ -1730,7 +1737,7 @@ export function createDispatchBoardStore(
|
|
|
1730
1737
|
// board says about what a worker is saying or touching comes from here,
|
|
1731
1738
|
// so the board and the transcript block cannot tell two stories.
|
|
1732
1739
|
entry.progress.observe(payload.event);
|
|
1733
|
-
if (type === "
|
|
1740
|
+
if (type === "clio_coder_steer_received") {
|
|
1734
1741
|
const steerPayload = (workerEvent as { payload?: { chars?: unknown } }).payload;
|
|
1735
1742
|
entry.steerAcknowledgement = {
|
|
1736
1743
|
receivedAtMs: Date.now(),
|
|
@@ -6,7 +6,28 @@ export interface EditorBashCommand {
|
|
|
6
6
|
excludeFromContext: boolean;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Invisible one-shot envelope used only between ClioEditor and its submit
|
|
11
|
+
* callback. Pi trims submitted text before invoking that callback, so a
|
|
12
|
+
* whitespace guard would disappear and re-arm a pasted `!` command. The
|
|
13
|
+
* controller removes this envelope before routing the text as an ordinary
|
|
14
|
+
* prompt; it is never persisted or sent to a model.
|
|
15
|
+
*/
|
|
16
|
+
export const PASTED_EDITOR_OPERATOR_GUARD = "\u2063";
|
|
17
|
+
|
|
18
|
+
export function guardPastedEditorOperator(text: string): string {
|
|
19
|
+
return `${PASTED_EDITOR_OPERATOR_GUARD}${text}`;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function unguardPastedEditorOperator(text: string): string {
|
|
23
|
+
return text.startsWith(PASTED_EDITOR_OPERATOR_GUARD) ? text.slice(PASTED_EDITOR_OPERATOR_GUARD.length) : text;
|
|
24
|
+
}
|
|
25
|
+
|
|
9
26
|
export function parseEditorBashCommand(text: string): EditorBashCommand | null {
|
|
27
|
+
// Commands are an editor-line operator, not a shell-script paste surface.
|
|
28
|
+
// The paste guard also makes a bracketed-pasted one-liner literal until it
|
|
29
|
+
// has crossed the editor submit boundary and been routed as a normal prompt.
|
|
30
|
+
if (text.startsWith(PASTED_EDITOR_OPERATOR_GUARD) || text.includes("\n") || text.includes("\r")) return null;
|
|
10
31
|
if (!text.startsWith("!")) return null;
|
|
11
32
|
const excludeFromContext = text.startsWith("!!");
|
|
12
33
|
const command = (excludeFromContext ? text.slice(2) : text.slice(1)).trim();
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* `!` intercept in the editor submit path.
|
|
5
5
|
*
|
|
6
6
|
* The target token is deliberately a bare word (letters, digits, underscore,
|
|
7
|
-
* hyphen).
|
|
8
|
-
*
|
|
7
|
+
* hyphen). File completion consults the same predicate and quotes an otherwise
|
|
8
|
+
* ambiguous root-level extensionless reference before it reaches this parser.
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
export interface EditorSteerMention {
|
|
@@ -23,11 +23,16 @@ export type SteerTargetResolution =
|
|
|
23
23
|
| { kind: "ambiguous"; candidates: RunningDispatchRef[] }
|
|
24
24
|
| { kind: "none" };
|
|
25
25
|
|
|
26
|
-
const
|
|
26
|
+
const STEER_TARGET_TOKEN = /^[A-Za-z0-9][A-Za-z0-9_-]*$/;
|
|
27
|
+
const STEER_MENTION = /^@(\S+)\s+(\S[\s\S]*)$/;
|
|
28
|
+
|
|
29
|
+
export function isEditorSteerTargetToken(value: string): boolean {
|
|
30
|
+
return STEER_TARGET_TOKEN.test(value);
|
|
31
|
+
}
|
|
27
32
|
|
|
28
33
|
export function parseEditorSteerMention(text: string): EditorSteerMention | null {
|
|
29
34
|
const match = STEER_MENTION.exec(text.trim());
|
|
30
|
-
if (!match?.[1] || !match[2]) return null;
|
|
35
|
+
if (!match?.[1] || !match[2] || !isEditorSteerTargetToken(match[1])) return null;
|
|
31
36
|
return { target: match[1], text: match[2].trim() };
|
|
32
37
|
}
|
|
33
38
|
|
|
@@ -6,7 +6,7 @@ import type { SessionContract, SessionEntry } from "../domains/session/index.js"
|
|
|
6
6
|
import { toolPresentationPolicy } from "../tools/presentation.js";
|
|
7
7
|
import type { ChatLoop } from "./chat-loop.js";
|
|
8
8
|
import type { ChatPanel } from "./chat-panel.js";
|
|
9
|
-
import { bashExecutionEntryInput, parseEditorBashCommand } from "./editor-bash.js";
|
|
9
|
+
import { bashExecutionEntryInput, parseEditorBashCommand, unguardPastedEditorOperator } from "./editor-bash.js";
|
|
10
10
|
import {
|
|
11
11
|
formatSteerCandidates,
|
|
12
12
|
parseEditorSteerMention,
|
|
@@ -57,6 +57,8 @@ export interface EditorSubmitExpansion {
|
|
|
57
57
|
|
|
58
58
|
export interface EditorSubmitEditor {
|
|
59
59
|
getText(): string;
|
|
60
|
+
/** Draft spelling for an immediate send, including any editor provenance envelope. */
|
|
61
|
+
getTextForSubmit(): string;
|
|
60
62
|
setText(text: string): void;
|
|
61
63
|
addToHistory(text: string): void;
|
|
62
64
|
}
|
|
@@ -318,18 +320,19 @@ export function createEditorSubmitController(deps: EditorSubmitDeps): EditorSubm
|
|
|
318
320
|
submitEditorSteerMention(mention) !== "unhandled";
|
|
319
321
|
|
|
320
322
|
const submitEditorText = (text: string): void => {
|
|
321
|
-
const
|
|
323
|
+
const literalText = unguardPastedEditorOperator(text);
|
|
324
|
+
const trimmed = literalText.trim();
|
|
322
325
|
if (trimmed.length === 0) return;
|
|
323
326
|
deps.collapseLaunchpadBeforeSubmit?.();
|
|
324
327
|
if (parseEditorBashCommand(text)) {
|
|
325
328
|
if (!deps.chat.isStreaming() && !activeEditorBash) {
|
|
326
|
-
deps.editor.addToHistory(
|
|
329
|
+
deps.editor.addToHistory(literalText);
|
|
327
330
|
deps.editor.setText("");
|
|
328
331
|
} else {
|
|
329
332
|
// Pi Editor clears the buffer before invoking onSubmit. A command
|
|
330
333
|
// refused by either admission guard is still a draft, so put it back
|
|
331
334
|
// for the operator instead of silently discarding it.
|
|
332
|
-
deps.editor.setText(
|
|
335
|
+
deps.editor.setText(literalText);
|
|
333
336
|
}
|
|
334
337
|
if (runEditorBash(text)) deps.ui.requestRender();
|
|
335
338
|
return;
|
|
@@ -339,12 +342,12 @@ export function createEditorSubmitController(deps: EditorSubmitDeps): EditorSubm
|
|
|
339
342
|
const submission = submitEditorSteerMention(steerMention);
|
|
340
343
|
if (submission !== "unhandled") {
|
|
341
344
|
if (submission === "accepted") {
|
|
342
|
-
deps.editor.addToHistory(
|
|
345
|
+
deps.editor.addToHistory(literalText);
|
|
343
346
|
deps.editor.setText("");
|
|
344
347
|
} else {
|
|
345
348
|
// Resolution and dispatch failures are correctable rejections. Pi
|
|
346
349
|
// has already cleared the editor, so explicitly restore the draft.
|
|
347
|
-
deps.editor.setText(
|
|
350
|
+
deps.editor.setText(literalText);
|
|
348
351
|
}
|
|
349
352
|
deps.ui.requestRender();
|
|
350
353
|
return;
|
|
@@ -352,18 +355,18 @@ export function createEditorSubmitController(deps: EditorSubmitDeps): EditorSubm
|
|
|
352
355
|
}
|
|
353
356
|
const command = parseSlashCommand(trimmed);
|
|
354
357
|
if (isRejectedCommand(command)) {
|
|
355
|
-
deps.editor.setText(
|
|
358
|
+
deps.editor.setText(literalText);
|
|
356
359
|
deps.dispatchCommand(trimmed);
|
|
357
360
|
} else if (command.kind === "unknown-command") {
|
|
358
361
|
const result = deps.dispatchCommand(trimmed);
|
|
359
362
|
if (result === "rejected") {
|
|
360
|
-
deps.editor.setText(
|
|
363
|
+
deps.editor.setText(literalText);
|
|
361
364
|
} else {
|
|
362
|
-
deps.editor.addToHistory(
|
|
365
|
+
deps.editor.addToHistory(literalText);
|
|
363
366
|
deps.editor.setText("");
|
|
364
367
|
}
|
|
365
368
|
} else {
|
|
366
|
-
deps.editor.addToHistory(
|
|
369
|
+
deps.editor.addToHistory(literalText);
|
|
367
370
|
deps.editor.setText("");
|
|
368
371
|
deps.dispatchCommand(trimmed);
|
|
369
372
|
}
|
|
@@ -388,7 +391,8 @@ export function createEditorSubmitController(deps: EditorSubmitDeps): EditorSubm
|
|
|
388
391
|
};
|
|
389
392
|
|
|
390
393
|
const admitCapturedText = async (text: string, signal?: AbortSignal): Promise<void> => {
|
|
391
|
-
const
|
|
394
|
+
const literalText = unguardPastedEditorOperator(text);
|
|
395
|
+
const trimmed = literalText.trim();
|
|
392
396
|
if (trimmed.length === 0) return;
|
|
393
397
|
signal?.throwIfAborted();
|
|
394
398
|
deps.collapseLaunchpadBeforeSubmit?.();
|
|
@@ -396,7 +400,7 @@ export function createEditorSubmitController(deps: EditorSubmitDeps): EditorSubm
|
|
|
396
400
|
while (deps.chat.isStreaming()) await awaitWithAbort(deps.chat.whenSettled(), signal);
|
|
397
401
|
while (activeEditorBashSettlement) await awaitWithAbort(activeEditorBashSettlement, signal);
|
|
398
402
|
signal?.throwIfAborted();
|
|
399
|
-
deps.editor.addToHistory(
|
|
403
|
+
deps.editor.addToHistory(literalText);
|
|
400
404
|
runEditorBash(text);
|
|
401
405
|
deps.ui.requestRender();
|
|
402
406
|
return;
|
|
@@ -408,7 +412,7 @@ export function createEditorSubmitController(deps: EditorSubmitDeps): EditorSubm
|
|
|
408
412
|
if (submission === "rejected") {
|
|
409
413
|
throw new Error("queued boot steer was not admitted; preserving it for recovery");
|
|
410
414
|
}
|
|
411
|
-
deps.editor.addToHistory(
|
|
415
|
+
deps.editor.addToHistory(literalText);
|
|
412
416
|
deps.ui.requestRender();
|
|
413
417
|
return;
|
|
414
418
|
}
|
|
@@ -421,7 +425,7 @@ export function createEditorSubmitController(deps: EditorSubmitDeps): EditorSubm
|
|
|
421
425
|
deps.ui.requestRender();
|
|
422
426
|
throw new Error("queued boot command needs correction; preserving it for recovery");
|
|
423
427
|
}
|
|
424
|
-
deps.editor.addToHistory(
|
|
428
|
+
deps.editor.addToHistory(literalText);
|
|
425
429
|
signal?.throwIfAborted();
|
|
426
430
|
if (deps.dispatchCommandAsync) await deps.dispatchCommandAsync(trimmed, signal);
|
|
427
431
|
else deps.dispatchCommand(trimmed);
|
|
@@ -429,9 +433,10 @@ export function createEditorSubmitController(deps: EditorSubmitDeps): EditorSubm
|
|
|
429
433
|
};
|
|
430
434
|
|
|
431
435
|
const queueFollowUpFromEditor = (): void => {
|
|
432
|
-
const
|
|
436
|
+
const streaming = deps.chat.isStreaming();
|
|
437
|
+
const text = (streaming ? deps.editor.getText() : deps.editor.getTextForSubmit()).trim();
|
|
433
438
|
if (text.length === 0) return;
|
|
434
|
-
if (!
|
|
439
|
+
if (!streaming) {
|
|
435
440
|
deps.editor.setText("");
|
|
436
441
|
submitEditorText(text);
|
|
437
442
|
deps.ui.requestRender();
|
|
@@ -458,9 +463,10 @@ export function createEditorSubmitController(deps: EditorSubmitDeps): EditorSubm
|
|
|
458
463
|
};
|
|
459
464
|
|
|
460
465
|
const interruptFromEditor = (): void => {
|
|
461
|
-
const
|
|
466
|
+
const streaming = deps.chat.isStreaming();
|
|
467
|
+
const text = (streaming ? deps.editor.getText() : deps.editor.getTextForSubmit()).trim();
|
|
462
468
|
if (text.length === 0) return;
|
|
463
|
-
if (!
|
|
469
|
+
if (!streaming) {
|
|
464
470
|
deps.editor.setText("");
|
|
465
471
|
submitEditorText(text);
|
|
466
472
|
deps.ui.requestRender();
|
|
@@ -50,7 +50,7 @@ export function resolveExternalEditor(
|
|
|
50
50
|
|
|
51
51
|
export function editTextExternally(initialText: string, command: string | null): ExternalEditResult {
|
|
52
52
|
if (!command) return { ok: false, error: "no external editor configured; set VISUAL or EDITOR" };
|
|
53
|
-
const tmpFile = join(tmpdir(), `clio-editor-${process.pid}-${randomUUID()}.md`);
|
|
53
|
+
const tmpFile = join(tmpdir(), `clio-coder-editor-${process.pid}-${randomUUID()}.md`);
|
|
54
54
|
try {
|
|
55
55
|
writeFileSync(tmpFile, initialText, "utf8");
|
|
56
56
|
const result = runEditor(command, tmpFile);
|