@iowarp/clio-coder 0.4.0 → 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 (581) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +116 -16
  3. package/dist/{acp-G5WJBNCT.js → acp-ZILU3AUO.js} +14 -14
  4. package/dist/{agents-FMV2Q5G4.js → agents-HYWGBGQR.js} +40 -29
  5. package/dist/assets/codewiki.json +1 -1
  6. package/dist/{auth-3IDSJEIK.js → auth-N3QT7CBO.js} +21 -19
  7. package/dist/{builtins-XCZWXSC7.js → builtins-UJLMOVOV.js} +6 -6
  8. package/dist/{chunk-PQEFIJ36.js → chunk-2LEAKD4C.js} +1 -2
  9. package/dist/{chunk-3BT2XMV4.js → chunk-2NM363SV.js} +50 -57
  10. package/dist/{chunk-J4W7KFM7.js → chunk-2VG7KLYV.js} +24 -279
  11. package/dist/{chunk-SST6Z5JA.js → chunk-336NSSKI.js} +1 -1
  12. package/dist/{chunk-K5C3NCBD.js → chunk-3I5NY75V.js} +5 -5
  13. package/dist/{chunk-VAZSBTKF.js → chunk-3QSOM6PA.js} +2 -2
  14. package/dist/{chunk-TZ3SGWZZ.js → chunk-5QIAJV2D.js} +2 -2
  15. package/dist/{chunk-OQBA45DZ.js → chunk-5YHDIDBP.js} +2 -2
  16. package/dist/{chunk-NHLBIGRH.js → chunk-6CCS4G3W.js} +40 -17
  17. package/dist/{chunk-2JDWVJND.js → chunk-6DWBAZ5U.js} +2 -2
  18. package/dist/{chunk-LDQ2ZF2M.js → chunk-6FN3E6KX.js} +5 -5
  19. package/dist/{chunk-X3YGUTOB.js → chunk-6HMJX2VU.js} +59 -59
  20. package/dist/{chunk-VEO4AP2K.js → chunk-6I5ILFOF.js} +3 -2
  21. package/dist/{chunk-B7OBL7PK.js → chunk-6NJQITNH.js} +18 -11
  22. package/dist/{chunk-IQ7KR472.js → chunk-6VC4OV3Z.js} +6 -3
  23. package/dist/{chunk-P3FOHJT4.js → chunk-72GZI5EV.js} +2 -2
  24. package/dist/{chunk-AB44T6BB.js → chunk-74YWRRU5.js} +8 -7
  25. package/dist/{chunk-SJ5ZKQ4S.js → chunk-7EPLI7VL.js} +2 -2
  26. package/dist/{chunk-HWHKMHUA.js → chunk-7OBGU7UB.js} +3 -3
  27. package/dist/{chunk-2OQE55CK.js → chunk-7PWAODYW.js} +2 -2
  28. package/dist/{chunk-IBEBSCYA.js → chunk-7RY5VZPH.js} +42 -33
  29. package/dist/{chunk-LQ3DZAMX.js → chunk-ABLSQ6JX.js} +2 -2
  30. package/dist/{chunk-QLFS5GO2.js → chunk-AFKWHWXF.js} +12 -22
  31. package/dist/{chunk-FWDFM5ZU.js → chunk-AK5XEFVZ.js} +3 -3
  32. package/dist/{chunk-O6TL7WWY.js → chunk-AKB4GYDL.js} +4 -4
  33. package/dist/chunk-AP73CFDC.js +308 -0
  34. package/dist/{chunk-JDG2WCRO.js → chunk-BBTJOK6Y.js} +5 -5
  35. package/dist/{chunk-SP2RXXYO.js → chunk-BDPT6GTK.js} +10 -10
  36. package/dist/{chunk-NQQH3YT7.js → chunk-BJGUKIG4.js} +3 -3
  37. package/dist/{chunk-O4XIVISU.js → chunk-BTGG6BG2.js} +79 -38
  38. package/dist/chunk-BTK3SSSK.js +67 -0
  39. package/dist/{chunk-M6L6IDJG.js → chunk-BWH6N36D.js} +1 -1
  40. package/dist/chunk-BWW4HLO4.js +301 -0
  41. package/dist/{chunk-I5VEOC6I.js → chunk-C537JADH.js} +10 -10
  42. package/dist/{chunk-HI63TFOG.js → chunk-CDNVLKUX.js} +3 -3
  43. package/dist/{chunk-UM7N4G5A.js → chunk-CWVRRIEI.js} +2 -2
  44. package/dist/{chunk-BKFM6EJV.js → chunk-D4CJV46V.js} +2 -2
  45. package/dist/chunk-D7E7WCDF.js +27 -0
  46. package/dist/{chunk-WZR7K7ZX.js → chunk-E67WX76H.js} +6 -6
  47. package/dist/{chunk-FQ4SKYE4.js → chunk-EBY63B7G.js} +2 -5
  48. package/dist/chunk-EIMVLWB3.js +1842 -0
  49. package/dist/{chunk-RAPCMZL4.js → chunk-FSP7CMNU.js} +9 -1
  50. package/dist/{chunk-MLKNTWH2.js → chunk-FYUN5KZ3.js} +21 -21
  51. package/dist/{chunk-YJX4SHTD.js → chunk-GIZNH63R.js} +1 -1
  52. package/dist/{chunk-X75E3D2N.js → chunk-GPPB3JBE.js} +18 -16
  53. package/dist/{chunk-GR5G2PVF.js → chunk-GVQJ5CCZ.js} +15 -10
  54. package/dist/chunk-HJWWJ6IL.js +184 -0
  55. package/dist/{chunk-VO67MWHC.js → chunk-HRQMFLJP.js} +3 -3
  56. package/dist/{chunk-VYMXRQI6.js → chunk-HUAS7ITX.js} +89 -93
  57. package/dist/{chunk-BKFJHQCA.js → chunk-I66EAJFY.js} +2 -2
  58. package/dist/{chunk-DYJP44XW.js → chunk-IG7BCQBA.js} +1 -1
  59. package/dist/{chunk-32KWKNSF.js → chunk-IXJT6DCX.js} +3 -3
  60. package/dist/{chunk-C2LTL2W6.js → chunk-J4HBWF6Y.js} +360 -172
  61. package/dist/chunk-J5LZHVIT.js +284 -0
  62. package/dist/{chunk-QLL7ILRG.js → chunk-JA5QWE4Z.js} +510 -202
  63. package/dist/{chunk-BBVJUZHB.js → chunk-JIEGK6UF.js} +5 -173
  64. package/dist/{chunk-36EJLSQQ.js → chunk-JZWT5J3Y.js} +4 -4
  65. package/dist/{chunk-HZHHCK24.js → chunk-K6BF4U2H.js} +476 -322
  66. package/dist/{chunk-Z2RR6MAK.js → chunk-MA3H6DM5.js} +6 -6
  67. package/dist/{chunk-CODPRO7Q.js → chunk-MOPSG2X7.js} +6 -6
  68. package/dist/{chunk-76ONBSIA.js → chunk-MQXIVJ35.js} +14 -5
  69. package/dist/{chunk-YDFRH54B.js → chunk-N5UK64DP.js} +4 -4
  70. package/dist/chunk-NDDGJUXD.js +81 -0
  71. package/dist/{chunk-4ZG3XFUR.js → chunk-NLFAQR7Z.js} +12 -1
  72. package/dist/{chunk-VO2LKSTM.js → chunk-O42A54GG.js} +2 -2
  73. package/dist/{chunk-W5VSYASO.js → chunk-OJTRZGR3.js} +46 -87
  74. package/dist/{chunk-NHCZP4K7.js → chunk-PBP4B7XR.js} +2 -2
  75. package/dist/{chunk-3URVFKWK.js → chunk-PJJ6MY27.js} +5 -5
  76. package/dist/{chunk-ZGVHUX3M.js → chunk-PMZVFWSR.js} +2 -2
  77. package/dist/{chunk-GKF55TAZ.js → chunk-PVAMAVBB.js} +3 -2
  78. package/dist/{chunk-6DB53AJS.js → chunk-QKIFBZKT.js} +7 -7
  79. package/dist/{chunk-HJJTYUHX.js → chunk-QMXC4JB7.js} +20 -20
  80. package/dist/chunk-QTFGO774.js +644 -0
  81. package/dist/{chunk-CY6FY24N.js → chunk-R23Z6K6I.js} +2 -2
  82. package/dist/{chunk-ULC6OTWO.js → chunk-R32CLGZ6.js} +13 -13
  83. package/dist/{chunk-KMVISBZR.js → chunk-RKSR6VSF.js} +1 -1
  84. package/dist/{chunk-F4CKPOEQ.js → chunk-SCYB3HA4.js} +72 -26
  85. package/dist/{chunk-LY4S7GJC.js → chunk-SINK3QR6.js} +18 -16
  86. package/dist/{chunk-U77AMWDL.js → chunk-TD3PGPQA.js} +43 -22
  87. package/dist/{chunk-QBJA7R7N.js → chunk-THYWACCR.js} +2 -2
  88. package/dist/{chunk-QREDIESB.js → chunk-TVH4ONAM.js} +14 -8
  89. package/dist/chunk-U2WB7TZS.js +271 -0
  90. package/dist/{chunk-KFZI4NIL.js → chunk-UAPGZHYC.js} +145 -31
  91. package/dist/{chunk-DQITNCXG.js → chunk-UEDMSP56.js} +29 -14
  92. package/dist/{chunk-3XML7CDN.js → chunk-UXN6JT4W.js} +2 -2
  93. package/dist/{chunk-CMZWFGD2.js → chunk-VAVR4IJY.js} +19 -15
  94. package/dist/{chunk-BPKCPIL7.js → chunk-VEGN6WIQ.js} +2 -2
  95. package/dist/chunk-VKFQTNDV.js +66 -0
  96. package/dist/{chunk-7MCTRUCE.js → chunk-VKRH2TCS.js} +2 -2
  97. package/dist/{chunk-5LXZXPKX.js → chunk-VN3SHNBN.js} +2 -2
  98. package/dist/{chunk-UOSL25KY.js → chunk-VXMFAE2W.js} +1 -1
  99. package/dist/{chunk-BBVYXMFO.js → chunk-WNP7O5WZ.js} +2 -2
  100. package/dist/{chunk-SUCTJL45.js → chunk-WR6U3OVP.js} +3 -3
  101. package/dist/{chunk-BUMFYQFY.js → chunk-XKA2ICR3.js} +124 -113
  102. package/dist/{chunk-UXMFQ54G.js → chunk-Y45G3AXC.js} +39 -39
  103. package/dist/{chunk-J5Q24KAG.js → chunk-Y4CAGMM6.js} +2 -2
  104. package/dist/{chunk-NYS75XW5.js → chunk-YAKGTXEV.js} +5 -3
  105. package/dist/{chunk-V5DHCITQ.js → chunk-ZAZB4JMW.js} +23 -12
  106. package/dist/{chunk-Z4TXYIEG.js → chunk-ZJLUDYFY.js} +9 -9
  107. package/dist/{chunk-HKIYEGME.js → chunk-ZTJUVLTU.js} +2 -2
  108. package/dist/{chunk-2ANTL7MR.js → chunk-ZW55JB7N.js} +2 -2
  109. package/dist/cli/index.js +36 -36
  110. package/dist/{clio-2JXHBBY5.js → clio-IT3G3VQH.js} +12 -13
  111. package/dist/{code-nav-3YYRMYNF.js → code-nav-RK6S7F6E.js} +5 -5
  112. package/dist/codewiki/build-worker.js +1 -1
  113. package/dist/{compile-cache-7FPE6PS3.js → compile-cache-OQAVB7Y5.js} +2 -4
  114. package/dist/{components-RYZV4JGP.js → components-UBWCQSRW.js} +4 -4
  115. package/dist/{config-QZPCMYSO.js → config-3QZRWZJF.js} +53 -49
  116. package/dist/{configure-TEGEBYCA.js → configure-FL7Y3KJF.js} +25 -22
  117. package/dist/{context-E6H5RNMC.js → context-5HE7ODYK.js} +47 -43
  118. package/dist/{context-AV7OEZ4D.js → context-KYQFRVDC.js} +11 -11
  119. package/dist/{context-GSXUE4CT.js → context-XNHL75JV.js} +32 -19
  120. package/dist/{context-clear-SHIBYK6T.js → context-clear-N545L53A.js} +47 -43
  121. package/dist/{context-working-set-5ZGKPGZQ.js → context-working-set-QHKXSV2F.js} +10 -9
  122. package/dist/{dispatch-runner-EFMJT4LD.js → dispatch-runner-RGIE5PCT.js} +56 -47
  123. package/dist/{docs-23KQS3XK.js → docs-5NAF6AU7.js} +5 -11
  124. package/dist/doctor-ZGPEGHIP.js +772 -0
  125. package/dist/{eval-TFBYQH4H.js → eval-GXLL44RD.js} +63 -45
  126. package/dist/{eval-inventory-SXH7PDKX.js → eval-inventory-HBWSWQOK.js} +7 -8
  127. package/dist/{evidence-ERGESKGN.js → evidence-HWLBRH3Q.js} +44 -40
  128. package/dist/{evolve-VDXTSYCJ.js → evolve-FTZBMNVW.js} +43 -39
  129. package/dist/{extensions-7BGBHN57.js → extensions-VHRBEID7.js} +4 -4
  130. package/dist/{fleet-2RRVDF2V.js → fleet-CKZHJWZJ.js} +86 -73
  131. package/dist/{fleet-commands-VJ726XIA.js → fleet-commands-EXDXBMV6.js} +10 -9
  132. package/dist/{fleet-decisions-EPAPM3XJ.js → fleet-decisions-OTHB6KRL.js} +5 -5
  133. package/dist/{fleet-graph-JF5QOATM.js → fleet-graph-YTEZUCUT.js} +13 -11
  134. package/dist/{fleet-inspect-VLY4S7QM.js → fleet-inspect-SS6YMDCK.js} +44 -41
  135. package/dist/{fleet-preflight-AIZUEJOY.js → fleet-preflight-PBY4VYOM.js} +5 -9
  136. package/dist/{fleet-validate-AJRPDMDV.js → fleet-validate-KMEM5L3S.js} +16 -13
  137. package/dist/{fleet-verify-JFEL2L3H.js → fleet-verify-QD5M7E7Q.js} +42 -39
  138. package/dist/{fleet-view-ZCON35AG.js → fleet-view-WAMJYNDT.js} +44 -52
  139. package/dist/{init-DN2WWLFE.js → init-5XQRBOFV.js} +63 -58
  140. package/dist/{install-XGLBQY5E.js → install-NKNG7KD4.js} +2 -2
  141. package/dist/{interop-OZBKXAYL.js → interop-34TVO25M.js} +13 -11
  142. package/dist/{library-YWZG7IMW.js → library-3QY6KF57.js} +17 -14
  143. package/dist/{memory-I4C4HMLW.js → memory-L4UTIIIW.js} +45 -41
  144. package/dist/{models-CEYXJBO6.js → models-ZVX3QOWE.js} +39 -31
  145. package/dist/{monitor-NZ6GCI3P.js → monitor-CEKVSYTS.js} +50 -46
  146. package/dist/{orchestrator-GCGQ4N5I.js → orchestrator-77BAP6BC.js} +1807 -1039
  147. package/dist/{panes-KY6W3V2E.js → panes-7STHOAUJ.js} +4 -4
  148. package/dist/{panes-HMABYVO4.js → panes-SHAUIRXY.js} +10 -8
  149. package/dist/{paths-II4K7DNR.js → paths-L7LGY6RN.js} +4 -4
  150. package/dist/{reset-DQ6FGCSH.js → reset-EOLM7GVE.js} +7 -8
  151. package/dist/{resources-BB3MVJMD.js → resources-74GKTLSF.js} +17 -13
  152. package/dist/{run-H2GQDUER.js → run-HBAUJNNZ.js} +86 -76
  153. package/dist/{share-GTJN6A5O.js → share-G3APVLVP.js} +17 -14
  154. package/dist/{skills-L55TEW6R.js → skills-35HHUKCR.js} +19 -16
  155. package/dist/{skills-eval-XVXPH2JI.js → skills-eval-QN4HSHDC.js} +55 -57
  156. package/dist/{skills-inventory-S4MXPJFV.js → skills-inventory-J357J34F.js} +15 -12
  157. package/dist/{slash-commands-ZSGASKJC.js → slash-commands-JZZCQA32.js} +31 -29
  158. package/dist/{steer-RZGSCY4R.js → steer-XAVHJM22.js} +3 -3
  159. package/dist/{support-PKEUNNQL.js → support-U7QOWY26.js} +6 -6
  160. package/dist/{targets-NCPZ644J.js → targets-DSM6CY3M.js} +59 -53
  161. package/dist/{terminal-lease-44SV3YCN.js → terminal-lease-JOPFUVEM.js} +14 -9
  162. package/dist/{tools-DAF3DI3C.js → tools-MKNWVPBH.js} +10 -8
  163. package/dist/{trace-FYVW2MQA.js → trace-ECQ7TIYZ.js} +48 -3
  164. package/dist/{tui-primitives-2AKXQNZK.js → tui-primitives-K5PASC3O.js} +8 -4
  165. package/dist/{uninstall-DW2PNOIC.js → uninstall-N34PCTGJ.js} +4 -6
  166. package/dist/{upgrade-3XPP6OQL.js → upgrade-H7TOM7YL.js} +35 -62
  167. package/dist/{usage-3NLHGTU2.js → usage-X52N3IDJ.js} +51 -48
  168. package/dist/{verifiers-SSQONKRT.js → verifiers-EJTVVSMA.js} +10 -9
  169. package/dist/{verify-3U6J7FZI.js → verify-YJL6XET2.js} +9 -8
  170. package/dist/{web-fetch-S7RR6GZ7.js → web-fetch-MPIFL3LL.js} +1 -2
  171. package/dist/{wiki-generate-CEHYGPGQ.js → wiki-generate-4NDZTQ4B.js} +66 -63
  172. package/dist/{with-panes-MKB46MPQ.js → with-panes-OBOBFIIR.js} +62 -26
  173. package/dist/worker/entry.js +57 -52
  174. package/docs/acp.md +1 -1
  175. package/docs/built-in-agents.md +40 -32
  176. package/docs/commands-and-modes.md +9 -3
  177. package/docs/config-knobs-audit.md +3 -0
  178. package/docs/configuration-and-targets.md +105 -164
  179. package/docs/environment-variables.md +2 -1
  180. package/docs/exit-codes-and-output.md +2 -0
  181. package/docs/fleet-demo-runbook.md +6 -3
  182. package/docs/fleet-dispatch.md +8 -6
  183. package/docs/installation-and-lifecycle.md +1 -1
  184. package/docs/release-cut-checklist.md +164 -177
  185. package/docs/trace-store.md +15 -10
  186. package/docs/troubleshooting.md +1 -1
  187. package/evals/README.md +5 -0
  188. package/evals/behavioral-corpus-grader.mjs +103 -0
  189. package/evals/behavioral-machinery-baseline.json +2276 -0
  190. package/evals/behavioral-machinery-driver.ts +250 -0
  191. package/evals/behavioral-machinery-support.ts +253 -0
  192. package/evals/behavioral-machinery.yaml +614 -0
  193. package/evals/behavioral-model-negative-control.yaml +68 -0
  194. package/evals/behavioral-model.yaml +216 -0
  195. package/evals/fixtures/behavioral-facts.txt +3 -0
  196. package/evals/fixtures/behavioral-main.ts +7 -0
  197. package/evals/fixtures/decoy/note.txt +2 -0
  198. package/evals/fixtures/private/credentials.txt +1 -0
  199. package/evals/tracked-metrics-baseline.yaml +229 -0
  200. package/evals/tracked-metrics-grader.mjs +129 -0
  201. package/package.json +5 -15
  202. package/skills/README.md +6 -6
  203. package/skills/coding/ast-grep/SKILL.md +8 -2
  204. package/skills/coding/coding-standards/SKILL.md +8 -2
  205. package/skills/coding/prototype/SKILL.md +8 -2
  206. package/skills/coding/tdd/SKILL.md +8 -2
  207. package/skills/context/context-handoff/SKILL.md +12 -3
  208. package/skills/context/context-handoff/evals.md +3 -3
  209. package/skills/context/context-prime/SKILL.md +8 -2
  210. package/skills/context/context-prime/evals.md +2 -2
  211. package/skills/git/file-ticket/SKILL.md +9 -4
  212. package/skills/git/file-ticket/evals.md +2 -2
  213. package/skills/git/fix-issue/SKILL.md +12 -5
  214. package/skills/git/fix-issue/evals.md +4 -4
  215. package/skills/git/resolve-merge-conflicts/SKILL.md +8 -2
  216. package/skills/git/resolve-merge-conflicts/evals.md +2 -2
  217. package/skills/git/ship/SKILL.md +9 -3
  218. package/skills/git/ship/evals.md +4 -4
  219. package/skills/git/worktree-create/SKILL.md +7 -2
  220. package/skills/git/worktree-create/evals.md +6 -6
  221. package/skills/git/worktree-merge/SKILL.md +7 -2
  222. package/skills/git/worktree-merge/evals.md +6 -6
  223. package/skills/meta/{clio-dev → clio-coder-dev}/SKILL.md +14 -8
  224. package/skills/meta/{clio-dev → clio-coder-dev}/evals.md +3 -3
  225. package/skills/meta/{clio-test → clio-coder-test}/SKILL.md +11 -5
  226. package/skills/meta/{clio-test → clio-coder-test}/evals.md +1 -1
  227. package/skills/meta/credentials/SKILL.md +9 -2
  228. package/skills/meta/find-skills/SKILL.md +8 -2
  229. package/skills/meta/herdr/SKILL.md +8 -2
  230. package/skills/meta/skill-craft/SKILL.md +21 -4
  231. package/skills/planning/architecture/SKILL.md +9 -3
  232. package/skills/planning/backlog/SKILL.md +8 -2
  233. package/skills/planning/prd/SKILL.md +8 -2
  234. package/skills/planning/product-intent/SKILL.md +8 -2
  235. package/skills/planning/tech-spec/SKILL.md +9 -3
  236. package/skills/registry.yaml +66 -66
  237. package/skills/research/arxiv-literature/SKILL.md +8 -2
  238. package/skills/research/experiment-protocol/SKILL.md +9 -2
  239. package/skills/research/scientific-debugging/SKILL.md +9 -2
  240. package/skills/research/scientific-debugging/evals.md +2 -2
  241. package/skills/research/scientific-modernization/SKILL.md +9 -2
  242. package/skills/skill-marketplace.json +257 -38
  243. package/skills/workflow/cut-it/SKILL.md +10 -2
  244. package/skills/workflow/design-council/SKILL.md +11 -2
  245. package/skills/workflow/grill-me/SKILL.md +8 -2
  246. package/skills/workflow/workflow-distiller/SKILL.md +8 -2
  247. package/src/cli/acp.ts +2 -2
  248. package/src/cli/auth.ts +2 -2
  249. package/src/cli/bootstrap-generate.ts +5 -5
  250. package/src/cli/clio.ts +6 -1
  251. package/src/cli/config-inspect.ts +3 -3
  252. package/src/cli/configure-interop.ts +1 -1
  253. package/src/cli/configure.ts +27 -27
  254. package/src/cli/default-target.ts +1 -1
  255. package/src/cli/docs.ts +6 -6
  256. package/src/cli/doctor-naming.ts +323 -0
  257. package/src/cli/doctor-panes.ts +46 -14
  258. package/src/cli/doctor-toolchain.ts +29 -8
  259. package/src/cli/doctor.ts +15 -1
  260. package/src/cli/eval-inventory.ts +8 -8
  261. package/src/cli/evidence-detail.ts +1 -1
  262. package/src/cli/evidence-inventory.ts +1 -1
  263. package/src/cli/fleet-decisions.ts +1 -1
  264. package/src/cli/fleet-inspect.ts +1 -1
  265. package/src/cli/fleet-preflight.ts +1 -1
  266. package/src/cli/fleet-verify.ts +1 -1
  267. package/src/cli/fleet-view.ts +40 -23
  268. package/src/cli/fleet.ts +8 -5
  269. package/src/cli/interop-inspect.ts +2 -2
  270. package/src/cli/models.ts +3 -3
  271. package/src/cli/modes/print.ts +1 -1
  272. package/src/cli/reset.ts +1 -1
  273. package/src/cli/run.ts +11 -15
  274. package/src/cli/share.ts +1 -1
  275. package/src/cli/skills-eval.ts +11 -11
  276. package/src/cli/targets.ts +23 -24
  277. package/src/cli/trace-inspect.ts +1 -1
  278. package/src/cli/trace.ts +41 -0
  279. package/src/cli/uninstall.ts +2 -2
  280. package/src/cli/upgrade.ts +29 -34
  281. package/src/cli/usage.ts +2 -2
  282. package/src/cli/validate-model.ts +1 -1
  283. package/src/cli/verifiers-inspect.ts +1 -1
  284. package/src/cli/wiki-generate.ts +5 -5
  285. package/src/core/bash-exec.ts +1 -1
  286. package/src/core/boot-trace.ts +3 -3
  287. package/src/core/bus-trace.ts +2 -2
  288. package/src/core/compile-cache.ts +1 -1
  289. package/src/core/config.ts +1062 -886
  290. package/src/core/defaults.ts +321 -528
  291. package/src/core/domain-loader.ts +6 -4
  292. package/src/core/event-bus.ts +1 -1
  293. package/src/core/file-references.ts +78 -88
  294. package/src/core/git-commit-attribution.ts +3 -9
  295. package/src/core/guardrails.ts +24 -4
  296. package/src/core/naming-compat.ts +45 -0
  297. package/src/core/naming-events.ts +62 -0
  298. package/src/core/recent-models.ts +1 -7
  299. package/src/core/residency-protection.ts +4 -8
  300. package/src/core/resolve-config-value.ts +1 -1
  301. package/src/core/response-model-id.ts +0 -14
  302. package/src/core/session-routing.ts +84 -74
  303. package/src/core/skill-activation.ts +18 -0
  304. package/src/core/termination.ts +4 -4
  305. package/src/core/timers.ts +2 -12
  306. package/src/domains/agents/catalog.ts +2 -12
  307. package/src/domains/agents/extension.ts +3 -3
  308. package/src/domains/agents/registry.ts +7 -7
  309. package/src/domains/agents/result-contract.ts +1 -1
  310. package/src/domains/agents/spec.ts +0 -11
  311. package/src/domains/config/classify.ts +35 -47
  312. package/src/domains/config/extension.ts +5 -5
  313. package/src/domains/config/keybindings.ts +48 -47
  314. package/src/domains/config/watcher.ts +1 -1
  315. package/src/domains/context/codewiki/indexer.ts +1 -1
  316. package/src/domains/context/extension.ts +3 -3
  317. package/src/domains/context/prompt-context.ts +1 -1
  318. package/src/domains/context/wiki/assemble.ts +2 -2
  319. package/src/domains/context/working-set/replay/metrics.ts +0 -4
  320. package/src/domains/context/working-set/replay/report.ts +1 -1
  321. package/src/domains/context/working-set/replay/synthetic.ts +2 -2
  322. package/src/domains/dispatch/active-route-planner.ts +2 -2
  323. package/src/domains/dispatch/agent-candidates.ts +1 -1
  324. package/src/domains/dispatch/agent-ledger-store.ts +1 -1
  325. package/src/domains/dispatch/agent-ledger.ts +1 -1
  326. package/src/domains/dispatch/assignment.ts +5 -5
  327. package/src/domains/dispatch/capacity-lease.ts +2 -5
  328. package/src/domains/dispatch/code-step.ts +1 -1
  329. package/src/domains/dispatch/contract.ts +2 -2
  330. package/src/domains/dispatch/extension.ts +65 -61
  331. package/src/domains/dispatch/fleet-node-prompt.ts +1 -1
  332. package/src/domains/dispatch/fleet-preflight.ts +8 -17
  333. package/src/domains/dispatch/fleet-run.ts +0 -7
  334. package/src/domains/dispatch/gate-decisions.ts +25 -14
  335. package/src/domains/dispatch/joint-route-resolver.ts +1 -1
  336. package/src/domains/dispatch/path-scope.ts +0 -61
  337. package/src/domains/dispatch/placement.ts +2 -2
  338. package/src/domains/dispatch/receipt-findings.ts +1 -1
  339. package/src/domains/dispatch/receipt-integrity.ts +20 -8
  340. package/src/domains/dispatch/reservation-store.ts +0 -23
  341. package/src/domains/dispatch/route-decision.ts +1 -1
  342. package/src/domains/dispatch/route-history.ts +1 -1
  343. package/src/domains/dispatch/route-policy.ts +1 -1
  344. package/src/domains/dispatch/route-readiness.ts +0 -28
  345. package/src/domains/dispatch/run-event-journal.ts +6 -5
  346. package/src/domains/dispatch/tool-stats.ts +1 -1
  347. package/src/domains/dispatch/transport.ts +2 -19
  348. package/src/domains/dispatch/types.ts +3 -3
  349. package/src/domains/dispatch/worker-protocol.ts +2 -2
  350. package/src/domains/eval/artifacts/store.ts +5 -4
  351. package/src/domains/eval/compare/thresholds.ts +0 -8
  352. package/src/domains/eval/execution-provenance.ts +1 -1
  353. package/src/domains/eval/metrics/token-stream.ts +0 -7
  354. package/src/domains/eval/report.ts +1 -1
  355. package/src/domains/eval/runner.ts +1 -1
  356. package/src/domains/eval/runners/clio-run.ts +7 -6
  357. package/src/domains/eval/runners/external-command.ts +4 -3
  358. package/src/domains/eval/schema/artifact.ts +1 -1
  359. package/src/domains/eval/schema/behavioral-metrics.ts +3 -2
  360. package/src/domains/eval/schema/behavioral.ts +7 -6
  361. package/src/domains/eval/schema/execution-envelope.ts +4 -2
  362. package/src/domains/eval/schema/naming.ts +10 -0
  363. package/src/domains/eval/schema/suite.ts +2 -2
  364. package/src/domains/eval/schema/validate.ts +9 -5
  365. package/src/domains/eval/schema/verdict.ts +4 -2
  366. package/src/domains/eval/store.ts +12 -2
  367. package/src/domains/eval/suites/run.ts +12 -6
  368. package/src/domains/eval/types.ts +1 -1
  369. package/src/domains/eval/workspaces/git.ts +1 -1
  370. package/src/domains/eval/workspaces/temp-copy.ts +1 -1
  371. package/src/domains/evidence/build.ts +13 -5
  372. package/src/domains/interop/consent.ts +7 -7
  373. package/src/domains/interop/extension.ts +1 -1
  374. package/src/domains/lifecycle/doctor.ts +27 -21
  375. package/src/domains/lifecycle/migrations/2026-09-01-clio-coder-naming.ts +155 -0
  376. package/src/domains/lifecycle/migrations/2026-09-01-retire-panes-knobs.ts +59 -0
  377. package/src/domains/lifecycle/migrations/2026-09-01-settings-v2.ts +338 -0
  378. package/src/domains/lifecycle/migrations/index.ts +20 -1
  379. package/src/domains/lifecycle/naming-history.ts +153 -0
  380. package/src/domains/lifecycle/naming-mutable-state.ts +104 -0
  381. package/src/domains/lifecycle/naming-resources.ts +261 -0
  382. package/src/domains/lifecycle/naming-tool-markers.ts +139 -0
  383. package/src/domains/lifecycle/naming-yazi.ts +81 -0
  384. package/src/domains/lifecycle/upgrade-notice.ts +1 -1
  385. package/src/domains/memory/task-memory-handoff.ts +6 -3
  386. package/src/domains/middleware/index.ts +7 -0
  387. package/src/domains/middleware/marketplace-offer.ts +339 -0
  388. package/src/domains/middleware/runtime.ts +2 -2
  389. package/src/domains/mux/contract.ts +157 -25
  390. package/src/domains/mux/detect.ts +29 -5
  391. package/src/domains/mux/dock-controller.ts +365 -0
  392. package/src/domains/mux/extension.ts +7 -1
  393. package/src/domains/mux/index.ts +20 -0
  394. package/src/domains/mux/operations.ts +28 -0
  395. package/src/domains/mux/protocol.ts +19 -6
  396. package/src/domains/mux/socket-client.ts +167 -19
  397. package/src/domains/mux/types.ts +49 -6
  398. package/src/domains/mux/yazi/event-stream.ts +6 -4
  399. package/src/domains/mux/yazi/profile.ts +1 -1
  400. package/src/domains/mux/yazi/session.ts +26 -3
  401. package/src/domains/observability/extension.ts +1 -1
  402. package/src/domains/observability/out-of-turn-usage.ts +2 -2
  403. package/src/domains/observability/projection.ts +1 -1
  404. package/src/domains/observability/trace-store.ts +22 -12
  405. package/src/domains/prompts/compiler.ts +2 -2
  406. package/src/domains/prompts/extension.ts +3 -3
  407. package/src/domains/prompts/fragments/identity/clio-worker.md +1 -1
  408. package/src/domains/prompts/fragments/operating/skills.md +25 -18
  409. package/src/domains/providers/extension.ts +5 -5
  410. package/src/domains/providers/knowledge-base-path.ts +1 -1
  411. package/src/domains/providers/model-runtime-capabilities.ts +14 -2
  412. package/src/domains/providers/models/cloud-models/alcf.yaml +1 -1
  413. package/src/domains/providers/models/local-models/{clio-local-coding-targets.yaml → clio-coder-local-coding-targets.yaml} +4 -4
  414. package/src/domains/providers/plugins.ts +1 -1
  415. package/src/domains/providers/resolver.ts +1 -1
  416. package/src/domains/providers/runtimes/cloud/alcf.ts +4 -4
  417. package/src/domains/providers/runtimes/common/lmstudio-http.ts +1 -5
  418. package/src/domains/providers/runtimes/common/local-synth.ts +3 -3
  419. package/src/domains/providers/runtimes/common/probe-helpers.ts +2 -2
  420. package/src/domains/providers/runtimes/local-native/llamacpp-completion.ts +1 -1
  421. package/src/domains/providers/runtimes/local-native/lmstudio.ts +2 -9
  422. package/src/domains/providers/runtimes/protocol/litellm.ts +1 -91
  423. package/src/domains/providers/types/knowledge-base.ts +13 -0
  424. package/src/domains/providers/types/local-model-quirks.ts +2 -2
  425. package/src/domains/providers/types/target-descriptor.ts +3 -3
  426. package/src/domains/resources/extension.ts +1 -1
  427. package/src/domains/resources/library.ts +6 -6
  428. package/src/domains/resources/prompts/loader.ts +1 -1
  429. package/src/domains/resources/skills/content-hash.ts +7 -6
  430. package/src/domains/resources/skills/evals.ts +1 -1
  431. package/src/domains/resources/skills/install.ts +36 -12
  432. package/src/domains/resources/skills/loader.ts +39 -13
  433. package/src/domains/resources/skills/marketplace.ts +21 -2
  434. package/src/domains/resources/skills/promotion.ts +214 -0
  435. package/src/domains/safety/audit.ts +2 -2
  436. package/src/domains/safety/finish-contract.ts +2 -1
  437. package/src/domains/safety/run-effects.ts +1 -1
  438. package/src/domains/scheduling/extension.ts +4 -4
  439. package/src/domains/session/archive-readers.ts +9 -1
  440. package/src/domains/session/compaction/branch-summary.ts +4 -0
  441. package/src/domains/session/compaction/compact.ts +1 -1
  442. package/src/domains/session/compaction/tokens.ts +4 -0
  443. package/src/domains/session/context-accounting.ts +1 -1
  444. package/src/domains/session/decision-board.ts +1 -1
  445. package/src/domains/session/extension.ts +1 -1
  446. package/src/domains/session/handoff.ts +2 -2
  447. package/src/domains/session/prompt-manifest.ts +0 -5
  448. package/src/domains/session/protected-artifact-journal.ts +12 -6
  449. package/src/domains/session/retry.ts +1 -1
  450. package/src/domains/share/archive.ts +85 -36
  451. package/src/domains/toolchain/install.ts +1 -1
  452. package/src/engine/acp/adapter.ts +3 -3
  453. package/src/engine/acp/event-mapper.ts +3 -3
  454. package/src/engine/acp/server.ts +27 -26
  455. package/src/engine/acp/tool-mediator.ts +2 -2
  456. package/src/engine/acp/types.ts +1 -1
  457. package/src/engine/alcf-oauth.ts +5 -5
  458. package/src/engine/antigravity/subprocess-runtime.ts +2 -2
  459. package/src/engine/api-registry.ts +1 -1
  460. package/src/engine/apis/llamacpp-residency.ts +1 -19
  461. package/src/engine/apis/lmstudio.ts +1 -6
  462. package/src/engine/apis/ollama-native.ts +3 -3
  463. package/src/engine/apis/openai-completions.ts +2 -2
  464. package/src/engine/apis/residency.ts +3 -9
  465. package/src/engine/claude/sdk-module.ts +1 -12
  466. package/src/engine/claude/sdk-runtime.ts +6 -6
  467. package/src/engine/claude/subprocess-runtime.ts +1 -1
  468. package/src/engine/claude/tool-safety.ts +4 -4
  469. package/src/engine/loop-guard.ts +0 -5
  470. package/src/engine/session.ts +14 -7
  471. package/src/engine/tui-primitives.ts +1 -1
  472. package/src/engine/worker-events.ts +6 -6
  473. package/src/engine/worker-runtime.ts +14 -13
  474. package/src/entry/orchestrator.ts +107 -88
  475. package/src/interactive/application-controller.ts +21 -21
  476. package/src/interactive/bus-notices.ts +2 -2
  477. package/src/interactive/chat-loop.ts +8 -8
  478. package/src/interactive/chat-panel.ts +1 -1
  479. package/src/interactive/clio-editor.ts +105 -1
  480. package/src/interactive/context-activity.ts +8 -6
  481. package/src/interactive/context-meter.ts +3 -6
  482. package/src/interactive/context-overlay.ts +1 -1
  483. package/src/interactive/cost-overlay.ts +1 -1
  484. package/src/interactive/council-grid.ts +2 -2
  485. package/src/interactive/dispatch-board.ts +30 -33
  486. package/src/interactive/editor-bash.ts +21 -0
  487. package/src/interactive/editor-steer.ts +9 -4
  488. package/src/interactive/editor-submit.ts +24 -18
  489. package/src/interactive/external-editor.ts +1 -1
  490. package/src/interactive/file-reference-completion.ts +360 -0
  491. package/src/interactive/footer/dashboard.ts +15 -17
  492. package/src/interactive/footer/notifications.ts +14 -8
  493. package/src/interactive/footer/widgets.ts +2 -44
  494. package/src/interactive/interactive-application.ts +79 -59
  495. package/src/interactive/interactive-event-projection.ts +1 -1
  496. package/src/interactive/interactive-input-runtime.ts +2 -2
  497. package/src/interactive/interactive-presentation.ts +21 -16
  498. package/src/interactive/interactive-shell.ts +2 -2
  499. package/src/interactive/interactive-slash-runtime.ts +63 -17
  500. package/src/interactive/interactive-subscriptions.ts +1 -1
  501. package/src/interactive/interactive-tickers.ts +1 -1
  502. package/src/interactive/keybinding-manager.ts +4 -4
  503. package/src/interactive/layout.ts +1 -1
  504. package/src/interactive/memory-overlay.ts +2 -2
  505. package/src/interactive/modal-marker.ts +2 -21
  506. package/src/interactive/mutation-preview.ts +1 -1
  507. package/src/interactive/overlay-frame.ts +4 -12
  508. package/src/interactive/overlay-general-openers.ts +6 -2
  509. package/src/interactive/overlay-key-routing.ts +7 -7
  510. package/src/interactive/overlay-lifecycle.ts +1 -1
  511. package/src/interactive/overlay-model-selectors.ts +3 -3
  512. package/src/interactive/overlays/agents.ts +2 -2
  513. package/src/interactive/overlays/ask-user.ts +25 -11
  514. package/src/interactive/overlays/context-reset.ts +28 -4
  515. package/src/interactive/overlays/cwd-fallback.ts +28 -4
  516. package/src/interactive/overlays/decisions.ts +4 -2
  517. package/src/interactive/overlays/fleet-run-approval.ts +3 -3
  518. package/src/interactive/overlays/handoff-review.ts +2 -2
  519. package/src/interactive/overlays/interop.ts +1 -1
  520. package/src/interactive/overlays/library-install-confirm.ts +1 -1
  521. package/src/interactive/overlays/message-picker.ts +1 -1
  522. package/src/interactive/overlays/model-selector.ts +39 -31
  523. package/src/interactive/overlays/prompts.ts +10 -4
  524. package/src/interactive/overlays/session-selector.ts +2 -2
  525. package/src/interactive/overlays/settings.ts +339 -293
  526. package/src/interactive/overlays/side-question.ts +2 -2
  527. package/src/interactive/overlays/skills-hub.ts +8 -8
  528. package/src/interactive/overlays/tree-selector.ts +2 -2
  529. package/src/interactive/panes-runtime.ts +36 -10
  530. package/src/interactive/permission-overlay.ts +2 -2
  531. package/src/interactive/renderers/retry-status.ts +12 -4
  532. package/src/interactive/renderers/tool-execution.ts +4 -4
  533. package/src/interactive/session-transcript.ts +3 -3
  534. package/src/interactive/slash-autocomplete.ts +454 -165
  535. package/src/interactive/slash-commands.ts +279 -183
  536. package/src/interactive/slash-spec.ts +160 -17
  537. package/src/interactive/status/controller.ts +2 -2
  538. package/src/interactive/stream-pacing-policy.ts +1 -1
  539. package/src/interactive/tasks-overlay.ts +20 -13
  540. package/src/interactive/terminal-lease.ts +6 -7
  541. package/src/interactive/turn-context.ts +11 -11
  542. package/src/interactive/turn-persistence.ts +2 -2
  543. package/src/interactive/turn-prewarm.ts +2 -2
  544. package/src/interactive/turn-runtime.ts +8 -8
  545. package/src/interactive/turn-state.ts +1 -1
  546. package/src/interactive/view/artifacts.ts +12 -9
  547. package/src/interactive/view/view-overlay.ts +13 -10
  548. package/src/interactive/watch-pane.ts +38 -10
  549. package/src/interactive/welcome-dashboard.ts +15 -15
  550. package/src/interactive/worker-progress.ts +4 -4
  551. package/src/interactive/worker-receipts.ts +1 -1
  552. package/src/interactive/worker-stream.ts +1 -4
  553. package/src/interactive/yazi-bridge.ts +12 -5
  554. package/src/tools/ask-user.ts +3 -3
  555. package/src/tools/bash.ts +1 -1
  556. package/src/tools/builtin-tool-catalog.ts +1 -1
  557. package/src/tools/compete-worktrees.ts +27 -17
  558. package/src/tools/context/index.ts +15 -1
  559. package/src/tools/dispatch-admission.ts +4 -2
  560. package/src/tools/dispatch-arguments.ts +1 -1
  561. package/src/tools/dispatch-plan.ts +0 -11
  562. package/src/tools/dispatch-run-events.ts +12 -10
  563. package/src/tools/dispatch-runner.ts +11 -6
  564. package/src/tools/dispatch.ts +1 -1
  565. package/src/tools/find.ts +1 -6
  566. package/src/tools/monitor.ts +4 -4
  567. package/src/tools/observers.ts +0 -33
  568. package/src/tools/task-worktree.ts +28 -7
  569. package/src/tools/verify/authoring.ts +3 -6
  570. package/src/tools/verify/frontend.ts +1 -1
  571. package/src/tools/web-fetch.ts +1 -1
  572. package/src/worker/entry.ts +4 -3
  573. package/src/worker/protocol.ts +16 -14
  574. package/src/worker/spec-contract.ts +2 -2
  575. package/src/worker/stdin-demux.ts +2 -2
  576. package/dist/chunk-GXNLGKAB.js +0 -571
  577. package/dist/chunk-VFA6GDY5.js +0 -1625
  578. package/dist/doctor-QOA5FNY5.js +0 -313
  579. package/src/engine/apis/degraded-inference.ts +0 -95
  580. /package/skills/meta/{clio-test → clio-coder-test}/references/harness.md +0 -0
  581. /package/skills/meta/{clio-test → clio-coder-test}/references/test-map.md +0 -0
@@ -0,0 +1,271 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ gitCommitAttributionEnabled,
4
+ reportCommitAttributionDiagnostic,
5
+ withManagedGitCommitAttributionEnvironment
6
+ } from "./chunk-JIEGK6UF.js";
7
+ import {
8
+ clampTimerDelayMs
9
+ } from "./chunk-EBY63B7G.js";
10
+ import {
11
+ AI_AGENT_NAME
12
+ } from "./chunk-6EJMN2Y3.js";
13
+ import {
14
+ init_esm_shims
15
+ } from "./chunk-3R73A4XB.js";
16
+
17
+ // src/core/bash-exec.ts
18
+ init_esm_shims();
19
+ import { spawn } from "node:child_process";
20
+ import { StringDecoder } from "node:string_decoder";
21
+ var BASH_HARD_CAP_BYTES = 16 * 1024 * 1024;
22
+ var CLIO_CONTROL_ENV_KEYS = ["CLIO_CODER_INTERACTIVE", "CLIO_CODER_RESUME_SESSION_ID"];
23
+ var BASH_UPDATE_THROTTLE_MS = 100;
24
+ function buildToolEnv() {
25
+ const env = { ...process.env };
26
+ env.AI_AGENT = AI_AGENT_NAME;
27
+ for (const key of CLIO_CONTROL_ENV_KEYS) {
28
+ Reflect.deleteProperty(env, key);
29
+ }
30
+ return env;
31
+ }
32
+ var LOGIN_ENV_CAPTURE_TIMEOUT_MS = 1e4;
33
+ var loginEnvCapture = null;
34
+ function parseNullDelimitedEnv(raw) {
35
+ const env = {};
36
+ for (const entry of raw.split("\0")) {
37
+ if (entry.length === 0) continue;
38
+ const eq = entry.indexOf("=");
39
+ if (eq <= 0) continue;
40
+ env[entry.slice(0, eq)] = entry.slice(eq + 1);
41
+ }
42
+ return typeof env.PATH === "string" && env.PATH.length > 0 ? env : null;
43
+ }
44
+ function captureLoginEnv() {
45
+ return new Promise((resolve) => {
46
+ let stdout = "";
47
+ let settled = false;
48
+ const finish = (value) => {
49
+ if (settled) return;
50
+ settled = true;
51
+ clearTimeout(timer);
52
+ resolve(value);
53
+ };
54
+ const child = spawn("/bin/bash", ["-lc", "env -0"], {
55
+ env: buildToolEnv(),
56
+ stdio: ["ignore", "pipe", "ignore"]
57
+ });
58
+ const timer = setTimeout(() => {
59
+ child.kill("SIGKILL");
60
+ finish(null);
61
+ }, LOGIN_ENV_CAPTURE_TIMEOUT_MS);
62
+ child.stdout?.on("data", (chunk) => {
63
+ stdout += chunk.toString("utf8");
64
+ });
65
+ child.on("error", () => finish(null));
66
+ child.on("close", (code) => finish(code === 0 ? parseNullDelimitedEnv(stdout) : null));
67
+ });
68
+ }
69
+ async function bashSpawnPlan() {
70
+ loginEnvCapture ??= captureLoginEnv();
71
+ const captured = await loginEnvCapture;
72
+ if (captured === null) return { mode: "-lc", env: buildToolEnv() };
73
+ const env = { ...process.env, ...captured };
74
+ env.AI_AGENT = AI_AGENT_NAME;
75
+ for (const key of CLIO_CONTROL_ENV_KEYS) {
76
+ Reflect.deleteProperty(env, key);
77
+ }
78
+ return { mode: "-c", env };
79
+ }
80
+ function combineBashOutput(result) {
81
+ const { stdout, stderr } = result;
82
+ return stderr.length > 0 ? `${stdout}${stdout.endsWith("\n") || stdout.length === 0 ? "" : "\n"}${stderr}` : stdout;
83
+ }
84
+ async function runBashCommand(command, options = {}) {
85
+ const plan = await bashSpawnPlan();
86
+ const attribution = withManagedGitCommitAttributionEnvironment(plan.env, {
87
+ cwd: options.cwd ?? process.cwd(),
88
+ enabled: gitCommitAttributionEnabled(process.env)
89
+ });
90
+ reportCommitAttributionDiagnostic(attribution.diagnostic);
91
+ return new Promise((resolve) => {
92
+ const timeout = clampTimerDelayMs(options.timeoutMs ?? 3e5);
93
+ let aborted = false;
94
+ let timedOut = false;
95
+ let settled = false;
96
+ let timeoutId = null;
97
+ let killGraceTimer = null;
98
+ let killSent = false;
99
+ let stdout = "";
100
+ let stderr = "";
101
+ const stdoutDecoder = new StringDecoder("utf8");
102
+ const stderrDecoder = new StringDecoder("utf8");
103
+ let decodersFinished = false;
104
+ let outputBytes = 0;
105
+ let outputCapped = false;
106
+ let updateTimer = null;
107
+ let updateDirty = false;
108
+ let lastUpdateAt = 0;
109
+ const child = spawn("/bin/bash", [plan.mode, command], {
110
+ ...options.cwd === void 0 ? {} : { cwd: options.cwd },
111
+ env: attribution.env,
112
+ detached: process.platform !== "win32",
113
+ stdio: ["ignore", "pipe", "pipe"]
114
+ });
115
+ const finishDecoders = () => {
116
+ if (decodersFinished) return;
117
+ decodersFinished = true;
118
+ if (outputCapped) return;
119
+ stdout += stdoutDecoder.end();
120
+ stderr += stderrDecoder.end();
121
+ };
122
+ const emitUpdate = () => {
123
+ if (options.onUpdate === void 0 || !updateDirty) return;
124
+ updateDirty = false;
125
+ lastUpdateAt = Date.now();
126
+ try {
127
+ options.onUpdate({ stdout, stderr, outputBytes: Math.min(outputBytes, BASH_HARD_CAP_BYTES) });
128
+ } catch {
129
+ }
130
+ };
131
+ const clearUpdateTimer = () => {
132
+ if (updateTimer === null) return;
133
+ clearTimeout(updateTimer);
134
+ updateTimer = null;
135
+ };
136
+ const scheduleUpdate = () => {
137
+ if (options.onUpdate === void 0) return;
138
+ updateDirty = true;
139
+ const delay = BASH_UPDATE_THROTTLE_MS - (Date.now() - lastUpdateAt);
140
+ if (delay <= 0) {
141
+ clearUpdateTimer();
142
+ emitUpdate();
143
+ return;
144
+ }
145
+ updateTimer ??= setTimeout(() => {
146
+ updateTimer = null;
147
+ emitUpdate();
148
+ }, delay);
149
+ };
150
+ const finishUpdates = () => {
151
+ clearUpdateTimer();
152
+ emitUpdate();
153
+ };
154
+ if (options.onUpdate !== void 0) {
155
+ updateDirty = true;
156
+ emitUpdate();
157
+ }
158
+ const clearKillGraceTimer = () => {
159
+ if (!killGraceTimer) return;
160
+ clearTimeout(killGraceTimer);
161
+ killGraceTimer = null;
162
+ };
163
+ const sendSignal = (signalName) => {
164
+ const pid = child.pid;
165
+ if (pid && process.platform !== "win32") {
166
+ try {
167
+ process.kill(-pid, signalName);
168
+ return;
169
+ } catch {
170
+ }
171
+ }
172
+ child.kill(signalName);
173
+ };
174
+ const killChild = () => {
175
+ if (killSent) return;
176
+ killSent = true;
177
+ sendSignal("SIGTERM");
178
+ killGraceTimer = setTimeout(() => {
179
+ sendSignal("SIGKILL");
180
+ }, 5e3);
181
+ };
182
+ function onAbort() {
183
+ aborted = true;
184
+ killChild();
185
+ }
186
+ if (timeout > 0) {
187
+ timeoutId = setTimeout(() => {
188
+ timedOut = true;
189
+ killChild();
190
+ }, timeout);
191
+ }
192
+ if (options.signal?.aborted) {
193
+ onAbort();
194
+ } else {
195
+ options.signal?.addEventListener("abort", onAbort, { once: true });
196
+ }
197
+ const appendChunk = (target, chunk) => {
198
+ if (outputCapped) return;
199
+ const remaining = BASH_HARD_CAP_BYTES - outputBytes;
200
+ const accepted = chunk.byteLength <= remaining ? chunk : chunk.subarray(0, Math.max(0, remaining));
201
+ outputBytes += accepted.byteLength;
202
+ if (accepted.byteLength > 0) {
203
+ const decoded = target === "stdout" ? stdoutDecoder.write(accepted) : stderrDecoder.write(accepted);
204
+ if (target === "stdout") stdout += decoded;
205
+ else stderr += decoded;
206
+ }
207
+ if (accepted.byteLength < chunk.byteLength) {
208
+ outputCapped = true;
209
+ scheduleUpdate();
210
+ killChild();
211
+ return;
212
+ }
213
+ scheduleUpdate();
214
+ };
215
+ child.stdout?.on("data", (chunk) => appendChunk("stdout", chunk));
216
+ child.stderr?.on("data", (chunk) => appendChunk("stderr", chunk));
217
+ child.on("error", (error) => {
218
+ if (settled) return;
219
+ settled = true;
220
+ if (timeoutId) clearTimeout(timeoutId);
221
+ clearKillGraceTimer();
222
+ finishDecoders();
223
+ finishUpdates();
224
+ options.signal?.removeEventListener("abort", onAbort);
225
+ resolve({
226
+ error,
227
+ stdout,
228
+ stderr,
229
+ exitCode: null,
230
+ signal: null,
231
+ aborted,
232
+ timedOut,
233
+ outputCapped,
234
+ outputBytes
235
+ });
236
+ });
237
+ child.on("close", (code, signalName) => {
238
+ if (settled) return;
239
+ settled = true;
240
+ if (timeoutId) clearTimeout(timeoutId);
241
+ clearKillGraceTimer();
242
+ finishDecoders();
243
+ finishUpdates();
244
+ options.signal?.removeEventListener("abort", onAbort);
245
+ const error = code === 0 && signalName === null ? null : {
246
+ name: "Error",
247
+ message: signalName ? `command terminated by ${signalName}` : `command exited with code ${code ?? "?"}`,
248
+ code: code ?? void 0,
249
+ signal: signalName ?? void 0
250
+ };
251
+ resolve({
252
+ error,
253
+ stdout,
254
+ stderr,
255
+ exitCode: code,
256
+ signal: signalName,
257
+ aborted,
258
+ timedOut,
259
+ outputCapped,
260
+ outputBytes
261
+ });
262
+ });
263
+ });
264
+ }
265
+
266
+ export {
267
+ BASH_HARD_CAP_BYTES,
268
+ combineBashOutput,
269
+ runBashCommand
270
+ };
271
+ //# sourceMappingURL=chunk-U2WB7TZS.js.map
@@ -1,4 +1,7 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ combineBashOutput
4
+ } from "./chunk-U2WB7TZS.js";
2
5
  import {
3
6
  init_esm_shims
4
7
  } from "./chunk-3R73A4XB.js";
@@ -566,6 +569,48 @@ function clioTheme() {
566
569
  // src/interactive/clio-editor.ts
567
570
  init_esm_shims();
568
571
 
572
+ // src/interactive/editor-bash.ts
573
+ init_esm_shims();
574
+ var PASTED_EDITOR_OPERATOR_GUARD = "\u2063";
575
+ function guardPastedEditorOperator(text) {
576
+ return `${PASTED_EDITOR_OPERATOR_GUARD}${text}`;
577
+ }
578
+ function unguardPastedEditorOperator(text) {
579
+ return text.startsWith(PASTED_EDITOR_OPERATOR_GUARD) ? text.slice(PASTED_EDITOR_OPERATOR_GUARD.length) : text;
580
+ }
581
+ function parseEditorBashCommand(text) {
582
+ if (text.startsWith(PASTED_EDITOR_OPERATOR_GUARD) || text.includes("\n") || text.includes("\r")) return null;
583
+ if (!text.startsWith("!")) return null;
584
+ const excludeFromContext = text.startsWith("!!");
585
+ const command = (excludeFromContext ? text.slice(2) : text.slice(1)).trim();
586
+ if (command.length === 0) return null;
587
+ return { command, excludeFromContext };
588
+ }
589
+ function appendStatusNotes(output, result, timeoutMs) {
590
+ const notes = [];
591
+ if (result.aborted) notes.push("command aborted");
592
+ if (result.timedOut) notes.push(`command timed out after ${timeoutMs}ms`);
593
+ if (result.outputCapped) notes.push("command output exceeded the inline output limit");
594
+ if (result.error && output.trim().length === 0) notes.push(result.error.message);
595
+ if (notes.length === 0) return output;
596
+ const suffix = notes.map((note) => `[${note}]`).join("\n");
597
+ return output.length > 0 ? `${output.replace(/\s+$/g, "")}
598
+ ${suffix}` : suffix;
599
+ }
600
+ function bashExecutionEntryInput(args) {
601
+ const output = appendStatusNotes(combineBashOutput(args.result), args.result, args.timeoutMs);
602
+ return {
603
+ kind: "bashExecution",
604
+ parentTurnId: args.parentTurnId,
605
+ command: args.command,
606
+ output,
607
+ exitCode: args.result.exitCode,
608
+ cancelled: args.result.aborted,
609
+ truncated: args.result.outputCapped,
610
+ excludeFromContext: args.excludeFromContext
611
+ };
612
+ }
613
+
569
614
  // src/interactive/overlay-frame.ts
570
615
  init_esm_shims();
571
616
 
@@ -772,12 +817,6 @@ function formatRuntimeResolutionDiagnostic(diagnostic) {
772
817
  function diagnosticSeverityToken(severity) {
773
818
  return severity === "error" ? "error" : severity === "warning" ? "warning" : "muted";
774
819
  }
775
- function runtimeResolutionDiagnosticLine(diagnostic, width) {
776
- return clioTheme().fg(diagnosticSeverityToken(diagnostic.severity), fitDiagnosticLine(diagnostic, width));
777
- }
778
- function fitDiagnosticLine(diagnostic, width) {
779
- return padAnsi(formatRuntimeResolutionDiagnostic(diagnostic), Math.max(1, width));
780
- }
781
820
  function frameAlignForAnchor(anchor) {
782
821
  if (anchor === void 0) return "center";
783
822
  if (anchor === "left-center" || anchor.endsWith("-left")) return "left";
@@ -1012,12 +1051,45 @@ function findBottomRail(lines, width) {
1012
1051
  }
1013
1052
  return -1;
1014
1053
  }
1054
+ function cursorEndsDirectoryPath(editor) {
1055
+ const cursor = editor.getCursor();
1056
+ const line = editor.getLines()[cursor.line] ?? "";
1057
+ return line.slice(0, cursor.col).endsWith("/");
1058
+ }
1059
+ function remapPastedBangOffsets(before, after, offsets, markInsertedAsPasted) {
1060
+ let prefix = 0;
1061
+ while (prefix < before.length && prefix < after.length && before[prefix] === after[prefix]) prefix += 1;
1062
+ let beforeEnd = before.length;
1063
+ let afterEnd = after.length;
1064
+ while (beforeEnd > prefix && afterEnd > prefix && before[beforeEnd - 1] === after[afterEnd - 1]) {
1065
+ beforeEnd -= 1;
1066
+ afterEnd -= 1;
1067
+ }
1068
+ const next = /* @__PURE__ */ new Set();
1069
+ const shift = afterEnd - prefix - (beforeEnd - prefix);
1070
+ for (const offset of offsets) {
1071
+ if (offset < prefix) next.add(offset);
1072
+ else if (offset >= beforeEnd) next.add(offset + shift);
1073
+ }
1074
+ if (markInsertedAsPasted) {
1075
+ for (let offset = prefix; offset < afterEnd; offset += 1) {
1076
+ if (after[offset] === "!") next.add(offset);
1077
+ }
1078
+ }
1079
+ return next;
1080
+ }
1081
+ function startsWithPastedOperator(text, pastedBangOffsets) {
1082
+ const first = text.search(/\S/u);
1083
+ return first >= 0 && text[first] === "!" && pastedBangOffsets.has(first);
1084
+ }
1015
1085
  var ClioEditor = class extends Editor {
1016
1086
  constructor(tui, chrome) {
1017
1087
  super(tui, editorTheme(clioTheme()));
1018
1088
  this.chrome = chrome;
1019
1089
  }
1020
1090
  chrome;
1091
+ pastedBangOffsets = /* @__PURE__ */ new Set();
1092
+ bracketedPasteActive = false;
1021
1093
  render(width) {
1022
1094
  const lines = super.render(width);
1023
1095
  if (lines.length === 0) return lines;
@@ -1059,6 +1131,14 @@ var ClioEditor = class extends Editor {
1059
1131
  }
1060
1132
  return lines;
1061
1133
  }
1134
+ /**
1135
+ * Preserve paste provenance for every immediate-send binding, including the
1136
+ * alternate paths that invoke the submit controller without an Editor Enter.
1137
+ */
1138
+ getTextForSubmit() {
1139
+ const text = this.getExpandedText();
1140
+ return startsWithPastedOperator(this.getText(), this.pastedBangOffsets) ? guardPastedEditorOperator(text) : text;
1141
+ }
1062
1142
  /**
1063
1143
  * pi-tui's bracketed-paste handling inserts pasted text (including a
1064
1144
  * trailing newline the paste carried) without submitting: a pasted
@@ -1068,8 +1148,34 @@ var ClioEditor = class extends Editor {
1068
1148
  * through the same handler the typed-Enter path uses.
1069
1149
  */
1070
1150
  handleInput(data) {
1151
+ const openedPaste = data.includes("\x1B[200~");
1071
1152
  const closedPaste = data.includes("\x1B[201~");
1153
+ const pasteMutation = this.bracketedPasteActive || openedPaste;
1154
+ const textBeforeInput = this.getText();
1155
+ const keybindings = getKeybindings();
1156
+ if (startsWithPastedOperator(textBeforeInput, this.pastedBangOffsets) && keybindings.matches(data, "tui.input.submit")) {
1157
+ const pastedText = this.getTextForSubmit();
1158
+ this.pastedBangOffsets.clear();
1159
+ this.bracketedPasteActive = false;
1160
+ super.setText(pastedText);
1161
+ super.handleInput(data);
1162
+ return;
1163
+ }
1164
+ const completingDirectory = this.isShowingAutocomplete() && (keybindings.matches(data, "tui.input.tab") || keybindings.matches(data, "tui.select.confirm"));
1165
+ const textBeforeCompletion = completingDirectory ? this.getText() : "";
1072
1166
  super.handleInput(data);
1167
+ if (completingDirectory && this.getText() !== textBeforeCompletion && cursorEndsDirectoryPath(this)) {
1168
+ super.handleInput(" ");
1169
+ }
1170
+ const textAfterInput = this.getText();
1171
+ this.pastedBangOffsets = remapPastedBangOffsets(
1172
+ textBeforeInput,
1173
+ textAfterInput,
1174
+ this.pastedBangOffsets,
1175
+ pasteMutation
1176
+ );
1177
+ if (openedPaste) this.bracketedPasteActive = true;
1178
+ if (closedPaste) this.bracketedPasteActive = false;
1073
1179
  if (!closedPaste) return;
1074
1180
  const text = this.getText();
1075
1181
  if (!text.endsWith("\n")) return;
@@ -1078,6 +1184,11 @@ var ClioEditor = class extends Editor {
1078
1184
  this.setText("");
1079
1185
  this.onSubmit?.(command);
1080
1186
  }
1187
+ setText(text) {
1188
+ this.pastedBangOffsets.clear();
1189
+ this.bracketedPasteActive = false;
1190
+ super.setText(text);
1191
+ }
1081
1192
  };
1082
1193
 
1083
1194
  // src/interactive/interactive-shell.ts
@@ -1850,37 +1961,37 @@ init_esm_shims();
1850
1961
  // src/domains/config/keybindings.ts
1851
1962
  init_esm_shims();
1852
1963
  var CLIO_APP_KEYBINDINGS = {
1853
- "clio.thinking.cycle": {
1964
+ "clio-coder.thinking.cycle": {
1854
1965
  defaultKeys: "shift+tab",
1855
1966
  description: "Cycle orchestrator thinking level"
1856
1967
  },
1857
- "clio.exit": {
1968
+ "clio-coder.exit": {
1858
1969
  defaultKeys: "ctrl+d",
1859
1970
  description: "Exit when the editor is empty"
1860
1971
  },
1861
- "clio.status.toggle": {
1972
+ "clio-coder.status.toggle": {
1862
1973
  defaultKeys: "alt+u",
1863
1974
  description: "Toggle the footer dashboard (compact / expanded)"
1864
1975
  },
1865
- "clio.session.tree": {
1976
+ "clio-coder.session.tree": {
1866
1977
  defaultKeys: "alt+t",
1867
1978
  description: "Open the /tree navigator"
1868
1979
  },
1869
- "clio.dispatchBoard.toggle": {
1980
+ "clio-coder.dispatchBoard.toggle": {
1870
1981
  defaultKeys: "alt+w",
1871
1982
  description: "Toggle the dispatch (workers) board overlay"
1872
1983
  },
1873
- "clio.tasks.open": {
1984
+ "clio-coder.tasks.open": {
1874
1985
  // Approved application-boundary override of pi-tui editor word-back.
1875
1986
  defaultKeys: "alt+b",
1876
1987
  description: "Open the composite session and operator task board"
1877
1988
  },
1878
- "clio.decisions.open": {
1989
+ "clio-coder.decisions.open": {
1879
1990
  // Approved application-boundary override of pi-tui editor word-delete.
1880
1991
  defaultKeys: "alt+d",
1881
1992
  description: "Open the settled interview decision board"
1882
1993
  },
1883
- "clio.dispatch.background": {
1994
+ "clio-coder.dispatch.background": {
1884
1995
  // Ctrl+B alone is pi-tui's editor cursor-left, so the Claude Code chord
1885
1996
  // cannot be the primary here. Alt+S ("send to background") keeps the app
1886
1997
  // scheme and earns the Ctrl+G leader fallback, which only alt+<letter>
@@ -1888,66 +1999,66 @@ var CLIO_APP_KEYBINDINGS = {
1888
1999
  defaultKeys: ["alt+s", "ctrl+alt+b"],
1889
2000
  description: "Send the running attached dispatch to the background as a detached batch"
1890
2001
  },
1891
- "clio.model.select": {
2002
+ "clio-coder.model.select": {
1892
2003
  defaultKeys: "alt+l",
1893
2004
  description: "Open the model + targets selector"
1894
2005
  },
1895
- "clio.model.cycleForward": {
2006
+ "clio-coder.model.cycleForward": {
1896
2007
  defaultKeys: "alt+j",
1897
2008
  description: "Cycle to next scoped model"
1898
2009
  },
1899
- "clio.model.cycleBackward": {
2010
+ "clio-coder.model.cycleBackward": {
1900
2011
  defaultKeys: "alt+k",
1901
2012
  description: "Cycle to previous scoped model"
1902
2013
  },
1903
- "clio.tool.expand": {
2014
+ "clio-coder.tool.expand": {
1904
2015
  defaultKeys: "alt+o",
1905
2016
  description: "Fold or unfold the newest tool call or worker block between its one-line summary and full details, overriding the /output level for that block"
1906
2017
  },
1907
- "clio.tool.expandAll": {
2018
+ "clio-coder.tool.expandAll": {
1908
2019
  // Alt+Shift+letter is commonly consumed by OS keyboard-layout switching.
1909
2020
  // Keep it discoverable, but pair it with the legacy-safe Ctrl+Alt form.
1910
2021
  defaultKeys: ["ctrl+alt+o", "alt+shift+o"],
1911
2022
  description: "Fold or unfold every tool call and worker block at once, overriding the /output level; changing /output clears the overrides"
1912
2023
  },
1913
- "clio.tool.liveOutput": {
2024
+ "clio-coder.tool.liveOutput": {
1914
2025
  defaultKeys: "alt+p",
1915
2026
  description: "Toggle streaming partial tool output in expanded tool bodies"
1916
2027
  },
1917
- "clio.thinking.expand": {
2028
+ "clio-coder.thinking.expand": {
1918
2029
  defaultKeys: "alt+r",
1919
2030
  description: "Toggle the latest thinking block between hidden marker and full body (no effect while /output verbose pins it open)"
1920
2031
  },
1921
- "clio.thinking.expandAll": {
2032
+ "clio-coder.thinking.expandAll": {
1922
2033
  // Ctrl+Alt+R is the fallback for terminals/OSes that do not forward
1923
2034
  // Alt+Shift+R as a distinct key event.
1924
2035
  defaultKeys: ["ctrl+alt+r", "alt+shift+r"],
1925
2036
  description: "Toggle all thinking blocks between hidden markers and full bodies, overriding the /output level; changing /output clears the overrides"
1926
2037
  },
1927
- "clio.editor.external": {
2038
+ "clio-coder.editor.external": {
1928
2039
  defaultKeys: "alt+g",
1929
2040
  description: "Open the current input in an external editor"
1930
2041
  },
1931
- "clio.message.followUp": {
2042
+ "clio-coder.message.followUp": {
1932
2043
  defaultKeys: "alt+enter",
1933
2044
  description: "End of turn: queue the current input for delivery when the active run settles (Enter delivers it at the next slot, between tool batches)"
1934
2045
  },
1935
- "clio.message.interrupt": {
2046
+ "clio-coder.message.interrupt": {
1936
2047
  // Alt+I keeps the app scheme and earns the Ctrl+G leader fallback. A
1937
2048
  // Ctrl+Enter chord was rejected because legacy terminals send it as a
1938
2049
  // plain Enter, which would turn every send into a cancel.
1939
2050
  defaultKeys: "alt+i",
1940
2051
  description: "Interrupt: cancel the active run and deliver the current input now (refused while an attached dispatch runs or a permission ask is parked; the input then queues for the next slot)"
1941
2052
  },
1942
- "clio.message.dequeue": {
2053
+ "clio-coder.message.dequeue": {
1943
2054
  defaultKeys: "alt+up",
1944
2055
  description: "Restore queued steering and follow-up messages to the editor"
1945
2056
  },
1946
- "clio.notifications.dismiss": {
2057
+ "clio-coder.notifications.dismiss": {
1947
2058
  defaultKeys: "alt+x",
1948
2059
  description: "Dismiss footer notifications"
1949
2060
  },
1950
- "clio.leader": {
2061
+ "clio-coder.leader": {
1951
2062
  defaultKeys: "ctrl+g",
1952
2063
  description: "Start portable leader-key fallback for Alt shortcuts"
1953
2064
  }
@@ -2300,7 +2411,7 @@ function buildManager(inner, invalid, platformWarnings) {
2300
2411
  };
2301
2412
  }
2302
2413
  function createKeybindingManager(settings, env = process.env) {
2303
- const { valid, invalid } = validateKeybindings(settings.keybindings ?? {});
2414
+ const { valid, invalid } = validateKeybindings(settings.interface.keybindings ?? {});
2304
2415
  const inner = new KeybindingsManager(CLIO_KEYBINDINGS, valid);
2305
2416
  setKeybindings(inner);
2306
2417
  return buildManager(inner, invalid, detectPlatformKeybindingWarnings(valid, detectTerminalKeySupport(env)));
@@ -2325,6 +2436,9 @@ export {
2325
2436
  VStack,
2326
2437
  visibleWidth,
2327
2438
  wrapTextWithAnsi,
2439
+ unguardPastedEditorOperator,
2440
+ parseEditorBashCommand,
2441
+ bashExecutionEntryInput,
2328
2442
  SGR_RESET,
2329
2443
  SGR_DIM,
2330
2444
  fgSequence,
@@ -2361,7 +2475,7 @@ export {
2361
2475
  buildHint,
2362
2476
  buildResponsiveHint,
2363
2477
  formatRuntimeResolutionDiagnostic,
2364
- runtimeResolutionDiagnosticLine,
2478
+ diagnosticSeverityToken,
2365
2479
  showClioOverlayFrame,
2366
2480
  MUTATION_PREVIEW_KEY,
2367
2481
  permissionHintEntries,
@@ -2376,4 +2490,4 @@ export {
2376
2490
  formatPlatformKeybindingNotice,
2377
2491
  createKeybindingManager
2378
2492
  };
2379
- //# sourceMappingURL=chunk-KFZI4NIL.js.map
2493
+ //# sourceMappingURL=chunk-UAPGZHYC.js.map