@iowarp/clio-coder 0.3.9 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (733) hide show
  1. package/CHANGELOG.md +92 -0
  2. package/NOTICE +33 -0
  3. package/README.md +121 -16
  4. package/dist/{acp-7LOELQFP.js → acp-ZILU3AUO.js} +19 -18
  5. package/dist/{agents-FIBG2SHA.js → agents-HYWGBGQR.js} +53 -39
  6. package/dist/assets/codewiki.json +1 -1
  7. package/dist/{auth-OI4LIH2I.js → auth-N3QT7CBO.js} +24 -21
  8. package/dist/{builtins-AD25UL3C.js → builtins-UJLMOVOV.js} +6 -6
  9. package/dist/{chunk-I4HZDVNP.js → chunk-2LEAKD4C.js} +2 -3
  10. package/dist/{chunk-465CC7FK.js → chunk-2NM363SV.js} +60 -64
  11. package/dist/{chunk-4H6ULJ3H.js → chunk-2VG7KLYV.js} +1046 -1370
  12. package/dist/{chunk-SST6Z5JA.js → chunk-336NSSKI.js} +1 -1
  13. package/dist/{chunk-NZU6YDNV.js → chunk-3I5NY75V.js} +5 -5
  14. package/dist/{chunk-47CMYGET.js → chunk-3QSOM6PA.js} +2 -2
  15. package/dist/chunk-42FMPA75.js +101 -0
  16. package/dist/{chunk-HAY4ZE2P.js → chunk-5PSMVOLM.js} +2 -2
  17. package/dist/{chunk-IHKBWSXF.js → chunk-5QIAJV2D.js} +3 -3
  18. package/dist/chunk-5YHDIDBP.js +97 -0
  19. package/dist/chunk-6CCS4G3W.js +1529 -0
  20. package/dist/{chunk-2JDWVJND.js → chunk-6DWBAZ5U.js} +2 -2
  21. package/dist/{chunk-BVDVID7E.js → chunk-6FN3E6KX.js} +6 -6
  22. package/dist/{chunk-DG4M6ZUE.js → chunk-6HMJX2VU.js} +59 -59
  23. package/dist/{chunk-3MRC2YSQ.js → chunk-6I5ILFOF.js} +3 -2
  24. package/dist/chunk-6NJQITNH.js +1412 -0
  25. package/dist/chunk-6VC4OV3Z.js +365 -0
  26. package/dist/{chunk-LU7P4LHA.js → chunk-72GZI5EV.js} +2 -2
  27. package/dist/{chunk-5T7RBWN2.js → chunk-74YWRRU5.js} +9 -8
  28. package/dist/{chunk-VPTUJU4P.js → chunk-7EPLI7VL.js} +2 -2
  29. package/dist/{chunk-CA42X6KT.js → chunk-7OBGU7UB.js} +7 -7
  30. package/dist/{chunk-56KB5IJP.js → chunk-7PWAODYW.js} +3 -3
  31. package/dist/chunk-7RY5VZPH.js +573 -0
  32. package/dist/{chunk-OEDBCISO.js → chunk-ABLSQ6JX.js} +3 -3
  33. package/dist/{chunk-5HFBWUMU.js → chunk-AFKWHWXF.js} +13 -23
  34. package/dist/{chunk-FWDFM5ZU.js → chunk-AK5XEFVZ.js} +3 -3
  35. package/dist/{chunk-WXCJ7VME.js → chunk-AKB4GYDL.js} +7 -7
  36. package/dist/chunk-AP73CFDC.js +308 -0
  37. package/dist/{chunk-4LJX2PUC.js → chunk-BBTJOK6Y.js} +5 -5
  38. package/dist/{chunk-QQ7EKM72.js → chunk-BDPT6GTK.js} +13 -61
  39. package/dist/chunk-BJGUKIG4.js +302 -0
  40. package/dist/chunk-BMS5RKQY.js +27 -0
  41. package/dist/{chunk-TD7UE2L5.js → chunk-BTGG6BG2.js} +81 -40
  42. package/dist/chunk-BTK3SSSK.js +67 -0
  43. package/dist/{chunk-M6L6IDJG.js → chunk-BWH6N36D.js} +1 -1
  44. package/dist/chunk-BWW4HLO4.js +301 -0
  45. package/dist/{chunk-BNAZZHFG.js → chunk-BYP5D4HI.js} +1 -1
  46. package/dist/{chunk-HJB5IUKP.js → chunk-C537JADH.js} +18 -18
  47. package/dist/{chunk-774ILSRL.js → chunk-CDNVLKUX.js} +5 -4
  48. package/dist/{chunk-HPCTNZM2.js → chunk-CTJ4RNAA.js} +4 -4
  49. package/dist/{chunk-AEYBF3TB.js → chunk-CWVRRIEI.js} +2 -2
  50. package/dist/chunk-D4CJV46V.js +462 -0
  51. package/dist/chunk-D7E7WCDF.js +27 -0
  52. package/dist/{chunk-5PVQ4SRS.js → chunk-E67WX76H.js} +10 -126
  53. package/dist/{chunk-FQ4SKYE4.js → chunk-EBY63B7G.js} +2 -5
  54. package/dist/chunk-EIMVLWB3.js +1842 -0
  55. package/dist/{chunk-AMKHQW3C.js → chunk-FEFIFZTL.js} +3 -3
  56. package/dist/{chunk-RAPCMZL4.js → chunk-FSP7CMNU.js} +9 -1
  57. package/dist/{chunk-3DUR4WUA.js → chunk-FYUN5KZ3.js} +25 -25
  58. package/dist/{chunk-MV3K5QF2.js → chunk-GCSMB2KY.js} +2 -2
  59. package/dist/chunk-GIZNH63R.js +40 -0
  60. package/dist/chunk-GPPB3JBE.js +688 -0
  61. package/dist/{chunk-B5XRQOLB.js → chunk-GVQJ5CCZ.js} +17 -11
  62. package/dist/chunk-HHV2GANA.js +88 -0
  63. package/dist/chunk-HJWWJ6IL.js +184 -0
  64. package/dist/{chunk-RKRLDWD3.js → chunk-HLW2MRKE.js} +1 -1
  65. package/dist/chunk-HRQMFLJP.js +75 -0
  66. package/dist/{chunk-AD7Y7STJ.js → chunk-HUAS7ITX.js} +107 -97
  67. package/dist/{chunk-O6I4CIEU.js → chunk-I66EAJFY.js} +6 -6
  68. package/dist/{chunk-S4COXYBG.js → chunk-IG7BCQBA.js} +129 -106
  69. package/dist/{chunk-N3PBVRTZ.js → chunk-IXJT6DCX.js} +9 -7
  70. package/dist/chunk-J4HBWF6Y.js +2635 -0
  71. package/dist/chunk-J5LZHVIT.js +284 -0
  72. package/dist/{chunk-GAYUJ7LE.js → chunk-JA5QWE4Z.js} +544 -227
  73. package/dist/{chunk-B5CSFE7B.js → chunk-JIEGK6UF.js} +6 -174
  74. package/dist/{chunk-VKBMFOYV.js → chunk-JZWT5J3Y.js} +23 -27
  75. package/dist/chunk-K6BF4U2H.js +1785 -0
  76. package/dist/{chunk-CGKSTWHD.js → chunk-K6BSR66V.js} +2 -1
  77. package/dist/{chunk-YSEHGPCT.js → chunk-MA3H6DM5.js} +6 -6
  78. package/dist/{chunk-EBOC7MT3.js → chunk-MOPSG2X7.js} +9 -9
  79. package/dist/{chunk-KV2AOLDF.js → chunk-MQXIVJ35.js} +18 -29
  80. package/dist/{chunk-P3JGPQFL.js → chunk-N5UK64DP.js} +4 -4
  81. package/dist/chunk-NDDGJUXD.js +81 -0
  82. package/dist/chunk-NEKRRTYW.js +56 -0
  83. package/dist/{chunk-4ZG3XFUR.js → chunk-NLFAQR7Z.js} +12 -1
  84. package/dist/{chunk-VO2LKSTM.js → chunk-O42A54GG.js} +2 -2
  85. package/dist/{chunk-T3Z6VAAF.js → chunk-OJTRZGR3.js} +53 -92
  86. package/dist/{chunk-5DQRIYDZ.js → chunk-PBP4B7XR.js} +3 -3
  87. package/dist/{chunk-NQ6UCCOD.js → chunk-PJJ6MY27.js} +8 -8
  88. package/dist/chunk-PMZCIOCJ.js +25 -0
  89. package/dist/{chunk-ZGVHUX3M.js → chunk-PMZVFWSR.js} +2 -2
  90. package/dist/{chunk-7C6RYZGQ.js → chunk-PVAMAVBB.js} +5 -4
  91. package/dist/chunk-QDC3K2U3.js +262 -0
  92. package/dist/{chunk-JEQQR47K.js → chunk-QKIFBZKT.js} +173 -14
  93. package/dist/{chunk-R7LNVMCS.js → chunk-QMXC4JB7.js} +70 -78
  94. package/dist/chunk-QSNYB6ZV.js +195 -0
  95. package/dist/chunk-QTFGO774.js +644 -0
  96. package/dist/{chunk-ODFEOB4F.js → chunk-R23Z6K6I.js} +27 -9
  97. package/dist/{chunk-3UUY7R3Z.js → chunk-R32CLGZ6.js} +14 -14
  98. package/dist/chunk-R346GLFC.js +31 -0
  99. package/dist/chunk-RKSR6VSF.js +132 -0
  100. package/dist/{chunk-N5XKWMDW.js → chunk-SCYB3HA4.js} +73 -27
  101. package/dist/{chunk-PZ4I4JE2.js → chunk-SINK3QR6.js} +135 -125
  102. package/dist/{chunk-5QKCQQ3E.js → chunk-SUW5DORT.js} +2 -2
  103. package/dist/chunk-T56WDKA5.js +183 -0
  104. package/dist/{chunk-ECUO3KDP.js → chunk-TD3PGPQA.js} +87 -26
  105. package/dist/{chunk-HKO36JWF.js → chunk-THYWACCR.js} +31 -3
  106. package/dist/{chunk-LXPJXFM5.js → chunk-TVH4ONAM.js} +18 -12
  107. package/dist/chunk-TVHHYFHE.js +255 -0
  108. package/dist/chunk-U2WB7TZS.js +271 -0
  109. package/dist/{chunk-NNNWO6F2.js → chunk-UAPGZHYC.js} +237 -33
  110. package/dist/{chunk-MIX5N5AC.js → chunk-UEDMSP56.js} +415 -160
  111. package/dist/{chunk-WIE7ZOSW.js → chunk-UXN6JT4W.js} +3 -3
  112. package/dist/{chunk-CMZWFGD2.js → chunk-VAVR4IJY.js} +19 -15
  113. package/dist/{chunk-MV2VUEJC.js → chunk-VEGN6WIQ.js} +2 -2
  114. package/dist/chunk-VKFQTNDV.js +66 -0
  115. package/dist/{chunk-FALJGAWU.js → chunk-VKRH2TCS.js} +2 -2
  116. package/dist/{chunk-A2NJGIB3.js → chunk-VN3SHNBN.js} +2 -2
  117. package/dist/{chunk-XK56QHLX.js → chunk-VPKWYKEY.js} +19 -5
  118. package/dist/{chunk-UOSL25KY.js → chunk-VXMFAE2W.js} +1 -1
  119. package/dist/{chunk-EQ63NRB7.js → chunk-WNP7O5WZ.js} +3 -3
  120. package/dist/chunk-WR6U3OVP.js +45 -0
  121. package/dist/{chunk-TEO2TLVN.js → chunk-XKA2ICR3.js} +1051 -1196
  122. package/dist/{chunk-3V5AYSEQ.js → chunk-Y45G3AXC.js} +72 -65
  123. package/dist/{chunk-J5Q24KAG.js → chunk-Y4CAGMM6.js} +2 -2
  124. package/dist/chunk-YAKGTXEV.js +17 -0
  125. package/dist/{chunk-ZI647VB5.js → chunk-YPI3QQCF.js} +2 -2
  126. package/dist/{chunk-YW7UVM5V.js → chunk-ZAZB4JMW.js} +55 -11
  127. package/dist/{chunk-HCBCAYZU.js → chunk-ZJLUDYFY.js} +11 -11
  128. package/dist/{chunk-HKIYEGME.js → chunk-ZTJUVLTU.js} +2 -2
  129. package/dist/{chunk-IFBNV6H6.js → chunk-ZW55JB7N.js} +3 -3
  130. package/dist/cli/index.js +48 -37
  131. package/dist/clio-IT3G3VQH.js +25 -0
  132. package/dist/{code-nav-LMW275PA.js → code-nav-RK6S7F6E.js} +8 -8
  133. package/dist/codewiki/build-worker.js +1 -1
  134. package/dist/{compile-cache-CVJMMODC.js → compile-cache-OQAVB7Y5.js} +3 -5
  135. package/dist/{components-ZFA3SAER.js → components-UBWCQSRW.js} +6 -6
  136. package/dist/{config-RXS5T3JT.js → config-3QZRWZJF.js} +73 -61
  137. package/dist/configure-FL7Y3KJF.js +54 -0
  138. package/dist/{context-MVOORGMF.js → context-5HE7ODYK.js} +61 -49
  139. package/dist/{context-I3BTOTCS.js → context-KYQFRVDC.js} +11 -11
  140. package/dist/{context-PALKKQYL.js → context-XNHL75JV.js} +43 -28
  141. package/dist/{context-clear-N2WOYZ2K.js → context-clear-N545L53A.js} +60 -48
  142. package/dist/{context-working-set-MIEVECVZ.js → context-working-set-QHKXSV2F.js} +15 -13
  143. package/dist/{dispatch-runner-VVA4SRRH.js → dispatch-runner-RGIE5PCT.js} +109 -72
  144. package/dist/{docs-7LQ23DLM.js → docs-5NAF6AU7.js} +7 -13
  145. package/dist/doctor-ZGPEGHIP.js +772 -0
  146. package/dist/{eval-IJ5VEZDJ.js → eval-GXLL44RD.js} +106 -86
  147. package/dist/eval-inventory-HBWSWQOK.js +315 -0
  148. package/dist/{evidence-L5APPXNV.js → evidence-HWLBRH3Q.js} +209 -51
  149. package/dist/{evolve-RGNKFJ52.js → evolve-FTZBMNVW.js} +57 -45
  150. package/dist/{extensions-7WYWUX5A.js → extensions-VHRBEID7.js} +7 -7
  151. package/dist/{fleet-6CNVBZZP.js → fleet-CKZHJWZJ.js} +215 -114
  152. package/dist/{fleet-commands-L2SXSYEI.js → fleet-commands-EXDXBMV6.js} +13 -12
  153. package/dist/fleet-decisions-OTHB6KRL.js +157 -0
  154. package/dist/{fleet-graph-2J3OOIPO.js → fleet-graph-YTEZUCUT.js} +20 -17
  155. package/dist/fleet-inspect-SS6YMDCK.js +445 -0
  156. package/dist/{fleet-preflight-CZRJ4JP5.js → fleet-preflight-PBY4VYOM.js} +6 -9
  157. package/dist/{fleet-validate-C5RI6DP7.js → fleet-validate-KMEM5L3S.js} +25 -20
  158. package/dist/fleet-verify-QD5M7E7Q.js +178 -0
  159. package/dist/fleet-view-WAMJYNDT.js +94 -0
  160. package/dist/{init-VBN2ACVA.js → init-5XQRBOFV.js} +79 -66
  161. package/dist/install-NKNG7KD4.js +13 -0
  162. package/dist/interop-34TVO25M.js +116 -0
  163. package/dist/{library-JHGUMLY2.js → library-3QY6KF57.js} +25 -21
  164. package/dist/{memory-K4OQIYWG.js → memory-L4UTIIIW.js} +59 -47
  165. package/dist/{models-2NCZUWDD.js → models-ZVX3QOWE.js} +47 -37
  166. package/dist/{monitor-MMVTJABD.js → monitor-CEKVSYTS.js} +67 -57
  167. package/dist/{orchestrator-ZKBPCHW6.js → orchestrator-77BAP6BC.js} +7633 -7699
  168. package/dist/panes-7STHOAUJ.js +103 -0
  169. package/dist/panes-SHAUIRXY.js +60 -0
  170. package/dist/{paths-DBXMZMDU.js → paths-L7LGY6RN.js} +6 -6
  171. package/dist/{reset-DD5JGOY3.js → reset-EOLM7GVE.js} +15 -14
  172. package/dist/resources-74GKTLSF.js +115 -0
  173. package/dist/{run-QEGNX7FL.js → run-HBAUJNNZ.js} +139 -98
  174. package/dist/{share-JKD3BQMW.js → share-G3APVLVP.js} +25 -21
  175. package/dist/{skills-LMQIKDOZ.js → skills-35HHUKCR.js} +37 -27
  176. package/dist/{skills-eval-I7X2774U.js → skills-eval-QN4HSHDC.js} +80 -73
  177. package/dist/skills-inventory-J357J34F.js +129 -0
  178. package/dist/slash-commands-JZZCQA32.js +79 -0
  179. package/dist/{steer-CF5TDANS.js → steer-XAVHJM22.js} +4 -4
  180. package/dist/{support-I7LOJLIF.js → support-U7QOWY26.js} +7 -7
  181. package/dist/{targets-RUSR6B5Z.js → targets-DSM6CY3M.js} +67 -59
  182. package/dist/{terminal-lease-QYVORFR4.js → terminal-lease-JOPFUVEM.js} +15 -10
  183. package/dist/tools-MKNWVPBH.js +29 -0
  184. package/dist/{trace-ODOQIVIW.js → trace-ECQ7TIYZ.js} +194 -7
  185. package/dist/tui-primitives-K5PASC3O.js +17 -0
  186. package/dist/{uninstall-ZJF5H5ZN.js → uninstall-N34PCTGJ.js} +6 -8
  187. package/dist/{upgrade-XANW3FXB.js → upgrade-H7TOM7YL.js} +37 -62
  188. package/dist/{usage-4H7ZRXQT.js → usage-X52N3IDJ.js} +70 -59
  189. package/dist/{verifiers-UZXNBZEB.js → verifiers-EJTVVSMA.js} +174 -14
  190. package/dist/{verify-BVKWTNDL.js → verify-YJL6XET2.js} +12 -11
  191. package/dist/{web-fetch-2YHJ3KTG.js → web-fetch-MPIFL3LL.js} +3 -4
  192. package/dist/{wiki-generate-MY7WV2QI.js → wiki-generate-4NDZTQ4B.js} +86 -75
  193. package/dist/with-panes-OBOBFIIR.js +818 -0
  194. package/dist/worker/entry.js +131 -91
  195. package/docs/README.md +3 -2
  196. package/docs/acp.md +25 -4
  197. package/docs/alcf-provider.md +1 -1
  198. package/docs/architecture.md +2 -2
  199. package/docs/artifact-versions.md +4 -1
  200. package/docs/built-in-agents.md +40 -32
  201. package/docs/capacity-and-scheduling.md +43 -5
  202. package/docs/commands-and-modes.md +39 -4
  203. package/docs/config-knobs-audit.md +3 -0
  204. package/docs/configuration-and-targets.md +138 -167
  205. package/docs/context-engine.md +1 -1
  206. package/docs/development-pipeline.md +19 -0
  207. package/docs/dispatch-typed-intent.md +385 -0
  208. package/docs/documentation-coverage.md +2 -2
  209. package/docs/documentation-guide.md +1 -1
  210. package/docs/environment-variables.md +3 -1
  211. package/docs/eval-runner.md +1 -1
  212. package/docs/evals-internal.md +1 -1
  213. package/docs/evidence-and-memory.md +2 -2
  214. package/docs/evolution.md +1 -1
  215. package/docs/exit-codes-and-output.md +3 -1
  216. package/docs/extensions-and-sharing.md +25 -1
  217. package/docs/fleet-demo-runbook.md +6 -3
  218. package/docs/fleet-dispatch.md +30 -7
  219. package/docs/installation-and-lifecycle.md +16 -3
  220. package/docs/middleware-and-components.md +1 -1
  221. package/docs/model-catalog.md +10 -1
  222. package/docs/observability.md +3 -3
  223. package/docs/proactive-memory.md +1 -1
  224. package/docs/prompt-envelope-and-tools.md +1 -1
  225. package/docs/provider-adapter-cookbook.md +1 -1
  226. package/docs/release-cut-checklist.md +164 -177
  227. package/docs/safety-model.md +2 -2
  228. package/docs/scientific-validation.md +3 -3
  229. package/docs/session-lifecycle.md +1 -1
  230. package/docs/skills-marketplace.md +1 -1
  231. package/docs/tool-usage.md +18 -8
  232. package/docs/trace-store.md +16 -11
  233. package/docs/troubleshooting.md +2 -2
  234. package/docs/tui-design.md +1 -1
  235. package/docs/worker-dispatch-mechanics.md +1 -1
  236. package/evals/README.md +5 -0
  237. package/evals/behavioral-corpus-grader.mjs +103 -0
  238. package/evals/behavioral-machinery-baseline.json +2276 -0
  239. package/evals/behavioral-machinery-driver.ts +250 -0
  240. package/evals/behavioral-machinery-support.ts +253 -0
  241. package/evals/behavioral-machinery.yaml +614 -0
  242. package/evals/behavioral-model-negative-control.yaml +68 -0
  243. package/evals/behavioral-model.yaml +216 -0
  244. package/evals/fixtures/behavioral-facts.txt +3 -0
  245. package/evals/fixtures/behavioral-main.ts +7 -0
  246. package/evals/fixtures/decoy/note.txt +2 -0
  247. package/evals/fixtures/private/credentials.txt +1 -0
  248. package/evals/tracked-metrics-baseline.yaml +229 -0
  249. package/evals/tracked-metrics-grader.mjs +129 -0
  250. package/package.json +8 -16
  251. package/skills/README.md +6 -6
  252. package/skills/coding/ast-grep/SKILL.md +8 -2
  253. package/skills/coding/coding-standards/SKILL.md +8 -2
  254. package/skills/coding/prototype/SKILL.md +8 -2
  255. package/skills/coding/tdd/SKILL.md +8 -2
  256. package/skills/context/context-handoff/SKILL.md +12 -3
  257. package/skills/context/context-handoff/evals.md +3 -3
  258. package/skills/context/context-prime/SKILL.md +8 -2
  259. package/skills/context/context-prime/evals.md +2 -2
  260. package/skills/git/file-ticket/SKILL.md +9 -4
  261. package/skills/git/file-ticket/evals.md +2 -2
  262. package/skills/git/fix-issue/SKILL.md +12 -5
  263. package/skills/git/fix-issue/evals.md +4 -4
  264. package/skills/git/resolve-merge-conflicts/SKILL.md +8 -2
  265. package/skills/git/resolve-merge-conflicts/evals.md +2 -2
  266. package/skills/git/ship/SKILL.md +9 -3
  267. package/skills/git/ship/evals.md +4 -4
  268. package/skills/git/worktree-create/SKILL.md +7 -2
  269. package/skills/git/worktree-create/evals.md +6 -6
  270. package/skills/git/worktree-merge/SKILL.md +7 -2
  271. package/skills/git/worktree-merge/evals.md +6 -6
  272. package/skills/meta/{clio-dev → clio-coder-dev}/SKILL.md +14 -8
  273. package/skills/meta/{clio-dev → clio-coder-dev}/evals.md +3 -3
  274. package/skills/meta/{clio-test → clio-coder-test}/SKILL.md +11 -5
  275. package/skills/meta/{clio-test → clio-coder-test}/evals.md +1 -1
  276. package/skills/meta/credentials/SKILL.md +9 -2
  277. package/skills/meta/find-skills/SKILL.md +8 -2
  278. package/skills/meta/herdr/SKILL.md +8 -2
  279. package/skills/meta/skill-craft/SKILL.md +21 -4
  280. package/skills/planning/architecture/SKILL.md +9 -3
  281. package/skills/planning/backlog/SKILL.md +8 -2
  282. package/skills/planning/prd/SKILL.md +8 -2
  283. package/skills/planning/product-intent/SKILL.md +8 -2
  284. package/skills/planning/tech-spec/SKILL.md +9 -3
  285. package/skills/registry.yaml +66 -66
  286. package/skills/research/arxiv-literature/SKILL.md +8 -2
  287. package/skills/research/experiment-protocol/SKILL.md +9 -2
  288. package/skills/research/scientific-debugging/SKILL.md +9 -2
  289. package/skills/research/scientific-debugging/evals.md +2 -2
  290. package/skills/research/scientific-modernization/SKILL.md +9 -2
  291. package/skills/skill-marketplace.json +257 -38
  292. package/skills/workflow/cut-it/SKILL.md +10 -2
  293. package/skills/workflow/design-council/SKILL.md +11 -2
  294. package/skills/workflow/grill-me/SKILL.md +8 -2
  295. package/skills/workflow/workflow-distiller/SKILL.md +8 -2
  296. package/src/cli/acp.ts +8 -4
  297. package/src/cli/argv.ts +25 -0
  298. package/src/cli/auth.ts +2 -2
  299. package/src/cli/bootstrap-generate.ts +5 -5
  300. package/src/cli/clio.ts +6 -1
  301. package/src/cli/config-inspect.ts +3 -3
  302. package/src/cli/configure-interop.ts +1 -1
  303. package/src/cli/configure.ts +50 -48
  304. package/src/cli/default-target.ts +1 -1
  305. package/src/cli/docs.ts +6 -6
  306. package/src/cli/doctor-naming.ts +323 -0
  307. package/src/cli/doctor-panes.ts +156 -0
  308. package/src/cli/doctor-toolchain.ts +78 -0
  309. package/src/cli/doctor.ts +34 -1
  310. package/src/cli/eval-inventory.ts +436 -0
  311. package/src/cli/eval.ts +13 -0
  312. package/src/cli/evidence-detail.ts +88 -0
  313. package/src/cli/evidence-inventory.ts +183 -0
  314. package/src/cli/evidence.ts +30 -5
  315. package/src/cli/fleet-decisions.ts +69 -0
  316. package/src/cli/fleet-inspect.ts +334 -0
  317. package/src/cli/fleet-preflight.ts +1 -1
  318. package/src/cli/fleet-verify.ts +133 -0
  319. package/src/cli/fleet-view.ts +827 -0
  320. package/src/cli/fleet.ts +154 -40
  321. package/src/cli/index.ts +14 -2
  322. package/src/cli/interop-inspect.ts +128 -0
  323. package/src/cli/interop.ts +34 -0
  324. package/src/cli/models.ts +3 -3
  325. package/src/cli/modes/print.ts +1 -1
  326. package/src/cli/panes.ts +35 -0
  327. package/src/cli/reset.ts +6 -3
  328. package/src/cli/run.ts +67 -13
  329. package/src/cli/share.ts +1 -1
  330. package/src/cli/skills-eval.ts +11 -11
  331. package/src/cli/skills-inventory.ts +185 -0
  332. package/src/cli/skills.ts +16 -13
  333. package/src/cli/targets.ts +23 -24
  334. package/src/cli/tools.ts +321 -0
  335. package/src/cli/trace-inspect.ts +252 -0
  336. package/src/cli/trace.ts +64 -2
  337. package/src/cli/uninstall.ts +2 -2
  338. package/src/cli/upgrade.ts +29 -34
  339. package/src/cli/usage.ts +2 -2
  340. package/src/cli/validate-model.ts +1 -1
  341. package/src/cli/verifiers-inspect.ts +347 -0
  342. package/src/cli/verifiers.ts +9 -0
  343. package/src/cli/wiki-generate.ts +5 -5
  344. package/src/core/bash-exec.ts +1 -1
  345. package/src/core/boot-trace.ts +3 -3
  346. package/src/core/bus-events.ts +4 -0
  347. package/src/core/bus-trace.ts +2 -2
  348. package/src/core/compile-cache.ts +1 -1
  349. package/src/core/config.ts +1070 -845
  350. package/src/core/defaults.ts +342 -463
  351. package/src/core/domain-loader.ts +6 -4
  352. package/src/core/event-bus.ts +1 -1
  353. package/src/core/file-references.ts +78 -88
  354. package/src/core/git-commit-attribution.ts +3 -9
  355. package/src/core/guardrails.ts +24 -4
  356. package/src/core/naming-compat.ts +45 -0
  357. package/src/core/naming-events.ts +62 -0
  358. package/src/core/recent-models.ts +1 -7
  359. package/src/core/residency-protection.ts +4 -8
  360. package/src/core/resolve-config-value.ts +1 -1
  361. package/src/core/response-model-id.ts +0 -14
  362. package/src/core/response-schema.ts +44 -4
  363. package/src/core/session-routing.ts +84 -74
  364. package/src/core/skill-activation.ts +18 -0
  365. package/src/core/termination.ts +4 -4
  366. package/src/core/theme-token-hex.ts +43 -0
  367. package/src/core/timers.ts +2 -12
  368. package/src/core/tool-names.ts +2 -1
  369. package/src/core/xdg.ts +1 -1
  370. package/src/domains/agents/catalog.ts +2 -12
  371. package/src/domains/agents/extension.ts +3 -3
  372. package/src/domains/agents/fleets/build-review.md +0 -3
  373. package/src/domains/agents/fleets/build-test.md +0 -3
  374. package/src/domains/agents/registry.ts +7 -7
  375. package/src/domains/agents/result-contract-filesystem.ts +32 -0
  376. package/src/domains/agents/result-contract.ts +165 -36
  377. package/src/domains/agents/spec.ts +0 -11
  378. package/src/domains/config/classify.ts +37 -46
  379. package/src/domains/config/extension.ts +5 -5
  380. package/src/domains/config/keybindings.ts +48 -47
  381. package/src/domains/config/watcher.ts +1 -1
  382. package/src/domains/context/codewiki/indexer.ts +1 -1
  383. package/src/domains/context/extension.ts +3 -3
  384. package/src/domains/context/prompt-context.ts +1 -1
  385. package/src/domains/context/wiki/assemble.ts +2 -2
  386. package/src/domains/context/working-set/replay/metrics.ts +0 -4
  387. package/src/domains/context/working-set/replay/report.ts +1 -1
  388. package/src/domains/context/working-set/replay/synthetic.ts +2 -2
  389. package/src/domains/dispatch/active-route-planner.ts +2 -2
  390. package/src/domains/dispatch/admission-error.ts +9 -0
  391. package/src/domains/dispatch/admission.ts +22 -21
  392. package/src/domains/dispatch/agent-candidates.ts +1 -1
  393. package/src/domains/dispatch/agent-ledger-store.ts +1 -1
  394. package/src/domains/dispatch/agent-ledger.ts +1 -1
  395. package/src/domains/dispatch/assignment.ts +5 -5
  396. package/src/domains/dispatch/capacity-lease.ts +23 -6
  397. package/src/domains/dispatch/code-step.ts +1 -1
  398. package/src/domains/dispatch/contract.ts +2 -2
  399. package/src/domains/dispatch/council-topology.ts +398 -0
  400. package/src/domains/dispatch/extension.ts +287 -111
  401. package/src/domains/dispatch/fleet-node-prompt.ts +62 -0
  402. package/src/domains/dispatch/fleet-plan.ts +7 -2
  403. package/src/domains/dispatch/fleet-preflight.ts +8 -17
  404. package/src/domains/dispatch/fleet-run.ts +59 -3
  405. package/src/domains/dispatch/gate-decisions.ts +36 -15
  406. package/src/domains/dispatch/gate-role-prompts.ts +9 -0
  407. package/src/domains/dispatch/gate-topology.ts +289 -0
  408. package/src/domains/dispatch/index.ts +19 -0
  409. package/src/domains/dispatch/intent-compatibility.ts +330 -0
  410. package/src/domains/dispatch/intent.ts +85 -1
  411. package/src/domains/dispatch/joint-route-resolver.ts +1 -1
  412. package/src/domains/dispatch/path-scope.ts +0 -61
  413. package/src/domains/dispatch/placement.ts +2 -2
  414. package/src/domains/dispatch/receipt-findings.ts +1 -1
  415. package/src/domains/dispatch/receipt-integrity.ts +20 -8
  416. package/src/domains/dispatch/reservation-store.ts +24 -27
  417. package/src/domains/dispatch/route-decision.ts +1 -1
  418. package/src/domains/dispatch/route-history.ts +1 -1
  419. package/src/domains/dispatch/route-policy.ts +1 -1
  420. package/src/domains/dispatch/route-readiness.ts +0 -28
  421. package/src/domains/dispatch/run-event-journal-bridge.ts +149 -0
  422. package/src/domains/dispatch/run-event-journal.ts +599 -0
  423. package/src/domains/dispatch/state.ts +45 -1
  424. package/src/domains/dispatch/tool-stats.ts +1 -1
  425. package/src/domains/dispatch/transport.ts +2 -19
  426. package/src/domains/dispatch/types.ts +16 -3
  427. package/src/domains/dispatch/validation.ts +33 -8
  428. package/src/domains/dispatch/worker-protocol.ts +2 -2
  429. package/src/domains/eval/artifacts/store.ts +5 -4
  430. package/src/domains/eval/compare/compare.ts +3 -16
  431. package/src/domains/eval/compare/thresholds.ts +0 -8
  432. package/src/domains/eval/execution-provenance.ts +1 -1
  433. package/src/domains/eval/inventory.ts +113 -0
  434. package/src/domains/eval/metrics/token-stream.ts +0 -7
  435. package/src/domains/eval/report.ts +1 -1
  436. package/src/domains/eval/runner.ts +1 -1
  437. package/src/domains/eval/runners/clio-run.ts +7 -6
  438. package/src/domains/eval/runners/external-command.ts +4 -3
  439. package/src/domains/eval/schema/artifact.ts +1 -1
  440. package/src/domains/eval/schema/behavioral-metrics.ts +3 -2
  441. package/src/domains/eval/schema/behavioral.ts +7 -6
  442. package/src/domains/eval/schema/execution-envelope.ts +4 -2
  443. package/src/domains/eval/schema/naming.ts +10 -0
  444. package/src/domains/eval/schema/serving.ts +31 -0
  445. package/src/domains/eval/schema/suite.ts +2 -2
  446. package/src/domains/eval/schema/validate.ts +9 -5
  447. package/src/domains/eval/schema/verdict.ts +4 -2
  448. package/src/domains/eval/store.ts +12 -2
  449. package/src/domains/eval/suites/run.ts +12 -6
  450. package/src/domains/eval/types.ts +1 -1
  451. package/src/domains/eval/workspaces/git.ts +1 -1
  452. package/src/domains/eval/workspaces/temp-copy.ts +1 -1
  453. package/src/domains/evidence/build.ts +13 -5
  454. package/src/domains/evidence/store.ts +6 -0
  455. package/src/domains/interop/consent.ts +7 -7
  456. package/src/domains/interop/extension.ts +1 -1
  457. package/src/domains/lifecycle/doctor.ts +27 -21
  458. package/src/domains/lifecycle/migrations/2026-09-01-clio-coder-naming.ts +155 -0
  459. package/src/domains/lifecycle/migrations/2026-09-01-retire-panes-knobs.ts +59 -0
  460. package/src/domains/lifecycle/migrations/2026-09-01-settings-v2.ts +338 -0
  461. package/src/domains/lifecycle/migrations/index.ts +20 -1
  462. package/src/domains/lifecycle/naming-history.ts +153 -0
  463. package/src/domains/lifecycle/naming-mutable-state.ts +104 -0
  464. package/src/domains/lifecycle/naming-resources.ts +261 -0
  465. package/src/domains/lifecycle/naming-tool-markers.ts +139 -0
  466. package/src/domains/lifecycle/naming-yazi.ts +81 -0
  467. package/src/domains/lifecycle/upgrade-notice.ts +1 -1
  468. package/src/domains/memory/index.ts +0 -1
  469. package/src/domains/memory/task-memory-handoff.ts +6 -3
  470. package/src/domains/memory/task-memory-policy.ts +6 -10
  471. package/src/domains/memory/task-memory-telemetry.ts +1 -0
  472. package/src/domains/middleware/index.ts +7 -0
  473. package/src/domains/middleware/marketplace-offer.ts +339 -0
  474. package/src/domains/middleware/memory-intervention.ts +33 -21
  475. package/src/domains/middleware/runtime.ts +2 -2
  476. package/src/domains/mux/contract.ts +566 -0
  477. package/src/domains/mux/detect.ts +182 -0
  478. package/src/domains/mux/dock-controller.ts +365 -0
  479. package/src/domains/mux/extension.ts +53 -0
  480. package/src/domains/mux/index.ts +116 -0
  481. package/src/domains/mux/manifest.ts +6 -0
  482. package/src/domains/mux/operations.ts +192 -0
  483. package/src/domains/mux/pane-registry.ts +90 -0
  484. package/src/domains/mux/protocol.ts +62 -0
  485. package/src/domains/mux/socket-client.ts +964 -0
  486. package/src/domains/mux/types.ts +265 -0
  487. package/src/domains/mux/viewer-command.ts +59 -0
  488. package/src/domains/mux/yazi/assets/init.lua +2 -0
  489. package/src/domains/mux/yazi/assets/plugins/git.yazi/LICENSE +21 -0
  490. package/src/domains/mux/yazi/assets/plugins/git.yazi/README.md +78 -0
  491. package/src/domains/mux/yazi/assets/plugins/git.yazi/main.lua +255 -0
  492. package/src/domains/mux/yazi/assets/plugins/git.yazi/types.lua +12 -0
  493. package/src/domains/mux/yazi/assets/yazi.toml +17 -0
  494. package/src/domains/mux/yazi/event-stream.ts +182 -0
  495. package/src/domains/mux/yazi/profile.ts +299 -0
  496. package/src/domains/mux/yazi/session.ts +251 -0
  497. package/src/domains/mux/yazi/theme.ts +30 -0
  498. package/src/domains/observability/cost.ts +21 -0
  499. package/src/domains/observability/extension.ts +1 -1
  500. package/src/domains/observability/index.ts +2 -0
  501. package/src/domains/observability/out-of-turn-usage.ts +2 -2
  502. package/src/domains/observability/projection.ts +1 -1
  503. package/src/domains/observability/trace-store.ts +63 -11
  504. package/src/domains/prompts/compiler.ts +2 -2
  505. package/src/domains/prompts/extension.ts +3 -3
  506. package/src/domains/prompts/fragments/identity/clio-worker.md +1 -1
  507. package/src/domains/prompts/fragments/operating/skills.md +25 -18
  508. package/src/domains/providers/endpoint-capacity.ts +154 -22
  509. package/src/domains/providers/endpoint-slots-store.ts +189 -0
  510. package/src/domains/providers/extension.ts +25 -8
  511. package/src/domains/providers/index.ts +22 -0
  512. package/src/domains/providers/knowledge-base-path.ts +1 -1
  513. package/src/domains/providers/model-runtime-capabilities.ts +46 -2
  514. package/src/domains/providers/models/cloud-models/alcf.yaml +1 -1
  515. package/src/domains/providers/models/local-models/{clio-local-coding-targets.yaml → clio-coder-local-coding-targets.yaml} +4 -4
  516. package/src/domains/providers/plugins.ts +1 -1
  517. package/src/domains/providers/resolver.ts +1 -1
  518. package/src/domains/providers/runtimes/boot-manifest.ts +1 -0
  519. package/src/domains/providers/runtimes/builtins.ts +2 -0
  520. package/src/domains/providers/runtimes/cloud/alcf.ts +4 -4
  521. package/src/domains/providers/runtimes/common/lmstudio-http.ts +1 -5
  522. package/src/domains/providers/runtimes/common/local-synth.ts +3 -3
  523. package/src/domains/providers/runtimes/common/probe-helpers.ts +2 -2
  524. package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +1 -1
  525. package/src/domains/providers/runtimes/local-native/lmstudio.ts +2 -9
  526. package/src/domains/providers/runtimes/protocol/litellm.ts +285 -0
  527. package/src/domains/providers/support.ts +1 -0
  528. package/src/domains/providers/target-model-cache.ts +124 -0
  529. package/src/domains/providers/types/knowledge-base.ts +13 -0
  530. package/src/domains/providers/types/local-model-quirks.ts +2 -2
  531. package/src/domains/providers/types/target-descriptor.ts +3 -3
  532. package/src/domains/resources/extension.ts +1 -1
  533. package/src/domains/resources/index.ts +3 -0
  534. package/src/domains/resources/library.ts +6 -6
  535. package/src/domains/resources/prompts/loader.ts +1 -1
  536. package/src/domains/resources/skills/content-hash.ts +7 -6
  537. package/src/domains/resources/skills/evals.ts +1 -1
  538. package/src/domains/resources/skills/install.ts +36 -12
  539. package/src/domains/resources/skills/loader.ts +72 -13
  540. package/src/domains/resources/skills/marketplace.ts +21 -2
  541. package/src/domains/resources/skills/promotion.ts +214 -0
  542. package/src/domains/safety/action-classifier.ts +6 -0
  543. package/src/domains/safety/audit.ts +2 -2
  544. package/src/domains/safety/finish-contract.ts +2 -1
  545. package/src/domains/safety/run-effects.ts +1 -1
  546. package/src/domains/scheduling/extension.ts +4 -4
  547. package/src/domains/session/archive-readers.ts +9 -1
  548. package/src/domains/session/compaction/branch-summary.ts +4 -0
  549. package/src/domains/session/compaction/compact.ts +1 -1
  550. package/src/domains/session/compaction/tokens.ts +4 -0
  551. package/src/domains/session/context-accounting.ts +1 -1
  552. package/src/domains/session/decision-board.ts +1 -1
  553. package/src/domains/session/extension.ts +1 -1
  554. package/src/domains/session/handoff.ts +2 -2
  555. package/src/domains/session/prompt-manifest.ts +0 -5
  556. package/src/domains/session/protected-artifact-journal.ts +12 -6
  557. package/src/domains/session/retry.ts +1 -1
  558. package/src/domains/share/archive.ts +85 -36
  559. package/src/domains/toolchain/archive.ts +175 -0
  560. package/src/domains/toolchain/contract.ts +28 -0
  561. package/src/domains/toolchain/extension.ts +47 -0
  562. package/src/domains/toolchain/index.ts +39 -0
  563. package/src/domains/toolchain/install.ts +327 -0
  564. package/src/domains/toolchain/manifest.ts +8 -0
  565. package/src/domains/toolchain/paths.ts +34 -0
  566. package/src/domains/toolchain/registry.ts +265 -0
  567. package/src/domains/toolchain/remove.ts +218 -0
  568. package/src/domains/toolchain/resolve.ts +182 -0
  569. package/src/domains/toolchain/types.ts +113 -0
  570. package/src/domains/toolchain/version.ts +88 -0
  571. package/src/engine/acp/adapter.ts +3 -3
  572. package/src/engine/acp/event-mapper.ts +3 -3
  573. package/src/engine/acp/server.ts +440 -96
  574. package/src/engine/acp/tool-mediator.ts +2 -2
  575. package/src/engine/acp/types.ts +20 -2
  576. package/src/engine/alcf-oauth.ts +5 -5
  577. package/src/engine/antigravity/subprocess-runtime.ts +2 -2
  578. package/src/engine/api-registry.ts +1 -1
  579. package/src/engine/apis/llamacpp-residency.ts +1 -19
  580. package/src/engine/apis/lmstudio.ts +1 -6
  581. package/src/engine/apis/ollama-native.ts +3 -3
  582. package/src/engine/apis/openai-completions.ts +2 -2
  583. package/src/engine/apis/residency.ts +3 -9
  584. package/src/engine/claude/sdk-module.ts +87 -0
  585. package/src/engine/claude/sdk-runtime.ts +25 -17
  586. package/src/engine/claude/subprocess-runtime.ts +1 -1
  587. package/src/engine/claude/tool-safety.ts +4 -4
  588. package/src/engine/loop-guard.ts +0 -5
  589. package/src/engine/session.ts +14 -7
  590. package/src/engine/tui-primitives.ts +21 -0
  591. package/src/engine/tui.ts +1 -0
  592. package/src/engine/worker-events.ts +6 -6
  593. package/src/engine/worker-runtime.ts +16 -26
  594. package/src/entry/boot-options.ts +2 -0
  595. package/src/entry/orchestrator.ts +207 -90
  596. package/src/entry/panes-activation.ts +31 -0
  597. package/src/entry/with-panes.ts +20 -0
  598. package/src/interactive/application-controller.ts +21 -21
  599. package/src/interactive/bus-notices.ts +2 -2
  600. package/src/interactive/chat-loop.ts +8 -8
  601. package/src/interactive/chat-panel.ts +1 -1
  602. package/src/interactive/clio-editor.ts +105 -1
  603. package/src/interactive/context-activity.ts +8 -6
  604. package/src/interactive/context-meter.ts +3 -6
  605. package/src/interactive/context-overlay.ts +2 -1
  606. package/src/interactive/cost-overlay.ts +3 -1
  607. package/src/interactive/council-grid.ts +3 -5
  608. package/src/interactive/council.ts +11 -0
  609. package/src/interactive/dispatch-board.ts +56 -49
  610. package/src/interactive/editor-bash.ts +21 -0
  611. package/src/interactive/editor-steer.ts +9 -4
  612. package/src/interactive/editor-submit.ts +24 -18
  613. package/src/interactive/external-editor.ts +1 -1
  614. package/src/interactive/file-reference-completion.ts +360 -0
  615. package/src/interactive/footer/dashboard.ts +15 -17
  616. package/src/interactive/footer/notifications.ts +14 -8
  617. package/src/interactive/footer/widgets.ts +2 -44
  618. package/src/interactive/interactive-application.ts +229 -62
  619. package/src/interactive/interactive-event-projection.ts +1 -1
  620. package/src/interactive/interactive-input-runtime.ts +9 -2
  621. package/src/interactive/interactive-presentation.ts +21 -16
  622. package/src/interactive/interactive-shell.ts +2 -2
  623. package/src/interactive/interactive-slash-runtime.ts +99 -23
  624. package/src/interactive/interactive-subscriptions.ts +1 -1
  625. package/src/interactive/interactive-tickers.ts +1 -1
  626. package/src/interactive/keybinding-manager.ts +4 -4
  627. package/src/interactive/layout.ts +1 -1
  628. package/src/interactive/memory-overlay.ts +3 -2
  629. package/src/interactive/modal-marker.ts +151 -0
  630. package/src/interactive/mutation-preview.ts +1 -1
  631. package/src/interactive/mux-bridge.ts +214 -0
  632. package/src/interactive/overlay-frame.ts +62 -14
  633. package/src/interactive/overlay-general-openers.ts +7 -2
  634. package/src/interactive/overlay-key-routing.ts +21 -10
  635. package/src/interactive/overlay-lifecycle.ts +20 -4
  636. package/src/interactive/overlay-model-selectors.ts +43 -6
  637. package/src/interactive/overlay-permission-lifecycle.ts +90 -22
  638. package/src/interactive/overlay-transitions.ts +18 -4
  639. package/src/interactive/overlays/agents.ts +3 -2
  640. package/src/interactive/overlays/ask-user.ts +161 -41
  641. package/src/interactive/overlays/auth-dialog.ts +1 -0
  642. package/src/interactive/overlays/context-reset.ts +29 -4
  643. package/src/interactive/overlays/cwd-fallback.ts +29 -4
  644. package/src/interactive/overlays/decisions.ts +15 -13
  645. package/src/interactive/overlays/extensions.ts +1 -0
  646. package/src/interactive/overlays/fleet-run-approval.ts +4 -3
  647. package/src/interactive/overlays/handoff-review.ts +3 -2
  648. package/src/interactive/overlays/help-reference.ts +2 -0
  649. package/src/interactive/overlays/interop.ts +2 -1
  650. package/src/interactive/overlays/library-install-confirm.ts +2 -1
  651. package/src/interactive/overlays/library-tabs.ts +28 -0
  652. package/src/interactive/overlays/list-overlay.ts +10 -1
  653. package/src/interactive/overlays/message-picker.ts +2 -1
  654. package/src/interactive/overlays/model-scope.ts +86 -0
  655. package/src/interactive/overlays/model-selector.ts +40 -31
  656. package/src/interactive/overlays/prompts.ts +11 -4
  657. package/src/interactive/overlays/session-selector.ts +3 -2
  658. package/src/interactive/overlays/settings-sections.ts +30 -0
  659. package/src/interactive/overlays/settings.ts +849 -268
  660. package/src/interactive/overlays/side-question.ts +3 -2
  661. package/src/interactive/overlays/skills-hub.ts +11 -19
  662. package/src/interactive/overlays/tree-selector.ts +3 -2
  663. package/src/interactive/pane-policy.ts +46 -0
  664. package/src/interactive/panes-runtime.ts +318 -0
  665. package/src/interactive/permission-overlay.ts +2 -2
  666. package/src/interactive/renderers/compaction-summary.ts +29 -0
  667. package/src/interactive/renderers/retry-status.ts +12 -4
  668. package/src/interactive/renderers/tool-execution.ts +4 -4
  669. package/src/interactive/renderers/worker-entry.ts +122 -14
  670. package/src/interactive/session-transcript.ts +3 -3
  671. package/src/interactive/slash-autocomplete.ts +454 -165
  672. package/src/interactive/slash-commands.ts +521 -189
  673. package/src/interactive/slash-spec.ts +160 -17
  674. package/src/interactive/status/controller.ts +2 -2
  675. package/src/interactive/stream-pacing-policy.ts +1 -1
  676. package/src/interactive/tasks-overlay.ts +21 -13
  677. package/src/interactive/terminal-lease.ts +6 -7
  678. package/src/interactive/theme/tokens.ts +3 -14
  679. package/src/interactive/turn-context.ts +58 -13
  680. package/src/interactive/turn-persistence.ts +2 -2
  681. package/src/interactive/turn-prewarm.ts +2 -2
  682. package/src/interactive/turn-runtime.ts +8 -8
  683. package/src/interactive/turn-state.ts +1 -1
  684. package/src/interactive/view/artifacts.ts +120 -9
  685. package/src/interactive/view/view-overlay.ts +14 -10
  686. package/src/interactive/watch-pane.ts +180 -0
  687. package/src/interactive/welcome-dashboard.ts +15 -15
  688. package/src/interactive/worker-progress.ts +11 -5
  689. package/src/interactive/worker-receipts.ts +20 -2
  690. package/src/interactive/worker-stream.ts +6 -4
  691. package/src/interactive/yazi-bridge.ts +451 -0
  692. package/src/tools/ask-user.ts +3 -3
  693. package/src/tools/bash.ts +1 -1
  694. package/src/tools/bootstrap.ts +26 -2
  695. package/src/tools/builtin-tool-catalog.ts +16 -1
  696. package/src/tools/compete-worktrees.ts +108 -17
  697. package/src/tools/context/index.ts +15 -1
  698. package/src/tools/core-bootstrap.ts +2 -1
  699. package/src/tools/dispatch-admission.ts +18 -5
  700. package/src/tools/dispatch-arguments.ts +21 -21
  701. package/src/tools/dispatch-plan.ts +0 -11
  702. package/src/tools/dispatch-run-events.ts +145 -28
  703. package/src/tools/dispatch-runner.ts +40 -13
  704. package/src/tools/dispatch-types.ts +15 -3
  705. package/src/tools/dispatch.ts +2 -2
  706. package/src/tools/executables.ts +17 -14
  707. package/src/tools/find.ts +1 -6
  708. package/src/tools/monitor.ts +4 -4
  709. package/src/tools/observation.ts +54 -4
  710. package/src/tools/observers.ts +0 -33
  711. package/src/tools/panes-surface.ts +38 -0
  712. package/src/tools/panes.ts +112 -0
  713. package/src/tools/policy.ts +10 -1
  714. package/src/tools/presentation.ts +1 -0
  715. package/src/tools/task-worktree.ts +28 -7
  716. package/src/tools/verify/authoring.ts +3 -6
  717. package/src/tools/verify/frontend.ts +1 -1
  718. package/src/tools/web-fetch.ts +1 -1
  719. package/src/worker/entry.ts +4 -3
  720. package/src/worker/protocol.ts +16 -14
  721. package/src/worker/spec-contract.ts +2 -2
  722. package/src/worker/stdin-demux.ts +2 -2
  723. package/dist/chunk-D73KXYPF.js +0 -37
  724. package/dist/chunk-MLOK6ZOS.js +0 -2888
  725. package/dist/chunk-PNY46YEY.js +0 -1581
  726. package/dist/chunk-XDOQXGFO.js +0 -515
  727. package/dist/chunk-YKOFT37S.js +0 -279
  728. package/dist/clio-LT5V7SSZ.js +0 -26
  729. package/dist/configure-2WYWSCSD.js +0 -49
  730. package/dist/doctor-TWBWFK5V.js +0 -165
  731. package/src/engine/apis/degraded-inference.ts +0 -95
  732. /package/skills/meta/{clio-test → clio-coder-test}/references/harness.md +0 -0
  733. /package/skills/meta/{clio-test → clio-coder-test}/references/test-map.md +0 -0
@@ -4,17 +4,17 @@ import {
4
4
  normalizeWriteBoundary,
5
5
  normalizeWriteBoundaryEntry,
6
6
  writeBoundaryCovers
7
- } from "./chunk-HPCTNZM2.js";
7
+ } from "./chunk-CTJ4RNAA.js";
8
8
  import {
9
9
  asDirectoryPathBoundary,
10
10
  pathBoundaryEntryCovers
11
- } from "./chunk-S4COXYBG.js";
11
+ } from "./chunk-HHV2GANA.js";
12
12
  import {
13
13
  atomicWrite
14
- } from "./chunk-KV2AOLDF.js";
14
+ } from "./chunk-MQXIVJ35.js";
15
15
  import {
16
16
  clioStateDir
17
- } from "./chunk-BNAZZHFG.js";
17
+ } from "./chunk-BYP5D4HI.js";
18
18
  import {
19
19
  init_esm_shims
20
20
  } from "./chunk-3R73A4XB.js";
@@ -28,7 +28,7 @@ import {
28
28
  lstatSync,
29
29
  mkdirSync as mkdirSync2,
30
30
  readdirSync,
31
- readFileSync,
31
+ readFileSync as readFileSync2,
32
32
  realpathSync as realpathSync2,
33
33
  renameSync,
34
34
  rmdirSync,
@@ -43,11 +43,13 @@ import { join as join2, relative as relative2, resolve as resolve2 } from "node:
43
43
  init_esm_shims();
44
44
  import { execFileSync } from "node:child_process";
45
45
  import { createHash, randomBytes } from "node:crypto";
46
- import { existsSync, mkdirSync, realpathSync, rmSync, writeFileSync } from "node:fs";
46
+ import { existsSync, mkdirSync, readFileSync, realpathSync, rmSync, writeFileSync } from "node:fs";
47
47
  import { isAbsolute, join, relative, resolve, sep } from "node:path";
48
48
  var SAFE_RUN_ID = /^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/u;
49
49
  var OWNER_FILE_SUFFIX = ".task-owner.json";
50
- var COMMIT_IDENTITY = "clio-task";
50
+ var TASK_WORKTREE_KIND = "clio-coder-task-worktree";
51
+ var LEGACY_TASK_WORKTREE_KIND = "clio-task-worktree";
52
+ var COMMIT_IDENTITY = "clio-coder-task";
51
53
  function gitBytes(root, args) {
52
54
  return execFileSync("git", ["-C", root, ...args], {
53
55
  stdio: ["ignore", "pipe", "pipe"],
@@ -155,7 +157,7 @@ function createTaskWorktree(root, runId, base) {
155
157
  const resolvedBase = base ?? git(canonical, ["rev-parse", "HEAD"]);
156
158
  const parent = join(canonical, ".clio-coder", "worktrees");
157
159
  const path = join(parent, runId);
158
- const branch = `clio/task/${runId}`;
160
+ const branch = `clio-coder/task/${runId}`;
159
161
  mkdirSync(parent, { recursive: true });
160
162
  if (!isCanonicalWorktreePathInside(parent, path))
161
163
  throw new Error(`task worktree path escapes its parent for run ${runId}`);
@@ -163,7 +165,7 @@ function createTaskWorktree(root, runId, base) {
163
165
  const ownerToken = randomBytes(16).toString("hex");
164
166
  writeFileSync(
165
167
  `${path}${OWNER_FILE_SUFFIX}`,
166
- `${JSON.stringify({ version: 1, kind: "clio-task-worktree", root: canonical, runId, branch, base: resolvedBase, ownerToken }, null, 2)}
168
+ `${JSON.stringify({ version: 1, kind: TASK_WORKTREE_KIND, root: canonical, runId, branch, base: resolvedBase, ownerToken }, null, 2)}
167
169
  `,
168
170
  { encoding: "utf8", flag: "wx" }
169
171
  );
@@ -174,10 +176,21 @@ function assertOwnership(worktree) {
174
176
  if (resolve(worktree.path) !== resolve(expected) || !isCanonicalWorktreePathInside(join(worktree.root, ".clio-coder", "worktrees"), worktree.path)) {
175
177
  throw new Error(`task worktree ${worktree.runId} has an invalid ownership path`);
176
178
  }
177
- if (!existsSync(`${worktree.path}${OWNER_FILE_SUFFIX}`))
178
- throw new Error(`task worktree ${worktree.runId} has no ownership file`);
179
+ const ownerPath = `${worktree.path}${OWNER_FILE_SUFFIX}`;
180
+ if (!existsSync(ownerPath)) throw new Error(`task worktree ${worktree.runId} has no ownership file`);
181
+ let marker;
182
+ try {
183
+ const value = JSON.parse(readFileSync(ownerPath, "utf8"));
184
+ if (typeof value !== "object" || value === null || Array.isArray(value)) throw new Error("not an object");
185
+ marker = value;
186
+ } catch {
187
+ throw new Error(`task worktree ${worktree.runId} has an invalid ownership file`);
188
+ }
189
+ if (marker.version !== 1 || marker.kind !== TASK_WORKTREE_KIND && marker.kind !== LEGACY_TASK_WORKTREE_KIND || marker.root !== worktree.root || marker.runId !== worktree.runId || marker.branch !== worktree.branch || marker.base !== worktree.base || marker.ownerToken !== worktree.ownerToken) {
190
+ throw new Error(`task worktree ${worktree.runId} ownership facts do not match`);
191
+ }
179
192
  }
180
- function commitTaskWorktree(worktree, message = `Clio task ${worktree.runId}`) {
193
+ function commitTaskWorktree(worktree, message = `Clio Coder task ${worktree.runId}`) {
181
194
  assertOwnership(worktree);
182
195
  return commitWorktreePath(worktree.path, COMMIT_IDENTITY, message);
183
196
  }
@@ -220,8 +233,9 @@ function cleanupTaskWorktree(worktree, deleteBranch) {
220
233
  // src/tools/compete-worktrees.ts
221
234
  var COMPETE_PARENT_SEGMENTS = [".clio-coder", "worktrees"];
222
235
  var COMPETE_MANIFEST_FILE = ".clio-coder-compete-owner.json";
223
- var COMPETE_MANIFEST_KIND = "clio-compete-group";
224
- var COMPETE_COMMIT_IDENTITY = "clio-compete";
236
+ var COMPETE_MANIFEST_KIND = "clio-coder-compete-group";
237
+ var LEGACY_COMPETE_MANIFEST_KIND = "clio-compete-group";
238
+ var COMPETE_COMMIT_IDENTITY = "clio-coder-compete";
225
239
  var SAFE_GROUP = /^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/;
226
240
  var PROCESS_EXIT_GRACE_MS = 750;
227
241
  var PROCESS_POLL_MS = 25;
@@ -243,7 +257,7 @@ function processSnapshot(pid) {
243
257
  if (err.code !== "EPERM") return { alive: false, birthToken: null };
244
258
  }
245
259
  try {
246
- const stat = readFileSync(`/proc/${pid}/stat`, "utf8").trim();
260
+ const stat = readFileSync2(`/proc/${pid}/stat`, "utf8").trim();
247
261
  const close = stat.lastIndexOf(")");
248
262
  if (close > 0) {
249
263
  const fields = stat.slice(close + 1).trim().split(/\s+/u);
@@ -363,7 +377,7 @@ function isCanonicalPathInside(parent, candidate) {
363
377
  function manifestFromUnknown(value) {
364
378
  if (typeof value !== "object" || value === null || Array.isArray(value)) return null;
365
379
  const manifest = value;
366
- if (manifest.version !== 2 || manifest.kind !== COMPETE_MANIFEST_KIND || typeof manifest.root !== "string" || typeof manifest.group !== "string" || typeof manifest.token !== "string" || manifest.token.length === 0 || manifest.state !== "active" && manifest.state !== "cleanup-ready" && manifest.state !== "winner-preserved" || typeof manifest.createdAt !== "string" || typeof manifest.updatedAt !== "string") {
380
+ if (manifest.version !== 2 || manifest.kind !== COMPETE_MANIFEST_KIND && manifest.kind !== LEGACY_COMPETE_MANIFEST_KIND || typeof manifest.root !== "string" || typeof manifest.group !== "string" || typeof manifest.token !== "string" || manifest.token.length === 0 || manifest.state !== "active" && manifest.state !== "cleanup-ready" && manifest.state !== "winner-preserved" || typeof manifest.createdAt !== "string" || typeof manifest.updatedAt !== "string") {
367
381
  return null;
368
382
  }
369
383
  if (!validProcessLease(manifest.owner) || !Array.isArray(manifest.runs) || !manifest.runs.every(validRunLease) || new Set(manifest.runs.map((run) => run.runId)).size !== manifest.runs.length) {
@@ -379,7 +393,7 @@ function readManifest(root, group) {
379
393
  const directory = groupDirectory(canonical, group);
380
394
  if (!isCanonicalDirectoryAt(directory)) return null;
381
395
  try {
382
- const parsed = JSON.parse(readFileSync(manifestPath(directory), "utf8"));
396
+ const parsed = JSON.parse(readFileSync2(manifestPath(directory), "utf8"));
383
397
  const manifest = manifestFromUnknown(parsed);
384
398
  if (manifest === null || manifest.root !== canonical || manifest.group !== group) return null;
385
399
  return manifest;
@@ -426,10 +440,13 @@ function isGitRepository(root) {
426
440
  return false;
427
441
  }
428
442
  }
429
- function competeBranch(group, index) {
443
+ function competeBranch(group, index, legacy = false) {
430
444
  validateGroup(group);
431
445
  if (!Number.isInteger(index) || index < 1) throw new Error(`invalid compete candidate index ${index}`);
432
- return `clio/compete/${group}/${index}`;
446
+ return `${legacy ? "clio" : "clio-coder"}/compete/${group}/${index}`;
447
+ }
448
+ function competeBranchMatches(branch, group, index) {
449
+ return branch === competeBranch(group, index) || branch === competeBranch(group, index, true);
433
450
  }
434
451
  function claimCompeteGroup(root, group) {
435
452
  const canonical = canonicalRoot(root);
@@ -542,6 +559,39 @@ function createCandidateWorktree(ownership, index, baseline) {
542
559
  git2(ownership.root, ["worktree", "add", "-b", branch, path, baseline]);
543
560
  return { index, branch, path };
544
561
  }
562
+ async function createCandidateWorktreeMapped(ownership, index, baseline, mux) {
563
+ assertOwnership2(ownership);
564
+ const branch = competeBranch(ownership.group, index);
565
+ const path = join2(ownership.directory, `candidate-${index}`);
566
+ if (!isCanonicalPathInside(ownership.directory, path)) {
567
+ throw new Error(`candidate ${index} path escapes compete group ${ownership.group}`);
568
+ }
569
+ let fallback = "mux-unavailable";
570
+ if (mux?.available()) {
571
+ const created = await mux.worktreeCreate({
572
+ cwd: ownership.root,
573
+ branch,
574
+ base: baseline,
575
+ path,
576
+ label: `clio-coder compete ${ownership.group} candidate ${index}`,
577
+ focus: false
578
+ }).catch(() => null);
579
+ if (created !== null) {
580
+ if (resolve2(created.worktree.path) !== resolve2(path) || created.worktree.branch !== branch) {
581
+ throw new Error(`herdr created candidate ${index} at an unexpected path or branch`);
582
+ }
583
+ return {
584
+ index,
585
+ branch,
586
+ path,
587
+ provenance: { backend: "herdr", path, branch, workspaceId: created.workspaceId }
588
+ };
589
+ }
590
+ fallback = "mux-operation-failed";
591
+ }
592
+ const native = createCandidateWorktree(ownership, index, baseline);
593
+ return { ...native, provenance: { backend: "native", path, branch, fallback } };
594
+ }
545
595
  function commitCandidateWork(worktree, message) {
546
596
  return commitWorktreePath(worktree.path, COMPETE_COMMIT_IDENTITY, message);
547
597
  }
@@ -558,9 +608,13 @@ function registeredWorktreePaths(root) {
558
608
  function exactGroupBranches(root, group) {
559
609
  return git2(root, ["branch", "--list", "--format=%(refname:short)"]).split("\n").filter((branch) => {
560
610
  const parts = branch.split("/");
561
- return parts.length === 4 && parts[0] === "clio" && parts[1] === "compete" && parts[2] === group && /^\d+$/.test(parts[3] ?? "");
611
+ return parts.length === 4 && (parts[0] === "clio-coder" || parts[0] === "clio") && parts[1] === "compete" && parts[2] === group && /^\d+$/.test(parts[3] ?? "");
562
612
  });
563
613
  }
614
+ function competeBranchForCandidate(root, group, index) {
615
+ const branches = exactGroupBranches(root, group);
616
+ return branches.find((branch) => branch === competeBranch(group, index)) ?? branches.find((branch) => branch === competeBranch(group, index, true)) ?? competeBranch(group, index);
617
+ }
564
618
  function removeRegisteredWorktree(root, path) {
565
619
  try {
566
620
  git2(root, ["worktree", "remove", "--force", path]);
@@ -572,8 +626,7 @@ function removeRegisteredWorktree(root, path) {
572
626
  function removeCandidateWorktree(ownership, worktree, deleteBranch) {
573
627
  assertOwnership2(ownership);
574
628
  const expectedPath = join2(ownership.directory, `candidate-${worktree.index}`);
575
- const expectedBranch = competeBranch(ownership.group, worktree.index);
576
- if (resolve2(worktree.path) !== resolve2(expectedPath) || worktree.branch !== expectedBranch || !isCanonicalPathInside(ownership.directory, worktree.path)) {
629
+ if (resolve2(worktree.path) !== resolve2(expectedPath) || !competeBranchMatches(worktree.branch, ownership.group, worktree.index) || !isCanonicalPathInside(ownership.directory, worktree.path)) {
577
630
  throw new Error(`candidate ${worktree.index} does not belong to compete group ${ownership.group}`);
578
631
  }
579
632
  removeRegisteredWorktree(ownership.root, worktree.path);
@@ -588,6 +641,13 @@ function removeCandidateWorktree(ownership, worktree, deleteBranch) {
588
641
  throw new Error(`failed to remove candidate ${worktree.index} from compete group ${ownership.group}`);
589
642
  }
590
643
  }
644
+ async function removeCandidateWorktreeMapped(ownership, worktree, deleteBranch, mux) {
645
+ const workspaceId = worktree.provenance?.backend === "herdr" ? worktree.provenance.workspaceId : void 0;
646
+ if (workspaceId && mux?.available()) {
647
+ await mux.worktreeRemove(workspaceId, { force: true }).catch(() => false);
648
+ }
649
+ removeCandidateWorktree(ownership, worktree, deleteBranch);
650
+ }
591
651
  function mergeWinnerBranch(root, branch) {
592
652
  return mergeWorktreeBranch(root, branch, COMPETE_COMMIT_IDENTITY);
593
653
  }
@@ -657,8 +717,8 @@ function settleRecoveredCompeteDecision(root, group, winnerIndex) {
657
717
  cleanupWorktreeGroup(ownership);
658
718
  return null;
659
719
  }
660
- const winnerBranch = competeBranch(group, winnerIndex);
661
720
  const branches = exactGroupBranches(ownership.root, group);
721
+ const winnerBranch = competeBranchForCandidate(ownership.root, group, winnerIndex);
662
722
  const winnerPath = join2(ownership.directory, `candidate-${winnerIndex}`);
663
723
  if (!branches.includes(winnerBranch) || !registeredWorktreePaths(ownership.root).some((path) => resolve2(path) === resolve2(winnerPath))) {
664
724
  throw new Error(`recovered winner ${winnerBranch} has no intact candidate worktree`);
@@ -1123,11 +1183,12 @@ export {
1123
1183
  settleCompeteGroupRun,
1124
1184
  markCompeteGroupCleanupReady,
1125
1185
  markCompeteGroupWinnerPreserved,
1126
- createCandidateWorktree,
1186
+ createCandidateWorktreeMapped,
1127
1187
  commitCandidateWork,
1128
1188
  candidateDiffStat,
1129
1189
  protectedPathsChangedByCompeteBranch,
1130
- removeCandidateWorktree,
1190
+ competeBranchForCandidate,
1191
+ removeCandidateWorktreeMapped,
1131
1192
  mergeWinnerBranch,
1132
1193
  cleanupCompeteGroup,
1133
1194
  settleRecoveredCompeteDecision,
@@ -1138,4 +1199,4 @@ export {
1138
1199
  preflightWriteBoundaries,
1139
1200
  createWriteBoundaryEnforcer
1140
1201
  };
1141
- //# sourceMappingURL=chunk-ECUO3KDP.js.map
1202
+ //# sourceMappingURL=chunk-TD3PGPQA.js.map
@@ -3,7 +3,10 @@ import {
3
3
  fleetLoopCheckStepId,
4
4
  fleetLoopRepairStepId,
5
5
  fleetStepWriteBoundary
6
- } from "./chunk-HPCTNZM2.js";
6
+ } from "./chunk-CTJ4RNAA.js";
7
+ import {
8
+ resultContractShape
9
+ } from "./chunk-IG7BCQBA.js";
7
10
  import {
8
11
  init_esm_shims
9
12
  } from "./chunk-3R73A4XB.js";
@@ -212,6 +215,31 @@ function spliceExecutionPlan(plan, parentId, tasks) {
212
215
 
213
216
  // src/domains/dispatch/fleet-plan.ts
214
217
  init_esm_shims();
218
+
219
+ // src/domains/dispatch/fleet-node-prompt.ts
220
+ init_esm_shims();
221
+ function fleetNodeAnswerDirective(kind) {
222
+ if (kind === "architect-plan") return null;
223
+ return [
224
+ `Your result contract for this step is \`${kind}\`.`,
225
+ "The task above describes the whole chain. Any result shape it states belongs to the step that produces it, and does not apply to you.",
226
+ `End with exactly this shape and nothing else: ${resultContractShape({ kind })}`,
227
+ // The wire example carries literal names and evidence, and a small model
228
+ // handed one on a first attempt copies them: the first run of this
229
+ // directive came back claiming `npm run typecheck` / `exit 0` in the same
230
+ // breath as admitting it could not run a command. The fields are the
231
+ // contract; the values in the example are not.
232
+ "Its field values are an example. Fill them with what this run actually produced or observed, and never report a name or evidence you did not."
233
+ ].join("\n");
234
+ }
235
+ function renderFleetNodeTask(task, kind) {
236
+ const directive = fleetNodeAnswerDirective(kind);
237
+ return directive === null ? task : `${task}
238
+
239
+ ${directive}`;
240
+ }
241
+
242
+ // src/domains/dispatch/fleet-plan.ts
215
243
  function expandDependencies(dependencies, loopMembers) {
216
244
  return dependencies.flatMap((id) => {
217
245
  const loop = loopMembers.get(id);
@@ -260,7 +288,7 @@ function compileFleetExecutionPlan(input) {
260
288
  agentId: context.agentId,
261
289
  scope: context.scope,
262
290
  dependencies: [...dependencies],
263
- task,
291
+ task: renderFleetNodeTask(task, resolved.expectedResultContract),
264
292
  expectedResultContract: resolved.expectedResultContract,
265
293
  requestedAuthority: resolved.requestedAuthority,
266
294
  approvedAuthority: resolved.approvedAuthority,
@@ -407,4 +435,4 @@ export {
407
435
  spliceExecutionPlan,
408
436
  compileFleetExecutionPlan
409
437
  };
410
- //# sourceMappingURL=chunk-HKO36JWF.js.map
438
+ //# sourceMappingURL=chunk-THYWACCR.js.map
@@ -5,19 +5,16 @@ import {
5
5
  import {
6
6
  probeWorkspace
7
7
  } from "./chunk-HVDIIIQW.js";
8
- import {
9
- protectArtifact
10
- } from "./chunk-MV3K5QF2.js";
11
8
  import {
12
9
  isSessionEntry,
13
10
  isSessionHeader
14
- } from "./chunk-RAPCMZL4.js";
11
+ } from "./chunk-FSP7CMNU.js";
12
+ import {
13
+ protectArtifact
14
+ } from "./chunk-GCSMB2KY.js";
15
15
  import {
16
16
  stripTokenizerSentinels
17
17
  } from "./chunk-CFGTUFWB.js";
18
- import {
19
- BusChannels
20
- } from "./chunk-RKRLDWD3.js";
21
18
  import {
22
19
  CURRENT_SESSION_FORMAT_VERSION,
23
20
  appendSessionFileEntry,
@@ -29,11 +26,14 @@ import {
29
26
  readSessionMeta,
30
27
  resumeSession,
31
28
  sessionPaths
32
- } from "./chunk-KV2AOLDF.js";
29
+ } from "./chunk-MQXIVJ35.js";
30
+ import {
31
+ BusChannels
32
+ } from "./chunk-HLW2MRKE.js";
33
33
  import {
34
34
  clioStateDir,
35
35
  stateRootRemoved
36
- } from "./chunk-BNAZZHFG.js";
36
+ } from "./chunk-BYP5D4HI.js";
37
37
  import {
38
38
  init_esm_shims
39
39
  } from "./chunk-3R73A4XB.js";
@@ -1139,7 +1139,7 @@ function createSessionBundle(context) {
1139
1139
  await performCheckpoint(state, "shutdown");
1140
1140
  } catch (err) {
1141
1141
  process.stderr.write(
1142
- `[clio:session] shutdown checkpoint failed: ${err instanceof Error ? err.message : String(err)}
1142
+ `[clio-coder:session] shutdown checkpoint failed: ${err instanceof Error ? err.message : String(err)}
1143
1143
  `
1144
1144
  );
1145
1145
  }
@@ -1311,6 +1311,12 @@ var SessionDomainModule = {
1311
1311
  };
1312
1312
 
1313
1313
  // src/domains/session/archive-readers.ts
1314
+ var ROUTING_NOTICE_CUSTOM_TYPE = "clio-coder.routing-notice";
1315
+ var LEGACY_ROUTING_NOTICE_CUSTOM_TYPE = "clio.routing-notice";
1316
+ function normalizeReleasedCustomType(entry) {
1317
+ if (entry.kind !== "custom" || entry.customType !== LEGACY_ROUTING_NOTICE_CUSTOM_TYPE) return entry;
1318
+ return { ...entry, customType: ROUTING_NOTICE_CUSTOM_TYPE };
1319
+ }
1314
1320
  async function readAuditRows(stateDir) {
1315
1321
  const root = join3(stateDir, "audit");
1316
1322
  let files;
@@ -1415,7 +1421,7 @@ function parseSessionEntries(raw, source) {
1415
1421
  }
1416
1422
  if (isSessionHeader(parsed)) continue;
1417
1423
  if (isSessionEntry(parsed)) {
1418
- entries.push(parsed);
1424
+ entries.push(normalizeReleasedCustomType(parsed));
1419
1425
  continue;
1420
1426
  }
1421
1427
  errors.push(
@@ -1475,4 +1481,4 @@ export {
1475
1481
  ledgerUsageCalls,
1476
1482
  SessionDomainModule
1477
1483
  };
1478
- //# sourceMappingURL=chunk-LXPJXFM5.js.map
1484
+ //# sourceMappingURL=chunk-TVH4ONAM.js.map
@@ -0,0 +1,255 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ init_esm_shims
4
+ } from "./chunk-3R73A4XB.js";
5
+
6
+ // src/domains/safety/call-target.ts
7
+ init_esm_shims();
8
+
9
+ // src/domains/safety/redaction.ts
10
+ init_esm_shims();
11
+ function isPlainObject(value) {
12
+ return value !== null && typeof value === "object" && !Array.isArray(value);
13
+ }
14
+ var SECRET_KEY_RE = /(?:api[-_]?key|access[-_]?key|auth(?:orization)?|credential|password|private[-_]?key|secret|token)/iu;
15
+ var ENV_KEY_RE = /^env(?:ironment)?$/iu;
16
+ var SECRET_STRING_RE = /(https?:\/\/[^\s/@]+:)[^\s/@]+@/giu;
17
+ var SECRET_URL_PARAM_RE = /([?&](?:api[-_]?key|access[-_]?token|auth(?:orization)?|credential|password|secret|token)[^=\s]*=)[^&#\s]+/giu;
18
+ var SECRET_ASSIGNMENT_RE = /(?<![A-Z0-9_])((?:[A-Z0-9_]*(?:ACCESS|API|AUTH|CREDENTIAL|KEY|PASS(?:WORD)?|PRIVATE|SECRET|TOKEN)[A-Z0-9_]*)=)[^\s;&|]+/giu;
19
+ var SECRET_FLAG_RE = /(--?(?:[a-z0-9-]*(?:api[-_]?key|access[-_]?token|auth(?:orization)?|credential|password|secret|token)[a-z0-9-]*))(=|\s+)([^\s;&|]+)/giu;
20
+ function redactSecretString(value) {
21
+ return value.replace(SECRET_STRING_RE, "$1[redacted]@").replace(SECRET_URL_PARAM_RE, "$1[redacted]").replace(SECRET_ASSIGNMENT_RE, "$1[redacted]").replace(SECRET_FLAG_RE, "$1$2[redacted]");
22
+ }
23
+ function isSecretArgKey(key) {
24
+ return SECRET_KEY_RE.test(key);
25
+ }
26
+ function isEnvironmentArgKey(key) {
27
+ return ENV_KEY_RE.test(key);
28
+ }
29
+ function redactEnvironmentValue(value, depth) {
30
+ if (depth > 8) return "[redacted nested values]";
31
+ if (typeof value === "string") return "[redacted]";
32
+ if (Array.isArray(value)) return value.map((item) => redactEnvironmentValue(item, depth + 1));
33
+ if (!isPlainObject(value)) return value;
34
+ const out = {};
35
+ for (const [childKey, childValue] of Object.entries(value)) {
36
+ out[childKey] = redactEnvironmentValue(childValue, depth + 1);
37
+ }
38
+ return out;
39
+ }
40
+ function redactToolArgs(value, key = "", depth = 0) {
41
+ if (isSecretArgKey(key)) return "[redacted]";
42
+ if (isEnvironmentArgKey(key)) return redactEnvironmentValue(value, depth);
43
+ if (typeof value === "string") return redactSecretString(value);
44
+ if (depth > 8) return "[redacted nested values]";
45
+ if (Array.isArray(value)) return value.map((item) => redactToolArgs(item, key, depth + 1));
46
+ if (!isPlainObject(value)) return value;
47
+ const out = {};
48
+ for (const [childKey, childValue] of Object.entries(value)) {
49
+ out[childKey] = redactToolArgs(childValue, childKey, depth + 1);
50
+ }
51
+ return out;
52
+ }
53
+
54
+ // src/domains/safety/call-target.ts
55
+ var ESC_CHAR = String.fromCharCode(27);
56
+ var BEL_CHAR = String.fromCharCode(7);
57
+ var OSC_PATTERN = new RegExp(`${ESC_CHAR}\\][\\s\\S]*?(?:${BEL_CHAR}|${ESC_CHAR}\\\\|$)`, "g");
58
+ var CSI_PATTERN = new RegExp(`${ESC_CHAR}\\[[0-9;?]*[0-9A-Za-z]`, "g");
59
+ function sanitizeForDisplay(value) {
60
+ const stripped = value.replace(OSC_PATTERN, "").replace(CSI_PATTERN, "");
61
+ let out = "";
62
+ for (const ch of stripped) {
63
+ const code = ch.codePointAt(0) ?? 0;
64
+ out += code < 32 || code === 127 ? " " : ch;
65
+ }
66
+ return out;
67
+ }
68
+ function oneLine(value) {
69
+ return value.replace(/\s+/g, " ").trim();
70
+ }
71
+ var DISPLAY_TAB_WIDTH = 4;
72
+ var CONTROL_BYTE_PLACEHOLDER = "\xB7";
73
+ function sanitizeMultilineDisplayText(value) {
74
+ const escapesStripped = value.replace(OSC_PATTERN, "").replace(CSI_PATTERN, "");
75
+ let neutralized = escapesStripped.length !== value.length;
76
+ const stripped = escapesStripped.replace(/\r\n/g, "\n");
77
+ let tabsExpanded = false;
78
+ let out = "";
79
+ for (const ch of stripped) {
80
+ if (ch === "\n") {
81
+ out += ch;
82
+ continue;
83
+ }
84
+ if (ch === " ") {
85
+ out += " ".repeat(DISPLAY_TAB_WIDTH);
86
+ tabsExpanded = true;
87
+ continue;
88
+ }
89
+ const code = ch.codePointAt(0) ?? 0;
90
+ if (code < 32 || code === 127) {
91
+ out += CONTROL_BYTE_PLACEHOLDER;
92
+ neutralized = true;
93
+ continue;
94
+ }
95
+ out += ch;
96
+ }
97
+ return { text: out, neutralized, tabsExpanded };
98
+ }
99
+ function sanitizeCallTargetText(value) {
100
+ return oneLine(sanitizeForDisplay(value));
101
+ }
102
+ var CALL_ACTION_OBJECT_MAX_CHARS = 64;
103
+ var CALL_TARGET_MAX_CHARS = 120;
104
+ var CALL_ACTION_VOCABULARY = {
105
+ read: { verb: "reading", field: "path" },
106
+ edit: { verb: "editing", field: "path" },
107
+ write: { verb: "writing", field: "path" },
108
+ ls: { verb: "listing", field: "path" },
109
+ bash: { verb: "running", field: "command" },
110
+ grep: { verb: "searching", field: "pattern" },
111
+ find: { verb: "finding", field: "pattern" },
112
+ web_fetch: { verb: "fetching", field: "url" },
113
+ git: { verb: "git", field: "op" },
114
+ verify: { verb: "verifying", field: "check" },
115
+ code_nav: { verb: "navigating", field: "query" },
116
+ context: { verb: "context", field: "scope" },
117
+ artifact: { verb: "writing", field: "kind" },
118
+ monitor: { verb: "monitoring", field: "run_id" },
119
+ steer: { verb: "steering", field: "run_id" },
120
+ tasks: { verb: "tasks", field: "action" },
121
+ dispatch: { verb: "dispatching", field: "agent" },
122
+ // ACP tool kinds. A peer names its own argument fields, so these rely on
123
+ // the shared allowlist below rather than on a field this side can predict.
124
+ execute: { verb: "running", field: "command" },
125
+ search: { verb: "searching", field: "query" },
126
+ fetch: { verb: "fetching", field: "url" },
127
+ delete: { verb: "deleting", field: "path" },
128
+ move: { verb: "moving", field: "path" },
129
+ think: { verb: "thinking", field: "" }
130
+ };
131
+ var CALL_ACTION_OBJECT_FIELDS = ["path", "file_path", "command", "pattern", "query", "url"];
132
+ var CALL_TARGET_FIELDS = {
133
+ read: ["path", "offset", "limit", "tail"],
134
+ grep: ["pattern", "path", "mode", "glob", "ignore_case", "literal", "context", "limit", "include_ignored"],
135
+ find: ["pattern", "path", "order", "limit", "include_ignored"],
136
+ ls: ["path", "limit"],
137
+ code_nav: ["mode", "query", "limit"],
138
+ context: ["scope", "query", "name", "limit", "ref", "include_tree"],
139
+ credential_present: ["name", "source", "file"],
140
+ write: ["path"],
141
+ edit: ["path"],
142
+ bash: ["command", "cwd", "timeout_ms", "output_policy"],
143
+ git: ["op", "path", "cached", "stat", "name_only", "limit", "cwd", "timeout_ms", "max_output_bytes"],
144
+ verify: ["check", "path", "browser", "cwd", "timeout_ms", "max_output_bytes"],
145
+ dispatch: [
146
+ "list",
147
+ "mode",
148
+ "agent",
149
+ "target",
150
+ "model",
151
+ "node",
152
+ "autonomy",
153
+ "tool_profile",
154
+ "thinking_level",
155
+ "detach",
156
+ "timeout_ms"
157
+ ],
158
+ monitor: ["run_id", "mode"],
159
+ steer: ["run_id", "action"],
160
+ tasks: ["action", "id"],
161
+ ledger: ["action", "kind", "path", "line", "target", "passed", "since"],
162
+ web_fetch: ["url", "method", "timeout_ms", "max_bytes", "format"],
163
+ ask_user: ["action", "mode", "max_rounds", "exposure"],
164
+ artifact: ["kind", "path", "title"],
165
+ // ACP tool kinds use only fields whose meaning the protocol defines.
166
+ execute: ["command", "cwd"],
167
+ search: ["query", "path"],
168
+ fetch: ["url", "method"],
169
+ delete: ["path"],
170
+ move: ["path", "target"]
171
+ };
172
+ function boundActionObject(value) {
173
+ if (typeof value !== "string") return null;
174
+ const clean = sanitizeCallTargetText(redactSecretString(value));
175
+ if (clean.length === 0) return null;
176
+ if (clean.length <= CALL_ACTION_OBJECT_MAX_CHARS) return { object: clean, truncated: false };
177
+ return { object: clean.slice(0, CALL_ACTION_OBJECT_MAX_CHARS), truncated: true };
178
+ }
179
+ function describeCallAction(tool, args) {
180
+ const known = CALL_ACTION_VOCABULARY[tool];
181
+ const candidates = known?.field ? [known.field, ...CALL_ACTION_OBJECT_FIELDS] : [...CALL_ACTION_OBJECT_FIELDS];
182
+ let bounded = null;
183
+ if (args) {
184
+ for (const field of candidates) {
185
+ if (isSecretArgKey(field)) continue;
186
+ bounded = boundActionObject(args[field]);
187
+ if (bounded !== null) break;
188
+ }
189
+ }
190
+ if (known === void 0 && bounded === null) return null;
191
+ const verb = known?.verb ?? "calling";
192
+ if (bounded === null) return { verb };
193
+ return { verb, object: bounded.object, ...bounded.truncated ? { truncated: true } : {} };
194
+ }
195
+ function renderAllowedTargetValue(value) {
196
+ if (typeof value === "string") {
197
+ const rendered = sanitizeCallTargetText(redactSecretString(value));
198
+ return rendered.length > 0 ? rendered : null;
199
+ }
200
+ if (typeof value === "number" && Number.isFinite(value)) return String(value);
201
+ if (typeof value === "boolean") return String(value);
202
+ return null;
203
+ }
204
+ function countLabel(count, singular, plural) {
205
+ return `${count} ${count === 1 ? singular : plural}`;
206
+ }
207
+ function summarizeUnlistedTargetValue(value) {
208
+ if (typeof value === "string") {
209
+ return `<string ${countLabel(Buffer.byteLength(value, "utf8"), "byte", "bytes")}>`;
210
+ }
211
+ if (Array.isArray(value)) return `<array ${countLabel(value.length, "item", "items")}>`;
212
+ if (value !== null && typeof value === "object") {
213
+ return `<object ${countLabel(Object.keys(value).length, "field", "fields")}>`;
214
+ }
215
+ if (value === null) return "<null 0 values>";
216
+ if (typeof value === "undefined") return "<undefined 0 values>";
217
+ return `<${typeof value} 1 value>`;
218
+ }
219
+ function targetFieldName(value) {
220
+ return sanitizeCallTargetText(value).slice(0, 32) || "field";
221
+ }
222
+ function describeCallTarget(tool, args) {
223
+ if (!args) return "";
224
+ const allowedFields = CALL_TARGET_FIELDS[tool] ?? [];
225
+ const allowed = new Set(allowedFields);
226
+ const parts = [];
227
+ for (const field of allowedFields) {
228
+ if (!(field in args)) continue;
229
+ if (isSecretArgKey(field)) {
230
+ parts.push(`${targetFieldName(field)}=${summarizeUnlistedTargetValue(args[field])}`);
231
+ continue;
232
+ }
233
+ const rendered = renderAllowedTargetValue(args[field]);
234
+ if (rendered === null) {
235
+ parts.push(`${targetFieldName(field)}=${summarizeUnlistedTargetValue(args[field])}`);
236
+ continue;
237
+ }
238
+ parts.push(parts.length === 0 ? rendered : `${targetFieldName(field)}=${rendered}`);
239
+ }
240
+ for (const [field, value] of Object.entries(args)) {
241
+ if (allowed.has(field)) continue;
242
+ parts.push(`${targetFieldName(field)}=${summarizeUnlistedTargetValue(value)}`);
243
+ }
244
+ return sanitizeCallTargetText(parts.join(" \xB7 ")).slice(0, CALL_TARGET_MAX_CHARS);
245
+ }
246
+
247
+ export {
248
+ redactSecretString,
249
+ redactToolArgs,
250
+ sanitizeMultilineDisplayText,
251
+ sanitizeCallTargetText,
252
+ describeCallAction,
253
+ describeCallTarget
254
+ };
255
+ //# sourceMappingURL=chunk-TVHHYFHE.js.map