@iowarp/clio-coder 0.4.8 → 0.4.9
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 +82 -0
- package/README.md +7 -6
- package/dist/{acp-JWPQZM2D.js → acp-ZWZCPS2A.js} +13 -13
- package/dist/{agents-4GCDIRVX.js → agents-LYSOWZUE.js} +53 -52
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-SYAKTDQE.js → auth-WBQGKWQ5.js} +27 -27
- package/dist/{background-OW67WMYR.js → background-BUMOBAQN.js} +4 -4
- package/dist/{builtins-TKS63VNV.js → builtins-ODRJOEDI.js} +7 -7
- package/dist/{chunk-JLBVCROW.js → chunk-2DRRZ57Q.js} +33 -24
- package/dist/chunk-2JBZYUPY.js +105 -0
- package/dist/chunk-2KUBKL63.js +336 -0
- package/dist/{chunk-K45LHSCI.js → chunk-2VBWFXYE.js} +7 -3
- package/dist/{chunk-XTLJDC2X.js → chunk-2X2R3UTH.js} +23 -18
- package/dist/{chunk-5HULHKT2.js → chunk-37LW32LZ.js} +5 -5
- package/dist/{chunk-W7KNI3F5.js → chunk-3AND2EFU.js} +5 -5
- package/dist/{chunk-36XSBPXL.js → chunk-3RDHGNU7.js} +95 -27
- package/dist/{chunk-BIY22UUK.js → chunk-3SUDBGEI.js} +11 -10
- package/dist/{chunk-3IQOZRQ6.js → chunk-3TQN67I2.js} +7 -7
- package/dist/{chunk-KWJXCL2X.js → chunk-3U4BL2EV.js} +3 -3
- package/dist/{chunk-RBES4TCZ.js → chunk-3UQADNG2.js} +3 -3
- package/dist/{chunk-V4ZKOKRB.js → chunk-434LRQ6Z.js} +61 -53
- package/dist/{chunk-MWMW53WW.js → chunk-4ATBOFRP.js} +649 -193
- package/dist/{chunk-QGIC5SX5.js → chunk-4DNL43EZ.js} +3 -3
- package/dist/{chunk-GVU4CXPJ.js → chunk-4HFJKRGZ.js} +113 -54
- package/dist/{chunk-5A6XR3RJ.js → chunk-555E2WVV.js} +16 -2
- package/dist/{chunk-LZDLYSUN.js → chunk-5RTEFNBP.js} +3 -3
- package/dist/{chunk-HMGAKB7E.js → chunk-64XJW7NT.js} +15 -15
- package/dist/{chunk-EXKUF426.js → chunk-7FBCRWVT.js} +280 -280
- package/dist/{chunk-K3W6BF5C.js → chunk-7JSOSVLP.js} +2 -2
- package/dist/{chunk-WFTSK7N3.js → chunk-7N3OLLSL.js} +4 -4
- package/dist/{chunk-JRA6OBHY.js → chunk-A6DULIMH.js} +17 -5
- package/dist/{chunk-R5NRX5N4.js → chunk-AB3QXXBC.js} +2 -2
- package/dist/chunk-ACCECAH4.js +49 -0
- package/dist/{chunk-GJBJHJNY.js → chunk-AM6CEP2K.js} +5 -5
- package/dist/{chunk-MUXNDNMZ.js → chunk-AY4XE6GN.js} +19 -13
- package/dist/{chunk-MATCRH3M.js → chunk-BBA2TAWV.js} +9 -9
- package/dist/{chunk-PMUUAABD.js → chunk-BMNVVKEW.js} +9 -9
- package/dist/{chunk-TOPICHGR.js → chunk-CTGZCEI6.js} +2 -2
- package/dist/{chunk-L75H5B3B.js → chunk-DIAJYJYG.js} +2 -2
- package/dist/{chunk-JIMWEYWO.js → chunk-EHZRAB4U.js} +2 -2
- package/dist/{chunk-YXANQGCX.js → chunk-EM2DIQAJ.js} +6 -6
- package/dist/{chunk-JCVIL6TY.js → chunk-ETF4ROKH.js} +4 -4
- package/dist/{chunk-5W4FRA5Q.js → chunk-F2YM3JY4.js} +483 -253
- package/dist/{chunk-YGIV24MF.js → chunk-FEBQWHJT.js} +21 -16
- package/dist/{chunk-PGEFOTJB.js → chunk-FPS4R2RN.js} +5 -4
- package/dist/{chunk-XC5POIL4.js → chunk-G5R53COU.js} +1 -1
- package/dist/chunk-GHXGMFQ5.js +40 -0
- package/dist/{chunk-QLKCCC2J.js → chunk-GJDRMBDI.js} +14 -14
- package/dist/{chunk-2ZWLMA3T.js → chunk-GREYLTZ5.js} +7 -7
- package/dist/{chunk-YXFKLMX2.js → chunk-H2WSCZZT.js} +22 -6
- package/dist/{chunk-FNVPQQYT.js → chunk-H6IUCY6Q.js} +2 -2
- package/dist/{chunk-5C2OQHLR.js → chunk-H72DCH3E.js} +92 -203
- package/dist/{chunk-JYKUMHCQ.js → chunk-H7TXJR23.js} +21 -21
- package/dist/chunk-HBJQQTKM.js +40 -0
- package/dist/chunk-HCVKSGNZ.js +990 -0
- package/dist/{chunk-ARRUMZ7X.js → chunk-I47EJPYL.js} +3 -3
- package/dist/{chunk-YKIIWURD.js → chunk-IALGWTLO.js} +3 -3
- package/dist/{chunk-FB3KTE2J.js → chunk-IALZJE37.js} +4 -4
- package/dist/{chunk-RAUOKUZV.js → chunk-IC7JXLOM.js} +15 -10
- package/dist/{chunk-LLCGGVSW.js → chunk-IOSVTTCD.js} +7 -7
- package/dist/{chunk-DBREN25X.js → chunk-IPTPMLA6.js} +8 -3
- package/dist/{chunk-V552WL53.js → chunk-IZZI3SKQ.js} +3 -67
- package/dist/{chunk-UDAK6GR2.js → chunk-JIYWMQZ5.js} +2 -2
- package/dist/{chunk-O3HSB2YL.js → chunk-JKU34ACI.js} +2 -2
- package/dist/{chunk-6X7VOCDY.js → chunk-JTR3VSV3.js} +3 -3
- package/dist/{chunk-O2QJDRWP.js → chunk-JU6MAMRJ.js} +4 -4
- package/dist/chunk-JURMQWVJ.js +15 -0
- package/dist/{chunk-STC6CWUZ.js → chunk-K3XN4LZ4.js} +5 -5
- package/dist/{chunk-ATB3Q7YO.js → chunk-KIVFXGBM.js} +27 -2
- package/dist/{chunk-WJWNZXRM.js → chunk-KOAHT3N2.js} +2 -2
- package/dist/chunk-KP5BPXR3.js +73 -0
- package/dist/{chunk-K53E2PTW.js → chunk-KRJQG47M.js} +3 -3
- package/dist/{chunk-IILXVWJY.js → chunk-KW6OJ7IY.js} +19 -21
- package/dist/{chunk-A46ILRS2.js → chunk-L3NBWLSN.js} +4 -4
- package/dist/{chunk-2U2U5POA.js → chunk-L4RUTLRL.js} +5 -5
- package/dist/{chunk-QYSAZMSH.js → chunk-LGTVWPRN.js} +2 -2
- package/dist/{chunk-KGP3UQGJ.js → chunk-LSQW6KZO.js} +5 -5
- package/dist/{chunk-P4JS3MH5.js → chunk-LWJYOHT3.js} +8 -8
- package/dist/{chunk-U3TPUXOQ.js → chunk-M6YLF66Z.js} +74 -40
- package/dist/{chunk-5D2FNBMG.js → chunk-MJ4QEJVT.js} +2 -2
- package/dist/{chunk-RM3XJX7P.js → chunk-MO65K5CH.js} +5 -5
- package/dist/{chunk-H5DPSUBB.js → chunk-MTOZEQHL.js} +3 -3
- package/dist/{chunk-6R5MBXBJ.js → chunk-NBPA5QM6.js} +2 -2
- package/dist/{chunk-H77XBUBM.js → chunk-NMBEW4PP.js} +3 -3
- package/dist/{chunk-QWUSS2QP.js → chunk-NPLLK3HO.js} +67 -87
- package/dist/{chunk-K5UJD6MM.js → chunk-NSYGPIVW.js} +5 -5
- package/dist/{context-EZZPT2ZV.js → chunk-NXTV5OI5.js} +30 -84
- package/dist/{chunk-F7Y6QTPL.js → chunk-NYDG4QP4.js} +4 -4
- package/dist/{chunk-PFZJMXIY.js → chunk-OA2GDACN.js} +2 -2
- package/dist/{chunk-Q32C6AWI.js → chunk-PJI57EC6.js} +4 -4
- package/dist/{chunk-EFXMQYI6.js → chunk-PJJBUGMR.js} +52 -52
- package/dist/{chunk-ICYIUNO4.js → chunk-PNJE7JPS.js} +18 -3
- package/dist/chunk-PP23PZEV.js +1347 -0
- package/dist/chunk-PPIFDSBK.js +409 -0
- package/dist/{chunk-RFULVPBX.js → chunk-PTFISXQO.js} +6 -5
- package/dist/{chunk-JV25I7ID.js → chunk-QB33Z5S7.js} +5 -5
- package/dist/{chunk-D55WO5J7.js → chunk-QGNII5VC.js} +8 -8
- package/dist/{chunk-RKFNU5UA.js → chunk-QI72X67S.js} +104 -27
- package/dist/chunk-QKHZZFKH.js +98 -0
- package/dist/{chunk-5UG6EZI3.js → chunk-RDKX2PME.js} +4 -4
- package/dist/{chunk-B5ZTR6KZ.js → chunk-RL7LJYN4.js} +1 -1
- package/dist/{chunk-BE4I3UJ2.js → chunk-RQROVOV3.js} +15 -13
- package/dist/{chunk-TEHVMHOK.js → chunk-S34A7BSP.js} +3 -3
- package/dist/{chunk-4P6M2TTE.js → chunk-SJETVJHX.js} +2 -2
- package/dist/{chunk-OPC4DQD6.js → chunk-SJMNU4ZS.js} +2 -2
- package/dist/{chunk-2JSCCEKO.js → chunk-SLLG2G44.js} +2 -2
- package/dist/{chunk-EPYATQMG.js → chunk-SQAZN2V3.js} +42 -16
- package/dist/{chunk-E2NSPYLC.js → chunk-SQBT46OF.js} +5 -5
- package/dist/{chunk-WTZVSMQZ.js → chunk-TCUOGIL2.js} +5 -5
- package/dist/{chunk-RRZFRIJP.js → chunk-TIWPKCVO.js} +5 -5
- package/dist/{chunk-QLAGXTTV.js → chunk-UIU7MGZ3.js} +5 -1
- package/dist/{chunk-WLHX3MM5.js → chunk-V4XJWDHR.js} +21 -11
- package/dist/{chunk-PJ5H5B7A.js → chunk-VPWGADBG.js} +18 -18
- package/dist/{chunk-GEYX2NZ5.js → chunk-VWFCAK34.js} +6 -6
- package/dist/{chunk-44U2OUSM.js → chunk-W72LLZAV.js} +2 -2
- package/dist/{chunk-ORRNGQDV.js → chunk-WGRDABW7.js} +4 -4
- package/dist/{chunk-RNLAPBJL.js → chunk-XFLSL7BT.js} +2 -2
- package/dist/{chunk-2SXGG2IV.js → chunk-XJZEDCNT.js} +6 -6
- package/dist/{chunk-UB33F3YW.js → chunk-XLLEL3K7.js} +5 -5
- package/dist/{chunk-2GPGAE5W.js → chunk-XNIZBOFV.js} +15 -1
- package/dist/{chunk-WS4FOGLY.js → chunk-XNZWWDC3.js} +2 -2
- package/dist/{chunk-P7GTE4FX.js → chunk-XRECG65F.js} +2 -2
- package/dist/chunk-XTQ7MEJG.js +457 -0
- package/dist/{chunk-GEVQNST4.js → chunk-XZWSP67B.js} +2 -2
- package/dist/{chunk-OEMFEL26.js → chunk-Y3M2T5RO.js} +3 -3
- package/dist/{chunk-HP7KJ5O2.js → chunk-YPQOPFP7.js} +6 -6
- package/dist/{chunk-MEHBW2SP.js → chunk-YQYINEJI.js} +6 -6
- package/dist/{chunk-RXI7K4J5.js → chunk-ZF6CV4WZ.js} +1338 -217
- package/dist/{chunk-3XE4NRLF.js → chunk-ZKJU55MX.js} +4 -2
- package/dist/{chunk-526ABLHD.js → chunk-ZKQ63XZ5.js} +12 -35
- package/dist/{chunk-PAQVETLA.js → chunk-ZKVMDNAN.js} +5 -5
- package/dist/cli/index.js +47 -37
- package/dist/{clio-BPBAPZGA.js → clio-JUDCLNHC.js} +7 -7
- package/dist/clio-context-tools-FT672MNZ.js +136 -0
- package/dist/{code-nav-KBQ3RIFK.js → code-nav-7OVCTP2Z.js} +28 -26
- package/dist/{components-6DKAXWFN.js → components-OZXZMDWU.js} +5 -5
- package/dist/{config-FWL5JK2H.js → config-P3ZQVF63.js} +80 -75
- package/dist/{config-graph-ACDB26L2.js → config-graph-GKAOBAS5.js} +74 -70
- package/dist/{configure-ZIZ4YV62.js → configure-25LRYZJG.js} +45 -44
- package/dist/context-72VQV7JX.js +73 -0
- package/dist/{context-VIL5MFRH.js → context-COWRWXP3.js} +74 -70
- package/dist/{context-Z3GOBHDK.js → context-WB3D474G.js} +12 -12
- package/dist/{context-clear-ZPB3L7MN.js → context-clear-Y4LYMWC6.js} +70 -66
- package/dist/{context-working-set-2GLBVF7L.js → context-working-set-TMZYVC7A.js} +15 -14
- package/dist/data-tool-KMBWKKWR.js +2987 -0
- package/dist/{detail-VSBWYSGZ.js → detail-4GLROGY5.js} +71 -67
- package/dist/{dispatch-runner-EEEHGKX4.js → dispatch-runner-TR3LBP5P.js} +92 -88
- package/dist/{docs-VMMWFVHL.js → docs-ZK777W2G.js} +3 -3
- package/dist/{doctor-V5L4IQGP.js → doctor-WC4OV2OB.js} +61 -59
- package/dist/{eval-VJYJ2BV3.js → eval-FUNWJNUJ.js} +45 -45
- package/dist/{evals-J2H5V6DD.js → evals-L73EBHSU.js} +4 -4
- package/dist/{evidence-Y35YSXH6.js → evidence-AVJ2RTHX.js} +80 -76
- package/dist/{evidence-POWAEBEW.js → evidence-P4NZOAK7.js} +70 -66
- package/dist/{evidence-XCCCLS36.js → evidence-Y55WKYHH.js} +79 -75
- package/dist/{evolve-GPG72VB6.js → evolve-MAWKRYWF.js} +75 -71
- package/dist/{extensions-YIZ7W3DA.js → extensions-PYQH3H47.js} +8 -8
- package/dist/{fleet-2MDCQ2VK.js → fleet-M4H2QBWT.js} +84 -80
- package/dist/{fleet-W2AF3TOJ.js → fleet-ULBXXRDR.js} +123 -119
- package/dist/{fleet-commands-WS56G26H.js → fleet-commands-7NNC4JZU.js} +17 -16
- package/dist/{fleet-decisions-MYGZ3JW7.js → fleet-decisions-EHEY7KPU.js} +9 -9
- package/dist/{fleet-graph-ELTBXBAV.js → fleet-graph-LQ2AHZT3.js} +15 -15
- package/dist/{fleet-inspect-45IK73L4.js → fleet-inspect-5IGBIIYZ.js} +76 -72
- package/dist/{fleet-preflight-T5NCZKHE.js → fleet-preflight-UTTNOKMG.js} +7 -2
- package/dist/{fleet-validate-VG4JBLA4.js → fleet-validate-YGILJKA6.js} +20 -20
- package/dist/{fleet-verify-VTSABAYO.js → fleet-verify-AUWTCDKR.js} +70 -66
- package/dist/{fleet-view-XC7WMKSS.js → fleet-view-TGUFCY5A.js} +73 -69
- package/dist/{init-VTJNNTIP.js → init-GFN2Z7NF.js} +94 -90
- package/dist/{interop-IU6BNA7C.js → interop-EF5JUWWK.js} +21 -21
- package/dist/{inventory-QPQUTUUZ.js → inventory-I6VJDDYF.js} +73 -69
- package/dist/{library-Q3NWL5CM.js → library-3J5IO2OJ.js} +13 -13
- package/dist/{library-LF7DLU6S.js → library-IJTOFTDS.js} +16 -15
- package/dist/{library-HUTAS57T.js → library-Z3KZSHPE.js} +27 -27
- package/dist/{library-import-PPW4YUC5.js → library-import-IMKFLDHX.js} +21 -21
- package/dist/{library-inventory-DIRVFRZU.js → library-inventory-CQP5D6GU.js} +13 -13
- package/dist/{library-validation-XHUZ3INE.js → library-validation-33UTX7AI.js} +11 -11
- package/dist/mcp-5FWZKUS6.js +26 -0
- package/dist/{memory-Z2LSKNV6.js → memory-36CWN67Y.js} +75 -71
- package/dist/{models-3FTREYPY.js → models-KQ6PQJJQ.js} +49 -49
- package/dist/{monitor-HF2MQRB3.js → monitor-XX6ZD6KC.js} +83 -79
- package/dist/{orchestrator-UYPA6W4S.js → orchestrator-SK6HDAOP.js} +1337 -772
- package/dist/{panes-736XB73K.js → panes-L27QRXUH.js} +12 -12
- package/dist/{panes-C4P3PIWT.js → panes-LXZIWNOZ.js} +4 -4
- package/dist/{paths-JQ4QYIYB.js → paths-7DJDU4P4.js} +5 -5
- package/dist/{preload-XSLRYH3Y.js → preload-K2TDYI4Y.js} +70 -66
- package/dist/{reset-V7QSPZYE.js → reset-73VU3XNT.js} +10 -10
- package/dist/{resources-OJGDFHYT.js → resources-3BYJYVYL.js} +16 -16
- package/dist/{run-T354SMDW.js → run-AR7PY6GW.js} +132 -128
- package/dist/run-script-H2KUDIII.js +41 -0
- package/dist/{settings-MWZXO6RV.js → settings-3VMBMWID.js} +4 -4
- package/dist/{share-Y5ZKJPND.js → share-HVWH4FPF.js} +21 -21
- package/dist/{skills-4GLZC4LN.js → skills-5TYEY75Q.js} +22 -22
- package/dist/{skills-eval-L5T7GODM.js → skills-eval-CK3MD63Z.js} +96 -87
- package/dist/{skills-inventory-LASKXEZI.js → skills-inventory-KSFYG3I6.js} +16 -16
- package/dist/{slash-commands-OIMRU36D.js → slash-commands-DMVHML7P.js} +47 -44
- package/dist/{steer-KMAM2Y2C.js → steer-XCD6V3EW.js} +4 -4
- package/dist/{support-AWC3XKPX.js → support-JAZL6VBR.js} +7 -7
- package/dist/{system-CD75NYBU.js → system-3TDQRMZZ.js} +26 -26
- package/dist/{targets-VSZX2J2S.js → targets-EZKHAYRN.js} +66 -65
- package/dist/{tasks-AN567LYH.js → tasks-SNEFHWYW.js} +12 -12
- package/dist/{terminal-lease-6KTWNHVY.js → terminal-lease-BNLFA4OF.js} +8 -7
- package/dist/{tools-AGRK3V5J.js → tools-7IM6BDCE.js} +12 -12
- package/dist/{trace-P4MQZD33.js → trace-C3MBGD4S.js} +8 -8
- package/dist/{tui-primitives-A6MUW32V.js → tui-primitives-36BY2774.js} +2 -2
- package/dist/{uninstall-BRUTEPIC.js → uninstall-WWLOSZ42.js} +10 -10
- package/dist/{upgrade-SBCGHQGJ.js → upgrade-ETK2JNSJ.js} +37 -47
- package/dist/{usage-BIDVTO6V.js → usage-S2HOB7BZ.js} +93 -89
- package/dist/{verifiers-LTGCAMXS.js → verifiers-QDTEVH7R.js} +24 -22
- package/dist/{verify-OZU4LLNP.js → verify-SUKUK6XM.js} +15 -14
- package/dist/web/client/assets/{abnfDiagram-VCTEODGH-C5wfoHm3.js → abnfDiagram-VCTEODGH-BznNOe_I.js} +1 -1
- package/dist/web/client/assets/{arc-oH91sfLl.js → arc-Pry-7G1_.js} +1 -1
- package/dist/web/client/assets/architecture-7GRP2DOG-BQO9DL_y.js +1 -0
- package/dist/web/client/assets/architectureDiagram-5GKGNRK7-CKPbdvyx.js +36 -0
- package/dist/web/client/assets/{blockDiagram-I7D4REHJ-wi0_CYHL.js → blockDiagram-I7D4REHJ-prINbpbM.js} +1 -1
- package/dist/web/client/assets/{c4Diagram-7LVT6UL2-DV7NYc2W.js → c4Diagram-7LVT6UL2-DkVRKtyU.js} +1 -1
- package/dist/web/client/assets/channel-c4EeUUqA.js +1 -0
- package/dist/web/client/assets/{chunk-4HAMMTFA-Bhsegh3F.js → chunk-4HAMMTFA-CV0Z1ApC.js} +1 -1
- package/dist/web/client/assets/{chunk-75Z2AOVW-RQCckcQG.js → chunk-75Z2AOVW-D34Nohxq.js} +1 -1
- package/dist/web/client/assets/chunk-DU6HZSFF-Das_cS-O.js +125 -0
- package/dist/web/client/assets/{chunk-F27PBJKO-BcNqv2x1.js → chunk-F27PBJKO-CmRojxkG.js} +1 -1
- package/dist/web/client/assets/{chunk-GMAD6QVW-Bq8JWiZT.js → chunk-GMAD6QVW-ClYZmc73.js} +1 -1
- package/dist/web/client/assets/{chunk-GVQU2GXP-DbchrAeJ.js → chunk-GVQU2GXP-B2BiHFt-.js} +1 -1
- package/dist/web/client/assets/{chunk-IMKFNOWR-DrpvjocK.js → chunk-IMKFNOWR-BGApZ8nP.js} +1 -1
- package/dist/web/client/assets/{chunk-L3NEJ4N5-DHLmTnCe.js → chunk-L3NEJ4N5-DIzCgpkY.js} +1 -1
- package/dist/web/client/assets/{chunk-OSK3NFVY-CsRbtN9n.js → chunk-OSK3NFVY-BPT-yePv.js} +1 -1
- package/dist/web/client/assets/{chunk-P2QGCYS3-aqPbxoMh.js → chunk-P2QGCYS3-BC1WTc2t.js} +1 -1
- package/dist/web/client/assets/{chunk-POPQ4Y6H-Dl5vw0h0.js → chunk-POPQ4Y6H-BSjzBmZU.js} +1 -1
- package/dist/web/client/assets/{chunk-PWAF6VOD-D7OBRSdO.js → chunk-PWAF6VOD-BIjLs86Z.js} +1 -1
- package/dist/web/client/assets/{chunk-SHT3W25Y-CdKCIwuB.js → chunk-SHT3W25Y-CduDz2cm.js} +1 -1
- package/dist/web/client/assets/{chunk-SVP7TREG-B94Nu_1-.js → chunk-SVP7TREG-XUn4pPAP.js} +1 -1
- package/dist/web/client/assets/{chunk-TICWLB2K-jjRQI_hk.js → chunk-TICWLB2K-DcBy2DKy.js} +1 -1
- package/dist/web/client/assets/{chunk-XXDRQBXY-azkbKE37.js → chunk-XXDRQBXY-DqAYeljN.js} +1 -1
- package/dist/web/client/assets/classDiagram-ZZMXUADV-C0HR7YKN.js +1 -0
- package/dist/web/client/assets/classDiagram-v2-VYDZK3BY-C0HR7YKN.js +1 -0
- package/dist/web/client/assets/cose-bilkent-JH36ORCC-CVh1icwb.js +1 -0
- package/dist/web/client/assets/{cynefin-OW5HDTMX--i9RDU5f.js → cynefin-OW5HDTMX-BecPbyM6.js} +1 -1
- package/dist/web/client/assets/{cynefinDiagram-5FMLGOSQ-cRcvyBdp.js → cynefinDiagram-5FMLGOSQ-BzMzFwyT.js} +1 -1
- package/dist/web/client/assets/{dagre-GXQ25YYZ-C9mZmAPe.js → dagre-GXQ25YYZ-CAWJmRMG.js} +1 -1
- package/dist/web/client/assets/{diagram-S7CK7UJ4-Oj_zlLDY.js → diagram-S7CK7UJ4--lp0ALmn.js} +1 -1
- package/dist/web/client/assets/{diagram-UQ7AKVKN-BWKbbfcR.js → diagram-UQ7AKVKN-gKUnsjcj.js} +1 -1
- package/dist/web/client/assets/{diagram-VSXAHHWV-C3N3f7DO.js → diagram-VSXAHHWV-BoN5D1Gh.js} +1 -1
- package/dist/web/client/assets/{diagram-VX7I27RA-CtDKDAWe.js → diagram-VX7I27RA-BMtuswQ6.js} +1 -1
- package/dist/web/client/assets/{diagram-Z3DM3KII-B8bkBRCz.js → diagram-Z3DM3KII-DtU8LXrA.js} +1 -1
- package/dist/web/client/assets/dist-v5Q1xZ2K.js +1 -0
- package/dist/web/client/assets/{ebnfDiagram-PWID7BFC-CskW-Whx.js → ebnfDiagram-PWID7BFC-DDcnv9BH.js} +1 -1
- package/dist/web/client/assets/{erDiagram-RLTQ6QDP-C-83cgCW.js → erDiagram-RLTQ6QDP-DvRb4iDL.js} +1 -1
- package/dist/web/client/assets/eventmodeling-NTZA5JFV-01h4SbTc.js +1 -0
- package/dist/web/client/assets/flowDiagram-HODETNUW-Bll_YZ6T.js +1 -0
- package/dist/web/client/assets/framework-YGoR34M4.js +9 -0
- package/dist/web/client/assets/ganttDiagram-EL5Y4UJY-DdFZ9hvH.js +292 -0
- package/dist/web/client/assets/{gitGraph-4MIJSDKK-B40cQtBE.js → gitGraph-4MIJSDKK-DjD_AAMj.js} +1 -1
- package/dist/web/client/assets/{gitGraphDiagram-WWUBYQGX-CH-7P7Di.js → gitGraphDiagram-WWUBYQGX-CDyN9n2u.js} +1 -1
- package/dist/web/client/assets/index-CVcy0FAn.js +75 -0
- package/dist/web/client/assets/{info-A6RAGUB7-eCCE9D_Q.js → info-A6RAGUB7-C_XK8Hq0.js} +1 -1
- package/dist/web/client/assets/{infoDiagram-27XIBGKW-DRnvqMjM.js → infoDiagram-27XIBGKW-DIe4tJ1i.js} +1 -1
- package/dist/web/client/assets/{ishikawaDiagram-5VMMS53U-DBA_55wp.js → ishikawaDiagram-5VMMS53U-CVl5unKI.js} +1 -1
- package/dist/web/client/assets/{journeyDiagram-3NMN7TZE-C-ewpNl7.js → journeyDiagram-3NMN7TZE-CPEB1Vt8.js} +1 -1
- package/dist/web/client/assets/{kanban-definition-UXKFOSKX-B1taGsu0.js → kanban-definition-UXKFOSKX-j-9WXjYQ.js} +1 -1
- package/dist/web/client/assets/{line-lZ0kyxDI.js → line-BIDAcEtX.js} +1 -1
- package/dist/web/client/assets/{linear-DIc8FgZj.js → linear-SzVmGSw4.js} +1 -1
- package/dist/web/client/assets/{mermaid-parser.core-SXolxpXw.js → mermaid-parser.core-Ux4vssh0.js} +3 -3
- package/dist/web/client/assets/{mermaid.core-DXgQtkNg.js → mermaid.core-CDuwVKeh.js} +4 -4
- package/dist/web/client/assets/{mindmap-definition-YA3MSWOX-DXJas9K7.js → mindmap-definition-YA3MSWOX-5MlQEeQ6.js} +1 -1
- package/dist/web/client/assets/{packet-AYTQ26CC-OqVl_07o.js → packet-AYTQ26CC-DRO66c9Q.js} +1 -1
- package/dist/web/client/assets/{pegDiagram-XKGWAZYB-CPE_zdfN.js → pegDiagram-XKGWAZYB-BakZnSjM.js} +1 -1
- package/dist/web/client/assets/{pie-WAS4IAKB-DAxnMBLe.js → pie-WAS4IAKB-BEzcmhz8.js} +1 -1
- package/dist/web/client/assets/{pieDiagram-E7YTZNPT-Uwjpufxv.js → pieDiagram-E7YTZNPT-DpmqgoPt.js} +1 -1
- package/dist/web/client/assets/prism-core-BtsZdCS6.js +1 -0
- package/dist/web/client/assets/{quadrantDiagram-AXDQQJYC-Bjs4yjgs.js → quadrantDiagram-AXDQQJYC-DuMPwwV2.js} +1 -1
- package/dist/web/client/assets/{radar-RG4KPBEZ-CuCKjHM3.js → radar-RG4KPBEZ-Djm3oXl5.js} +1 -1
- package/dist/web/client/assets/{railroad-74A4TZTK-CnQK-Cc1.js → railroad-74A4TZTK-Cpvkwsao.js} +1 -1
- package/dist/web/client/assets/railroad-abnf-HS5TGJTU-CpRQ3ruG.js +1 -0
- package/dist/web/client/assets/railroad-ebnf-LZEXJU2U-1Rm5a5eJ.js +1 -0
- package/dist/web/client/assets/railroad-peg-WCYAUIDC-C8344cTh.js +1 -0
- package/dist/web/client/assets/{railroadDiagram-O6MQD6OU-BDDIPNLL.js → railroadDiagram-O6MQD6OU-CgMS4B6R.js} +1 -1
- package/dist/web/client/assets/{requirementDiagram-BXWQKSXE-B5Ydyxc1.js → requirementDiagram-BXWQKSXE-CX5eoNdN.js} +1 -1
- package/dist/web/client/assets/rolldown-runtime-hePW80VL.js +1 -0
- package/dist/web/client/assets/{sankeyDiagram-P5KCCOFB-Bw2Qym75.js → sankeyDiagram-P5KCCOFB-CODBX2N3.js} +1 -1
- package/dist/web/client/assets/{sequenceDiagram-WJ2MYXX4-BZf36nO0.js → sequenceDiagram-WJ2MYXX4-eUhhF8OR.js} +1 -1
- package/dist/web/client/assets/src-B6xuSHsQ.js +1 -0
- package/dist/web/client/assets/{stateDiagram-D77RDMKH-DnH6JRkp.js → stateDiagram-D77RDMKH-vR6l0NC2.js} +1 -1
- package/dist/web/client/assets/stateDiagram-v2-MP3YSRHH-BYUm8jLY.js +1 -0
- package/dist/web/client/assets/{swimlanes-42K2YHIH-D9PZmtZg.js → swimlanes-42K2YHIH-v9Tw_zX7.js} +1 -1
- package/dist/web/client/assets/swimlanesDiagram-VR7AAH4N-B2jdCvhD.js +8 -0
- package/dist/web/client/assets/{timeline-definition-24CTP7MA-CrkZZBo7.js → timeline-definition-24CTP7MA-DxianbhU.js} +1 -1
- package/dist/web/client/assets/{treeView-Q6P3EWNA-C9zDShoC.js → treeView-Q6P3EWNA-DLxnZb9R.js} +1 -1
- package/dist/web/client/assets/{treemap-WGGIJYW6-B-plj9yK.js → treemap-WGGIJYW6-I7UnZ6xJ.js} +1 -1
- package/dist/web/client/assets/{vennDiagram-4TSXK5OY-VeOdaphN.js → vennDiagram-4TSXK5OY-Ar7M8Mrj.js} +1 -1
- package/dist/web/client/assets/{wardley-WFR3VGLG-Wl1P_m6L.js → wardley-WFR3VGLG-B8ZSHeDu.js} +1 -1
- package/dist/web/client/assets/{wardleyDiagram-VM6X3IG4-B85-R9t2.js → wardleyDiagram-VM6X3IG4-Qks2FmIn.js} +1 -1
- package/dist/web/client/assets/{xychartDiagram-S5SC5T6Z-BrD8OW8m.js → xychartDiagram-S5SC5T6Z-BBBjRtiE.js} +1 -1
- package/dist/web/client/index.html +3 -1
- package/dist/web/reads-worker.js +17 -17
- package/dist/web/server.js +25 -25
- package/dist/{web-EU6ATJWA.js → web-EMGUGGEI.js} +3 -3
- package/dist/{web-fetch-U22Q7HV4.js → web-fetch-6BRRVQON.js} +22 -5
- package/dist/{wiki-generate-LZRLFG6I.js → wiki-generate-XHSJTDOP.js} +104 -100
- package/dist/{with-panes-X5CZOGML.js → with-panes-Z6BTEHMZ.js} +11 -11
- package/dist/worker/entry.js +101 -87
- package/docs/README.md +1 -1
- package/docs/architecture/artifact-placement.md +12 -1
- package/docs/architecture/library.md +1 -1
- package/docs/architecture/prompt-envelope-and-tools.md +37 -27
- package/docs/architecture/safety-model.md +19 -6
- package/docs/architecture/session-lifecycle.md +10 -4
- package/docs/architecture/tui-design.md +37 -14
- package/docs/guide/commands-and-modes.md +39 -19
- package/docs/guide/configuration-and-targets.md +7 -5
- package/docs/guide/configuration-reference.md +116 -13
- package/docs/guide/environment-variables.md +2 -5
- package/docs/guide/fleet-dispatch.md +3 -2
- package/docs/guide/glossary.md +1 -1
- package/docs/guide/installation-and-lifecycle.md +2 -2
- package/docs/guide/resource-library.md +1 -1
- package/docs/guide/tool-usage.md +166 -64
- package/docs/guide/troubleshooting.md +1 -1
- package/docs/process/documentation-guide.md +1 -0
- package/docs/process/fleet-demo-runbook.md +6 -6
- package/docs/process/scientific-validation.md +22 -2
- package/docs/process/tool-audit-v0.4.9.md +357 -0
- package/package.json +1 -1
- package/src/cli/argv.ts +31 -0
- package/src/cli/clio.ts +17 -13
- package/src/cli/config.ts +4 -0
- package/src/cli/doctor-panes.ts +1 -1
- package/src/cli/doctor.ts +3 -1
- package/src/cli/index.ts +14 -1
- package/src/cli/mcp.ts +106 -0
- package/src/cli/skills-eval.ts +8 -2
- package/src/cli/upgrade.ts +34 -38
- package/src/cli/verifiers.ts +1 -1
- package/src/core/bash-exec.ts +27 -4
- package/src/core/config.ts +2 -1
- package/src/core/defaults.ts +10 -1
- package/src/core/event-bus.ts +1 -1
- package/src/core/run-records.ts +438 -0
- package/src/core/safe-exec.ts +506 -56
- package/src/core/skill-activation.ts +5 -3
- package/src/core/termination.ts +3 -3
- package/src/core/tool-names.ts +33 -12
- package/src/domains/context/clio-md.ts +1 -1
- package/src/domains/context/worker/pressure.ts +6 -2
- package/src/domains/context/working-set/path-index.ts +7 -2
- package/src/domains/dispatch/code-step.ts +7 -2
- package/src/domains/dispatch/contract.ts +7 -0
- package/src/domains/dispatch/execution-role.ts +3 -3
- package/src/domains/dispatch/execution-scheduler.ts +204 -79
- package/src/domains/dispatch/extension.ts +131 -14
- package/src/domains/dispatch/fleet-preflight.ts +18 -3
- package/src/domains/dispatch/fleet-run.ts +1 -0
- package/src/domains/dispatch/gate-decisions.ts +3 -3
- package/src/domains/dispatch/heartbeat.ts +1 -1
- package/src/domains/dispatch/host-verification.ts +16 -14
- package/src/domains/dispatch/receipt-findings.ts +3 -4
- package/src/domains/dispatch/reservation-store.ts +7 -9
- package/src/domains/dispatch/route-facts.ts +1 -1
- package/src/domains/dispatch/state.ts +3 -3
- package/src/domains/dispatch/types.ts +1 -1
- package/src/domains/evidence/build.ts +35 -7
- package/src/domains/gateway/mcp/client.ts +923 -0
- package/src/domains/gateway/mcp/config.ts +456 -0
- package/src/domains/gateway/mcp/index.ts +88 -0
- package/src/domains/gateway/mcp/protocol.ts +273 -0
- package/src/domains/gateway/mcp/trust.ts +263 -0
- package/src/domains/lifecycle/doctor.ts +17 -3
- package/src/domains/mux/contract.ts +5 -9
- package/src/domains/mux/detect.ts +1 -1
- package/src/domains/mux/extension.ts +1 -1
- package/src/domains/mux/protocol.ts +5 -7
- package/src/domains/mux/socket-client.ts +3 -3
- package/src/domains/observability/accountability.ts +2 -2
- package/src/domains/observability/contract.ts +7 -3
- package/src/domains/observability/evidence-index.ts +2 -2
- package/src/domains/observability/projection.ts +10 -0
- package/src/domains/prompts/compiler.ts +41 -23
- package/src/domains/prompts/fragments/identity/docs-routing.md +2 -2
- package/src/domains/prompts/fragments/operating/skills.md +12 -10
- package/src/domains/providers/index.ts +5 -1
- package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +42 -10
- package/src/domains/providers/probe/http.ts +44 -59
- package/src/domains/providers/probe/reasoning.ts +2 -0
- package/src/domains/providers/runtimes/local-native/llamacpp-embed.ts +20 -31
- package/src/domains/providers/runtimes/local-native/llamacpp-rerank.ts +9 -4
- package/src/domains/safety/action-classifier.ts +17 -1
- package/src/domains/safety/call-target.ts +14 -0
- package/src/domains/safety/contract.ts +1 -1
- package/src/domains/safety/finish-contract.ts +9 -3
- package/src/domains/safety/loop-detector.ts +1 -1
- package/src/domains/safety/policy-engine.ts +7 -0
- package/src/domains/safety/protected-artifacts.ts +3 -4
- package/src/domains/safety/rejection-feedback.ts +1 -1
- package/src/domains/safety/scope.ts +2 -3
- package/src/domains/safety/validation-contract.ts +3 -2
- package/src/domains/scheduling/budget.ts +5 -3
- package/src/domains/scheduling/contract.ts +2 -1
- package/src/domains/scheduling/extension.ts +3 -3
- package/src/domains/session/compaction/branch-summary.ts +1 -1
- package/src/domains/session/compaction/compact.ts +25 -2
- package/src/domains/session/compaction/cut-point.ts +1 -1
- package/src/domains/session/compaction/tokens.ts +5 -10
- package/src/domains/session/contract.ts +1 -1
- package/src/domains/session/cwd-fallback.ts +2 -2
- package/src/domains/session/handoff.ts +5 -1
- package/src/domains/session/history.ts +6 -0
- package/src/domains/session/manager.ts +14 -7
- package/src/domains/session/retry.ts +2 -1
- package/src/domains/session/session-artifacts.ts +12 -7
- package/src/domains/session/task-board.ts +2 -3
- package/src/engine/apis/openai-completions.ts +8 -0
- package/src/engine/loop-guard.ts +7 -0
- package/src/engine/provider-error-body.ts +65 -0
- package/src/engine/session.ts +118 -29
- package/src/engine/worker-runtime.ts +3 -0
- package/src/entry/boot-options.ts +2 -0
- package/src/entry/orchestrator.ts +18 -2
- package/src/interactive/chat-loop-policy.ts +1 -0
- package/src/interactive/chat-loop.ts +8 -4
- package/src/interactive/chat-panel.ts +23 -9
- package/src/interactive/chat-renderer.ts +33 -11
- package/src/interactive/clio-editor.ts +13 -5
- package/src/interactive/dispatch-board.ts +70 -30
- package/src/interactive/editor-submit.ts +30 -25
- package/src/interactive/footer/widgets.ts +12 -9
- package/src/interactive/interactive-presentation.ts +2 -3
- package/src/interactive/mux-bridge.ts +3 -7
- package/src/interactive/overlay-general-openers.ts +14 -7
- package/src/interactive/overlays/cwd-fallback.ts +1 -1
- package/src/interactive/overlays/library-model.ts +114 -35
- package/src/interactive/overlays/library.ts +52 -5
- package/src/interactive/overlays/list-overlay.ts +4 -1
- package/src/interactive/overlays/session-selector.ts +28 -23
- package/src/interactive/overlays/settings.ts +20 -1
- package/src/interactive/overlays/tree-selector.ts +47 -10
- package/src/interactive/panes-runtime.ts +1 -1
- package/src/interactive/renderers/compaction-summary.ts +1 -1
- package/src/interactive/renderers/provider-error.ts +118 -0
- package/src/interactive/renderers/retry-status.ts +59 -23
- package/src/interactive/renderers/tool-execution.ts +67 -7
- package/src/interactive/renderers/worker-answer.ts +198 -0
- package/src/interactive/renderers/worker-entry.ts +57 -163
- package/src/interactive/slash-commands.ts +26 -1
- package/src/interactive/slash-spec.ts +2 -2
- package/src/interactive/theme/labels.ts +66 -30
- package/src/interactive/turn-persistence.ts +6 -1
- package/src/interactive/turn-recovery.ts +2 -1
- package/src/interactive/turn-runtime.ts +22 -5
- package/src/interactive/view/artifacts.ts +3 -2
- package/src/interactive/view/view-overlay.ts +96 -20
- package/src/tools/agent-tools.ts +21 -7
- package/src/tools/artifact.ts +16 -8
- package/src/tools/bash.ts +90 -11
- package/src/tools/bootstrap.ts +42 -4
- package/src/tools/builtin-tool-catalog.ts +72 -7
- package/src/tools/context/index.ts +27 -31
- package/src/tools/context/library.ts +3 -1
- package/src/tools/context/surface.ts +12 -26
- package/src/tools/core-bootstrap.ts +72 -1
- package/src/tools/data/csv.ts +1189 -0
- package/src/tools/data/index.ts +308 -0
- package/src/tools/data/json.ts +1799 -0
- package/src/tools/data/jsonl.ts +561 -0
- package/src/tools/data/shared.ts +452 -0
- package/src/tools/edit-diff.ts +0 -7
- package/src/tools/edit.ts +115 -18
- package/src/tools/file-mutation-queue.ts +114 -4
- package/src/tools/find.ts +108 -29
- package/src/tools/gateway/caps.ts +11 -0
- package/src/tools/gateway/clio-context-surface.ts +41 -0
- package/src/tools/gateway/clio-context-tools.ts +77 -0
- package/src/tools/gateway/data-surface.ts +138 -0
- package/src/tools/gateway/data-tool.ts +201 -0
- package/src/tools/gateway/index.ts +342 -0
- package/src/tools/gateway/mcp-capabilities.ts +469 -0
- package/src/tools/grep.ts +88 -33
- package/src/tools/harness-extensions.ts +3 -0
- package/src/tools/ignore-policy.ts +7 -5
- package/src/tools/ls.ts +111 -20
- package/src/tools/policy.ts +35 -13
- package/src/tools/presentation.ts +6 -0
- package/src/tools/read.ts +634 -156
- package/src/tools/registry.ts +94 -6
- package/src/tools/run-script.ts +997 -0
- package/src/tools/spawn-hygiene.ts +157 -5
- package/src/tools/surface.ts +163 -0
- package/src/tools/verify/authoring.ts +8 -3
- package/src/tools/verify/catalog.ts +14 -1
- package/src/tools/verify/numeric.ts +367 -59
- package/src/tools/verify/perf.ts +171 -9
- package/src/tools/verify/scripts.ts +178 -26
- package/src/tools/web-fetch-surface.ts +22 -0
- package/src/tools/web-fetch.ts +26 -1
- package/src/tools/write.ts +45 -19
- package/dist/chunk-B6UM3OZC.js +0 -15
- package/dist/chunk-GJ24ODAX.js +0 -196
- package/dist/chunk-LZCCBLRC.js +0 -57
- package/dist/web/client/assets/architecture-7GRP2DOG-EGozsYEO.js +0 -1
- package/dist/web/client/assets/architectureDiagram-5GKGNRK7-z9FokbJl.js +0 -36
- package/dist/web/client/assets/channel-CiUWbHN9.js +0 -1
- package/dist/web/client/assets/chunk-DU6HZSFF-C5USiOAy.js +0 -125
- package/dist/web/client/assets/classDiagram-ZZMXUADV-CMODalmo.js +0 -1
- package/dist/web/client/assets/classDiagram-v2-VYDZK3BY-CMODalmo.js +0 -1
- package/dist/web/client/assets/cose-bilkent-JH36ORCC-RbQL23qS.js +0 -1
- package/dist/web/client/assets/dist-D0_q-A2b.js +0 -1
- package/dist/web/client/assets/eventmodeling-NTZA5JFV-DjVq8wKU.js +0 -1
- package/dist/web/client/assets/flowDiagram-HODETNUW-BUiCBGXt.js +0 -1
- package/dist/web/client/assets/ganttDiagram-EL5Y4UJY-B2lb8lvF.js +0 -292
- package/dist/web/client/assets/index-FSIC94pi.js +0 -83
- package/dist/web/client/assets/prism-core-BngLtbUd.js +0 -1
- package/dist/web/client/assets/railroad-abnf-HS5TGJTU-BcW01NZG.js +0 -1
- package/dist/web/client/assets/railroad-ebnf-LZEXJU2U-B7YCEDDd.js +0 -1
- package/dist/web/client/assets/railroad-peg-WCYAUIDC-DjNZbSTZ.js +0 -1
- package/dist/web/client/assets/src-yeptRXpt.js +0 -1
- package/dist/web/client/assets/stateDiagram-v2-MP3YSRHH-C7QtHeK4.js +0 -1
- package/dist/web/client/assets/swimlanesDiagram-VR7AAH4N-CBZlPFky.js +0 -8
|
@@ -29,6 +29,7 @@ import { formatWorkerContextMeter } from "./context-meter.js";
|
|
|
29
29
|
import { COUNCIL_SYNTHESIS_LABEL } from "./council.js";
|
|
30
30
|
import { type CouncilGroupView, type CouncilMemberView, councilGroupBody, councilIslandLines } from "./council-grid.js";
|
|
31
31
|
import { formatFooterTokens } from "./footer-panel.js";
|
|
32
|
+
import { presentWorkerContractAnswer, safeWorkerAnswerText } from "./renderers/worker-answer.js";
|
|
32
33
|
import {
|
|
33
34
|
type ClioTheme,
|
|
34
35
|
type ClioToken,
|
|
@@ -43,6 +44,7 @@ import {
|
|
|
43
44
|
screenTitle,
|
|
44
45
|
spinnerFrame,
|
|
45
46
|
} from "./theme/index.js";
|
|
47
|
+
import { fitIdentityLabel } from "./theme/labels.js";
|
|
46
48
|
|
|
47
49
|
export type DispatchBoardStatus = ObservabilityRunSummary["status"];
|
|
48
50
|
|
|
@@ -121,6 +123,7 @@ export interface DispatchBoardRow {
|
|
|
121
123
|
* worker is doing rather than a richer spinner.
|
|
122
124
|
*/
|
|
123
125
|
progress?: WorkerProgressSnapshot;
|
|
126
|
+
resultContract?: ObservabilityRunSummary["resultContract"];
|
|
124
127
|
/**
|
|
125
128
|
* Id of the receipt sealed for this run (`receipts/<runId>.json`, the id
|
|
126
129
|
* `clio-coder trace` takes). Set only once a terminal dispatch event has
|
|
@@ -474,8 +477,8 @@ function progressActionLine(theme: ClioTheme, progress: WorkerProgressSnapshot,
|
|
|
474
477
|
const current = progress.currentAction;
|
|
475
478
|
const recent = progress.recentActions[0];
|
|
476
479
|
const units: string[] = [];
|
|
477
|
-
if (phase !== null) units.push(phase);
|
|
478
|
-
if (current !== null) units.push(theme.fg("muted", actionPhrase(current)));
|
|
480
|
+
if (phase !== null && current === null) units.push(phase);
|
|
481
|
+
if (current !== null) units.push(theme.fg("muted", `now ${actionPhrase(current)}`));
|
|
479
482
|
else if (recent !== undefined) units.push(theme.fg("dim", `last ${actionPhrase(recent)}`));
|
|
480
483
|
if (units.length === 0) return null;
|
|
481
484
|
return cardUnitsLine(theme, "doing", units, contentWidth);
|
|
@@ -493,24 +496,36 @@ function progressAnswerLines(
|
|
|
493
496
|
progress: WorkerProgressSnapshot,
|
|
494
497
|
runId: string,
|
|
495
498
|
contentWidth: number,
|
|
499
|
+
contract: ObservabilityRunSummary["resultContract"],
|
|
496
500
|
): string[] {
|
|
497
501
|
if (progress.tailText.length === 0) return [];
|
|
498
502
|
const gutter = CARD_KV_KEY_WIDTH + 1;
|
|
499
503
|
const railWidth = Math.max(1, contentWidth - gutter - 2);
|
|
504
|
+
const presented = presentWorkerContractAnswer(
|
|
505
|
+
progress.tailText,
|
|
506
|
+
contract,
|
|
507
|
+
progress.droppedLines === 0 && progress.droppedBytes === 0,
|
|
508
|
+
progress.settled,
|
|
509
|
+
);
|
|
510
|
+
const source = presented
|
|
511
|
+
? [...(presented.footer ? [presented.footer] : []), ...presented.lines]
|
|
512
|
+
: safeWorkerAnswerText(progress.tailText).split("\n");
|
|
500
513
|
const wrapped: string[] = [];
|
|
501
|
-
for (const line of
|
|
514
|
+
for (const line of source) {
|
|
502
515
|
for (const row of wrapTextWithAnsi(sanitizeCallTargetText(line), railWidth)) wrapped.push(row);
|
|
503
516
|
}
|
|
504
|
-
const shown =
|
|
517
|
+
const shown = progress.settled
|
|
518
|
+
? wrapped.slice(0, WORKER_PROGRESS_CARD_ROWS)
|
|
519
|
+
: wrapped.slice(Math.max(0, wrapped.length - WORKER_PROGRESS_CARD_ROWS));
|
|
505
520
|
const hiddenRows = wrapped.length - shown.length;
|
|
506
521
|
const rail = theme.fg("dim", `${GLYPH.rail} `);
|
|
507
522
|
const body = shown.map((row) => `${rail}${theme.fg("muted", row)}`);
|
|
508
523
|
const hiddenLines = progress.droppedLines + hiddenRows;
|
|
509
524
|
if (hiddenLines > 0 || progress.droppedBytes > 0) {
|
|
510
525
|
const facts = [
|
|
526
|
+
`/view dispatch:${runId}`,
|
|
511
527
|
...(hiddenLines > 0 ? [`${hiddenLines} more line${hiddenLines === 1 ? "" : "s"}`] : []),
|
|
512
528
|
...(progress.droppedBytes > 0 ? [`${progress.droppedBytes} bytes outran the view`] : []),
|
|
513
|
-
`/view dispatch:${runId}`,
|
|
514
529
|
];
|
|
515
530
|
body.push(`${rail}${theme.fg("dim", truncateToWidth(facts.join(" · "), railWidth, "…", false))}`);
|
|
516
531
|
}
|
|
@@ -519,16 +534,29 @@ function progressAnswerLines(
|
|
|
519
534
|
return body.map((row, index) => `${index === 0 ? cardKvKey(theme, "answer") : " ".repeat(gutter)}${row}`);
|
|
520
535
|
}
|
|
521
536
|
|
|
522
|
-
/**
|
|
523
|
-
function trustCardLines(theme: ClioTheme, row: DispatchBoardRow, contentWidth: number): string[] {
|
|
537
|
+
/** Compact ordinary unvalidated completions; preserve all exceptional facts and expanded provenance. */
|
|
538
|
+
function trustCardLines(theme: ClioTheme, row: DispatchBoardRow, contentWidth: number, expanded: boolean): string[] {
|
|
524
539
|
const gutter = CARD_KV_KEY_WIDTH + 1;
|
|
525
540
|
const valueWidth = Math.max(1, contentWidth - gutter);
|
|
541
|
+
const axes = row.trust?.axes;
|
|
542
|
+
// Only the ordinary sealed, mediated completion without validation/review
|
|
543
|
+
// folds. Unknown, failed, inferred or exceptional provenance stays explicit.
|
|
544
|
+
const compact =
|
|
545
|
+
!expanded &&
|
|
546
|
+
row.status === "completed" &&
|
|
547
|
+
row.trust?.verdict === "unverified" &&
|
|
548
|
+
axes?.artifactIntegrity === "verified" &&
|
|
549
|
+
axes.validationGrounding === "absent" &&
|
|
550
|
+
axes.independentReview === "absent" &&
|
|
551
|
+
axes.autonomyEnforcement === "enforced" &&
|
|
552
|
+
axes.contextProvenance === "recorded" &&
|
|
553
|
+
axes.completionEvidence === "absent";
|
|
526
554
|
const trust =
|
|
527
555
|
row.trust === undefined
|
|
528
556
|
? theme.fg("dim", isTerminalStatus(row.status) ? "receipt not read back" : "not sealed yet")
|
|
529
557
|
: theme.fg(
|
|
530
558
|
trustVerdictToken(row.trust.verdict),
|
|
531
|
-
`${trustVerdictGlyph(row.trust.verdict)} ${row.trust.verdict}; ${row.trust.text}`,
|
|
559
|
+
`${trustVerdictGlyph(row.trust.verdict)} ${row.trust.verdict}; ${compact ? trustStateWord("validationGrounding", "absent") : row.trust.text}`,
|
|
532
560
|
);
|
|
533
561
|
const host =
|
|
534
562
|
row.hostVerification === undefined ? "" : ` · ${theme.fg("muted", `host checks ${row.hostVerification}`)}`;
|
|
@@ -565,7 +593,6 @@ function renderDispatchCard(
|
|
|
565
593
|
const statusStr = theme.fg(presentation.token, `${presentation.glyph} ${presentation.label}`);
|
|
566
594
|
|
|
567
595
|
const ttft = row.ttftMs !== null ? `${row.ttftMs}ms` : row.status === "running" ? `waiting${GLYPH.ellipsis}` : "n/a";
|
|
568
|
-
const target = `${theme.fg("muted", `${row.runtimeKind}:${row.targetId}`)} ${theme.fg("dim", "▸")} ${theme.fg("muted", row.wireModelId)}`;
|
|
569
596
|
|
|
570
597
|
// The agent label is the frame title and can be arbitrarily long (agent ids
|
|
571
598
|
// are user data); clamp it so the title plus the elapsed meta never pushes
|
|
@@ -592,7 +619,8 @@ function renderDispatchCard(
|
|
|
592
619
|
|
|
593
620
|
// The model id is user data and can outrun the card; mark the cut with `…`
|
|
594
621
|
// rather than hard-clipping it mid-token into a string that reads whole.
|
|
595
|
-
const
|
|
622
|
+
const targetKey = cardKvKey(theme, "target");
|
|
623
|
+
const targetLine = `${targetKey}${theme.fg("muted", fitIdentityLabel(sanitizeCallTargetText(`${row.runtimeKind}:${row.targetId} ▸ ${row.wireModelId}`), Math.max(1, contentWidth - visibleWidth(targetKey))))}`;
|
|
596
624
|
// Fleet facts: node placement (absent means local), gate role badge, and
|
|
597
625
|
// reroute lineage. Whole units so overflow drops a fact, never clips one.
|
|
598
626
|
const statusUnits = [
|
|
@@ -621,19 +649,28 @@ function renderDispatchCard(
|
|
|
621
649
|
// step it is; every other run leaves the cell empty rather than inventing a
|
|
622
650
|
// position, so the column reads as "not a fleet step" and not as wave zero.
|
|
623
651
|
const phaseCell = formatDispatchPhaseCell(row.phase, contentWidth);
|
|
652
|
+
const fullTask = row.taskSummary
|
|
653
|
+
? cardWrappedValueLines(theme, "task", theme.fg("muted", row.taskSummary), contentWidth)
|
|
654
|
+
: [];
|
|
655
|
+
const taskLines =
|
|
656
|
+
options.expanded === true || fullTask.length <= 3
|
|
657
|
+
? fullTask
|
|
658
|
+
: [...fullTask.slice(0, 2), theme.fg("dim", "… Enter detail for full task")];
|
|
624
659
|
const bodyLines = [
|
|
625
660
|
cardUnitsLine(theme, "run", [theme.fg("dim", row.runId)], contentWidth),
|
|
626
|
-
cardUnitsLine(
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
661
|
+
...(phaseCell === null ? [] : [cardUnitsLine(theme, "phase", [theme.fg("info", phaseCell)], contentWidth)]),
|
|
662
|
+
...(options.expanded === true
|
|
663
|
+
? cardWrappedValueLines(
|
|
664
|
+
theme,
|
|
665
|
+
"target",
|
|
666
|
+
theme.fg("muted", sanitizeCallTargetText(`${row.runtimeKind}:${row.targetId} ▸ ${row.wireModelId}`)),
|
|
667
|
+
contentWidth,
|
|
668
|
+
)
|
|
669
|
+
: [targetLine]),
|
|
670
|
+
...taskLines,
|
|
634
671
|
cardUnitsLine(theme, "status", statusUnits, contentWidth),
|
|
635
|
-
...trustCardLines(theme, row, contentWidth),
|
|
636
|
-
...(row.budget !== undefined
|
|
672
|
+
...trustCardLines(theme, row, contentWidth, options.expanded === true),
|
|
673
|
+
...(options.expanded === true && row.budget !== undefined
|
|
637
674
|
? [
|
|
638
675
|
...cardWrappedValueLines(
|
|
639
676
|
theme,
|
|
@@ -669,19 +706,19 @@ function renderDispatchCard(
|
|
|
669
706
|
// never arguments, across the stdout seam) and the recent-tool trail.
|
|
670
707
|
const currentTool = row.currentTool ?? null;
|
|
671
708
|
const recentTools = row.recentTools ?? [];
|
|
672
|
-
if (currentTool !== null || recentTools.length > 0) {
|
|
709
|
+
if (!row.progress && (currentTool !== null || recentTools.length > 0)) {
|
|
673
710
|
const toolUnits = [
|
|
674
711
|
currentTool !== null ? theme.fg("action", `${currentTool} running`) : theme.fg("dim", "idle"),
|
|
675
712
|
...(recentTools.length > 0 ? [theme.fg("muted", `recent ${recentTools.join(" ")}`)] : []),
|
|
676
713
|
];
|
|
677
714
|
bodyLines.push(cardUnitsLine(theme, "tools", toolUnits, contentWidth));
|
|
678
715
|
}
|
|
679
|
-
//
|
|
680
|
-
|
|
681
|
-
if (options.expanded === true && row.progress) {
|
|
716
|
+
// One current-operation row is useful at a glance; prose and policy expand on demand.
|
|
717
|
+
if (row.progress) {
|
|
682
718
|
const doing = progressActionLine(theme, row.progress, contentWidth);
|
|
683
719
|
if (doing !== null) bodyLines.push(doing);
|
|
684
|
-
|
|
720
|
+
if (options.expanded === true)
|
|
721
|
+
bodyLines.push(...progressAnswerLines(theme, row.progress, row.runId, contentWidth, row.resultContract));
|
|
685
722
|
}
|
|
686
723
|
if (row.steerAcknowledgement) {
|
|
687
724
|
bodyLines.push(
|
|
@@ -922,11 +959,13 @@ function formatDispatchBoardLines(
|
|
|
922
959
|
): string[] {
|
|
923
960
|
if (rows.length === 0) {
|
|
924
961
|
const theme = clioTheme();
|
|
925
|
-
const lines = ["", "No fleet runs yet", "
|
|
926
|
-
return lines
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
962
|
+
const lines = ["", "No fleet runs yet", "Use /run or /delegate to start a run.", ""];
|
|
963
|
+
return lines
|
|
964
|
+
.flatMap((line) => wrapTextWithAnsi(line, Math.max(1, width)))
|
|
965
|
+
.map((line) => {
|
|
966
|
+
const padding = Math.max(0, Math.floor((width - visibleWidth(line)) / 2));
|
|
967
|
+
return theme.fg("dim", " ".repeat(padding) + line);
|
|
968
|
+
});
|
|
930
969
|
}
|
|
931
970
|
|
|
932
971
|
const endpointActive: Record<string, number> = { ...foregroundStreamUsage() };
|
|
@@ -1124,6 +1163,7 @@ function toRow(entry: ObservabilityRunSummary, now: number): DispatchBoardRow {
|
|
|
1124
1163
|
const progress = entry.progress;
|
|
1125
1164
|
return {
|
|
1126
1165
|
...(progress !== undefined ? { progress } : {}),
|
|
1166
|
+
...(entry.resultContract !== undefined ? { resultContract: entry.resultContract } : {}),
|
|
1127
1167
|
runId: entry.runId,
|
|
1128
1168
|
agentId: entry.agentId,
|
|
1129
1169
|
...(entry.agentAudience !== undefined ? { agentAudience: entry.agentAudience } : {}),
|
|
@@ -126,7 +126,7 @@ export interface EditorSubmitController {
|
|
|
126
126
|
shutdownEditorBash(): Promise<void>;
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
-
type EditorSteerSubmission = "
|
|
129
|
+
type EditorSteerSubmission = "accepted" | "rejected";
|
|
130
130
|
|
|
131
131
|
/** Owns editor submission and the one local bash process attached to it. */
|
|
132
132
|
export function createEditorSubmitController(deps: EditorSubmitDeps): EditorSubmitController {
|
|
@@ -284,10 +284,17 @@ export function createEditorSubmitController(deps: EditorSubmitDeps): EditorSubm
|
|
|
284
284
|
let running: RunningDispatchRef[] = [];
|
|
285
285
|
try {
|
|
286
286
|
running = deps.dispatch.snapshot().running.map((run) => ({ runId: run.runId, agentId: run.agentId }));
|
|
287
|
-
} catch {
|
|
288
|
-
|
|
287
|
+
} catch (err) {
|
|
288
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
289
|
+
deps.notify(
|
|
290
|
+
"error",
|
|
291
|
+
`cannot resolve steer to @${mention.target}: ${msg}; retry when Fleet Runs is available`,
|
|
292
|
+
`steer:${mention.target}`,
|
|
293
|
+
);
|
|
294
|
+
return "rejected";
|
|
289
295
|
}
|
|
290
|
-
|
|
296
|
+
// The parser owns addressed syntax even after the last worker exits.
|
|
297
|
+
// File completion quotes bare filenames that would otherwise match it.
|
|
291
298
|
const resolution = resolveSteerTarget(mention.target, running);
|
|
292
299
|
if (resolution.kind === "match") {
|
|
293
300
|
try {
|
|
@@ -314,14 +321,16 @@ export function createEditorSubmitController(deps: EditorSubmitDeps): EditorSubm
|
|
|
314
321
|
}
|
|
315
322
|
deps.notify(
|
|
316
323
|
"warning",
|
|
317
|
-
`no running dispatch matches @${mention.target}; running: ${formatSteerCandidates(running)}`,
|
|
324
|
+
`no running dispatch matches @${mention.target}; running: ${formatSteerCandidates(running) || "none"}; choose an active target in Fleet Runs or remove the @target to send to the main agent`,
|
|
318
325
|
`steer:${mention.target}`,
|
|
319
326
|
);
|
|
320
327
|
return "rejected";
|
|
321
328
|
};
|
|
322
329
|
|
|
323
|
-
const handleEditorSteerMention = (mention: { target: string; text: string }): boolean =>
|
|
324
|
-
submitEditorSteerMention(mention)
|
|
330
|
+
const handleEditorSteerMention = (mention: { target: string; text: string }): boolean => {
|
|
331
|
+
submitEditorSteerMention(mention);
|
|
332
|
+
return true;
|
|
333
|
+
};
|
|
325
334
|
|
|
326
335
|
const submitEditorText = (text: string): void => {
|
|
327
336
|
const literalText = unguardPastedEditorOperator(text);
|
|
@@ -344,18 +353,16 @@ export function createEditorSubmitController(deps: EditorSubmitDeps): EditorSubm
|
|
|
344
353
|
const steerMention = parseEditorSteerMention(trimmed);
|
|
345
354
|
if (steerMention) {
|
|
346
355
|
const submission = submitEditorSteerMention(steerMention);
|
|
347
|
-
if (submission
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
deps.editor.setText(literalText);
|
|
355
|
-
}
|
|
356
|
-
deps.ui.requestRender();
|
|
357
|
-
return;
|
|
356
|
+
if (submission === "accepted") {
|
|
357
|
+
deps.editor.addToHistory(literalText);
|
|
358
|
+
deps.editor.setText("");
|
|
359
|
+
} else {
|
|
360
|
+
// Resolution and dispatch failures are correctable rejections. Pi
|
|
361
|
+
// has already cleared the editor, so explicitly restore the draft.
|
|
362
|
+
deps.editor.setText(literalText);
|
|
358
363
|
}
|
|
364
|
+
deps.ui.requestRender();
|
|
365
|
+
return;
|
|
359
366
|
}
|
|
360
367
|
const command = parseSlashCommand(trimmed);
|
|
361
368
|
if (command.kind === "editor" || command.kind === "interrupt") {
|
|
@@ -419,14 +426,12 @@ export function createEditorSubmitController(deps: EditorSubmitDeps): EditorSubm
|
|
|
419
426
|
const steerMention = parseEditorSteerMention(trimmed);
|
|
420
427
|
if (steerMention) {
|
|
421
428
|
const submission = submitEditorSteerMention(steerMention);
|
|
422
|
-
if (submission
|
|
423
|
-
|
|
424
|
-
throw new Error("queued boot steer was not admitted; preserving it for recovery");
|
|
425
|
-
}
|
|
426
|
-
deps.editor.addToHistory(literalText);
|
|
427
|
-
deps.ui.requestRender();
|
|
428
|
-
return;
|
|
429
|
+
if (submission === "rejected") {
|
|
430
|
+
throw new Error("queued boot steer was not admitted; preserving it for recovery");
|
|
429
431
|
}
|
|
432
|
+
deps.editor.addToHistory(literalText);
|
|
433
|
+
deps.ui.requestRender();
|
|
434
|
+
return;
|
|
430
435
|
}
|
|
431
436
|
const command = parseSlashCommand(trimmed);
|
|
432
437
|
if (isRejectedCommand(command)) {
|
|
@@ -38,6 +38,8 @@ import {
|
|
|
38
38
|
sectionTag,
|
|
39
39
|
} from "../theme/index.js";
|
|
40
40
|
|
|
41
|
+
import { fitIdentityLabel } from "../theme/labels.js";
|
|
42
|
+
|
|
41
43
|
export interface ToolTallySnapshot {
|
|
42
44
|
tools: Readonly<Record<string, number>>;
|
|
43
45
|
errors: number;
|
|
@@ -263,20 +265,22 @@ export function compactPrimaryLine(
|
|
|
263
265
|
const safeWidth = Math.max(1, Math.floor(width));
|
|
264
266
|
let git = safeWidth >= COMPACT_GIT_MIN_WIDTH ? gitChip(theme, workspace.branch, workspace.dirty) : null;
|
|
265
267
|
let right = buildHarnessStatePill(theme, status, toolCounts, dispatchRows, tick, now, safeWidth, true);
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
right = buildHarnessStatePill(theme, status, toolCounts, dispatchRows, tick, now, safeWidth, false);
|
|
270
|
-
}
|
|
268
|
+
// A long temporary parent must yield before the active worker count.
|
|
269
|
+
const cwd = fitIdentityLabel(workspace.cwd, Math.max(8, safeWidth - visibleWidth(right) - 1));
|
|
270
|
+
let left = joinSections(theme, [theme.fg("muted", cwd), git]);
|
|
271
271
|
|
|
272
272
|
if (git && visibleWidth(left) + 1 + visibleWidth(right) > safeWidth) {
|
|
273
273
|
git = null;
|
|
274
|
-
left = theme.fg("muted",
|
|
274
|
+
left = theme.fg("muted", cwd);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
if (visibleWidth(left) + 1 + visibleWidth(right) > safeWidth) {
|
|
278
|
+
right = buildHarnessStatePill(theme, status, toolCounts, dispatchRows, tick, now, safeWidth, false);
|
|
275
279
|
}
|
|
276
280
|
|
|
277
281
|
if (visibleWidth(left) + 1 + visibleWidth(right) > safeWidth) {
|
|
278
282
|
const maxCwdWidth = Math.max(1, safeWidth - visibleWidth(right) - 1);
|
|
279
|
-
left = theme.fg("muted",
|
|
283
|
+
left = theme.fg("muted", fitIdentityLabel(workspace.cwd, maxCwdWidth));
|
|
280
284
|
}
|
|
281
285
|
|
|
282
286
|
return joinColumns(left, right, safeWidth);
|
|
@@ -1077,8 +1081,7 @@ function buildHarnessStatePill(
|
|
|
1077
1081
|
fleetSummaryIsAction = false,
|
|
1078
1082
|
): string {
|
|
1079
1083
|
const safeWidth = Math.max(1, Math.floor(width));
|
|
1080
|
-
const badge =
|
|
1081
|
-
showBadge && safeWidth >= 48 ? harnessBadge(theme, status, toolCounts, dispatchRows, fleetSummaryIsAction) : "";
|
|
1084
|
+
const badge = showBadge ? harnessBadge(theme, status, toolCounts, dispatchRows, fleetSummaryIsAction) : "";
|
|
1082
1085
|
// Idleness is absence of work, not a phase worth narrating. If a tool or
|
|
1083
1086
|
// fleet remains live while the harness settles, keep that activity without
|
|
1084
1087
|
// prefixing it with an idle glyph.
|
|
@@ -40,7 +40,6 @@ import { parseSlashCommand, type RunIo } from "./slash-commands.js";
|
|
|
40
40
|
import { createStatusController, type StatusController, type TurnSummary } from "./status/index.js";
|
|
41
41
|
import type { SmoothStreamingMode } from "./stream-pacer.js";
|
|
42
42
|
import { processAutoPacingAllowed } from "./stream-pacing-policy.js";
|
|
43
|
-
import { formatTargetLabel } from "./theme/index.js";
|
|
44
43
|
import { createWelcomeDashboard, type WelcomeDashboardComponent } from "./welcome-dashboard.js";
|
|
45
44
|
import { readWorkerReceiptFacts } from "./worker-receipts.js";
|
|
46
45
|
import type { WorkspaceFacts } from "./workspace-facts.js";
|
|
@@ -443,8 +442,8 @@ export function createInteractivePresentation(deps: InteractivePresentationDeps)
|
|
|
443
442
|
const editorChrome: EditorChrome = {
|
|
444
443
|
getModelLabel: () => {
|
|
445
444
|
const current = deps.getSettings?.();
|
|
446
|
-
//
|
|
447
|
-
return
|
|
445
|
+
// Keep raw fields separate through the terminal-lease proxy until render knows its width.
|
|
446
|
+
return { targetId: current?.chat?.target, modelId: current?.chat?.model };
|
|
448
447
|
},
|
|
449
448
|
getThinkingLabel: () => {
|
|
450
449
|
const current = deps.getSettings?.();
|
|
@@ -14,13 +14,9 @@
|
|
|
14
14
|
* operator turn passes through several phases inside one window, of which
|
|
15
15
|
* only the last is worth a wire call.
|
|
16
16
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* role-vocabulary sidebar labels). All of it duplicated the native fleet
|
|
21
|
-
* surfaces into panes the operator had not asked for; the one pane that
|
|
22
|
-
* renders runs is now the operator-pulled watch pane (`watch-pane.ts`), and
|
|
23
|
-
* the policy line lives in `pane-policy.ts`.
|
|
17
|
+
* The bridge does not open panes. The operator opens the shared watch pane
|
|
18
|
+
* (`watch-pane.ts`) to inspect runs already shown by the native fleet
|
|
19
|
+
* surfaces. Pane ownership policy lives in `pane-policy.ts`.
|
|
24
20
|
*/
|
|
25
21
|
|
|
26
22
|
import { type AgentStatusChangedPayload, BusChannels, type DispatchRunIdentity } from "../core/bus-events.js";
|
|
@@ -31,7 +31,7 @@ import {
|
|
|
31
31
|
} from "./dispatch-board.js";
|
|
32
32
|
import { compileFleetRunPreview, type FleetRunPreview, type FleetRunPreviewInput } from "./fleet-run-preview.js";
|
|
33
33
|
import { openMemoryOverlay } from "./memory-overlay.js";
|
|
34
|
-
import {
|
|
34
|
+
import { buildResponsiveHint, type HintEntry, showClioOverlayFrame } from "./overlay-frame.js";
|
|
35
35
|
import type { OverlayTransitions } from "./overlay-transitions.js";
|
|
36
36
|
import {
|
|
37
37
|
type ContextResetMutationChoice,
|
|
@@ -348,13 +348,20 @@ export function createOverlayGeneralOpeners(deps: OverlayGeneralOpenersDeps): Ov
|
|
|
348
348
|
deps.requestRender();
|
|
349
349
|
};
|
|
350
350
|
|
|
351
|
-
const dispatchBoardHint = (): string => {
|
|
351
|
+
const dispatchBoardHint = (innerWidth: number): string => {
|
|
352
352
|
const row = deps.dispatchBoard.selectedRow();
|
|
353
|
-
const entries = [
|
|
354
|
-
if (row)
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
353
|
+
const entries: HintEntry[] = [];
|
|
354
|
+
if (row) {
|
|
355
|
+
entries.push({ key: "↑↓", verb: "select" });
|
|
356
|
+
entries.push({
|
|
357
|
+
key: "Enter",
|
|
358
|
+
verb: deps.dispatchBoard.detailExpanded() ? "hide detail" : "detail",
|
|
359
|
+
critical: false,
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
if (row && isDispatchBoardRowSteerable(row)) entries.push({ key: "s", verb: "steer", critical: true });
|
|
363
|
+
if (row && isDispatchBoardRowCancellable(row)) entries.push({ key: "x", verb: "cancel", critical: true });
|
|
364
|
+
return buildResponsiveHint(entries)(innerWidth);
|
|
358
365
|
};
|
|
359
366
|
|
|
360
367
|
/**
|