@iowarp/clio-coder 0.4.7 → 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 (675) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +111 -0
  3. package/CONTRIBUTING.md +83 -74
  4. package/README.md +69 -47
  5. package/dist/{acp-W3Y3TRHD.js → acp-ZWZCPS2A.js} +15 -15
  6. package/dist/{agents-J4ICNLQ3.js → agents-LYSOWZUE.js} +61 -59
  7. package/dist/assets/codewiki.json +1 -1
  8. package/dist/assets/web-notices/@hono__node-server-LICENSE +21 -0
  9. package/dist/assets/web-notices/hono-LICENSE +21 -0
  10. package/dist/{auth-X2UJUMOC.js → auth-WBQGKWQ5.js} +27 -27
  11. package/dist/background-BUMOBAQN.js +37 -0
  12. package/dist/{builtins-XLXWWSRF.js → builtins-ODRJOEDI.js} +7 -7
  13. package/dist/{chunk-C3G5PNUO.js → chunk-2DRRZ57Q.js} +36 -27
  14. package/dist/chunk-2JBZYUPY.js +105 -0
  15. package/dist/chunk-2KUBKL63.js +336 -0
  16. package/dist/chunk-2VBWFXYE.js +198 -0
  17. package/dist/{chunk-XZ6UFQ52.js → chunk-2X2R3UTH.js} +25 -15
  18. package/dist/{chunk-M6Z2V6YU.js → chunk-37LW32LZ.js} +5 -5
  19. package/dist/{chunk-6LRLOJHQ.js → chunk-3AND2EFU.js} +11 -62
  20. package/dist/{chunk-FQOOGXBH.js → chunk-3RDHGNU7.js} +101 -33
  21. package/dist/{chunk-D2T66PDV.js → chunk-3SUDBGEI.js} +41 -208
  22. package/dist/{chunk-5AJPUR72.js → chunk-3TQN67I2.js} +9 -9
  23. package/dist/{chunk-LBFQMYS3.js → chunk-3U4BL2EV.js} +5 -3
  24. package/dist/{chunk-UFYNOQK4.js → chunk-3UQADNG2.js} +7 -7
  25. package/dist/{chunk-V4ZKOKRB.js → chunk-434LRQ6Z.js} +61 -53
  26. package/dist/{chunk-NO7J45X6.js → chunk-4ATBOFRP.js} +713 -218
  27. package/dist/{chunk-ECOMVOHP.js → chunk-4DNL43EZ.js} +3 -3
  28. package/dist/{chunk-WT5TRMO4.js → chunk-4HFJKRGZ.js} +255 -82
  29. package/dist/{chunk-5A6XR3RJ.js → chunk-555E2WVV.js} +16 -2
  30. package/dist/{chunk-WURGVOZJ.js → chunk-5RTEFNBP.js} +18 -14
  31. package/dist/{config-YXARKGTX.js → chunk-64XJW7NT.js} +24 -268
  32. package/dist/{chunk-24S3DN22.js → chunk-6TKOFFGE.js} +4 -4
  33. package/dist/{chunk-YKRJTYNP.js → chunk-6UJ7RDI7.js} +4 -4
  34. package/dist/{chunk-MZNWZUJM.js → chunk-7FBCRWVT.js} +288 -288
  35. package/dist/{chunk-UA6W4XFJ.js → chunk-7JSOSVLP.js} +2 -2
  36. package/dist/chunk-7N3OLLSL.js +637 -0
  37. package/dist/{chunk-KKEYGFX4.js → chunk-7QQRPB2E.js} +11 -11
  38. package/dist/{chunk-N37QC5FV.js → chunk-A6DULIMH.js} +21 -9
  39. package/dist/{fleet-decisions-S3PTZV2D.js → chunk-AB3QXXBC.js} +5 -41
  40. package/dist/chunk-ACCECAH4.js +49 -0
  41. package/dist/{chunk-CP3HIR5H.js → chunk-AM6CEP2K.js} +20 -19
  42. package/dist/chunk-AUHVBIDW.js +19 -0
  43. package/dist/{chunk-BQQ5MXUC.js → chunk-AY4XE6GN.js} +19 -13
  44. package/dist/{chunk-ISNCCX42.js → chunk-BBA2TAWV.js} +10 -9
  45. package/dist/chunk-BFPHMSK7.js +169 -0
  46. package/dist/{chunk-LVFANMOH.js → chunk-BHJMMCXS.js} +4 -4
  47. package/dist/{chunk-DO7M3LSX.js → chunk-BMNVVKEW.js} +40 -93
  48. package/dist/{chunk-VTYHHQ57.js → chunk-CTGZCEI6.js} +2 -2
  49. package/dist/{chunk-RTLNFZMD.js → chunk-DIAJYJYG.js} +3 -3
  50. package/dist/chunk-EHZRAB4U.js +63 -0
  51. package/dist/{chunk-KS7ETA3P.js → chunk-EM2DIQAJ.js} +3 -3
  52. package/dist/{chunk-MNQN3X6Y.js → chunk-ETF4ROKH.js} +5 -5
  53. package/dist/{chunk-WN552PKN.js → chunk-F2YM3JY4.js} +744 -1134
  54. package/dist/{chunk-7EEGBKV4.js → chunk-FEBQWHJT.js} +24 -19
  55. package/dist/{chunk-4QKAITQT.js → chunk-FPS4R2RN.js} +74 -10
  56. package/dist/chunk-G5R53COU.js +68 -0
  57. package/dist/chunk-GHXGMFQ5.js +40 -0
  58. package/dist/{chunk-GFQ7P2UF.js → chunk-GJDRMBDI.js} +10 -10
  59. package/dist/{chunk-LZBMXNLP.js → chunk-GM4TY6VN.js} +43 -6
  60. package/dist/{chunk-NCCQ6DVS.js → chunk-GREYLTZ5.js} +8 -8
  61. package/dist/{chunk-HOX4YZ2K.js → chunk-H2WSCZZT.js} +19 -3
  62. package/dist/{chunk-3LXJOICS.js → chunk-H6IUCY6Q.js} +2 -2
  63. package/dist/{chunk-BO4XV5VX.js → chunk-H72DCH3E.js} +95 -206
  64. package/dist/{chunk-SEDI5K5B.js → chunk-H7TXJR23.js} +20 -20
  65. package/dist/chunk-HBJQQTKM.js +40 -0
  66. package/dist/chunk-HCVKSGNZ.js +990 -0
  67. package/dist/chunk-HVCAY2FH.js +67 -0
  68. package/dist/{chunk-34XHRVKG.js → chunk-I47EJPYL.js} +3 -3
  69. package/dist/{chunk-4N2RZ4TO.js → chunk-IALGWTLO.js} +3 -3
  70. package/dist/{chunk-IQCNVLO6.js → chunk-IALZJE37.js} +10 -7
  71. package/dist/{chunk-DLIYANB7.js → chunk-IC7JXLOM.js} +16 -11
  72. package/dist/{chunk-G4LGUTOE.js → chunk-IOSVTTCD.js} +5 -5
  73. package/dist/{chunk-DBREN25X.js → chunk-IPTPMLA6.js} +8 -3
  74. package/dist/{chunk-V552WL53.js → chunk-IZZI3SKQ.js} +3 -67
  75. package/dist/{chunk-TN5FW4XY.js → chunk-JIYWMQZ5.js} +12 -9
  76. package/dist/{chunk-T7QQBNLH.js → chunk-JKU34ACI.js} +10 -8
  77. package/dist/chunk-JOBN2YQQ.js +176 -0
  78. package/dist/chunk-JOL2QRLE.js +152 -0
  79. package/dist/{chunk-GXIWHXDB.js → chunk-JTR3VSV3.js} +3 -3
  80. package/dist/{chunk-T334FW2H.js → chunk-JU6MAMRJ.js} +7 -7
  81. package/dist/chunk-JURMQWVJ.js +15 -0
  82. package/dist/{chunk-CULVKYTK.js → chunk-K3XN4LZ4.js} +5 -5
  83. package/dist/{chunk-3T4DXWP6.js → chunk-KIVFXGBM.js} +27 -7
  84. package/dist/chunk-KKRXONXG.js +43 -0
  85. package/dist/{chunk-YPRSNUTC.js → chunk-KOAHT3N2.js} +2 -2
  86. package/dist/chunk-KP5BPXR3.js +73 -0
  87. package/dist/{chunk-UA3W4FGC.js → chunk-KRJQG47M.js} +6 -6
  88. package/dist/{chunk-GI5RRMAH.js → chunk-KW6OJ7IY.js} +19 -21
  89. package/dist/{chunk-A46ILRS2.js → chunk-L3NBWLSN.js} +4 -4
  90. package/dist/{chunk-MZHXENL7.js → chunk-L4RUTLRL.js} +8 -8
  91. package/dist/{chunk-P5SC4DLJ.js → chunk-LGTVWPRN.js} +2 -2
  92. package/dist/{chunk-65BGHOUR.js → chunk-LSQW6KZO.js} +5 -5
  93. package/dist/{chunk-TZHN5ITX.js → chunk-LWJYOHT3.js} +8 -8
  94. package/dist/{chunk-U3TPUXOQ.js → chunk-M6YLF66Z.js} +74 -40
  95. package/dist/chunk-MJ4QEJVT.js +185 -0
  96. package/dist/{chunk-T4TY5GG3.js → chunk-MO65K5CH.js} +5 -5
  97. package/dist/{chunk-TZ6UVP2H.js → chunk-MTOZEQHL.js} +8 -8
  98. package/dist/chunk-MZDPF35R.js +45 -0
  99. package/dist/{chunk-P4DL2LM5.js → chunk-MZKYVIWW.js} +8 -119
  100. package/dist/{chunk-KAFMW7WM.js → chunk-NBPA5QM6.js} +2 -2
  101. package/dist/{chunk-EUEXGXXR.js → chunk-NMBEW4PP.js} +5 -5
  102. package/dist/{chunk-SELG4SUR.js → chunk-NPLLK3HO.js} +72 -89
  103. package/dist/{chunk-VCRVEDUC.js → chunk-NSYGPIVW.js} +5 -5
  104. package/dist/{context-7HJEWTTP.js → chunk-NXTV5OI5.js} +36 -90
  105. package/dist/{chunk-IMOD2YPV.js → chunk-NYDG4QP4.js} +9 -19
  106. package/dist/{chunk-6CA2BHOR.js → chunk-OA2GDACN.js} +5 -5
  107. package/dist/{chunk-A67NR5AT.js → chunk-PJI57EC6.js} +14 -11
  108. package/dist/{chunk-IJMW64DX.js → chunk-PJJBUGMR.js} +50 -50
  109. package/dist/{chunk-CPXGJI2A.js → chunk-PNJE7JPS.js} +20 -5
  110. package/dist/chunk-PP23PZEV.js +1347 -0
  111. package/dist/chunk-PPIFDSBK.js +409 -0
  112. package/dist/{chunk-T52TPHYC.js → chunk-PTFISXQO.js} +8 -7
  113. package/dist/{chunk-C6GEXX4L.js → chunk-QB33Z5S7.js} +5 -5
  114. package/dist/{chunk-VMATUZB6.js → chunk-QGNII5VC.js} +10 -10
  115. package/dist/{chunk-TLTGZTXI.js → chunk-QI72X67S.js} +104 -27
  116. package/dist/chunk-QKHZZFKH.js +98 -0
  117. package/dist/{chunk-PFLOULP3.js → chunk-RDKX2PME.js} +4 -4
  118. package/dist/{chunk-B5ZTR6KZ.js → chunk-RL7LJYN4.js} +1 -1
  119. package/dist/chunk-RPMNIFRY.js +65 -0
  120. package/dist/{chunk-L3Z5ANCV.js → chunk-RQROVOV3.js} +13 -11
  121. package/dist/{chunk-6YHPAAZR.js → chunk-S34A7BSP.js} +3 -3
  122. package/dist/{chunk-5ZSZEYJK.js → chunk-SJETVJHX.js} +2 -2
  123. package/dist/{chunk-77CZRFTE.js → chunk-SJMNU4ZS.js} +2 -2
  124. package/dist/chunk-SLLG2G44.js +85 -0
  125. package/dist/{chunk-GVZFCJHE.js → chunk-SQAZN2V3.js} +48 -22
  126. package/dist/{chunk-2O2LVQQK.js → chunk-SQBT46OF.js} +2 -2
  127. package/dist/{chunk-ZGIGW4ZG.js → chunk-TCUOGIL2.js} +5 -5
  128. package/dist/{chunk-DACXIVVF.js → chunk-TIWPKCVO.js} +5 -5
  129. package/dist/{chunk-5CMARGPF.js → chunk-UIU7MGZ3.js} +11 -2
  130. package/dist/chunk-USBBEKHW.js +177 -0
  131. package/dist/{chunk-WLHX3MM5.js → chunk-V4XJWDHR.js} +21 -11
  132. package/dist/{chunk-MBJO5VNZ.js → chunk-VPWGADBG.js} +33 -33
  133. package/dist/{chunk-UUQ5G6EZ.js → chunk-VWFCAK34.js} +6 -6
  134. package/dist/{chunk-6CB2IL4N.js → chunk-W5RM7YAH.js} +1 -1
  135. package/dist/{chunk-4MFBBY2Z.js → chunk-W72LLZAV.js} +3 -3
  136. package/dist/{chunk-4UHVS5T7.js → chunk-WGRDABW7.js} +8 -8
  137. package/dist/{chunk-XR3XJN2M.js → chunk-WWRV5RJI.js} +4 -4
  138. package/dist/{chunk-24TOGHPO.js → chunk-X6FLVUM5.js} +4 -4
  139. package/dist/{chunk-6YA46L5A.js → chunk-XFLSL7BT.js} +2 -2
  140. package/dist/{chunk-QKWL7SYE.js → chunk-XJZEDCNT.js} +50 -39
  141. package/dist/{chunk-UWD3JD5X.js → chunk-XLLEL3K7.js} +10 -10
  142. package/dist/{chunk-2GPGAE5W.js → chunk-XNIZBOFV.js} +15 -1
  143. package/dist/chunk-XNZWWDC3.js +686 -0
  144. package/dist/{chunk-WBVKKTUT.js → chunk-XRECG65F.js} +2 -2
  145. package/dist/chunk-XTQ7MEJG.js +457 -0
  146. package/dist/{chunk-GEVQNST4.js → chunk-XZWSP67B.js} +2 -2
  147. package/dist/{chunk-WB7POC6M.js → chunk-Y3M2T5RO.js} +6 -6
  148. package/dist/{chunk-RXFPB32E.js → chunk-YJCCMYYT.js} +2 -2
  149. package/dist/{chunk-EUZRMP4Y.js → chunk-YPQOPFP7.js} +20 -20
  150. package/dist/{chunk-USZA7GWL.js → chunk-YQ3GFEUY.js} +2 -2
  151. package/dist/{chunk-BAU36233.js → chunk-YQYINEJI.js} +9 -9
  152. package/dist/{chunk-CE64C5K5.js → chunk-ZF6CV4WZ.js} +1356 -235
  153. package/dist/{chunk-3XE4NRLF.js → chunk-ZKJU55MX.js} +4 -2
  154. package/dist/{chunk-IZYTT3CD.js → chunk-ZKQ63XZ5.js} +16 -39
  155. package/dist/{chunk-6TAATXXH.js → chunk-ZKVMDNAN.js} +7 -7
  156. package/dist/chunk-ZST3FRCV.js +132 -0
  157. package/dist/cli/index.js +50 -38
  158. package/dist/{clio-L2P7S2R2.js → clio-JUDCLNHC.js} +11 -11
  159. package/dist/clio-context-tools-FT672MNZ.js +136 -0
  160. package/dist/{code-nav-B5LNX4KU.js → code-nav-7OVCTP2Z.js} +39 -37
  161. package/dist/{components-63MMQKUT.js → components-OZXZMDWU.js} +11 -11
  162. package/dist/config-P3ZQVF63.js +275 -0
  163. package/dist/config-graph-GKAOBAS5.js +160 -0
  164. package/dist/{configure-LMVQJ46J.js → configure-25LRYZJG.js} +56 -55
  165. package/dist/context-72VQV7JX.js +73 -0
  166. package/dist/{context-YG2LZDYZ.js → context-COWRWXP3.js} +89 -83
  167. package/dist/{context-XSZKKFBW.js → context-WB3D474G.js} +16 -16
  168. package/dist/{context-clear-AC5NXHM2.js → context-clear-Y4LYMWC6.js} +88 -82
  169. package/dist/{context-index-KKTPRV5G.js → context-index-W6A4V7OC.js} +4 -4
  170. package/dist/{context-map-T7ROR5D5.js → context-map-DKL3QT6D.js} +3 -3
  171. package/dist/{context-working-set-F4Q4J3NS.js → context-working-set-TMZYVC7A.js} +27 -25
  172. package/dist/data-tool-KMBWKKWR.js +2987 -0
  173. package/dist/{detail-H73BEF2N.js → detail-4GLROGY5.js} +89 -83
  174. package/dist/{dispatch-runner-3RY5FSJC.js → dispatch-runner-TR3LBP5P.js} +113 -107
  175. package/dist/docs-ZK777W2G.js +101 -0
  176. package/dist/{doctor-EQYJOGUG.js → doctor-WC4OV2OB.js} +76 -73
  177. package/dist/{eval-4P7O6CCE.js → eval-FUNWJNUJ.js} +88 -73
  178. package/dist/{eval-inventory-QOYZERXJ.js → eval-inventory-CX24K2JT.js} +5 -60
  179. package/dist/evals-L73EBHSU.js +104 -0
  180. package/dist/{evidence-O76QF7TZ.js → evidence-AVJ2RTHX.js} +99 -93
  181. package/dist/{evidence-D6GUSYJW.js → evidence-P4NZOAK7.js} +88 -82
  182. package/dist/evidence-Y55WKYHH.js +246 -0
  183. package/dist/{evolve-H47BCETS.js → evolve-MAWKRYWF.js} +93 -87
  184. package/dist/{extensions-NNL3ZOCU.js → extensions-PYQH3H47.js} +14 -13
  185. package/dist/fleet-M4H2QBWT.js +268 -0
  186. package/dist/{fleet-KMNS6NOM.js → fleet-ULBXXRDR.js} +146 -138
  187. package/dist/{fleet-commands-DOWSYCBX.js → fleet-commands-7NNC4JZU.js} +18 -17
  188. package/dist/fleet-decisions-EHEY7KPU.js +52 -0
  189. package/dist/{fleet-graph-F2DE2TME.js → fleet-graph-LQ2AHZT3.js} +24 -24
  190. package/dist/{fleet-inspect-EN2Q6IVB.js → fleet-inspect-5IGBIIYZ.js} +98 -258
  191. package/dist/{fleet-preflight-FRLETDD3.js → fleet-preflight-UTTNOKMG.js} +9 -4
  192. package/dist/{fleet-validate-B2XDLS57.js → fleet-validate-YGILJKA6.js} +29 -29
  193. package/dist/{fleet-verify-4JKUWGJ7.js → fleet-verify-AUWTCDKR.js} +88 -82
  194. package/dist/{fleet-view-BHJFW26B.js → fleet-view-TGUFCY5A.js} +90 -84
  195. package/dist/{init-XAT5N5YM.js → init-GFN2Z7NF.js} +111 -104
  196. package/dist/install-6PIF6F6W.js +19 -0
  197. package/dist/{interop-FVECHFKG.js → interop-EF5JUWWK.js} +29 -29
  198. package/dist/{inventory-7KFQGLCV.js → inventory-I6VJDDYF.js} +90 -84
  199. package/dist/library-3J5IO2OJ.js +75 -0
  200. package/dist/{library-QAPAO23R.js → library-IJTOFTDS.js} +20 -19
  201. package/dist/{library-NY2XOT75.js → library-Z3KZSHPE.js} +35 -35
  202. package/dist/{library-import-5Y6MAS3R.js → library-import-IMKFLDHX.js} +29 -29
  203. package/dist/{library-inventory-JT6HWITQ.js → library-inventory-CQP5D6GU.js} +21 -21
  204. package/dist/{library-validation-EQUH25DC.js → library-validation-33UTX7AI.js} +19 -19
  205. package/dist/mcp-5FWZKUS6.js +26 -0
  206. package/dist/{memory-DYVTTCP6.js → memory-36CWN67Y.js} +93 -87
  207. package/dist/{models-MASFJ6Y2.js → models-KQ6PQJJQ.js} +57 -56
  208. package/dist/{monitor-YMP4NXJJ.js → monitor-XX6ZD6KC.js} +98 -91
  209. package/dist/{orchestrator-AFQRRTEI.js → orchestrator-SK6HDAOP.js} +1537 -832
  210. package/dist/{panes-NICTHQCV.js → panes-L27QRXUH.js} +14 -14
  211. package/dist/{panes-D3Y2KFG5.js → panes-LXZIWNOZ.js} +4 -4
  212. package/dist/{paths-PSFAUIGO.js → paths-7DJDU4P4.js} +6 -6
  213. package/dist/{preload-5Q7VXRFJ.js → preload-K2TDYI4Y.js} +88 -82
  214. package/dist/{reset-7NKZK7JN.js → reset-73VU3XNT.js} +13 -13
  215. package/dist/{resources-NILSIZAT.js → resources-3BYJYVYL.js} +24 -24
  216. package/dist/{run-BPZGEBZV.js → run-AR7PY6GW.js} +144 -136
  217. package/dist/run-script-H2KUDIII.js +41 -0
  218. package/dist/settings-3VMBMWID.js +72 -0
  219. package/dist/{share-EZ6ERBMH.js → share-HVWH4FPF.js} +30 -30
  220. package/dist/{skills-BTVVNYVM.js → skills-5TYEY75Q.js} +30 -30
  221. package/dist/{skills-eval-UY34MNK7.js → skills-eval-CK3MD63Z.js} +114 -103
  222. package/dist/{skills-inventory-JDHSIA7I.js → skills-inventory-KSFYG3I6.js} +24 -24
  223. package/dist/{slash-commands-K4FNQ2AT.js → slash-commands-DMVHML7P.js} +60 -57
  224. package/dist/{steer-2B3EQGFH.js → steer-XCD6V3EW.js} +4 -4
  225. package/dist/{support-L2SOL3IE.js → support-JAZL6VBR.js} +7 -7
  226. package/dist/system-3TDQRMZZ.js +116 -0
  227. package/dist/{targets-44VKGFLN.js → targets-EZKHAYRN.js} +74 -72
  228. package/dist/{tasks-3KODKFU7.js → tasks-SNEFHWYW.js} +18 -18
  229. package/dist/{terminal-lease-LXA7MMPO.js → terminal-lease-BNLFA4OF.js} +8 -7
  230. package/dist/{tools-3UB7TEVR.js → tools-7IM6BDCE.js} +12 -12
  231. package/dist/{trace-TAMIU4OJ.js → trace-C3MBGD4S.js} +16 -65
  232. package/dist/{tui-primitives-A6MUW32V.js → tui-primitives-36BY2774.js} +2 -2
  233. package/dist/{uninstall-QYVRPEM4.js → uninstall-WWLOSZ42.js} +35 -10
  234. package/dist/{upgrade-7PMKM2JH.js → upgrade-ETK2JNSJ.js} +42 -51
  235. package/dist/{usage-6EQV7EQK.js → usage-S2HOB7BZ.js} +112 -102
  236. package/dist/{verifiers-JLITWSHU.js → verifiers-QDTEVH7R.js} +26 -24
  237. package/dist/{verify-T7NAEVIG.js → verify-SUKUK6XM.js} +16 -15
  238. package/dist/web/client/THIRD_PARTY_LICENSES.md +1809 -0
  239. package/dist/web/client/assets/abnfDiagram-VCTEODGH-BznNOe_I.js +1 -0
  240. package/dist/web/client/assets/arc-Pry-7G1_.js +1 -0
  241. package/dist/web/client/assets/architecture-7GRP2DOG-BQO9DL_y.js +1 -0
  242. package/dist/web/client/assets/architectureDiagram-5GKGNRK7-CKPbdvyx.js +36 -0
  243. package/dist/web/client/assets/array-BifhSqXX.js +1 -0
  244. package/dist/web/client/assets/atkinson-hyperlegible-next-latin-ext-wght-normal-C6vrW8VD.woff2 +0 -0
  245. package/dist/web/client/assets/atkinson-hyperlegible-next-latin-wght-normal-BcXVPD7q.woff2 +0 -0
  246. package/dist/web/client/assets/blockDiagram-I7D4REHJ-prINbpbM.js +129 -0
  247. package/dist/web/client/assets/c4Diagram-7LVT6UL2-DkVRKtyU.js +38 -0
  248. package/dist/web/client/assets/channel-c4EeUUqA.js +1 -0
  249. package/dist/web/client/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
  250. package/dist/web/client/assets/chunk-4HAMMTFA-CV0Z1ApC.js +62 -0
  251. package/dist/web/client/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
  252. package/dist/web/client/assets/chunk-75Z2AOVW-D34Nohxq.js +2 -0
  253. package/dist/web/client/assets/chunk-DU6HZSFF-Das_cS-O.js +125 -0
  254. package/dist/web/client/assets/chunk-F27PBJKO-CmRojxkG.js +1 -0
  255. package/dist/web/client/assets/chunk-FOHPRMQF-CoA4358r.js +161 -0
  256. package/dist/web/client/assets/chunk-GMAD6QVW-ClYZmc73.js +72 -0
  257. package/dist/web/client/assets/chunk-GVQU2GXP-B2BiHFt-.js +1 -0
  258. package/dist/web/client/assets/chunk-IMKFNOWR-BGApZ8nP.js +231 -0
  259. package/dist/web/client/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
  260. package/dist/web/client/assets/chunk-L3NEJ4N5-DIzCgpkY.js +1 -0
  261. package/dist/web/client/assets/chunk-OSK3NFVY-BPT-yePv.js +10 -0
  262. package/dist/web/client/assets/chunk-P2QGCYS3-BC1WTc2t.js +1 -0
  263. package/dist/web/client/assets/chunk-POPQ4Y6H-BSjzBmZU.js +1 -0
  264. package/dist/web/client/assets/chunk-PWAF6VOD-BIjLs86Z.js +1 -0
  265. package/dist/web/client/assets/chunk-SHT3W25Y-CduDz2cm.js +168 -0
  266. package/dist/web/client/assets/chunk-SVP7TREG-XUn4pPAP.js +88 -0
  267. package/dist/web/client/assets/chunk-TICWLB2K-DcBy2DKy.js +206 -0
  268. package/dist/web/client/assets/chunk-XXDRQBXY-DqAYeljN.js +1 -0
  269. package/dist/web/client/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
  270. package/dist/web/client/assets/classDiagram-ZZMXUADV-C0HR7YKN.js +1 -0
  271. package/dist/web/client/assets/classDiagram-v2-VYDZK3BY-C0HR7YKN.js +1 -0
  272. package/dist/web/client/assets/commit-mono-latin-400-normal-s0S3qwFW.woff +0 -0
  273. package/dist/web/client/assets/commit-mono-latin-400-normal-wzhe4RuD.woff2 +0 -0
  274. package/dist/web/client/assets/cose-bilkent-JH36ORCC-CVh1icwb.js +1 -0
  275. package/dist/web/client/assets/cynefin-OW5HDTMX-BecPbyM6.js +1 -0
  276. package/dist/web/client/assets/cynefinDiagram-5FMLGOSQ-BzMzFwyT.js +62 -0
  277. package/dist/web/client/assets/cytoscape.esm-c2aL46s-.js +321 -0
  278. package/dist/web/client/assets/dagre-C-rnJpZF.js +1 -0
  279. package/dist/web/client/assets/dagre-GXQ25YYZ-CAWJmRMG.js +4 -0
  280. package/dist/web/client/assets/defaultLocale-BFoDCU3G.js +1 -0
  281. package/dist/web/client/assets/diagram-S7CK7UJ4--lp0ALmn.js +30 -0
  282. package/dist/web/client/assets/diagram-UQ7AKVKN-gKUnsjcj.js +41 -0
  283. package/dist/web/client/assets/diagram-VSXAHHWV-BoN5D1Gh.js +3 -0
  284. package/dist/web/client/assets/diagram-VX7I27RA-BMtuswQ6.js +24 -0
  285. package/dist/web/client/assets/diagram-Z3DM3KII-DtU8LXrA.js +24 -0
  286. package/dist/web/client/assets/dist-v5Q1xZ2K.js +1 -0
  287. package/dist/web/client/assets/ebnfDiagram-PWID7BFC-DDcnv9BH.js +1 -0
  288. package/dist/web/client/assets/erDiagram-RLTQ6QDP-DvRb4iDL.js +99 -0
  289. package/dist/web/client/assets/eventmodeling-NTZA5JFV-01h4SbTc.js +1 -0
  290. package/dist/web/client/assets/flowDiagram-HODETNUW-Bll_YZ6T.js +1 -0
  291. package/dist/web/client/assets/framework-YGoR34M4.js +9 -0
  292. package/dist/web/client/assets/ganttDiagram-EL5Y4UJY-DdFZ9hvH.js +292 -0
  293. package/dist/web/client/assets/gitGraph-4MIJSDKK-DjD_AAMj.js +1 -0
  294. package/dist/web/client/assets/gitGraphDiagram-WWUBYQGX-CDyN9n2u.js +106 -0
  295. package/dist/web/client/assets/graphlib-DS17s2tU.js +1 -0
  296. package/dist/web/client/assets/index-CVcy0FAn.js +75 -0
  297. package/dist/web/client/assets/index-Dsi52apB.css +1 -0
  298. package/dist/web/client/assets/info-A6RAGUB7-C_XK8Hq0.js +1 -0
  299. package/dist/web/client/assets/infoDiagram-27XIBGKW-DIe4tJ1i.js +2 -0
  300. package/dist/web/client/assets/init-C-OQMol4.js +1 -0
  301. package/dist/web/client/assets/ishikawaDiagram-5VMMS53U-CVl5unKI.js +70 -0
  302. package/dist/web/client/assets/journeyDiagram-3NMN7TZE-CPEB1Vt8.js +139 -0
  303. package/dist/web/client/assets/kanban-definition-UXKFOSKX-j-9WXjYQ.js +89 -0
  304. package/dist/web/client/assets/katex-ZlcWpGUi.js +257 -0
  305. package/dist/web/client/assets/line-BIDAcEtX.js +1 -0
  306. package/dist/web/client/assets/linear-SzVmGSw4.js +1 -0
  307. package/dist/web/client/assets/mermaid-parser.core-Ux4vssh0.js +7 -0
  308. package/dist/web/client/assets/mermaid.core-CDuwVKeh.js +44 -0
  309. package/dist/web/client/assets/mindmap-definition-YA3MSWOX-5MlQEeQ6.js +96 -0
  310. package/dist/web/client/assets/newsreader-latin-ext-wght-normal-C-3rgBeH.woff2 +0 -0
  311. package/dist/web/client/assets/newsreader-latin-wght-normal-CCVVNp6i.woff2 +0 -0
  312. package/dist/web/client/assets/newsreader-vietnamese-wght-normal-Czsa-EzN.woff2 +0 -0
  313. package/dist/web/client/assets/ordinal-BDEzSJ7C.js +1 -0
  314. package/dist/web/client/assets/packet-AYTQ26CC-DRO66c9Q.js +1 -0
  315. package/dist/web/client/assets/path-fybaL0A-.js +1 -0
  316. package/dist/web/client/assets/pegDiagram-XKGWAZYB-BakZnSjM.js +1 -0
  317. package/dist/web/client/assets/pie-WAS4IAKB-BEzcmhz8.js +1 -0
  318. package/dist/web/client/assets/pieDiagram-E7YTZNPT-DpmqgoPt.js +39 -0
  319. package/dist/web/client/assets/prism-bash-D6zCJ74D.js +1 -0
  320. package/dist/web/client/assets/prism-c-04YixN25.js +1 -0
  321. package/dist/web/client/assets/prism-clike-DapgWyxx.js +1 -0
  322. package/dist/web/client/assets/prism-core-BtsZdCS6.js +1 -0
  323. package/dist/web/client/assets/prism-cpp-C-lJbC-6.js +1 -0
  324. package/dist/web/client/assets/prism-css-CPgOzxXp.js +1 -0
  325. package/dist/web/client/assets/prism-diff-BF8m0_mq.js +3 -0
  326. package/dist/web/client/assets/prism-docker-DkT6yOFj.js +1 -0
  327. package/dist/web/client/assets/prism-fortran-Be5x3y1V.js +1 -0
  328. package/dist/web/client/assets/prism-go-C_8qAH5n.js +1 -0
  329. package/dist/web/client/assets/prism-ini-BESK3y0r.js +1 -0
  330. package/dist/web/client/assets/prism-javascript-BnO-swvr.js +1 -0
  331. package/dist/web/client/assets/prism-json-Dp_-W-Hv.js +1 -0
  332. package/dist/web/client/assets/prism-jsx-D-D0NWtC.js +1 -0
  333. package/dist/web/client/assets/prism-julia-DIjOgiAV.js +1 -0
  334. package/dist/web/client/assets/prism-latex-DNMbqcH_.js +1 -0
  335. package/dist/web/client/assets/prism-makefile-CRKWLQ8l.js +1 -0
  336. package/dist/web/client/assets/prism-markdown-C0FPJ1Iz.js +1 -0
  337. package/dist/web/client/assets/prism-markup-Cp04rIa1.js +1 -0
  338. package/dist/web/client/assets/prism-matlab-D-nk08al.js +1 -0
  339. package/dist/web/client/assets/prism-python-CfiSVtM6.js +1 -0
  340. package/dist/web/client/assets/prism-r-QmNGR8LX.js +1 -0
  341. package/dist/web/client/assets/prism-rust-Bu9N8X3N.js +1 -0
  342. package/dist/web/client/assets/prism-shell-session-Be4UuYoM.js +1 -0
  343. package/dist/web/client/assets/prism-sql-CYhVDMEE.js +1 -0
  344. package/dist/web/client/assets/prism-toml-DKb54GAT.js +1 -0
  345. package/dist/web/client/assets/prism-tsx-p6J2Kc_4.js +1 -0
  346. package/dist/web/client/assets/prism-typescript-BMqONzxf.js +1 -0
  347. package/dist/web/client/assets/prism-yaml-C0JHu8gr.js +1 -0
  348. package/dist/web/client/assets/purify.es-ChwZkWde.js +3 -0
  349. package/dist/web/client/assets/quadrantDiagram-AXDQQJYC-DuMPwwV2.js +7 -0
  350. package/dist/web/client/assets/radar-RG4KPBEZ-Djm3oXl5.js +1 -0
  351. package/dist/web/client/assets/railroad-74A4TZTK-Cpvkwsao.js +1 -0
  352. package/dist/web/client/assets/railroad-abnf-HS5TGJTU-CpRQ3ruG.js +1 -0
  353. package/dist/web/client/assets/railroad-ebnf-LZEXJU2U-1Rm5a5eJ.js +1 -0
  354. package/dist/web/client/assets/railroad-peg-WCYAUIDC-C8344cTh.js +1 -0
  355. package/dist/web/client/assets/railroadDiagram-O6MQD6OU-CgMS4B6R.js +1 -0
  356. package/dist/web/client/assets/requirementDiagram-BXWQKSXE-CX5eoNdN.js +84 -0
  357. package/dist/web/client/assets/rolldown-runtime-hePW80VL.js +1 -0
  358. package/dist/web/client/assets/rough.esm-Dy-Kn_BL.js +1 -0
  359. package/dist/web/client/assets/sankeyDiagram-P5KCCOFB-CODBX2N3.js +40 -0
  360. package/dist/web/client/assets/sequenceDiagram-WJ2MYXX4-eUhhF8OR.js +162 -0
  361. package/dist/web/client/assets/sizeCapture-INFHLROL-B0uUizjq.js +1 -0
  362. package/dist/web/client/assets/src-B6xuSHsQ.js +1 -0
  363. package/dist/web/client/assets/stateDiagram-D77RDMKH-vR6l0NC2.js +1 -0
  364. package/dist/web/client/assets/stateDiagram-v2-MP3YSRHH-BYUm8jLY.js +1 -0
  365. package/dist/web/client/assets/swimlanes-42K2YHIH-v9Tw_zX7.js +1 -0
  366. package/dist/web/client/assets/swimlanesDiagram-VR7AAH4N-B2jdCvhD.js +8 -0
  367. package/dist/web/client/assets/timeline-definition-24CTP7MA-DxianbhU.js +120 -0
  368. package/dist/web/client/assets/treeView-Q6P3EWNA-DLxnZb9R.js +1 -0
  369. package/dist/web/client/assets/treemap-WGGIJYW6-I7UnZ6xJ.js +1 -0
  370. package/dist/web/client/assets/vennDiagram-4TSXK5OY-Ar7M8Mrj.js +34 -0
  371. package/dist/web/client/assets/wardley-WFR3VGLG-B8ZSHeDu.js +1 -0
  372. package/dist/web/client/assets/wardleyDiagram-VM6X3IG4-Qks2FmIn.js +78 -0
  373. package/dist/web/client/assets/xychartDiagram-S5SC5T6Z-BBBjRtiE.js +7 -0
  374. package/dist/web/client/clio-coder-logo.webp +0 -0
  375. package/dist/web/client/icon-192.png +0 -0
  376. package/dist/web/client/icon-512.png +0 -0
  377. package/dist/web/client/index.html +6 -0
  378. package/dist/web/client/manifest.webmanifest +15 -0
  379. package/dist/web/client/offline.css +55 -0
  380. package/dist/web/client/offline.html +5 -0
  381. package/dist/web/client/offline.js +27 -0
  382. package/dist/web/client/sw.js +34 -0
  383. package/dist/web/ops-worker.js +37 -0
  384. package/dist/web/reads-worker.js +1726 -0
  385. package/dist/web/server.js +8499 -0
  386. package/dist/web-EMGUGGEI.js +13 -0
  387. package/dist/{web-fetch-W4TNW4Q7.js → web-fetch-6BRRVQON.js} +22 -5
  388. package/dist/{wiki-generate-T2TJQJUA.js → wiki-generate-XHSJTDOP.js} +120 -113
  389. package/dist/{with-panes-CHFC7HGI.js → with-panes-Z6BTEHMZ.js} +12 -12
  390. package/dist/worker/entry.js +113 -99
  391. package/docs/README.md +28 -27
  392. package/docs/architecture/acp.md +5 -9
  393. package/docs/architecture/alcf-provider.md +0 -3
  394. package/docs/architecture/architecture.md +0 -3
  395. package/docs/architecture/artifact-placement.md +12 -4
  396. package/docs/architecture/artifact-versions.md +0 -3
  397. package/docs/architecture/capacity-and-scheduling.md +0 -3
  398. package/docs/architecture/context-engine.md +0 -3
  399. package/docs/architecture/context-working-set.md +0 -3
  400. package/docs/architecture/dispatch-architecture-rationale.md +0 -3
  401. package/docs/architecture/dispatch-typed-intent.md +0 -3
  402. package/docs/architecture/evidence-and-memory.md +0 -3
  403. package/docs/architecture/library.md +1 -3
  404. package/docs/architecture/middleware-and-components.md +0 -3
  405. package/docs/architecture/model-catalog.md +1 -4
  406. package/docs/architecture/observability.md +0 -3
  407. package/docs/architecture/pi-boundary.md +6 -9
  408. package/docs/architecture/prompt-envelope-and-tools.md +37 -30
  409. package/docs/architecture/provider-adapter-cookbook.md +1 -4
  410. package/docs/architecture/safety-model.md +19 -9
  411. package/docs/architecture/session-lifecycle.md +10 -7
  412. package/docs/architecture/time-conventions.md +0 -3
  413. package/docs/architecture/trace-store.md +28 -20
  414. package/docs/architecture/tui-design.md +38 -18
  415. package/docs/architecture/worker-context.md +1 -3
  416. package/docs/architecture/worker-dispatch-mechanics.md +1 -4
  417. package/docs/guide/authoring-plugins.md +1 -3
  418. package/docs/guide/built-in-agents.md +0 -3
  419. package/docs/guide/commands-and-modes.md +41 -25
  420. package/docs/guide/configuration-and-targets.md +204 -9
  421. package/docs/guide/configuration-reference.md +125 -17
  422. package/docs/guide/environment-variables.md +2 -8
  423. package/docs/guide/exit-codes-and-output.md +0 -3
  424. package/docs/guide/extensions-and-sharing.md +0 -3
  425. package/docs/guide/fleet-dispatch.md +3 -5
  426. package/docs/guide/glossary.md +1 -4
  427. package/docs/guide/harness-extensions.md +0 -2
  428. package/docs/guide/installation-and-lifecycle.md +3 -6
  429. package/docs/guide/interop.md +0 -2
  430. package/docs/guide/panes-and-files.md +0 -3
  431. package/docs/guide/plugins.md +0 -3
  432. package/docs/guide/proactive-memory.md +0 -3
  433. package/docs/guide/resource-library.md +1 -3
  434. package/docs/guide/skills-marketplace.md +0 -2
  435. package/docs/guide/tool-usage.md +166 -67
  436. package/docs/guide/troubleshooting.md +1 -4
  437. package/docs/history/config-knobs-audit.md +0 -3
  438. package/docs/history/release-cut-checklist.md +0 -3
  439. package/docs/process/development-pipeline.md +0 -3
  440. package/docs/process/documentation-coverage.md +3 -3
  441. package/docs/process/documentation-guide.md +16 -22
  442. package/docs/process/eval-runner.md +0 -3
  443. package/docs/process/evals-internal.md +0 -3
  444. package/docs/process/evolution.md +0 -3
  445. package/docs/process/fleet-demo-runbook.md +6 -9
  446. package/docs/process/git-commit-provenance.md +0 -3
  447. package/docs/process/performance-methodology.md +1 -4
  448. package/docs/process/release-cut-checklist.md +114 -221
  449. package/docs/process/scientific-validation.md +23 -6
  450. package/docs/process/tool-audit-v0.4.9.md +357 -0
  451. package/library/registry.yaml +2 -2
  452. package/library/skills/meta/clio-coder-test/SKILL.md +25 -15
  453. package/library/skills/meta/clio-coder-test/evals.md +16 -2
  454. package/library/skills/meta/clio-coder-test/plugin.json +1 -1
  455. package/library/skills/meta/clio-coder-test/references/test-map.md +19 -18
  456. package/library/skills/registry.yaml +2 -2
  457. package/library/skills/skill-marketplace.json +1 -1
  458. package/package.json +13 -11
  459. package/src/cli/argv.ts +31 -0
  460. package/src/cli/clio.ts +17 -13
  461. package/src/cli/config.ts +4 -0
  462. package/src/cli/docs.ts +65 -328
  463. package/src/cli/doctor-panes.ts +1 -1
  464. package/src/cli/doctor.ts +3 -1
  465. package/src/cli/index.ts +17 -2
  466. package/src/cli/mcp.ts +106 -0
  467. package/src/cli/skills-eval.ts +8 -2
  468. package/src/cli/trace.ts +4 -65
  469. package/src/cli/uninstall.ts +26 -0
  470. package/src/cli/upgrade.ts +34 -38
  471. package/src/cli/usage.ts +3 -0
  472. package/src/cli/verifiers.ts +1 -1
  473. package/src/cli/web.ts +79 -0
  474. package/src/core/bash-exec.ts +27 -4
  475. package/src/core/bus-events.ts +3 -4
  476. package/src/core/config.ts +73 -1
  477. package/src/core/defaults.ts +10 -1
  478. package/src/core/domain-loader.ts +37 -28
  479. package/src/core/event-bus.ts +1 -1
  480. package/src/core/run-records.ts +438 -0
  481. package/src/core/safe-exec.ts +506 -56
  482. package/src/core/skill-activation.ts +5 -3
  483. package/src/core/termination.ts +16 -12
  484. package/src/core/tool-names.ts +33 -12
  485. package/src/domains/agents/contract.ts +1 -1
  486. package/src/domains/agents/extension.ts +18 -10
  487. package/src/domains/config/extension.ts +5 -4
  488. package/src/domains/context/clio-md.ts +1 -1
  489. package/src/domains/context/worker/pressure.ts +6 -2
  490. package/src/domains/context/working-set/path-index.ts +7 -2
  491. package/src/domains/dispatch/code-step.ts +7 -2
  492. package/src/domains/dispatch/contract.ts +7 -0
  493. package/src/domains/dispatch/execution-role.ts +3 -3
  494. package/src/domains/dispatch/execution-scheduler.ts +204 -79
  495. package/src/domains/dispatch/extension.ts +206 -26
  496. package/src/domains/dispatch/fleet-preflight.ts +18 -3
  497. package/src/domains/dispatch/fleet-run.ts +1 -0
  498. package/src/domains/dispatch/gate-decisions.ts +3 -3
  499. package/src/domains/dispatch/heartbeat.ts +1 -1
  500. package/src/domains/dispatch/host-verification.ts +16 -14
  501. package/src/domains/dispatch/index.ts +1 -0
  502. package/src/domains/dispatch/orphan-recovery.ts +1 -0
  503. package/src/domains/dispatch/receipt-findings.ts +3 -4
  504. package/src/domains/dispatch/receipt-integrity.ts +3 -0
  505. package/src/domains/dispatch/reservation-store.ts +7 -9
  506. package/src/domains/dispatch/route-facts.ts +1 -1
  507. package/src/domains/dispatch/state.ts +4 -5
  508. package/src/domains/dispatch/types.ts +3 -1
  509. package/src/domains/eval/metrics/tracked.ts +22 -2
  510. package/src/domains/evidence/build.ts +35 -7
  511. package/src/domains/extensions/operator-runtime.ts +3 -1
  512. package/src/domains/gateway/mcp/client.ts +923 -0
  513. package/src/domains/gateway/mcp/config.ts +456 -0
  514. package/src/domains/gateway/mcp/index.ts +88 -0
  515. package/src/domains/gateway/mcp/protocol.ts +273 -0
  516. package/src/domains/gateway/mcp/trust.ts +263 -0
  517. package/src/domains/lifecycle/doctor.ts +17 -3
  518. package/src/domains/middleware/hooks.ts +2 -2
  519. package/src/domains/mux/contract.ts +5 -9
  520. package/src/domains/mux/detect.ts +1 -1
  521. package/src/domains/mux/extension.ts +1 -1
  522. package/src/domains/mux/protocol.ts +5 -7
  523. package/src/domains/mux/socket-client.ts +3 -3
  524. package/src/domains/observability/accountability.ts +2 -2
  525. package/src/domains/observability/background-memory-usage.ts +3 -0
  526. package/src/domains/observability/compaction-usage.ts +2 -0
  527. package/src/domains/observability/contract.ts +7 -3
  528. package/src/domains/observability/cost.ts +5 -0
  529. package/src/domains/observability/evidence-index.ts +2 -2
  530. package/src/domains/observability/extension.ts +1 -0
  531. package/src/domains/observability/out-of-turn-usage.ts +2 -0
  532. package/src/domains/observability/projection.ts +10 -0
  533. package/src/domains/observability/trace-store.ts +65 -5
  534. package/src/domains/prompts/compiler.ts +41 -23
  535. package/src/domains/prompts/extension.ts +4 -17
  536. package/src/domains/prompts/fragments/identity/docs-routing.md +2 -2
  537. package/src/domains/prompts/fragments/operating/skills.md +12 -10
  538. package/src/domains/providers/cache-deployment.ts +147 -0
  539. package/src/domains/providers/catalog.ts +12 -7
  540. package/src/domains/providers/extension.ts +27 -5
  541. package/src/domains/providers/index.ts +6 -1
  542. package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +42 -10
  543. package/src/domains/providers/plugins.ts +3 -13
  544. package/src/domains/providers/probe/http.ts +44 -59
  545. package/src/domains/providers/probe/reasoning.ts +2 -0
  546. package/src/domains/providers/runtimes/common/local-synth.ts +4 -0
  547. package/src/domains/providers/runtimes/local-native/llamacpp-embed.ts +20 -31
  548. package/src/domains/providers/runtimes/local-native/llamacpp-rerank.ts +9 -4
  549. package/src/domains/providers/types/target-descriptor.ts +17 -0
  550. package/src/domains/safety/action-classifier.ts +17 -1
  551. package/src/domains/safety/call-target.ts +14 -0
  552. package/src/domains/safety/contract.ts +1 -1
  553. package/src/domains/safety/finish-contract.ts +9 -3
  554. package/src/domains/safety/loop-detector.ts +1 -1
  555. package/src/domains/safety/policy-engine.ts +7 -0
  556. package/src/domains/safety/protected-artifacts.ts +3 -4
  557. package/src/domains/safety/rejection-feedback.ts +1 -1
  558. package/src/domains/safety/scope.ts +2 -3
  559. package/src/domains/safety/validation-contract.ts +3 -2
  560. package/src/domains/scheduling/budget.ts +5 -3
  561. package/src/domains/scheduling/contract.ts +2 -1
  562. package/src/domains/scheduling/extension.ts +3 -3
  563. package/src/domains/session/compaction/branch-summary.ts +1 -1
  564. package/src/domains/session/compaction/compact.ts +29 -3
  565. package/src/domains/session/compaction/cut-point.ts +1 -1
  566. package/src/domains/session/compaction/tokens.ts +5 -10
  567. package/src/domains/session/contract.ts +1 -1
  568. package/src/domains/session/cwd-fallback.ts +2 -2
  569. package/src/domains/session/entries.ts +1 -0
  570. package/src/domains/session/handoff.ts +5 -1
  571. package/src/domains/session/history.ts +6 -0
  572. package/src/domains/session/manager.ts +14 -7
  573. package/src/domains/session/retry.ts +2 -1
  574. package/src/domains/session/session-artifacts.ts +12 -7
  575. package/src/domains/session/task-board.ts +2 -3
  576. package/src/domains/session/usage.ts +6 -7
  577. package/src/engine/acp/server.ts +11 -0
  578. package/src/engine/ai.ts +2 -0
  579. package/src/engine/apis/openai-completions.ts +17 -4
  580. package/src/engine/loop-guard.ts +7 -0
  581. package/src/engine/prewarm.ts +232 -0
  582. package/src/engine/provider-diagnostics.ts +6 -1
  583. package/src/engine/provider-error-body.ts +65 -0
  584. package/src/engine/session.ts +118 -29
  585. package/src/engine/worker-runtime.ts +3 -0
  586. package/src/entry/boot-options.ts +2 -0
  587. package/src/entry/orchestrator.ts +38 -18
  588. package/src/interactive/chat-loop-messages.ts +3 -0
  589. package/src/interactive/chat-loop-policy.ts +1 -0
  590. package/src/interactive/chat-loop.ts +10 -12
  591. package/src/interactive/chat-panel.ts +23 -9
  592. package/src/interactive/chat-renderer.ts +33 -11
  593. package/src/interactive/clio-editor.ts +13 -5
  594. package/src/interactive/dispatch-board.ts +70 -30
  595. package/src/interactive/editor-submit.ts +30 -25
  596. package/src/interactive/footer/widgets.ts +12 -9
  597. package/src/interactive/interactive-presentation.ts +2 -3
  598. package/src/interactive/mux-bridge.ts +3 -7
  599. package/src/interactive/overlay-general-openers.ts +14 -7
  600. package/src/interactive/overlays/cwd-fallback.ts +1 -1
  601. package/src/interactive/overlays/library-model.ts +114 -35
  602. package/src/interactive/overlays/library.ts +52 -5
  603. package/src/interactive/overlays/list-overlay.ts +4 -1
  604. package/src/interactive/overlays/session-selector.ts +28 -23
  605. package/src/interactive/overlays/settings.ts +20 -1
  606. package/src/interactive/overlays/tree-selector.ts +47 -10
  607. package/src/interactive/panes-runtime.ts +1 -1
  608. package/src/interactive/prewarm.ts +11 -197
  609. package/src/interactive/renderers/compaction-summary.ts +1 -1
  610. package/src/interactive/renderers/provider-error.ts +118 -0
  611. package/src/interactive/renderers/retry-status.ts +59 -23
  612. package/src/interactive/renderers/tool-execution.ts +67 -7
  613. package/src/interactive/renderers/worker-answer.ts +198 -0
  614. package/src/interactive/renderers/worker-entry.ts +57 -163
  615. package/src/interactive/session-usage-reseed.ts +2 -0
  616. package/src/interactive/side-question.ts +2 -0
  617. package/src/interactive/slash-commands.ts +26 -1
  618. package/src/interactive/slash-spec.ts +2 -2
  619. package/src/interactive/theme/labels.ts +66 -30
  620. package/src/interactive/turn-context.ts +1 -0
  621. package/src/interactive/turn-persistence.ts +9 -1
  622. package/src/interactive/turn-prewarm.ts +126 -19
  623. package/src/interactive/turn-recovery.ts +2 -1
  624. package/src/interactive/turn-runtime.ts +36 -5
  625. package/src/interactive/view/artifacts.ts +3 -2
  626. package/src/interactive/view/view-overlay.ts +96 -20
  627. package/src/tools/agent-tools.ts +21 -7
  628. package/src/tools/artifact.ts +16 -8
  629. package/src/tools/bash.ts +90 -11
  630. package/src/tools/bootstrap.ts +42 -4
  631. package/src/tools/builtin-tool-catalog.ts +80 -11
  632. package/src/tools/context/index.ts +27 -31
  633. package/src/tools/context/library.ts +3 -1
  634. package/src/tools/context/surface.ts +12 -26
  635. package/src/tools/core-bootstrap.ts +72 -1
  636. package/src/tools/data/csv.ts +1189 -0
  637. package/src/tools/data/index.ts +308 -0
  638. package/src/tools/data/json.ts +1799 -0
  639. package/src/tools/data/jsonl.ts +561 -0
  640. package/src/tools/data/shared.ts +452 -0
  641. package/src/tools/edit-diff.ts +0 -7
  642. package/src/tools/edit.ts +115 -18
  643. package/src/tools/file-mutation-queue.ts +114 -4
  644. package/src/tools/find.ts +108 -29
  645. package/src/tools/gateway/caps.ts +11 -0
  646. package/src/tools/gateway/clio-context-surface.ts +41 -0
  647. package/src/tools/gateway/clio-context-tools.ts +77 -0
  648. package/src/tools/gateway/data-surface.ts +138 -0
  649. package/src/tools/gateway/data-tool.ts +201 -0
  650. package/src/tools/gateway/index.ts +342 -0
  651. package/src/tools/gateway/mcp-capabilities.ts +469 -0
  652. package/src/tools/grep.ts +88 -33
  653. package/src/tools/harness-extensions.ts +3 -0
  654. package/src/tools/ignore-policy.ts +7 -5
  655. package/src/tools/ls.ts +111 -20
  656. package/src/tools/policy.ts +35 -13
  657. package/src/tools/presentation.ts +6 -0
  658. package/src/tools/read.ts +634 -156
  659. package/src/tools/registry.ts +106 -8
  660. package/src/tools/run-script.ts +997 -0
  661. package/src/tools/spawn-hygiene.ts +157 -5
  662. package/src/tools/surface.ts +163 -0
  663. package/src/tools/verify/authoring.ts +8 -3
  664. package/src/tools/verify/catalog.ts +14 -1
  665. package/src/tools/verify/numeric.ts +367 -59
  666. package/src/tools/verify/perf.ts +171 -9
  667. package/src/tools/verify/scripts.ts +178 -26
  668. package/src/tools/web-fetch-surface.ts +22 -0
  669. package/src/tools/web-fetch.ts +26 -1
  670. package/src/tools/write.ts +45 -19
  671. package/src/worker/spec-contract.ts +27 -0
  672. package/dist/chunk-B6UM3OZC.js +0 -15
  673. package/dist/chunk-GJ24ODAX.js +0 -196
  674. package/dist/chunk-HRAKUPIH.js +0 -57
  675. package/dist/docs-BL7ROUFN.js +0 -292
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Coalescing wrapper around chat events (slice 12.5d).
2
+ * Coalescing wrapper around chat events.
3
3
  *
4
4
  * Streaming responses fire text, thinking, and cumulative tool-result updates
5
5
  * at very high frequency. The TUI's per-event `requestRender()` call rebuilt the
@@ -53,12 +53,12 @@ import { wrapTextWithAnsi } from "../engine/tui.js";
53
53
  import type { AgentMessage } from "../engine/types.js";
54
54
  import { toolResultPresentationText } from "../tools/result-disposition.js";
55
55
  import type { ChatLoopEvent, RetryStatusPayload } from "./chat-loop.js";
56
- import { isSelfExplainingAbort, toolResultSummary } from "./chat-loop-messages.js";
56
+ import { hasStructuredToolCall, isSelfExplainingAbort, toolResultSummary } from "./chat-loop-messages.js";
57
57
  import type { ChatPanel } from "./chat-panel.js";
58
58
  import { renderBranchSummaryEntry } from "./renderers/branch-summary.js";
59
59
  import { renderCompactionSummaryEntry } from "./renderers/compaction-summary.js";
60
60
  import { styleTaggedNotice } from "./renderers/notice.js";
61
- import { formatRetryStatus } from "./renderers/retry-status.js";
61
+ import { renderRetryStatus } from "./renderers/retry-status.js";
62
62
  import { renderBashTranscriptExecution, renderToolResultOnly } from "./renderers/tool-execution.js";
63
63
  import {
64
64
  classifyStreamEvent,
@@ -644,6 +644,7 @@ const LEADING_SYSTEM_REMINDER = /^\s*<system-reminder>[\s\S]*?<\/system-reminder
644
644
  */
645
645
  function replayedUserText(entry: MessageEntry): string {
646
646
  const obj = payloadObject(entry.payload);
647
+ if (typeof obj?.displayText === "string" && obj.displayText.length > 0) return obj.displayText;
647
648
  if (typeof obj?.operatorText === "string") return obj.operatorText;
648
649
  let text = extractTurnText(entry.payload);
649
650
  for (;;) {
@@ -823,7 +824,13 @@ function renderBashExecutionEntry(
823
824
  );
824
825
  }
825
826
 
826
- function renderRetryStatusEntry(entry: CustomEntry, width: number): string[] {
827
+ function renderRetryStatusEntry(
828
+ entry: CustomEntry,
829
+ width: number,
830
+ detail: TranscriptDetailPolicy,
831
+ unbounded: boolean,
832
+ terminalRows: number,
833
+ ): string[] {
827
834
  const data = payloadObject(entry.data);
828
835
  if (!data) return wrapTextWithAnsi(styleTaggedNotice("[retry] status"), width);
829
836
  const rawPhase = data.phase;
@@ -848,7 +855,7 @@ function renderRetryStatusEntry(entry: CustomEntry, width: number): string[] {
848
855
  ...(typeof data.delayMs === "number" ? { delayMs: data.delayMs } : {}),
849
856
  ...(typeof data.seconds === "number" ? { seconds: data.seconds } : {}),
850
857
  };
851
- return wrapTextWithAnsi(formatRetryStatus(status), width);
858
+ return renderRetryStatus(status, width, detail, unbounded, terminalRows);
852
859
  }
853
860
 
854
861
  /**
@@ -868,8 +875,14 @@ function rendersCustomEntry(entry: CustomEntry): boolean {
868
875
  return entry.display === true;
869
876
  }
870
877
 
871
- function renderCustomEntry(entry: CustomEntry, width: number): string[] {
872
- if (entry.customType === "retryStatus") return renderRetryStatusEntry(entry, width);
878
+ function renderCustomEntry(
879
+ entry: CustomEntry,
880
+ width: number,
881
+ detail: TranscriptDetailPolicy,
882
+ unbounded: boolean,
883
+ terminalRows: number,
884
+ ): string[] {
885
+ if (entry.customType === "retryStatus") return renderRetryStatusEntry(entry, width, detail, unbounded, terminalRows);
873
886
  if (entry.customType === HANDOFF_SEED_CUSTOM_TYPE && isHandoffSeedData(entry.data)) {
874
887
  return wrapTextWithAnsi(styleTaggedNotice(`[handoff] carried from session ${entry.data.fromSessionId}`), width);
875
888
  }
@@ -1211,8 +1224,7 @@ export function buildReplayAgentMessagesFromTurns(
1211
1224
  * Rehydrate a chat panel from a persisted session's turn list. The
1212
1225
  * interactive layer calls this after /resume or /fork so the user sees the
1213
1226
  * prior transcript instead of a blank pane; without it, swapping the
1214
- * session contract updated meta but left the visible chat untouched
1215
- * (Row 51 and Row 52 on the Phase 12 ledger).
1227
+ * session contract updated meta but left the visible chat untouched.
1216
1228
  *
1217
1229
  * Replays a structured SessionEntry stream. Compaction summaries, branch
1218
1230
  * summaries, bash executions, custom entries, and metadata entries are
@@ -1270,9 +1282,16 @@ export function rehydrateChatPanelFromTurns(
1270
1282
  (message as { stopReason?: string; errorMessage?: string }).stopReason = failure.stopReason;
1271
1283
  (message as { stopReason?: string; errorMessage?: string }).errorMessage = failure.errorMessage;
1272
1284
  }
1285
+ const stopReason = (message as { stopReason?: string }).stopReason;
1286
+ const terminalFailure = stopReason === "error" || stopReason === "aborted" || stopReason === "length";
1287
+ const continues = !terminalFailure && (stopReason === "toolUse" || hasStructuredToolCall(message));
1288
+ // Tool-use messages continue this run. Settling before their tool rows
1289
+ // exist can attach a Done receipt to an earlier visible failure.
1290
+ // Keep incomplete replay pending until a terminal assistant arrives.
1291
+ if (continues) chatPanel.applyEvent({ type: "message_start", message });
1273
1292
  chatPanel.applyEvent({ type: "message_end", message });
1274
1293
  runAssistantMessages.push(message);
1275
- chatPanel.applyEvent({ type: "agent_end", messages: runAssistantMessages });
1294
+ if (!continues) chatPanel.applyEvent({ type: "agent_end", messages: runAssistantMessages });
1276
1295
  }
1277
1296
  break;
1278
1297
  }
@@ -1348,7 +1367,10 @@ export function rehydrateChatPanelFromTurns(
1348
1367
  break;
1349
1368
  }
1350
1369
  case "custom":
1351
- if (rendersCustomEntry(entry)) chatPanel.appendReplayBlock((width) => renderCustomEntry(entry, width));
1370
+ if (rendersCustomEntry(entry))
1371
+ chatPanel.appendReplayBlock((width, detail, unbounded, terminalRows = 40) =>
1372
+ renderCustomEntry(entry, width, detail, unbounded === true || options.unboundedToolBodies === true, terminalRows),
1373
+ );
1352
1374
  break;
1353
1375
  case "modelChange":
1354
1376
  chatPanel.appendReplayBlock((width) => renderModelChangeEntry(entry, width));
@@ -11,6 +11,7 @@ import { fitHintEntries } from "./overlay-frame.js";
11
11
  import { type PermissionInspectionHint, permissionHintEntries } from "./permission-hint.js";
12
12
  import type { ClioTheme } from "./theme/index.js";
13
13
  import { clioTheme, editorTheme, GLYPH, rule } from "./theme/index.js";
14
+ import { fitIdentityLabel, formatTargetLabel, type TargetIdentity } from "./theme/labels.js";
14
15
  import type { TurnPreparationPhase } from "./turn-state.js";
15
16
 
16
17
  const REVERSE_VIDEO_BLANK = `${String.fromCharCode(27)}[7m ${String.fromCharCode(27)}[0m`;
@@ -26,8 +27,8 @@ function hasScrollIndicator(line: string): boolean {
26
27
  }
27
28
 
28
29
  export interface EditorChrome {
29
- /** Target+model identity, e.g. `node-a·example-coder-model`. */
30
- getModelLabel: () => string;
30
+ /** Raw route fields from presentation; startup/legacy labels remain opaque strings. */
31
+ getModelLabel: () => TargetIdentity | string;
31
32
  /** Effective thinking level, e.g. `high` / `off`. */
32
33
  getThinkingLabel: () => string;
33
34
  /** Whether Enter currently targets the active Clio response. */
@@ -90,8 +91,15 @@ function styledThinkingHint(theme: ClioTheme, value: string): string {
90
91
  }
91
92
  }
92
93
 
93
- function styledRailLabel(theme: ClioTheme, chrome: EditorChrome): string {
94
- return `${theme.fg("dim", chrome.getModelLabel())} ${theme.fg("dim", "·")} ${styledThinkingHint(theme, chrome.getThinkingLabel())}`;
94
+ function styledRailLabel(theme: ClioTheme, chrome: EditorChrome, width: number): string {
95
+ const thinking = styledThinkingHint(theme, chrome.getThinkingLabel());
96
+ const identity = chrome.getModelLabel();
97
+ const room = Math.max(1, width - visibleWidth(thinking) - 3);
98
+ const model =
99
+ typeof identity === "string"
100
+ ? fitIdentityLabel(identity, room)
101
+ : formatTargetLabel(identity.targetId, identity.modelId, { width: room });
102
+ return `${theme.fg("dim", model)} ${theme.fg("dim", "·")} ${thinking}`;
95
103
  }
96
104
 
97
105
  function composerMode(chrome: EditorChrome, text: string): ComposerMode {
@@ -250,7 +258,7 @@ export class ClioEditor extends Editor {
250
258
  lines[0] = rule(theme, safeWidth, {
251
259
  left: mode,
252
260
  leftToken: modeToken(mode),
253
- right: styledRailLabel(theme, this.chrome),
261
+ right: styledRailLabel(theme, this.chrome, Math.max(1, safeWidth - visibleWidth(mode) - 5)),
254
262
  fillToken: "frameStrong",
255
263
  rightRaw: true,
256
264
  rightTail: theme.style("frameStrong", "─", { bold: true }),
@@ -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).