@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.
Files changed (513) hide show
  1. package/CHANGELOG.md +82 -0
  2. package/README.md +7 -6
  3. package/dist/{acp-JWPQZM2D.js → acp-ZWZCPS2A.js} +13 -13
  4. package/dist/{agents-4GCDIRVX.js → agents-LYSOWZUE.js} +53 -52
  5. package/dist/assets/codewiki.json +1 -1
  6. package/dist/{auth-SYAKTDQE.js → auth-WBQGKWQ5.js} +27 -27
  7. package/dist/{background-OW67WMYR.js → background-BUMOBAQN.js} +4 -4
  8. package/dist/{builtins-TKS63VNV.js → builtins-ODRJOEDI.js} +7 -7
  9. package/dist/{chunk-JLBVCROW.js → chunk-2DRRZ57Q.js} +33 -24
  10. package/dist/chunk-2JBZYUPY.js +105 -0
  11. package/dist/chunk-2KUBKL63.js +336 -0
  12. package/dist/{chunk-K45LHSCI.js → chunk-2VBWFXYE.js} +7 -3
  13. package/dist/{chunk-XTLJDC2X.js → chunk-2X2R3UTH.js} +23 -18
  14. package/dist/{chunk-5HULHKT2.js → chunk-37LW32LZ.js} +5 -5
  15. package/dist/{chunk-W7KNI3F5.js → chunk-3AND2EFU.js} +5 -5
  16. package/dist/{chunk-36XSBPXL.js → chunk-3RDHGNU7.js} +95 -27
  17. package/dist/{chunk-BIY22UUK.js → chunk-3SUDBGEI.js} +11 -10
  18. package/dist/{chunk-3IQOZRQ6.js → chunk-3TQN67I2.js} +7 -7
  19. package/dist/{chunk-KWJXCL2X.js → chunk-3U4BL2EV.js} +3 -3
  20. package/dist/{chunk-RBES4TCZ.js → chunk-3UQADNG2.js} +3 -3
  21. package/dist/{chunk-V4ZKOKRB.js → chunk-434LRQ6Z.js} +61 -53
  22. package/dist/{chunk-MWMW53WW.js → chunk-4ATBOFRP.js} +649 -193
  23. package/dist/{chunk-QGIC5SX5.js → chunk-4DNL43EZ.js} +3 -3
  24. package/dist/{chunk-GVU4CXPJ.js → chunk-4HFJKRGZ.js} +113 -54
  25. package/dist/{chunk-5A6XR3RJ.js → chunk-555E2WVV.js} +16 -2
  26. package/dist/{chunk-LZDLYSUN.js → chunk-5RTEFNBP.js} +3 -3
  27. package/dist/{chunk-HMGAKB7E.js → chunk-64XJW7NT.js} +15 -15
  28. package/dist/{chunk-EXKUF426.js → chunk-7FBCRWVT.js} +280 -280
  29. package/dist/{chunk-K3W6BF5C.js → chunk-7JSOSVLP.js} +2 -2
  30. package/dist/{chunk-WFTSK7N3.js → chunk-7N3OLLSL.js} +4 -4
  31. package/dist/{chunk-JRA6OBHY.js → chunk-A6DULIMH.js} +17 -5
  32. package/dist/{chunk-R5NRX5N4.js → chunk-AB3QXXBC.js} +2 -2
  33. package/dist/chunk-ACCECAH4.js +49 -0
  34. package/dist/{chunk-GJBJHJNY.js → chunk-AM6CEP2K.js} +5 -5
  35. package/dist/{chunk-MUXNDNMZ.js → chunk-AY4XE6GN.js} +19 -13
  36. package/dist/{chunk-MATCRH3M.js → chunk-BBA2TAWV.js} +9 -9
  37. package/dist/{chunk-PMUUAABD.js → chunk-BMNVVKEW.js} +9 -9
  38. package/dist/{chunk-TOPICHGR.js → chunk-CTGZCEI6.js} +2 -2
  39. package/dist/{chunk-L75H5B3B.js → chunk-DIAJYJYG.js} +2 -2
  40. package/dist/{chunk-JIMWEYWO.js → chunk-EHZRAB4U.js} +2 -2
  41. package/dist/{chunk-YXANQGCX.js → chunk-EM2DIQAJ.js} +6 -6
  42. package/dist/{chunk-JCVIL6TY.js → chunk-ETF4ROKH.js} +4 -4
  43. package/dist/{chunk-5W4FRA5Q.js → chunk-F2YM3JY4.js} +483 -253
  44. package/dist/{chunk-YGIV24MF.js → chunk-FEBQWHJT.js} +21 -16
  45. package/dist/{chunk-PGEFOTJB.js → chunk-FPS4R2RN.js} +5 -4
  46. package/dist/{chunk-XC5POIL4.js → chunk-G5R53COU.js} +1 -1
  47. package/dist/chunk-GHXGMFQ5.js +40 -0
  48. package/dist/{chunk-QLKCCC2J.js → chunk-GJDRMBDI.js} +14 -14
  49. package/dist/{chunk-2ZWLMA3T.js → chunk-GREYLTZ5.js} +7 -7
  50. package/dist/{chunk-YXFKLMX2.js → chunk-H2WSCZZT.js} +22 -6
  51. package/dist/{chunk-FNVPQQYT.js → chunk-H6IUCY6Q.js} +2 -2
  52. package/dist/{chunk-5C2OQHLR.js → chunk-H72DCH3E.js} +92 -203
  53. package/dist/{chunk-JYKUMHCQ.js → chunk-H7TXJR23.js} +21 -21
  54. package/dist/chunk-HBJQQTKM.js +40 -0
  55. package/dist/chunk-HCVKSGNZ.js +990 -0
  56. package/dist/{chunk-ARRUMZ7X.js → chunk-I47EJPYL.js} +3 -3
  57. package/dist/{chunk-YKIIWURD.js → chunk-IALGWTLO.js} +3 -3
  58. package/dist/{chunk-FB3KTE2J.js → chunk-IALZJE37.js} +4 -4
  59. package/dist/{chunk-RAUOKUZV.js → chunk-IC7JXLOM.js} +15 -10
  60. package/dist/{chunk-LLCGGVSW.js → chunk-IOSVTTCD.js} +7 -7
  61. package/dist/{chunk-DBREN25X.js → chunk-IPTPMLA6.js} +8 -3
  62. package/dist/{chunk-V552WL53.js → chunk-IZZI3SKQ.js} +3 -67
  63. package/dist/{chunk-UDAK6GR2.js → chunk-JIYWMQZ5.js} +2 -2
  64. package/dist/{chunk-O3HSB2YL.js → chunk-JKU34ACI.js} +2 -2
  65. package/dist/{chunk-6X7VOCDY.js → chunk-JTR3VSV3.js} +3 -3
  66. package/dist/{chunk-O2QJDRWP.js → chunk-JU6MAMRJ.js} +4 -4
  67. package/dist/chunk-JURMQWVJ.js +15 -0
  68. package/dist/{chunk-STC6CWUZ.js → chunk-K3XN4LZ4.js} +5 -5
  69. package/dist/{chunk-ATB3Q7YO.js → chunk-KIVFXGBM.js} +27 -2
  70. package/dist/{chunk-WJWNZXRM.js → chunk-KOAHT3N2.js} +2 -2
  71. package/dist/chunk-KP5BPXR3.js +73 -0
  72. package/dist/{chunk-K53E2PTW.js → chunk-KRJQG47M.js} +3 -3
  73. package/dist/{chunk-IILXVWJY.js → chunk-KW6OJ7IY.js} +19 -21
  74. package/dist/{chunk-A46ILRS2.js → chunk-L3NBWLSN.js} +4 -4
  75. package/dist/{chunk-2U2U5POA.js → chunk-L4RUTLRL.js} +5 -5
  76. package/dist/{chunk-QYSAZMSH.js → chunk-LGTVWPRN.js} +2 -2
  77. package/dist/{chunk-KGP3UQGJ.js → chunk-LSQW6KZO.js} +5 -5
  78. package/dist/{chunk-P4JS3MH5.js → chunk-LWJYOHT3.js} +8 -8
  79. package/dist/{chunk-U3TPUXOQ.js → chunk-M6YLF66Z.js} +74 -40
  80. package/dist/{chunk-5D2FNBMG.js → chunk-MJ4QEJVT.js} +2 -2
  81. package/dist/{chunk-RM3XJX7P.js → chunk-MO65K5CH.js} +5 -5
  82. package/dist/{chunk-H5DPSUBB.js → chunk-MTOZEQHL.js} +3 -3
  83. package/dist/{chunk-6R5MBXBJ.js → chunk-NBPA5QM6.js} +2 -2
  84. package/dist/{chunk-H77XBUBM.js → chunk-NMBEW4PP.js} +3 -3
  85. package/dist/{chunk-QWUSS2QP.js → chunk-NPLLK3HO.js} +67 -87
  86. package/dist/{chunk-K5UJD6MM.js → chunk-NSYGPIVW.js} +5 -5
  87. package/dist/{context-EZZPT2ZV.js → chunk-NXTV5OI5.js} +30 -84
  88. package/dist/{chunk-F7Y6QTPL.js → chunk-NYDG4QP4.js} +4 -4
  89. package/dist/{chunk-PFZJMXIY.js → chunk-OA2GDACN.js} +2 -2
  90. package/dist/{chunk-Q32C6AWI.js → chunk-PJI57EC6.js} +4 -4
  91. package/dist/{chunk-EFXMQYI6.js → chunk-PJJBUGMR.js} +52 -52
  92. package/dist/{chunk-ICYIUNO4.js → chunk-PNJE7JPS.js} +18 -3
  93. package/dist/chunk-PP23PZEV.js +1347 -0
  94. package/dist/chunk-PPIFDSBK.js +409 -0
  95. package/dist/{chunk-RFULVPBX.js → chunk-PTFISXQO.js} +6 -5
  96. package/dist/{chunk-JV25I7ID.js → chunk-QB33Z5S7.js} +5 -5
  97. package/dist/{chunk-D55WO5J7.js → chunk-QGNII5VC.js} +8 -8
  98. package/dist/{chunk-RKFNU5UA.js → chunk-QI72X67S.js} +104 -27
  99. package/dist/chunk-QKHZZFKH.js +98 -0
  100. package/dist/{chunk-5UG6EZI3.js → chunk-RDKX2PME.js} +4 -4
  101. package/dist/{chunk-B5ZTR6KZ.js → chunk-RL7LJYN4.js} +1 -1
  102. package/dist/{chunk-BE4I3UJ2.js → chunk-RQROVOV3.js} +15 -13
  103. package/dist/{chunk-TEHVMHOK.js → chunk-S34A7BSP.js} +3 -3
  104. package/dist/{chunk-4P6M2TTE.js → chunk-SJETVJHX.js} +2 -2
  105. package/dist/{chunk-OPC4DQD6.js → chunk-SJMNU4ZS.js} +2 -2
  106. package/dist/{chunk-2JSCCEKO.js → chunk-SLLG2G44.js} +2 -2
  107. package/dist/{chunk-EPYATQMG.js → chunk-SQAZN2V3.js} +42 -16
  108. package/dist/{chunk-E2NSPYLC.js → chunk-SQBT46OF.js} +5 -5
  109. package/dist/{chunk-WTZVSMQZ.js → chunk-TCUOGIL2.js} +5 -5
  110. package/dist/{chunk-RRZFRIJP.js → chunk-TIWPKCVO.js} +5 -5
  111. package/dist/{chunk-QLAGXTTV.js → chunk-UIU7MGZ3.js} +5 -1
  112. package/dist/{chunk-WLHX3MM5.js → chunk-V4XJWDHR.js} +21 -11
  113. package/dist/{chunk-PJ5H5B7A.js → chunk-VPWGADBG.js} +18 -18
  114. package/dist/{chunk-GEYX2NZ5.js → chunk-VWFCAK34.js} +6 -6
  115. package/dist/{chunk-44U2OUSM.js → chunk-W72LLZAV.js} +2 -2
  116. package/dist/{chunk-ORRNGQDV.js → chunk-WGRDABW7.js} +4 -4
  117. package/dist/{chunk-RNLAPBJL.js → chunk-XFLSL7BT.js} +2 -2
  118. package/dist/{chunk-2SXGG2IV.js → chunk-XJZEDCNT.js} +6 -6
  119. package/dist/{chunk-UB33F3YW.js → chunk-XLLEL3K7.js} +5 -5
  120. package/dist/{chunk-2GPGAE5W.js → chunk-XNIZBOFV.js} +15 -1
  121. package/dist/{chunk-WS4FOGLY.js → chunk-XNZWWDC3.js} +2 -2
  122. package/dist/{chunk-P7GTE4FX.js → chunk-XRECG65F.js} +2 -2
  123. package/dist/chunk-XTQ7MEJG.js +457 -0
  124. package/dist/{chunk-GEVQNST4.js → chunk-XZWSP67B.js} +2 -2
  125. package/dist/{chunk-OEMFEL26.js → chunk-Y3M2T5RO.js} +3 -3
  126. package/dist/{chunk-HP7KJ5O2.js → chunk-YPQOPFP7.js} +6 -6
  127. package/dist/{chunk-MEHBW2SP.js → chunk-YQYINEJI.js} +6 -6
  128. package/dist/{chunk-RXI7K4J5.js → chunk-ZF6CV4WZ.js} +1338 -217
  129. package/dist/{chunk-3XE4NRLF.js → chunk-ZKJU55MX.js} +4 -2
  130. package/dist/{chunk-526ABLHD.js → chunk-ZKQ63XZ5.js} +12 -35
  131. package/dist/{chunk-PAQVETLA.js → chunk-ZKVMDNAN.js} +5 -5
  132. package/dist/cli/index.js +47 -37
  133. package/dist/{clio-BPBAPZGA.js → clio-JUDCLNHC.js} +7 -7
  134. package/dist/clio-context-tools-FT672MNZ.js +136 -0
  135. package/dist/{code-nav-KBQ3RIFK.js → code-nav-7OVCTP2Z.js} +28 -26
  136. package/dist/{components-6DKAXWFN.js → components-OZXZMDWU.js} +5 -5
  137. package/dist/{config-FWL5JK2H.js → config-P3ZQVF63.js} +80 -75
  138. package/dist/{config-graph-ACDB26L2.js → config-graph-GKAOBAS5.js} +74 -70
  139. package/dist/{configure-ZIZ4YV62.js → configure-25LRYZJG.js} +45 -44
  140. package/dist/context-72VQV7JX.js +73 -0
  141. package/dist/{context-VIL5MFRH.js → context-COWRWXP3.js} +74 -70
  142. package/dist/{context-Z3GOBHDK.js → context-WB3D474G.js} +12 -12
  143. package/dist/{context-clear-ZPB3L7MN.js → context-clear-Y4LYMWC6.js} +70 -66
  144. package/dist/{context-working-set-2GLBVF7L.js → context-working-set-TMZYVC7A.js} +15 -14
  145. package/dist/data-tool-KMBWKKWR.js +2987 -0
  146. package/dist/{detail-VSBWYSGZ.js → detail-4GLROGY5.js} +71 -67
  147. package/dist/{dispatch-runner-EEEHGKX4.js → dispatch-runner-TR3LBP5P.js} +92 -88
  148. package/dist/{docs-VMMWFVHL.js → docs-ZK777W2G.js} +3 -3
  149. package/dist/{doctor-V5L4IQGP.js → doctor-WC4OV2OB.js} +61 -59
  150. package/dist/{eval-VJYJ2BV3.js → eval-FUNWJNUJ.js} +45 -45
  151. package/dist/{evals-J2H5V6DD.js → evals-L73EBHSU.js} +4 -4
  152. package/dist/{evidence-Y35YSXH6.js → evidence-AVJ2RTHX.js} +80 -76
  153. package/dist/{evidence-POWAEBEW.js → evidence-P4NZOAK7.js} +70 -66
  154. package/dist/{evidence-XCCCLS36.js → evidence-Y55WKYHH.js} +79 -75
  155. package/dist/{evolve-GPG72VB6.js → evolve-MAWKRYWF.js} +75 -71
  156. package/dist/{extensions-YIZ7W3DA.js → extensions-PYQH3H47.js} +8 -8
  157. package/dist/{fleet-2MDCQ2VK.js → fleet-M4H2QBWT.js} +84 -80
  158. package/dist/{fleet-W2AF3TOJ.js → fleet-ULBXXRDR.js} +123 -119
  159. package/dist/{fleet-commands-WS56G26H.js → fleet-commands-7NNC4JZU.js} +17 -16
  160. package/dist/{fleet-decisions-MYGZ3JW7.js → fleet-decisions-EHEY7KPU.js} +9 -9
  161. package/dist/{fleet-graph-ELTBXBAV.js → fleet-graph-LQ2AHZT3.js} +15 -15
  162. package/dist/{fleet-inspect-45IK73L4.js → fleet-inspect-5IGBIIYZ.js} +76 -72
  163. package/dist/{fleet-preflight-T5NCZKHE.js → fleet-preflight-UTTNOKMG.js} +7 -2
  164. package/dist/{fleet-validate-VG4JBLA4.js → fleet-validate-YGILJKA6.js} +20 -20
  165. package/dist/{fleet-verify-VTSABAYO.js → fleet-verify-AUWTCDKR.js} +70 -66
  166. package/dist/{fleet-view-XC7WMKSS.js → fleet-view-TGUFCY5A.js} +73 -69
  167. package/dist/{init-VTJNNTIP.js → init-GFN2Z7NF.js} +94 -90
  168. package/dist/{interop-IU6BNA7C.js → interop-EF5JUWWK.js} +21 -21
  169. package/dist/{inventory-QPQUTUUZ.js → inventory-I6VJDDYF.js} +73 -69
  170. package/dist/{library-Q3NWL5CM.js → library-3J5IO2OJ.js} +13 -13
  171. package/dist/{library-LF7DLU6S.js → library-IJTOFTDS.js} +16 -15
  172. package/dist/{library-HUTAS57T.js → library-Z3KZSHPE.js} +27 -27
  173. package/dist/{library-import-PPW4YUC5.js → library-import-IMKFLDHX.js} +21 -21
  174. package/dist/{library-inventory-DIRVFRZU.js → library-inventory-CQP5D6GU.js} +13 -13
  175. package/dist/{library-validation-XHUZ3INE.js → library-validation-33UTX7AI.js} +11 -11
  176. package/dist/mcp-5FWZKUS6.js +26 -0
  177. package/dist/{memory-Z2LSKNV6.js → memory-36CWN67Y.js} +75 -71
  178. package/dist/{models-3FTREYPY.js → models-KQ6PQJJQ.js} +49 -49
  179. package/dist/{monitor-HF2MQRB3.js → monitor-XX6ZD6KC.js} +83 -79
  180. package/dist/{orchestrator-UYPA6W4S.js → orchestrator-SK6HDAOP.js} +1337 -772
  181. package/dist/{panes-736XB73K.js → panes-L27QRXUH.js} +12 -12
  182. package/dist/{panes-C4P3PIWT.js → panes-LXZIWNOZ.js} +4 -4
  183. package/dist/{paths-JQ4QYIYB.js → paths-7DJDU4P4.js} +5 -5
  184. package/dist/{preload-XSLRYH3Y.js → preload-K2TDYI4Y.js} +70 -66
  185. package/dist/{reset-V7QSPZYE.js → reset-73VU3XNT.js} +10 -10
  186. package/dist/{resources-OJGDFHYT.js → resources-3BYJYVYL.js} +16 -16
  187. package/dist/{run-T354SMDW.js → run-AR7PY6GW.js} +132 -128
  188. package/dist/run-script-H2KUDIII.js +41 -0
  189. package/dist/{settings-MWZXO6RV.js → settings-3VMBMWID.js} +4 -4
  190. package/dist/{share-Y5ZKJPND.js → share-HVWH4FPF.js} +21 -21
  191. package/dist/{skills-4GLZC4LN.js → skills-5TYEY75Q.js} +22 -22
  192. package/dist/{skills-eval-L5T7GODM.js → skills-eval-CK3MD63Z.js} +96 -87
  193. package/dist/{skills-inventory-LASKXEZI.js → skills-inventory-KSFYG3I6.js} +16 -16
  194. package/dist/{slash-commands-OIMRU36D.js → slash-commands-DMVHML7P.js} +47 -44
  195. package/dist/{steer-KMAM2Y2C.js → steer-XCD6V3EW.js} +4 -4
  196. package/dist/{support-AWC3XKPX.js → support-JAZL6VBR.js} +7 -7
  197. package/dist/{system-CD75NYBU.js → system-3TDQRMZZ.js} +26 -26
  198. package/dist/{targets-VSZX2J2S.js → targets-EZKHAYRN.js} +66 -65
  199. package/dist/{tasks-AN567LYH.js → tasks-SNEFHWYW.js} +12 -12
  200. package/dist/{terminal-lease-6KTWNHVY.js → terminal-lease-BNLFA4OF.js} +8 -7
  201. package/dist/{tools-AGRK3V5J.js → tools-7IM6BDCE.js} +12 -12
  202. package/dist/{trace-P4MQZD33.js → trace-C3MBGD4S.js} +8 -8
  203. package/dist/{tui-primitives-A6MUW32V.js → tui-primitives-36BY2774.js} +2 -2
  204. package/dist/{uninstall-BRUTEPIC.js → uninstall-WWLOSZ42.js} +10 -10
  205. package/dist/{upgrade-SBCGHQGJ.js → upgrade-ETK2JNSJ.js} +37 -47
  206. package/dist/{usage-BIDVTO6V.js → usage-S2HOB7BZ.js} +93 -89
  207. package/dist/{verifiers-LTGCAMXS.js → verifiers-QDTEVH7R.js} +24 -22
  208. package/dist/{verify-OZU4LLNP.js → verify-SUKUK6XM.js} +15 -14
  209. package/dist/web/client/assets/{abnfDiagram-VCTEODGH-C5wfoHm3.js → abnfDiagram-VCTEODGH-BznNOe_I.js} +1 -1
  210. package/dist/web/client/assets/{arc-oH91sfLl.js → arc-Pry-7G1_.js} +1 -1
  211. package/dist/web/client/assets/architecture-7GRP2DOG-BQO9DL_y.js +1 -0
  212. package/dist/web/client/assets/architectureDiagram-5GKGNRK7-CKPbdvyx.js +36 -0
  213. package/dist/web/client/assets/{blockDiagram-I7D4REHJ-wi0_CYHL.js → blockDiagram-I7D4REHJ-prINbpbM.js} +1 -1
  214. package/dist/web/client/assets/{c4Diagram-7LVT6UL2-DV7NYc2W.js → c4Diagram-7LVT6UL2-DkVRKtyU.js} +1 -1
  215. package/dist/web/client/assets/channel-c4EeUUqA.js +1 -0
  216. package/dist/web/client/assets/{chunk-4HAMMTFA-Bhsegh3F.js → chunk-4HAMMTFA-CV0Z1ApC.js} +1 -1
  217. package/dist/web/client/assets/{chunk-75Z2AOVW-RQCckcQG.js → chunk-75Z2AOVW-D34Nohxq.js} +1 -1
  218. package/dist/web/client/assets/chunk-DU6HZSFF-Das_cS-O.js +125 -0
  219. package/dist/web/client/assets/{chunk-F27PBJKO-BcNqv2x1.js → chunk-F27PBJKO-CmRojxkG.js} +1 -1
  220. package/dist/web/client/assets/{chunk-GMAD6QVW-Bq8JWiZT.js → chunk-GMAD6QVW-ClYZmc73.js} +1 -1
  221. package/dist/web/client/assets/{chunk-GVQU2GXP-DbchrAeJ.js → chunk-GVQU2GXP-B2BiHFt-.js} +1 -1
  222. package/dist/web/client/assets/{chunk-IMKFNOWR-DrpvjocK.js → chunk-IMKFNOWR-BGApZ8nP.js} +1 -1
  223. package/dist/web/client/assets/{chunk-L3NEJ4N5-DHLmTnCe.js → chunk-L3NEJ4N5-DIzCgpkY.js} +1 -1
  224. package/dist/web/client/assets/{chunk-OSK3NFVY-CsRbtN9n.js → chunk-OSK3NFVY-BPT-yePv.js} +1 -1
  225. package/dist/web/client/assets/{chunk-P2QGCYS3-aqPbxoMh.js → chunk-P2QGCYS3-BC1WTc2t.js} +1 -1
  226. package/dist/web/client/assets/{chunk-POPQ4Y6H-Dl5vw0h0.js → chunk-POPQ4Y6H-BSjzBmZU.js} +1 -1
  227. package/dist/web/client/assets/{chunk-PWAF6VOD-D7OBRSdO.js → chunk-PWAF6VOD-BIjLs86Z.js} +1 -1
  228. package/dist/web/client/assets/{chunk-SHT3W25Y-CdKCIwuB.js → chunk-SHT3W25Y-CduDz2cm.js} +1 -1
  229. package/dist/web/client/assets/{chunk-SVP7TREG-B94Nu_1-.js → chunk-SVP7TREG-XUn4pPAP.js} +1 -1
  230. package/dist/web/client/assets/{chunk-TICWLB2K-jjRQI_hk.js → chunk-TICWLB2K-DcBy2DKy.js} +1 -1
  231. package/dist/web/client/assets/{chunk-XXDRQBXY-azkbKE37.js → chunk-XXDRQBXY-DqAYeljN.js} +1 -1
  232. package/dist/web/client/assets/classDiagram-ZZMXUADV-C0HR7YKN.js +1 -0
  233. package/dist/web/client/assets/classDiagram-v2-VYDZK3BY-C0HR7YKN.js +1 -0
  234. package/dist/web/client/assets/cose-bilkent-JH36ORCC-CVh1icwb.js +1 -0
  235. package/dist/web/client/assets/{cynefin-OW5HDTMX--i9RDU5f.js → cynefin-OW5HDTMX-BecPbyM6.js} +1 -1
  236. package/dist/web/client/assets/{cynefinDiagram-5FMLGOSQ-cRcvyBdp.js → cynefinDiagram-5FMLGOSQ-BzMzFwyT.js} +1 -1
  237. package/dist/web/client/assets/{dagre-GXQ25YYZ-C9mZmAPe.js → dagre-GXQ25YYZ-CAWJmRMG.js} +1 -1
  238. package/dist/web/client/assets/{diagram-S7CK7UJ4-Oj_zlLDY.js → diagram-S7CK7UJ4--lp0ALmn.js} +1 -1
  239. package/dist/web/client/assets/{diagram-UQ7AKVKN-BWKbbfcR.js → diagram-UQ7AKVKN-gKUnsjcj.js} +1 -1
  240. package/dist/web/client/assets/{diagram-VSXAHHWV-C3N3f7DO.js → diagram-VSXAHHWV-BoN5D1Gh.js} +1 -1
  241. package/dist/web/client/assets/{diagram-VX7I27RA-CtDKDAWe.js → diagram-VX7I27RA-BMtuswQ6.js} +1 -1
  242. package/dist/web/client/assets/{diagram-Z3DM3KII-B8bkBRCz.js → diagram-Z3DM3KII-DtU8LXrA.js} +1 -1
  243. package/dist/web/client/assets/dist-v5Q1xZ2K.js +1 -0
  244. package/dist/web/client/assets/{ebnfDiagram-PWID7BFC-CskW-Whx.js → ebnfDiagram-PWID7BFC-DDcnv9BH.js} +1 -1
  245. package/dist/web/client/assets/{erDiagram-RLTQ6QDP-C-83cgCW.js → erDiagram-RLTQ6QDP-DvRb4iDL.js} +1 -1
  246. package/dist/web/client/assets/eventmodeling-NTZA5JFV-01h4SbTc.js +1 -0
  247. package/dist/web/client/assets/flowDiagram-HODETNUW-Bll_YZ6T.js +1 -0
  248. package/dist/web/client/assets/framework-YGoR34M4.js +9 -0
  249. package/dist/web/client/assets/ganttDiagram-EL5Y4UJY-DdFZ9hvH.js +292 -0
  250. package/dist/web/client/assets/{gitGraph-4MIJSDKK-B40cQtBE.js → gitGraph-4MIJSDKK-DjD_AAMj.js} +1 -1
  251. package/dist/web/client/assets/{gitGraphDiagram-WWUBYQGX-CH-7P7Di.js → gitGraphDiagram-WWUBYQGX-CDyN9n2u.js} +1 -1
  252. package/dist/web/client/assets/index-CVcy0FAn.js +75 -0
  253. package/dist/web/client/assets/{info-A6RAGUB7-eCCE9D_Q.js → info-A6RAGUB7-C_XK8Hq0.js} +1 -1
  254. package/dist/web/client/assets/{infoDiagram-27XIBGKW-DRnvqMjM.js → infoDiagram-27XIBGKW-DIe4tJ1i.js} +1 -1
  255. package/dist/web/client/assets/{ishikawaDiagram-5VMMS53U-DBA_55wp.js → ishikawaDiagram-5VMMS53U-CVl5unKI.js} +1 -1
  256. package/dist/web/client/assets/{journeyDiagram-3NMN7TZE-C-ewpNl7.js → journeyDiagram-3NMN7TZE-CPEB1Vt8.js} +1 -1
  257. package/dist/web/client/assets/{kanban-definition-UXKFOSKX-B1taGsu0.js → kanban-definition-UXKFOSKX-j-9WXjYQ.js} +1 -1
  258. package/dist/web/client/assets/{line-lZ0kyxDI.js → line-BIDAcEtX.js} +1 -1
  259. package/dist/web/client/assets/{linear-DIc8FgZj.js → linear-SzVmGSw4.js} +1 -1
  260. package/dist/web/client/assets/{mermaid-parser.core-SXolxpXw.js → mermaid-parser.core-Ux4vssh0.js} +3 -3
  261. package/dist/web/client/assets/{mermaid.core-DXgQtkNg.js → mermaid.core-CDuwVKeh.js} +4 -4
  262. package/dist/web/client/assets/{mindmap-definition-YA3MSWOX-DXJas9K7.js → mindmap-definition-YA3MSWOX-5MlQEeQ6.js} +1 -1
  263. package/dist/web/client/assets/{packet-AYTQ26CC-OqVl_07o.js → packet-AYTQ26CC-DRO66c9Q.js} +1 -1
  264. package/dist/web/client/assets/{pegDiagram-XKGWAZYB-CPE_zdfN.js → pegDiagram-XKGWAZYB-BakZnSjM.js} +1 -1
  265. package/dist/web/client/assets/{pie-WAS4IAKB-DAxnMBLe.js → pie-WAS4IAKB-BEzcmhz8.js} +1 -1
  266. package/dist/web/client/assets/{pieDiagram-E7YTZNPT-Uwjpufxv.js → pieDiagram-E7YTZNPT-DpmqgoPt.js} +1 -1
  267. package/dist/web/client/assets/prism-core-BtsZdCS6.js +1 -0
  268. package/dist/web/client/assets/{quadrantDiagram-AXDQQJYC-Bjs4yjgs.js → quadrantDiagram-AXDQQJYC-DuMPwwV2.js} +1 -1
  269. package/dist/web/client/assets/{radar-RG4KPBEZ-CuCKjHM3.js → radar-RG4KPBEZ-Djm3oXl5.js} +1 -1
  270. package/dist/web/client/assets/{railroad-74A4TZTK-CnQK-Cc1.js → railroad-74A4TZTK-Cpvkwsao.js} +1 -1
  271. package/dist/web/client/assets/railroad-abnf-HS5TGJTU-CpRQ3ruG.js +1 -0
  272. package/dist/web/client/assets/railroad-ebnf-LZEXJU2U-1Rm5a5eJ.js +1 -0
  273. package/dist/web/client/assets/railroad-peg-WCYAUIDC-C8344cTh.js +1 -0
  274. package/dist/web/client/assets/{railroadDiagram-O6MQD6OU-BDDIPNLL.js → railroadDiagram-O6MQD6OU-CgMS4B6R.js} +1 -1
  275. package/dist/web/client/assets/{requirementDiagram-BXWQKSXE-B5Ydyxc1.js → requirementDiagram-BXWQKSXE-CX5eoNdN.js} +1 -1
  276. package/dist/web/client/assets/rolldown-runtime-hePW80VL.js +1 -0
  277. package/dist/web/client/assets/{sankeyDiagram-P5KCCOFB-Bw2Qym75.js → sankeyDiagram-P5KCCOFB-CODBX2N3.js} +1 -1
  278. package/dist/web/client/assets/{sequenceDiagram-WJ2MYXX4-BZf36nO0.js → sequenceDiagram-WJ2MYXX4-eUhhF8OR.js} +1 -1
  279. package/dist/web/client/assets/src-B6xuSHsQ.js +1 -0
  280. package/dist/web/client/assets/{stateDiagram-D77RDMKH-DnH6JRkp.js → stateDiagram-D77RDMKH-vR6l0NC2.js} +1 -1
  281. package/dist/web/client/assets/stateDiagram-v2-MP3YSRHH-BYUm8jLY.js +1 -0
  282. package/dist/web/client/assets/{swimlanes-42K2YHIH-D9PZmtZg.js → swimlanes-42K2YHIH-v9Tw_zX7.js} +1 -1
  283. package/dist/web/client/assets/swimlanesDiagram-VR7AAH4N-B2jdCvhD.js +8 -0
  284. package/dist/web/client/assets/{timeline-definition-24CTP7MA-CrkZZBo7.js → timeline-definition-24CTP7MA-DxianbhU.js} +1 -1
  285. package/dist/web/client/assets/{treeView-Q6P3EWNA-C9zDShoC.js → treeView-Q6P3EWNA-DLxnZb9R.js} +1 -1
  286. package/dist/web/client/assets/{treemap-WGGIJYW6-B-plj9yK.js → treemap-WGGIJYW6-I7UnZ6xJ.js} +1 -1
  287. package/dist/web/client/assets/{vennDiagram-4TSXK5OY-VeOdaphN.js → vennDiagram-4TSXK5OY-Ar7M8Mrj.js} +1 -1
  288. package/dist/web/client/assets/{wardley-WFR3VGLG-Wl1P_m6L.js → wardley-WFR3VGLG-B8ZSHeDu.js} +1 -1
  289. package/dist/web/client/assets/{wardleyDiagram-VM6X3IG4-B85-R9t2.js → wardleyDiagram-VM6X3IG4-Qks2FmIn.js} +1 -1
  290. package/dist/web/client/assets/{xychartDiagram-S5SC5T6Z-BrD8OW8m.js → xychartDiagram-S5SC5T6Z-BBBjRtiE.js} +1 -1
  291. package/dist/web/client/index.html +3 -1
  292. package/dist/web/reads-worker.js +17 -17
  293. package/dist/web/server.js +25 -25
  294. package/dist/{web-EU6ATJWA.js → web-EMGUGGEI.js} +3 -3
  295. package/dist/{web-fetch-U22Q7HV4.js → web-fetch-6BRRVQON.js} +22 -5
  296. package/dist/{wiki-generate-LZRLFG6I.js → wiki-generate-XHSJTDOP.js} +104 -100
  297. package/dist/{with-panes-X5CZOGML.js → with-panes-Z6BTEHMZ.js} +11 -11
  298. package/dist/worker/entry.js +101 -87
  299. package/docs/README.md +1 -1
  300. package/docs/architecture/artifact-placement.md +12 -1
  301. package/docs/architecture/library.md +1 -1
  302. package/docs/architecture/prompt-envelope-and-tools.md +37 -27
  303. package/docs/architecture/safety-model.md +19 -6
  304. package/docs/architecture/session-lifecycle.md +10 -4
  305. package/docs/architecture/tui-design.md +37 -14
  306. package/docs/guide/commands-and-modes.md +39 -19
  307. package/docs/guide/configuration-and-targets.md +7 -5
  308. package/docs/guide/configuration-reference.md +116 -13
  309. package/docs/guide/environment-variables.md +2 -5
  310. package/docs/guide/fleet-dispatch.md +3 -2
  311. package/docs/guide/glossary.md +1 -1
  312. package/docs/guide/installation-and-lifecycle.md +2 -2
  313. package/docs/guide/resource-library.md +1 -1
  314. package/docs/guide/tool-usage.md +166 -64
  315. package/docs/guide/troubleshooting.md +1 -1
  316. package/docs/process/documentation-guide.md +1 -0
  317. package/docs/process/fleet-demo-runbook.md +6 -6
  318. package/docs/process/scientific-validation.md +22 -2
  319. package/docs/process/tool-audit-v0.4.9.md +357 -0
  320. package/package.json +1 -1
  321. package/src/cli/argv.ts +31 -0
  322. package/src/cli/clio.ts +17 -13
  323. package/src/cli/config.ts +4 -0
  324. package/src/cli/doctor-panes.ts +1 -1
  325. package/src/cli/doctor.ts +3 -1
  326. package/src/cli/index.ts +14 -1
  327. package/src/cli/mcp.ts +106 -0
  328. package/src/cli/skills-eval.ts +8 -2
  329. package/src/cli/upgrade.ts +34 -38
  330. package/src/cli/verifiers.ts +1 -1
  331. package/src/core/bash-exec.ts +27 -4
  332. package/src/core/config.ts +2 -1
  333. package/src/core/defaults.ts +10 -1
  334. package/src/core/event-bus.ts +1 -1
  335. package/src/core/run-records.ts +438 -0
  336. package/src/core/safe-exec.ts +506 -56
  337. package/src/core/skill-activation.ts +5 -3
  338. package/src/core/termination.ts +3 -3
  339. package/src/core/tool-names.ts +33 -12
  340. package/src/domains/context/clio-md.ts +1 -1
  341. package/src/domains/context/worker/pressure.ts +6 -2
  342. package/src/domains/context/working-set/path-index.ts +7 -2
  343. package/src/domains/dispatch/code-step.ts +7 -2
  344. package/src/domains/dispatch/contract.ts +7 -0
  345. package/src/domains/dispatch/execution-role.ts +3 -3
  346. package/src/domains/dispatch/execution-scheduler.ts +204 -79
  347. package/src/domains/dispatch/extension.ts +131 -14
  348. package/src/domains/dispatch/fleet-preflight.ts +18 -3
  349. package/src/domains/dispatch/fleet-run.ts +1 -0
  350. package/src/domains/dispatch/gate-decisions.ts +3 -3
  351. package/src/domains/dispatch/heartbeat.ts +1 -1
  352. package/src/domains/dispatch/host-verification.ts +16 -14
  353. package/src/domains/dispatch/receipt-findings.ts +3 -4
  354. package/src/domains/dispatch/reservation-store.ts +7 -9
  355. package/src/domains/dispatch/route-facts.ts +1 -1
  356. package/src/domains/dispatch/state.ts +3 -3
  357. package/src/domains/dispatch/types.ts +1 -1
  358. package/src/domains/evidence/build.ts +35 -7
  359. package/src/domains/gateway/mcp/client.ts +923 -0
  360. package/src/domains/gateway/mcp/config.ts +456 -0
  361. package/src/domains/gateway/mcp/index.ts +88 -0
  362. package/src/domains/gateway/mcp/protocol.ts +273 -0
  363. package/src/domains/gateway/mcp/trust.ts +263 -0
  364. package/src/domains/lifecycle/doctor.ts +17 -3
  365. package/src/domains/mux/contract.ts +5 -9
  366. package/src/domains/mux/detect.ts +1 -1
  367. package/src/domains/mux/extension.ts +1 -1
  368. package/src/domains/mux/protocol.ts +5 -7
  369. package/src/domains/mux/socket-client.ts +3 -3
  370. package/src/domains/observability/accountability.ts +2 -2
  371. package/src/domains/observability/contract.ts +7 -3
  372. package/src/domains/observability/evidence-index.ts +2 -2
  373. package/src/domains/observability/projection.ts +10 -0
  374. package/src/domains/prompts/compiler.ts +41 -23
  375. package/src/domains/prompts/fragments/identity/docs-routing.md +2 -2
  376. package/src/domains/prompts/fragments/operating/skills.md +12 -10
  377. package/src/domains/providers/index.ts +5 -1
  378. package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +42 -10
  379. package/src/domains/providers/probe/http.ts +44 -59
  380. package/src/domains/providers/probe/reasoning.ts +2 -0
  381. package/src/domains/providers/runtimes/local-native/llamacpp-embed.ts +20 -31
  382. package/src/domains/providers/runtimes/local-native/llamacpp-rerank.ts +9 -4
  383. package/src/domains/safety/action-classifier.ts +17 -1
  384. package/src/domains/safety/call-target.ts +14 -0
  385. package/src/domains/safety/contract.ts +1 -1
  386. package/src/domains/safety/finish-contract.ts +9 -3
  387. package/src/domains/safety/loop-detector.ts +1 -1
  388. package/src/domains/safety/policy-engine.ts +7 -0
  389. package/src/domains/safety/protected-artifacts.ts +3 -4
  390. package/src/domains/safety/rejection-feedback.ts +1 -1
  391. package/src/domains/safety/scope.ts +2 -3
  392. package/src/domains/safety/validation-contract.ts +3 -2
  393. package/src/domains/scheduling/budget.ts +5 -3
  394. package/src/domains/scheduling/contract.ts +2 -1
  395. package/src/domains/scheduling/extension.ts +3 -3
  396. package/src/domains/session/compaction/branch-summary.ts +1 -1
  397. package/src/domains/session/compaction/compact.ts +25 -2
  398. package/src/domains/session/compaction/cut-point.ts +1 -1
  399. package/src/domains/session/compaction/tokens.ts +5 -10
  400. package/src/domains/session/contract.ts +1 -1
  401. package/src/domains/session/cwd-fallback.ts +2 -2
  402. package/src/domains/session/handoff.ts +5 -1
  403. package/src/domains/session/history.ts +6 -0
  404. package/src/domains/session/manager.ts +14 -7
  405. package/src/domains/session/retry.ts +2 -1
  406. package/src/domains/session/session-artifacts.ts +12 -7
  407. package/src/domains/session/task-board.ts +2 -3
  408. package/src/engine/apis/openai-completions.ts +8 -0
  409. package/src/engine/loop-guard.ts +7 -0
  410. package/src/engine/provider-error-body.ts +65 -0
  411. package/src/engine/session.ts +118 -29
  412. package/src/engine/worker-runtime.ts +3 -0
  413. package/src/entry/boot-options.ts +2 -0
  414. package/src/entry/orchestrator.ts +18 -2
  415. package/src/interactive/chat-loop-policy.ts +1 -0
  416. package/src/interactive/chat-loop.ts +8 -4
  417. package/src/interactive/chat-panel.ts +23 -9
  418. package/src/interactive/chat-renderer.ts +33 -11
  419. package/src/interactive/clio-editor.ts +13 -5
  420. package/src/interactive/dispatch-board.ts +70 -30
  421. package/src/interactive/editor-submit.ts +30 -25
  422. package/src/interactive/footer/widgets.ts +12 -9
  423. package/src/interactive/interactive-presentation.ts +2 -3
  424. package/src/interactive/mux-bridge.ts +3 -7
  425. package/src/interactive/overlay-general-openers.ts +14 -7
  426. package/src/interactive/overlays/cwd-fallback.ts +1 -1
  427. package/src/interactive/overlays/library-model.ts +114 -35
  428. package/src/interactive/overlays/library.ts +52 -5
  429. package/src/interactive/overlays/list-overlay.ts +4 -1
  430. package/src/interactive/overlays/session-selector.ts +28 -23
  431. package/src/interactive/overlays/settings.ts +20 -1
  432. package/src/interactive/overlays/tree-selector.ts +47 -10
  433. package/src/interactive/panes-runtime.ts +1 -1
  434. package/src/interactive/renderers/compaction-summary.ts +1 -1
  435. package/src/interactive/renderers/provider-error.ts +118 -0
  436. package/src/interactive/renderers/retry-status.ts +59 -23
  437. package/src/interactive/renderers/tool-execution.ts +67 -7
  438. package/src/interactive/renderers/worker-answer.ts +198 -0
  439. package/src/interactive/renderers/worker-entry.ts +57 -163
  440. package/src/interactive/slash-commands.ts +26 -1
  441. package/src/interactive/slash-spec.ts +2 -2
  442. package/src/interactive/theme/labels.ts +66 -30
  443. package/src/interactive/turn-persistence.ts +6 -1
  444. package/src/interactive/turn-recovery.ts +2 -1
  445. package/src/interactive/turn-runtime.ts +22 -5
  446. package/src/interactive/view/artifacts.ts +3 -2
  447. package/src/interactive/view/view-overlay.ts +96 -20
  448. package/src/tools/agent-tools.ts +21 -7
  449. package/src/tools/artifact.ts +16 -8
  450. package/src/tools/bash.ts +90 -11
  451. package/src/tools/bootstrap.ts +42 -4
  452. package/src/tools/builtin-tool-catalog.ts +72 -7
  453. package/src/tools/context/index.ts +27 -31
  454. package/src/tools/context/library.ts +3 -1
  455. package/src/tools/context/surface.ts +12 -26
  456. package/src/tools/core-bootstrap.ts +72 -1
  457. package/src/tools/data/csv.ts +1189 -0
  458. package/src/tools/data/index.ts +308 -0
  459. package/src/tools/data/json.ts +1799 -0
  460. package/src/tools/data/jsonl.ts +561 -0
  461. package/src/tools/data/shared.ts +452 -0
  462. package/src/tools/edit-diff.ts +0 -7
  463. package/src/tools/edit.ts +115 -18
  464. package/src/tools/file-mutation-queue.ts +114 -4
  465. package/src/tools/find.ts +108 -29
  466. package/src/tools/gateway/caps.ts +11 -0
  467. package/src/tools/gateway/clio-context-surface.ts +41 -0
  468. package/src/tools/gateway/clio-context-tools.ts +77 -0
  469. package/src/tools/gateway/data-surface.ts +138 -0
  470. package/src/tools/gateway/data-tool.ts +201 -0
  471. package/src/tools/gateway/index.ts +342 -0
  472. package/src/tools/gateway/mcp-capabilities.ts +469 -0
  473. package/src/tools/grep.ts +88 -33
  474. package/src/tools/harness-extensions.ts +3 -0
  475. package/src/tools/ignore-policy.ts +7 -5
  476. package/src/tools/ls.ts +111 -20
  477. package/src/tools/policy.ts +35 -13
  478. package/src/tools/presentation.ts +6 -0
  479. package/src/tools/read.ts +634 -156
  480. package/src/tools/registry.ts +94 -6
  481. package/src/tools/run-script.ts +997 -0
  482. package/src/tools/spawn-hygiene.ts +157 -5
  483. package/src/tools/surface.ts +163 -0
  484. package/src/tools/verify/authoring.ts +8 -3
  485. package/src/tools/verify/catalog.ts +14 -1
  486. package/src/tools/verify/numeric.ts +367 -59
  487. package/src/tools/verify/perf.ts +171 -9
  488. package/src/tools/verify/scripts.ts +178 -26
  489. package/src/tools/web-fetch-surface.ts +22 -0
  490. package/src/tools/web-fetch.ts +26 -1
  491. package/src/tools/write.ts +45 -19
  492. package/dist/chunk-B6UM3OZC.js +0 -15
  493. package/dist/chunk-GJ24ODAX.js +0 -196
  494. package/dist/chunk-LZCCBLRC.js +0 -57
  495. package/dist/web/client/assets/architecture-7GRP2DOG-EGozsYEO.js +0 -1
  496. package/dist/web/client/assets/architectureDiagram-5GKGNRK7-z9FokbJl.js +0 -36
  497. package/dist/web/client/assets/channel-CiUWbHN9.js +0 -1
  498. package/dist/web/client/assets/chunk-DU6HZSFF-C5USiOAy.js +0 -125
  499. package/dist/web/client/assets/classDiagram-ZZMXUADV-CMODalmo.js +0 -1
  500. package/dist/web/client/assets/classDiagram-v2-VYDZK3BY-CMODalmo.js +0 -1
  501. package/dist/web/client/assets/cose-bilkent-JH36ORCC-RbQL23qS.js +0 -1
  502. package/dist/web/client/assets/dist-D0_q-A2b.js +0 -1
  503. package/dist/web/client/assets/eventmodeling-NTZA5JFV-DjVq8wKU.js +0 -1
  504. package/dist/web/client/assets/flowDiagram-HODETNUW-BUiCBGXt.js +0 -1
  505. package/dist/web/client/assets/ganttDiagram-EL5Y4UJY-B2lb8lvF.js +0 -292
  506. package/dist/web/client/assets/index-FSIC94pi.js +0 -83
  507. package/dist/web/client/assets/prism-core-BngLtbUd.js +0 -1
  508. package/dist/web/client/assets/railroad-abnf-HS5TGJTU-BcW01NZG.js +0 -1
  509. package/dist/web/client/assets/railroad-ebnf-LZEXJU2U-B7YCEDDd.js +0 -1
  510. package/dist/web/client/assets/railroad-peg-WCYAUIDC-DjNZbSTZ.js +0 -1
  511. package/dist/web/client/assets/src-yeptRXpt.js +0 -1
  512. package/dist/web/client/assets/stateDiagram-v2-MP3YSRHH-C7QtHeK4.js +0 -1
  513. 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 progress.tailText.split("\n")) {
514
+ for (const line of source) {
502
515
  for (const row of wrapTextWithAnsi(sanitizeCallTargetText(line), railWidth)) wrapped.push(row);
503
516
  }
504
- const shown = wrapped.slice(Math.max(0, wrapped.length - WORKER_PROGRESS_CARD_ROWS));
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
- /** Keep the canonical tier and every summary clause visible by wrapping the value under its card key. */
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 targetLine = truncateToWidth(`${cardKvKey(theme, "target")}${target}`, contentWidth, "…", false);
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
- theme,
628
- "phase",
629
- [phaseCell === null ? theme.fg("dim", "—") : theme.fg("info", phaseCell)],
630
- contentWidth,
631
- ),
632
- targetLine,
633
- ...(row.taskSummary ? cardWrappedValueLines(theme, "task", theme.fg("muted", row.taskSummary), contentWidth) : []),
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
- // Live worker progress is expanded detail, never a default row: five running
680
- // scouts must stay five compact cards until the operator opens one.
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
- bodyLines.push(...progressAnswerLines(theme, row.progress, row.runId, contentWidth));
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", "Delegated runs appear here with task, status, and telemetry.", ""];
926
- return lines.map((line) => {
927
- const padding = Math.max(0, Math.floor((width - visibleWidth(line)) / 2));
928
- return theme.fg("dim", " ".repeat(padding) + line);
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 = "unhandled" | "accepted" | "rejected";
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
- running = [];
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
- if (running.length === 0) return "unhandled";
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) !== "unhandled";
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 !== "unhandled") {
348
- if (submission === "accepted") {
349
- deps.editor.addToHistory(literalText);
350
- deps.editor.setText("");
351
- } else {
352
- // Resolution and dispatch failures are correctable rejections. Pi
353
- // has already cleared the editor, so explicitly restore the draft.
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 !== "unhandled") {
423
- if (submission === "rejected") {
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
- let left = joinSections(theme, [theme.fg("muted", workspace.cwd), git]);
267
-
268
- if (visibleWidth(left) + 1 + visibleWidth(right) > safeWidth) {
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", workspace.cwd);
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", truncateToWidth(workspace.cwd, maxCwdWidth, "…", true));
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
- // The rail is the narrowest of the three, so it drops the spaces.
447
- return formatTargetLabel(current?.chat?.target, current?.chat?.model, { separator: "·" });
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
- * What this bridge deliberately no longer does is open panes. The phase 3/4
18
- * integration projected every dispatch onto a viewer pane in a hidden Fleet
19
- * tab (an `agents` policy knob, a keep-failed close policy, resume adoption,
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 { buildHint, showClioOverlayFrame } from "./overlay-frame.js";
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 = [{ key: "↑↓", verb: "select" }];
354
- if (row) entries.push({ key: "Enter", verb: deps.dispatchBoard.detailExpanded() ? "hide detail" : "detail" });
355
- if (row && isDispatchBoardRowSteerable(row)) entries.push({ key: "s", verb: "steer" });
356
- if (row && isDispatchBoardRowCancellable(row)) entries.push({ key: "x", verb: "cancel" });
357
- return buildHint(entries);
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
  /**
@@ -1,5 +1,5 @@
1
1
  /**
2
- * cwd-fallback overlay (Phase 12 slice 12d).
2
+ * cwd-fallback overlay.
3
3
  *
4
4
  * Two-choice overlay shown after `session.resume(...)` when the recorded
5
5
  * cwd no longer exists on disk (see src/domains/session/cwd-fallback.ts).