@iowarp/clio-coder 0.4.6 → 0.4.7

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 (657) hide show
  1. package/.claude-plugin/marketplace.json +283 -0
  2. package/CHANGELOG.md +50 -0
  3. package/CONTRIBUTING.md +102 -29
  4. package/NOTICE +8 -0
  5. package/README.md +37 -5
  6. package/dist/{acp-UVEVWSDL.js → acp-W3Y3TRHD.js} +12 -12
  7. package/dist/{agents-VWY37DTK.js → agents-J4ICNLQ3.js} +52 -52
  8. package/dist/assets/codewiki.json +1 -1
  9. package/dist/assets/tui-notices/get-east-asian-width-LICENSE +9 -0
  10. package/dist/assets/tui-notices/marked-LICENSE +44 -0
  11. package/dist/assets/tui-notices/pi-tui-LICENSE +21 -0
  12. package/dist/{auth-PCV2XQDV.js → auth-X2UJUMOC.js} +24 -24
  13. package/dist/{builtins-PD652MTK.js → builtins-XLXWWSRF.js} +6 -6
  14. package/dist/{chunk-DZK63TZJ.js → chunk-24S3DN22.js} +336 -612
  15. package/dist/{chunk-NTK3WTHM.js → chunk-24TOGHPO.js} +2 -2
  16. package/dist/{chunk-M6TAYK66.js → chunk-2O2LVQQK.js} +11 -4
  17. package/dist/{chunk-OQM5IVJY.js → chunk-34XHRVKG.js} +3 -3
  18. package/dist/{chunk-LY4N4TTL.js → chunk-3LXJOICS.js} +2 -2
  19. package/dist/{chunk-3BJGMT2D.js → chunk-3XE4NRLF.js} +1 -1
  20. package/dist/{chunk-N2OKBREN.js → chunk-4MFBBY2Z.js} +3 -3
  21. package/dist/{chunk-5VTJP36Q.js → chunk-4N2RZ4TO.js} +2 -2
  22. package/dist/{chunk-WNGF5AJX.js → chunk-4QKAITQT.js} +3 -3
  23. package/dist/chunk-4UHVS5T7.js +207 -0
  24. package/dist/{chunk-GLYBJ4RQ.js → chunk-5AJPUR72.js} +6 -6
  25. package/dist/{chunk-5CY4Q6QI.js → chunk-5EQO5NWP.js} +105 -3
  26. package/dist/{chunk-6HAO6X5B.js → chunk-65BGHOUR.js} +8 -5
  27. package/dist/{chunk-6VRRJT7L.js → chunk-6CA2BHOR.js} +2 -2
  28. package/dist/{chunk-HL26ADLH.js → chunk-6CB2IL4N.js} +2 -1
  29. package/dist/{chunk-E7RF4KBO.js → chunk-6LRLOJHQ.js} +3 -3
  30. package/dist/{chunk-HXHFDHB6.js → chunk-6TAATXXH.js} +6 -6
  31. package/dist/{chunk-P6M7RKMI.js → chunk-6YHPAAZR.js} +3 -3
  32. package/dist/{chunk-5QRX7SLS.js → chunk-7EEGBKV4.js} +7 -7
  33. package/dist/{chunk-BS4GAMUB.js → chunk-A67NR5AT.js} +2 -2
  34. package/dist/{chunk-WJIMKGD6.js → chunk-BAU36233.js} +8 -8
  35. package/dist/{chunk-PZN2LQY6.js → chunk-BO4XV5VX.js} +4 -4
  36. package/dist/{chunk-I2K2NCZQ.js → chunk-BQQ5MXUC.js} +6 -6
  37. package/dist/{chunk-X3BI7HTV.js → chunk-C3G5PNUO.js} +21 -21
  38. package/dist/{chunk-SRZOW5L2.js → chunk-C6GEXX4L.js} +1 -1
  39. package/dist/{chunk-6RYDAVQT.js → chunk-CE64C5K5.js} +219 -64
  40. package/dist/chunk-CP3HIR5H.js +2119 -0
  41. package/dist/{chunk-BBV5TKE6.js → chunk-CPXGJI2A.js} +2 -2
  42. package/dist/{chunk-IGLVVNEG.js → chunk-CULVKYTK.js} +4 -4
  43. package/dist/{chunk-DXLUVUD4.js → chunk-D2T66PDV.js} +5 -5
  44. package/dist/{chunk-NF3BK5WR.js → chunk-DACXIVVF.js} +5 -5
  45. package/dist/{chunk-IKRWLEDA.js → chunk-DLIYANB7.js} +20 -15
  46. package/dist/{chunk-RGZNQ5CT.js → chunk-DO7M3LSX.js} +9 -9
  47. package/dist/{chunk-2QPI3TR3.js → chunk-DVJL77SO.js} +2 -2
  48. package/dist/{chunk-ODUTYZIU.js → chunk-EUEXGXXR.js} +5 -5
  49. package/dist/{chunk-WKUYQBCG.js → chunk-EUZRMP4Y.js} +18 -16
  50. package/dist/{chunk-JMPL7NUB.js → chunk-G4LGUTOE.js} +4 -4
  51. package/dist/{chunk-CBSKDFWL.js → chunk-GEVQNST4.js} +2 -2
  52. package/dist/{chunk-NNWJYUNO.js → chunk-GFQ7P2UF.js} +7 -7
  53. package/dist/{chunk-SXQKNKRA.js → chunk-GI5RRMAH.js} +14 -14
  54. package/dist/{chunk-HPTJF6DG.js → chunk-GVZFCJHE.js} +336 -83
  55. package/dist/{chunk-ACCKVSHU.js → chunk-GXIWHXDB.js} +3 -3
  56. package/dist/{chunk-LUL5Z66S.js → chunk-HOX4YZ2K.js} +6 -5
  57. package/dist/chunk-HRAKUPIH.js +57 -0
  58. package/dist/{chunk-F5Z7EWMN.js → chunk-IJMW64DX.js} +50 -50
  59. package/dist/{chunk-QNWRHOMF.js → chunk-IMOD2YPV.js} +16 -9
  60. package/dist/{chunk-HZ2T2YED.js → chunk-IQCNVLO6.js} +28 -8
  61. package/dist/{chunk-HZFBVU5X.js → chunk-ISNCCX42.js} +8 -8
  62. package/dist/{chunk-7JSSKXG2.js → chunk-IZYTT3CD.js} +7 -3
  63. package/dist/chunk-KKEYGFX4.js +915 -0
  64. package/dist/{chunk-HHVJNVUJ.js → chunk-KS7ETA3P.js} +2 -2
  65. package/dist/{chunk-BLTEAUCB.js → chunk-L3Z5ANCV.js} +7 -7
  66. package/dist/{chunk-4VMV6OS6.js → chunk-LBFQMYS3.js} +2 -2
  67. package/dist/{chunk-URBGEOH3.js → chunk-M6Z2V6YU.js} +5 -5
  68. package/dist/{chunk-BT7HGDOX.js → chunk-MBJO5VNZ.js} +12 -12
  69. package/dist/chunk-MNQN3X6Y.js +595 -0
  70. package/dist/{chunk-3QKXHCGS.js → chunk-MZHXENL7.js} +5 -5
  71. package/dist/chunk-MZNWZUJM.js +1801 -0
  72. package/dist/{chunk-7YJWEF2L.js → chunk-N37QC5FV.js} +5 -5
  73. package/dist/{chunk-TJFDL26W.js → chunk-NCCQ6DVS.js} +7 -7
  74. package/dist/{chunk-P5JMBPDJ.js → chunk-NO7J45X6.js} +162 -47
  75. package/dist/chunk-OH3YYA3B.js +15 -0
  76. package/dist/{chunk-22PQ4TX4.js → chunk-P4DL2LM5.js} +16 -77
  77. package/dist/{chunk-LIN2K3EL.js → chunk-PFLOULP3.js} +4 -4
  78. package/dist/{chunk-QXFBABFJ.js → chunk-QKWL7SYE.js} +11 -11
  79. package/dist/chunk-RFCKPS2V.js +26 -0
  80. package/dist/{chunk-ZS43Y2FT.js → chunk-RTLNFZMD.js} +12 -4
  81. package/dist/{chunk-U7H5WRG5.js → chunk-RXFPB32E.js} +8 -6
  82. package/dist/{chunk-Q7NNUHQV.js → chunk-SEDI5K5B.js} +16 -16
  83. package/dist/{chunk-WV6TDAPN.js → chunk-SELG4SUR.js} +7 -7
  84. package/dist/{chunk-3WBALRQH.js → chunk-SER7RRAE.js} +27 -832
  85. package/dist/{chunk-K2HL3GBL.js → chunk-T4TY5GG3.js} +165 -15
  86. package/dist/chunk-T7QQBNLH.js +691 -0
  87. package/dist/{chunk-6OII3LOK.js → chunk-TLTGZTXI.js} +3 -3
  88. package/dist/chunk-TZ6UVP2H.js +637 -0
  89. package/dist/{chunk-3JLFK5MW.js → chunk-TZHN5ITX.js} +13 -41
  90. package/dist/{chunk-VANN3GDP.js → chunk-U3TPUXOQ.js} +399 -234
  91. package/dist/{chunk-VHMX7SXF.js → chunk-UA3W4FGC.js} +6 -6
  92. package/dist/{chunk-3O2ZAUGQ.js → chunk-UA6W4XFJ.js} +2 -2
  93. package/dist/chunk-UWD3JD5X.js +709 -0
  94. package/dist/chunk-V4ZKOKRB.js +13433 -0
  95. package/dist/{chunk-NC4KV7EL.js → chunk-VCRVEDUC.js} +5 -5
  96. package/dist/{chunk-4DU2TVI4.js → chunk-VMATUZB6.js} +12 -10
  97. package/dist/{chunk-J2FYEQ5L.js → chunk-VTYHHQ57.js} +2 -2
  98. package/dist/chunk-WB7POC6M.js +891 -0
  99. package/dist/{chunk-3HQVBIKD.js → chunk-WBVKKTUT.js} +2 -2
  100. package/dist/{chunk-EHOSNVVM.js → chunk-WLHX3MM5.js} +6 -2
  101. package/dist/{chunk-24T2YZ7A.js → chunk-WN552PKN.js} +553 -298
  102. package/dist/{chunk-4U4TKZFR.js → chunk-WT5TRMO4.js} +51 -26
  103. package/dist/{chunk-XWMSPJYN.js → chunk-WURGVOZJ.js} +56 -12
  104. package/dist/{chunk-7WUZEB2M.js → chunk-XR3XJN2M.js} +2 -2
  105. package/dist/chunk-XW2UZICE.js +372 -0
  106. package/dist/{chunk-2AKYFREM.js → chunk-XZ6UFQ52.js} +11 -11
  107. package/dist/chunk-Y3JU5RPK.js +8 -0
  108. package/dist/chunk-YKRJTYNP.js +1143 -0
  109. package/dist/{chunk-PWWSIB2A.js → chunk-ZGIGW4ZG.js} +5 -5
  110. package/dist/cli/index.js +34 -36
  111. package/dist/{clio-QQCMTUZE.js → clio-L2P7S2R2.js} +9 -9
  112. package/dist/{code-nav-GUPM6766.js → code-nav-B5LNX4KU.js} +25 -25
  113. package/dist/{components-TNIKXCBH.js → components-63MMQKUT.js} +6 -6
  114. package/dist/{config-IIM7YOD3.js → config-YXARKGTX.js} +70 -67
  115. package/dist/{configure-4ZM5HWJX.js → configure-LMVQJ46J.js} +47 -35
  116. package/dist/{context-OL5P3HEP.js → context-7HJEWTTP.js} +87 -44
  117. package/dist/{context-44BZLJ3J.js → context-XSZKKFBW.js} +14 -14
  118. package/dist/{context-AIDVQKMW.js → context-YG2LZDYZ.js} +60 -58
  119. package/dist/{context-clear-OQV76MYP.js → context-clear-AC5NXHM2.js} +57 -55
  120. package/dist/{context-index-HP2JFUWA.js → context-index-KKTPRV5G.js} +3 -3
  121. package/dist/{context-map-INTXD54D.js → context-map-T7ROR5D5.js} +4 -4
  122. package/dist/{context-working-set-ZUW3EGLS.js → context-working-set-F4Q4J3NS.js} +12 -10
  123. package/dist/{detail-UXPWRANG.js → detail-H73BEF2N.js} +58 -56
  124. package/dist/{dispatch-runner-P3ZW6G77.js → dispatch-runner-3RY5FSJC.js} +74 -72
  125. package/dist/{doctor-JJVGPZWT.js → doctor-EQYJOGUG.js} +44 -30
  126. package/dist/{eval-V2RTN3UH.js → eval-4P7O6CCE.js} +109 -46
  127. package/dist/{evidence-35PYWGSO.js → evidence-D6GUSYJW.js} +57 -55
  128. package/dist/{evidence-CIGGKI6J.js → evidence-O76QF7TZ.js} +62 -59
  129. package/dist/{evolve-33SM3NJP.js → evolve-H47BCETS.js} +58 -56
  130. package/dist/{extensions-YVRHX6ZI.js → extensions-NNL3ZOCU.js} +98 -20
  131. package/dist/{fleet-LFO7SIPC.js → fleet-KMNS6NOM.js} +106 -99
  132. package/dist/{fleet-commands-RLK72GU3.js → fleet-commands-DOWSYCBX.js} +14 -14
  133. package/dist/{fleet-decisions-3SBSCTCW.js → fleet-decisions-S3PTZV2D.js} +9 -9
  134. package/dist/{fleet-graph-JZIBCGMW.js → fleet-graph-F2DE2TME.js} +26 -24
  135. package/dist/{fleet-inspect-2L5YGGZJ.js → fleet-inspect-EN2Q6IVB.js} +60 -57
  136. package/dist/{fleet-preflight-QRSHIIDE.js → fleet-preflight-FRLETDD3.js} +3 -3
  137. package/dist/{fleet-validate-LIAVKDUU.js → fleet-validate-B2XDLS57.js} +28 -29
  138. package/dist/{fleet-verify-JIK3OQZR.js → fleet-verify-4JKUWGJ7.js} +57 -55
  139. package/dist/{fleet-view-IWHYGQKK.js → fleet-view-BHJFW26B.js} +60 -57
  140. package/dist/{init-NJEDOTQW.js → init-XAT5N5YM.js} +79 -74
  141. package/dist/interop-FVECHFKG.js +246 -0
  142. package/dist/{inventory-74UL7UHU.js → inventory-7KFQGLCV.js} +60 -57
  143. package/dist/library-NY2XOT75.js +492 -0
  144. package/dist/library-QAPAO23R.js +306 -0
  145. package/dist/library-import-5Y6MAS3R.js +183 -0
  146. package/dist/library-inventory-JT6HWITQ.js +56 -0
  147. package/dist/library-validation-EQUH25DC.js +42 -0
  148. package/dist/{memory-I76I5VUH.js → memory-DYVTTCP6.js} +58 -56
  149. package/dist/{models-D4YDIQZQ.js → models-MASFJ6Y2.js} +48 -36
  150. package/dist/{monitor-NKVD55HX.js → monitor-YMP4NXJJ.js} +64 -61
  151. package/dist/{orchestrator-I6OATVPK.js → orchestrator-AFQRRTEI.js} +3685 -1841
  152. package/dist/{panes-7BTYH3XQ.js → panes-D3Y2KFG5.js} +4 -4
  153. package/dist/{panes-WPOMEMRH.js → panes-NICTHQCV.js} +7 -7
  154. package/dist/{paths-J3KN7UAO.js → paths-PSFAUIGO.js} +5 -5
  155. package/dist/{preload-EJAWJEIO.js → preload-5Q7VXRFJ.js} +57 -55
  156. package/dist/{reset-4XMQKDNZ.js → reset-7NKZK7JN.js} +9 -9
  157. package/dist/{resources-TVYVXK3Q.js → resources-NILSIZAT.js} +94 -38
  158. package/dist/{run-OWQNNSJU.js → run-BPZGEBZV.js} +121 -105
  159. package/dist/{share-NPZZMUXG.js → share-EZ6ERBMH.js} +31 -28
  160. package/dist/skills-BTVVNYVM.js +100 -0
  161. package/dist/{skills-eval-J5TCKSJA.js → skills-eval-UY34MNK7.js} +110 -72
  162. package/dist/{skills-inventory-7II4DM57.js → skills-inventory-JDHSIA7I.js} +30 -25
  163. package/dist/{slash-commands-MDSDSWYF.js → slash-commands-K4FNQ2AT.js} +49 -46
  164. package/dist/{steer-S7D7IKPU.js → steer-2B3EQGFH.js} +4 -4
  165. package/dist/{support-5VAEC32W.js → support-L2SOL3IE.js} +7 -7
  166. package/dist/{targets-KILZEOCE.js → targets-44VKGFLN.js} +64 -58
  167. package/dist/{tasks-R6P6OV22.js → tasks-3KODKFU7.js} +12 -12
  168. package/dist/{terminal-lease-LZCG2KN3.js → terminal-lease-LXA7MMPO.js} +32 -19
  169. package/dist/{tools-6OCQ6SVB.js → tools-3UB7TEVR.js} +7 -7
  170. package/dist/{trace-JHLXWUMN.js → trace-TAMIU4OJ.js} +5 -4
  171. package/dist/{tui-primitives-RCY2HN7G.js → tui-primitives-A6MUW32V.js} +3 -2
  172. package/dist/{uninstall-FXYMFFRT.js → uninstall-QYVRPEM4.js} +9 -9
  173. package/dist/{upgrade-D2OZH6IQ.js → upgrade-7PMKM2JH.js} +15 -16
  174. package/dist/{usage-PIASNUS4.js → usage-6EQV7EQK.js} +70 -67
  175. package/dist/{verifiers-LTHUY2PX.js → verifiers-JLITWSHU.js} +15 -15
  176. package/dist/{verify-HYF7KBVE.js → verify-T7NAEVIG.js} +13 -13
  177. package/dist/{web-fetch-MQN4FH3X.js → web-fetch-W4TNW4Q7.js} +4 -4
  178. package/dist/{wiki-generate-RK7JQ5NP.js → wiki-generate-T2TJQJUA.js} +81 -76
  179. package/dist/{with-panes-OFTNAR4Y.js → with-panes-CHFC7HGI.js} +4 -4
  180. package/dist/worker/entry.js +283 -76
  181. package/docs/README.md +43 -0
  182. package/docs/architecture/architecture.md +8 -7
  183. package/docs/architecture/artifact-versions.md +3 -3
  184. package/docs/architecture/context-engine.md +35 -1
  185. package/docs/architecture/library.md +32 -0
  186. package/docs/architecture/middleware-and-components.md +1 -1
  187. package/docs/architecture/model-catalog.md +21 -1
  188. package/docs/architecture/pi-boundary.md +18 -0
  189. package/docs/architecture/prompt-envelope-and-tools.md +5 -5
  190. package/docs/architecture/safety-model.md +21 -2
  191. package/docs/architecture/session-lifecycle.md +12 -1
  192. package/docs/architecture/tui-design.md +108 -9
  193. package/docs/architecture/worker-context.md +106 -0
  194. package/docs/guide/authoring-plugins.md +160 -0
  195. package/docs/guide/built-in-agents.md +5 -5
  196. package/docs/guide/commands-and-modes.md +161 -56
  197. package/docs/guide/configuration-and-targets.md +1 -1
  198. package/docs/guide/configuration-reference.md +27 -34
  199. package/docs/guide/environment-variables.md +2 -2
  200. package/docs/guide/exit-codes-and-output.md +1 -1
  201. package/docs/guide/extensions-and-sharing.md +93 -53
  202. package/docs/guide/fleet-dispatch.md +31 -4
  203. package/docs/guide/glossary.md +1 -1
  204. package/docs/guide/harness-extensions.md +291 -0
  205. package/docs/guide/installation-and-lifecycle.md +9 -9
  206. package/docs/guide/interop.md +243 -0
  207. package/docs/guide/panes-and-files.md +3 -3
  208. package/docs/guide/plugins.md +80 -0
  209. package/docs/guide/resource-library.md +111 -45
  210. package/docs/guide/skills-marketplace.md +35 -72
  211. package/docs/guide/tool-usage.md +19 -7
  212. package/docs/guide/troubleshooting.md +1 -1
  213. package/docs/process/development-pipeline.md +14 -14
  214. package/docs/process/documentation-coverage.md +28 -1
  215. package/docs/process/documentation-guide.md +15 -7
  216. package/docs/process/eval-runner.md +8 -3
  217. package/docs/process/performance-methodology.md +1 -1
  218. package/docs/process/release-cut-checklist.md +4 -0
  219. package/docs/process/scientific-validation.md +23 -0
  220. package/evals/scalar-decision-machinery.ts +1 -1
  221. package/examples/extensions/README.md +67 -0
  222. package/examples/extensions/lab-status/clio-coder-extension.json +14 -0
  223. package/examples/extensions/lab-status/extension.mjs +68 -0
  224. package/examples/extensions/lab-status/jobs.synthetic.json +9 -0
  225. package/examples/extensions/measurements/clio-coder-extension.json +28 -0
  226. package/examples/extensions/measurements/summarize.cjs +23 -0
  227. package/library/README.md +109 -0
  228. package/library/_authoring/templates/agent/README.md +28 -0
  229. package/library/_authoring/templates/agent/agents/benchmark-scout.md +30 -0
  230. package/library/_authoring/templates/agent/plugin.json +23 -0
  231. package/library/_authoring/templates/fleet/README.md +29 -0
  232. package/library/_authoring/templates/fleet/fleets/pipeline-review.md +31 -0
  233. package/library/_authoring/templates/fleet/plugin.json +23 -0
  234. package/library/_authoring/templates/plugin/README.md +37 -0
  235. package/library/_authoring/templates/plugin/agents/data-curator.md +31 -0
  236. package/library/_authoring/templates/plugin/assets/curation-guide.md +22 -0
  237. package/library/_authoring/templates/plugin/plugin.json +42 -0
  238. package/library/_authoring/templates/plugin/prompts/inspect-dataset.md +15 -0
  239. package/library/_authoring/templates/plugin/skills/dataset-curation/SKILL.md +36 -0
  240. package/library/_authoring/templates/plugin/skills/dataset-curation/evals.md +17 -0
  241. package/library/_authoring/templates/prompt/README.md +28 -0
  242. package/library/_authoring/templates/prompt/plugin.json +23 -0
  243. package/library/_authoring/templates/prompt/prompts/paper-summary.md +26 -0
  244. package/library/_authoring/templates/skill/README.md +24 -0
  245. package/library/_authoring/templates/skill/SKILL.md +39 -0
  246. package/library/_authoring/templates/skill/evals.md +30 -0
  247. package/library/_authoring/templates/skill/plugin.json +23 -0
  248. package/library/agents/README.md +7 -0
  249. package/library/fleets/README.md +7 -0
  250. package/library/plugins/materio/README.md +137 -0
  251. package/library/plugins/materio/ai.iowarp.clio/agents/materio-lab-definer.md +208 -0
  252. package/library/plugins/materio/ai.iowarp.clio/agents/materio-literature-reviewer.md +308 -0
  253. package/library/plugins/materio/ai.iowarp.clio/agents/materio-research-explorer.md +249 -0
  254. package/library/plugins/materio/ai.iowarp.clio/agents/materio-task-executor.md +416 -0
  255. package/library/plugins/materio/ai.iowarp.clio/agents/materio-task-verifier.md +60 -0
  256. package/library/plugins/materio/ai.iowarp.clio/agents/materio-workflow-planner.md +238 -0
  257. package/library/plugins/materio/ai.iowarp.clio/fleets/materio-execute-task.md +50 -0
  258. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/add-task.md +66 -0
  259. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/archive-task.md +65 -0
  260. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/checkpoint.md +26 -0
  261. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/define-research-tasks.md +230 -0
  262. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/define-virtual-lab.md +181 -0
  263. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/execute-task.md +292 -0
  264. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/help.md +129 -0
  265. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/identify-research.md +206 -0
  266. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/literature-review.md +201 -0
  267. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/pause-research.md +12 -0
  268. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/progress.md +105 -0
  269. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/remove-task.md +63 -0
  270. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/resume-research.md +64 -0
  271. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/settings.md +16 -0
  272. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/status.md +92 -0
  273. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/upload-data.md +104 -0
  274. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/wtfp.md +145 -0
  275. package/library/plugins/materio/ai.iowarp.clio/references/execution.md +56 -0
  276. package/library/plugins/materio/ai.iowarp.portability/provenance.json +9 -0
  277. package/library/plugins/materio/assets/actions/add-task.md +86 -0
  278. package/library/plugins/materio/assets/actions/archive-task.md +84 -0
  279. package/library/plugins/materio/assets/actions/checkpoint.md +47 -0
  280. package/library/plugins/materio/assets/actions/define-research-tasks.md +228 -0
  281. package/library/plugins/materio/assets/actions/define-virtual-lab.md +179 -0
  282. package/library/plugins/materio/assets/actions/execute-task.md +290 -0
  283. package/library/plugins/materio/assets/actions/help.md +140 -0
  284. package/library/plugins/materio/assets/actions/identify-research.md +204 -0
  285. package/library/plugins/materio/assets/actions/literature-review.md +199 -0
  286. package/library/plugins/materio/assets/actions/pause-research.md +34 -0
  287. package/library/plugins/materio/assets/actions/progress.md +125 -0
  288. package/library/plugins/materio/assets/actions/remove-task.md +82 -0
  289. package/library/plugins/materio/assets/actions/resume-research.md +84 -0
  290. package/library/plugins/materio/assets/actions/settings.md +38 -0
  291. package/library/plugins/materio/assets/actions/status.md +112 -0
  292. package/library/plugins/materio/assets/actions/upload-data.md +123 -0
  293. package/library/plugins/materio/assets/actions/wtfp.md +179 -0
  294. package/library/plugins/materio/assets/references/research-domains.md +134 -0
  295. package/library/plugins/materio/assets/references/research-policy.md +77 -0
  296. package/library/plugins/materio/assets/references/traditional-workflows.md +146 -0
  297. package/library/plugins/materio/assets/scripts/check_physics.py +271 -0
  298. package/library/plugins/materio/assets/scripts/check_scripts.py +248 -0
  299. package/library/plugins/materio/assets/scripts/project_plugin.py +165 -0
  300. package/library/plugins/materio/assets/scripts/research_state.py +400 -0
  301. package/library/plugins/materio/assets/scripts/verify_citations.py +616 -0
  302. package/library/plugins/materio/assets/templates/RESEARCH.md +39 -0
  303. package/library/plugins/materio/assets/templates/VIRTUAL-LAB.md +120 -0
  304. package/library/plugins/materio/assets/templates/WORKFLOW.md +42 -0
  305. package/library/plugins/materio/assets/templates/config.json +5 -0
  306. package/library/plugins/materio/evals/scripts.yaml +29 -0
  307. package/library/plugins/materio/plugin.json +530 -0
  308. package/library/plugins/materio/skills/materio-lab-definer/SKILL.md +74 -0
  309. package/library/plugins/materio/skills/materio-literature-reviewer/SKILL.md +64 -0
  310. package/library/plugins/materio/skills/materio-research-explorer/SKILL.md +74 -0
  311. package/library/plugins/materio/skills/materio-task-executor/SKILL.md +214 -0
  312. package/library/plugins/materio/skills/materio-task-verifier/SKILL.md +46 -0
  313. package/library/plugins/materio/skills/materio-workflow-planner/SKILL.md +79 -0
  314. package/library/plugins/materio/tests/test_check_physics.py +139 -0
  315. package/library/plugins/materio/tests/test_check_scripts.py +140 -0
  316. package/library/plugins/materio/tests/test_research_state.py +291 -0
  317. package/library/plugins/materio/tests/test_verify_citations.py +337 -0
  318. package/library/prompts/README.md +7 -0
  319. package/library/registry.yaml +921 -0
  320. package/library/skills/README.md +120 -0
  321. package/{skills → library/skills}/coding/ast-grep/SKILL.md +1 -1
  322. package/{skills → library/skills}/coding/ast-grep/evals.md +1 -1
  323. package/library/skills/coding/ast-grep/plugin.json +23 -0
  324. package/{skills → library/skills}/coding/coding-standards/SKILL.md +1 -1
  325. package/{skills → library/skills}/coding/coding-standards/evals.md +1 -1
  326. package/library/skills/coding/coding-standards/plugin.json +23 -0
  327. package/{skills → library/skills}/coding/prototype/SKILL.md +1 -1
  328. package/{skills → library/skills}/coding/prototype/evals.md +1 -1
  329. package/library/skills/coding/prototype/plugin.json +23 -0
  330. package/{skills → library/skills}/coding/tdd/SKILL.md +1 -1
  331. package/{skills → library/skills}/coding/tdd/evals.md +1 -1
  332. package/library/skills/coding/tdd/plugin.json +23 -0
  333. package/{skills → library/skills}/context/context-handoff/SKILL.md +1 -1
  334. package/{skills → library/skills}/context/context-handoff/evals.md +1 -1
  335. package/library/skills/context/context-handoff/plugin.json +23 -0
  336. package/{skills → library/skills}/context/context-prime/SKILL.md +1 -1
  337. package/{skills → library/skills}/context/context-prime/evals.md +1 -1
  338. package/library/skills/context/context-prime/plugin.json +23 -0
  339. package/{skills → library/skills}/git/branch-closeout/SKILL.md +1 -1
  340. package/library/skills/git/branch-closeout/plugin.json +23 -0
  341. package/{skills → library/skills}/git/file-ticket/SKILL.md +1 -1
  342. package/library/skills/git/file-ticket/plugin.json +23 -0
  343. package/{skills → library/skills}/git/fix-issue/SKILL.md +1 -1
  344. package/library/skills/git/fix-issue/plugin.json +23 -0
  345. package/{skills → library/skills}/git/resolve-merge-conflicts/SKILL.md +1 -1
  346. package/{skills → library/skills}/git/resolve-merge-conflicts/evals.md +1 -1
  347. package/library/skills/git/resolve-merge-conflicts/plugin.json +23 -0
  348. package/{skills → library/skills}/git/ship/SKILL.md +1 -1
  349. package/library/skills/git/ship/plugin.json +23 -0
  350. package/{skills → library/skills}/git/worktree-create/SKILL.md +1 -1
  351. package/library/skills/git/worktree-create/plugin.json +23 -0
  352. package/{skills → library/skills}/git/worktree-merge/SKILL.md +1 -1
  353. package/library/skills/git/worktree-merge/plugin.json +23 -0
  354. package/{skills → library/skills}/meta/clio-coder-dev/SKILL.md +1 -1
  355. package/{skills → library/skills}/meta/clio-coder-dev/evals.md +1 -1
  356. package/library/skills/meta/clio-coder-dev/plugin.json +23 -0
  357. package/{skills → library/skills}/meta/clio-coder-test/SKILL.md +1 -1
  358. package/{skills → library/skills}/meta/clio-coder-test/evals.md +1 -1
  359. package/library/skills/meta/clio-coder-test/plugin.json +23 -0
  360. package/{skills → library/skills}/meta/credentials/SKILL.md +1 -1
  361. package/{skills → library/skills}/meta/credentials/evals.md +1 -1
  362. package/library/skills/meta/credentials/plugin.json +23 -0
  363. package/library/skills/meta/find-skills/SKILL.md +85 -0
  364. package/library/skills/meta/find-skills/evals.md +65 -0
  365. package/library/skills/meta/find-skills/plugin.json +23 -0
  366. package/{skills → library/skills}/meta/herdr/SKILL.md +1 -1
  367. package/{skills → library/skills}/meta/herdr/evals.md +1 -1
  368. package/library/skills/meta/herdr/plugin.json +23 -0
  369. package/{skills → library/skills}/meta/skill-craft/SKILL.md +23 -9
  370. package/{skills → library/skills}/meta/skill-craft/evals.md +11 -3
  371. package/library/skills/meta/skill-craft/plugin.json +23 -0
  372. package/{skills → library/skills}/planning/archify/SKILL.md +13 -13
  373. package/library/skills/planning/archify/plugin.json +23 -0
  374. package/{skills → library/skills}/planning/architecture/SKILL.md +1 -1
  375. package/{skills → library/skills}/planning/architecture/evals.md +1 -1
  376. package/library/skills/planning/architecture/plugin.json +23 -0
  377. package/{skills → library/skills}/planning/backlog/SKILL.md +1 -1
  378. package/{skills → library/skills}/planning/backlog/evals.md +1 -1
  379. package/library/skills/planning/backlog/plugin.json +23 -0
  380. package/{skills → library/skills}/planning/prd/SKILL.md +1 -1
  381. package/{skills → library/skills}/planning/prd/evals.md +1 -1
  382. package/library/skills/planning/prd/plugin.json +23 -0
  383. package/{skills → library/skills}/planning/product-intent/SKILL.md +1 -1
  384. package/{skills → library/skills}/planning/product-intent/evals.md +1 -1
  385. package/library/skills/planning/product-intent/plugin.json +23 -0
  386. package/{skills → library/skills}/planning/tech-spec/SKILL.md +1 -1
  387. package/{skills → library/skills}/planning/tech-spec/evals.md +1 -1
  388. package/library/skills/planning/tech-spec/plugin.json +23 -0
  389. package/{skills → library/skills}/registry.yaml +7 -7
  390. package/{skills → library/skills}/remote.yaml +1 -1
  391. package/{skills → library/skills}/research/arxiv-literature/SKILL.md +1 -1
  392. package/{skills → library/skills}/research/arxiv-literature/evals.md +1 -1
  393. package/library/skills/research/arxiv-literature/plugin.json +23 -0
  394. package/{skills → library/skills}/research/experiment-protocol/SKILL.md +1 -1
  395. package/{skills → library/skills}/research/experiment-protocol/evals.md +1 -1
  396. package/library/skills/research/experiment-protocol/plugin.json +23 -0
  397. package/{skills → library/skills}/research/scientific-debugging/SKILL.md +1 -1
  398. package/{skills → library/skills}/research/scientific-debugging/evals.md +1 -1
  399. package/library/skills/research/scientific-debugging/plugin.json +23 -0
  400. package/{skills → library/skills}/research/scientific-modernization/SKILL.md +1 -1
  401. package/{skills → library/skills}/research/scientific-modernization/evals.md +1 -1
  402. package/library/skills/research/scientific-modernization/plugin.json +23 -0
  403. package/{skills → library/skills}/skill-marketplace.json +37 -37
  404. package/{skills → library/skills}/workflow/cut-it/SKILL.md +1 -1
  405. package/{skills → library/skills}/workflow/cut-it/evals.md +1 -1
  406. package/library/skills/workflow/cut-it/plugin.json +23 -0
  407. package/{skills → library/skills}/workflow/design-council/SKILL.md +1 -1
  408. package/{skills → library/skills}/workflow/design-council/evals.md +1 -1
  409. package/library/skills/workflow/design-council/plugin.json +23 -0
  410. package/{skills → library/skills}/workflow/grill-me/SKILL.md +1 -1
  411. package/{skills → library/skills}/workflow/grill-me/evals.md +1 -1
  412. package/library/skills/workflow/grill-me/plugin.json +23 -0
  413. package/{skills → library/skills}/workflow/workflow-distiller/SKILL.md +14 -11
  414. package/{skills → library/skills}/workflow/workflow-distiller/evals.md +14 -6
  415. package/library/skills/workflow/workflow-distiller/plugin.json +23 -0
  416. package/package.json +12 -5
  417. package/src/cli/agents.ts +1 -1
  418. package/src/cli/config-inspect.ts +1 -1
  419. package/src/cli/configure.ts +2 -2
  420. package/src/cli/eval.ts +40 -6
  421. package/src/cli/extensions.ts +74 -8
  422. package/src/cli/fleet-preflight.ts +2 -0
  423. package/src/cli/fleet.ts +2 -0
  424. package/src/cli/index.ts +1 -3
  425. package/src/cli/interop-inspect.ts +61 -33
  426. package/src/cli/interop.ts +79 -9
  427. package/src/cli/library-import.ts +139 -0
  428. package/src/cli/library.ts +418 -120
  429. package/src/cli/run.ts +26 -9
  430. package/src/cli/skills-eval.ts +43 -6
  431. package/src/cli/skills-inventory.ts +6 -2
  432. package/src/cli/skills.ts +44 -491
  433. package/src/core/bus-events.ts +5 -0
  434. package/src/core/defaults.ts +1 -1
  435. package/src/core/recent-models.ts +2 -2
  436. package/src/core/session-routing.ts +3 -3
  437. package/src/core/state-file-lock.ts +1 -1
  438. package/src/core/tool-names.ts +5 -0
  439. package/src/domains/agents/extension.ts +42 -6
  440. package/src/domains/agents/fleet-commands.ts +92 -1
  441. package/src/domains/agents/fleet-contract.ts +87 -19
  442. package/src/domains/agents/recipe.ts +5 -4
  443. package/src/domains/agents/registry.ts +80 -24
  444. package/src/domains/config/keybindings.ts +155 -95
  445. package/src/domains/context/worker/contract.ts +91 -0
  446. package/src/domains/context/worker/pressure.ts +120 -0
  447. package/src/domains/context/worker/recall.ts +62 -0
  448. package/src/domains/context/worker/select.ts +164 -0
  449. package/src/domains/context/worker/snapshot.ts +35 -0
  450. package/src/domains/context/worker/store.ts +16 -0
  451. package/src/domains/context/working-set/replay/synthetic.ts +2 -1
  452. package/src/domains/dispatch/active-route-planner.ts +2 -0
  453. package/src/domains/dispatch/backoff.ts +1 -0
  454. package/src/domains/dispatch/code-step.ts +12 -2
  455. package/src/domains/dispatch/contract.ts +3 -0
  456. package/src/domains/dispatch/execution-plan.ts +2 -0
  457. package/src/domains/dispatch/extension.ts +109 -27
  458. package/src/domains/dispatch/fleet-plan.ts +10 -0
  459. package/src/domains/dispatch/fleet-run.ts +1 -0
  460. package/src/domains/dispatch/orphan-recovery.ts +1 -0
  461. package/src/domains/dispatch/receipt-integrity.ts +4 -0
  462. package/src/domains/dispatch/state.ts +1 -0
  463. package/src/domains/dispatch/types.ts +5 -0
  464. package/src/domains/dispatch/validation.ts +12 -0
  465. package/src/domains/dispatch/workspace-checkpoint.ts +1 -1
  466. package/src/domains/evidence/failure-attribution.ts +1 -0
  467. package/src/domains/evidence/trust-status.ts +22 -3
  468. package/src/domains/extensions/command-schema.ts +145 -0
  469. package/src/domains/extensions/command-tools.ts +15 -0
  470. package/src/domains/extensions/compatibility.ts +7 -0
  471. package/src/domains/extensions/contract.ts +0 -4
  472. package/src/domains/extensions/discovery.ts +69 -205
  473. package/src/domains/extensions/extension.ts +0 -4
  474. package/src/domains/extensions/index.ts +1 -5
  475. package/src/domains/extensions/manager.ts +1 -6
  476. package/src/domains/extensions/operator-commands.ts +29 -0
  477. package/src/domains/extensions/operator-runtime.ts +483 -0
  478. package/src/domains/extensions/public-api.ts +53 -0
  479. package/src/domains/extensions/runtime-child.mjs +114 -0
  480. package/src/domains/extensions/runtime-process.ts +306 -0
  481. package/src/domains/extensions/runtime-schema.ts +146 -0
  482. package/src/domains/extensions/{resources.ts → snapshot-access.ts} +1 -17
  483. package/src/domains/extensions/snapshot.ts +4 -32
  484. package/src/domains/extensions/state.ts +5 -83
  485. package/src/domains/extensions/types.ts +33 -34
  486. package/src/domains/interop/adopt.ts +546 -0
  487. package/src/domains/interop/detect.ts +50 -12
  488. package/src/domains/interop/foreign.ts +554 -0
  489. package/src/domains/interop/import.ts +277 -0
  490. package/src/domains/interop/index.ts +24 -0
  491. package/src/domains/interop/install.ts +6 -0
  492. package/src/domains/interop/inventory.ts +351 -0
  493. package/src/domains/interop/projection.ts +360 -0
  494. package/src/domains/interop/registry.ts +106 -3
  495. package/src/domains/interop/types.ts +51 -0
  496. package/src/domains/lifecycle/migrations/index.ts +0 -2
  497. package/src/domains/lifecycle/naming-resources.ts +1 -1
  498. package/src/domains/middleware/marketplace-offer.ts +1 -1
  499. package/src/domains/mux/contract.ts +1 -1
  500. package/src/domains/plugins/catalog.ts +204 -0
  501. package/src/domains/plugins/contract.ts +24 -0
  502. package/src/domains/plugins/discovery.ts +316 -0
  503. package/src/domains/plugins/extension.ts +40 -0
  504. package/src/domains/plugins/index.ts +77 -0
  505. package/src/domains/plugins/integrity.ts +6 -0
  506. package/src/domains/plugins/manifest.ts +3 -0
  507. package/src/domains/plugins/resources.ts +102 -0
  508. package/src/domains/plugins/state.ts +753 -0
  509. package/src/domains/plugins/types.ts +217 -0
  510. package/src/domains/prompts/extension.ts +9 -2
  511. package/src/domains/prompts/fragments/operating/skills.md +10 -10
  512. package/src/domains/resources/common-loader.ts +9 -6
  513. package/src/domains/resources/index.ts +67 -0
  514. package/src/domains/resources/library-actions.ts +836 -0
  515. package/src/domains/resources/library-evals.ts +38 -0
  516. package/src/domains/resources/library-inventory.ts +1048 -0
  517. package/src/domains/resources/library-types.ts +50 -0
  518. package/src/domains/resources/library-validation.ts +634 -0
  519. package/src/domains/resources/library.ts +437 -156
  520. package/src/domains/resources/package-references.ts +66 -0
  521. package/src/domains/resources/prompts/loader.ts +75 -41
  522. package/src/domains/resources/skills/install.ts +2 -2
  523. package/src/domains/resources/skills/loader.ts +77 -22
  524. package/src/domains/resources/skills/marketplace.ts +48 -57
  525. package/src/domains/resources/skills/promotion.ts +2 -2
  526. package/src/domains/resources/skills/provenance-pin.ts +17 -4
  527. package/src/domains/safety/action-classifier.ts +2 -2
  528. package/src/domains/safety/default-path-policy.ts +3 -1
  529. package/src/domains/safety/policy-engine.ts +1 -1
  530. package/src/domains/safety/protected-artifacts.ts +21 -5
  531. package/src/domains/safety/skill-authority.ts +5 -2
  532. package/src/domains/share/archive.ts +1 -1
  533. package/src/engine/apis/openai-completions.ts +52 -2
  534. package/src/engine/notices/pi-tui-LICENSE +21 -0
  535. package/src/engine/tui.ts +3 -0
  536. package/src/engine/worker-runtime.ts +58 -14
  537. package/src/engine/worker-tools.ts +5 -0
  538. package/src/entry/orchestrator.ts +26 -5
  539. package/src/entry/plugin-reload.ts +18 -0
  540. package/src/interactive/application-controller.ts +67 -21
  541. package/src/interactive/chat-loop.ts +32 -5
  542. package/src/interactive/chat-panel.ts +5 -1
  543. package/src/interactive/clio-editor.ts +53 -21
  544. package/src/interactive/command-output.ts +56 -1
  545. package/src/interactive/editor-submit.ts +65 -28
  546. package/src/interactive/fleet-run-preview.ts +2 -0
  547. package/src/interactive/follow-up-queue-panel.ts +3 -3
  548. package/src/interactive/footer/dashboard.ts +4 -1
  549. package/src/interactive/footer/notifications.ts +2 -2
  550. package/src/interactive/footer/widgets.ts +2 -2
  551. package/src/interactive/interactive-application.ts +209 -21
  552. package/src/interactive/interactive-input-runtime.ts +254 -7
  553. package/src/interactive/interactive-presentation.ts +41 -12
  554. package/src/interactive/interactive-slash-runtime.ts +37 -8
  555. package/src/interactive/keybinding-manager.ts +156 -79
  556. package/src/interactive/keyboard-owner.ts +37 -0
  557. package/src/interactive/leader-key.ts +49 -102
  558. package/src/interactive/leader-menu.ts +45 -0
  559. package/src/interactive/overlay-ask-user-lifecycle.ts +9 -1
  560. package/src/interactive/overlay-frame.ts +15 -0
  561. package/src/interactive/overlay-key-routing.ts +46 -47
  562. package/src/interactive/overlay-lifecycle.ts +30 -15
  563. package/src/interactive/overlay-resource-openers.ts +56 -46
  564. package/src/interactive/overlays/ask-user.ts +630 -556
  565. package/src/interactive/overlays/extension-panel.ts +70 -0
  566. package/src/interactive/overlays/extensions.ts +28 -5
  567. package/src/interactive/overlays/fleet-run-approval.ts +7 -3
  568. package/src/interactive/overlays/help-reference.ts +89 -40
  569. package/src/interactive/overlays/interop.ts +122 -3
  570. package/src/interactive/overlays/keybinding-detail.ts +2 -2
  571. package/src/interactive/overlays/library-lifecycle.ts +90 -0
  572. package/src/interactive/overlays/library-model.ts +574 -0
  573. package/src/interactive/overlays/library-review.ts +557 -0
  574. package/src/interactive/overlays/library-tabs.ts +3 -15
  575. package/src/interactive/overlays/library.ts +602 -0
  576. package/src/interactive/overlays/list-overlay.ts +218 -39
  577. package/src/interactive/overlays/model-selector.ts +28 -25
  578. package/src/interactive/overlays/session-selector.ts +9 -3
  579. package/src/interactive/overlays/settings.ts +25 -18
  580. package/src/interactive/overlays/tree-selector.ts +16 -11
  581. package/src/interactive/permission-hint.ts +13 -0
  582. package/src/interactive/permission-overlay.ts +77 -28
  583. package/src/interactive/prompt-source-label.ts +21 -0
  584. package/src/interactive/renderers/reference-card.ts +35 -0
  585. package/src/interactive/renderers/worker-entry.ts +35 -3
  586. package/src/interactive/slash-autocomplete.ts +99 -1
  587. package/src/interactive/slash-commands.ts +390 -67
  588. package/src/interactive/slash-spec.ts +0 -1
  589. package/src/interactive/terminal-lease.ts +44 -12
  590. package/src/interactive/turn-queues.ts +8 -7
  591. package/src/interactive/turn-runtime.ts +1 -1
  592. package/src/interactive/view/view-overlay.ts +19 -14
  593. package/src/interactive/welcome-dashboard.ts +525 -408
  594. package/src/tools/bootstrap.ts +8 -0
  595. package/src/tools/builtin-tool-catalog.ts +7 -2
  596. package/src/tools/context/index.ts +58 -5
  597. package/src/tools/context/library.ts +465 -0
  598. package/src/tools/context/surface.ts +20 -6
  599. package/src/tools/core-bootstrap.ts +3 -0
  600. package/src/tools/dispatch-admission.ts +24 -1
  601. package/src/tools/dispatch-arguments.ts +8 -0
  602. package/src/tools/dispatch-plan.ts +32 -0
  603. package/src/tools/dispatch-schema.ts +31 -1
  604. package/src/tools/dispatch-types.ts +3 -0
  605. package/src/tools/dispatch.ts +1 -1
  606. package/src/tools/harness-extensions.ts +169 -0
  607. package/src/tools/observation.ts +4 -0
  608. package/src/tools/policy.ts +7 -1
  609. package/src/tools/registry.ts +19 -1
  610. package/src/tools/worker-evidence.ts +5 -0
  611. package/src/worker/context-seed.ts +192 -0
  612. package/src/worker/entry.ts +1 -0
  613. package/src/worker/spec-contract.ts +8 -1
  614. package/dist/chunk-3UW3KU4A.js +0 -21
  615. package/dist/chunk-536HXRFE.js +0 -1257
  616. package/dist/chunk-B3MOMLJ4.js +0 -433
  617. package/dist/chunk-CXQ37WJH.js +0 -45
  618. package/dist/chunk-KTFSFCVN.js +0 -46
  619. package/dist/chunk-QCOV5DFY.js +0 -911
  620. package/dist/chunk-QRFXEO6Y.js +0 -17
  621. package/dist/chunk-VAHLPXPY.js +0 -399
  622. package/dist/interop-RVCAYECG.js +0 -115
  623. package/dist/library-CTKZA7K3.js +0 -226
  624. package/dist/skills-OXFEAWMT.js +0 -510
  625. package/skills/README.md +0 -418
  626. package/skills/meta/find-skills/SKILL.md +0 -78
  627. package/skills/meta/find-skills/evals.md +0 -47
  628. package/src/domains/extensions/resource-path.ts +0 -27
  629. package/src/domains/lifecycle/migrations/2026-09-01-extension-install-digests.ts +0 -27
  630. package/src/interactive/overlays/agents.ts +0 -70
  631. package/src/interactive/overlays/library-install-confirm.ts +0 -152
  632. package/src/interactive/overlays/prompts.ts +0 -89
  633. package/src/interactive/overlays/skills-hub.ts +0 -615
  634. /package/{skills → library/skills}/coding/ast-grep/references/rule_reference.md +0 -0
  635. /package/{skills → library/skills}/coding/prototype/references/LOGIC.md +0 -0
  636. /package/{skills → library/skills}/coding/prototype/references/UI.md +0 -0
  637. /package/{skills → library/skills}/coding/tdd/references/mocking.md +0 -0
  638. /package/{skills → library/skills}/coding/tdd/references/tests.md +0 -0
  639. /package/{skills → library/skills}/context/context-handoff/scripts/new-handoff.sh +0 -0
  640. /package/{skills → library/skills}/git/branch-closeout/evals.md +0 -0
  641. /package/{skills → library/skills}/git/branch-closeout/references/closeout-checklist.md +0 -0
  642. /package/{skills → library/skills}/git/file-ticket/assets/issue-template.md +0 -0
  643. /package/{skills → library/skills}/git/file-ticket/evals.md +0 -0
  644. /package/{skills → library/skills}/git/file-ticket/references/issue-discovery.md +0 -0
  645. /package/{skills → library/skills}/git/fix-issue/evals.md +0 -0
  646. /package/{skills → library/skills}/git/fix-issue/references/diagnosis-and-rca.md +0 -0
  647. /package/{skills → library/skills}/git/resolve-merge-conflicts/references/conflict-matrix.md +0 -0
  648. /package/{skills → library/skills}/git/ship/assets/pr-template.md +0 -0
  649. /package/{skills → library/skills}/git/ship/evals.md +0 -0
  650. /package/{skills → library/skills}/git/ship/references/remote-and-branch-policy.md +0 -0
  651. /package/{skills → library/skills}/git/worktree-create/evals.md +0 -0
  652. /package/{skills → library/skills}/git/worktree-create/references/worktree-setup.md +0 -0
  653. /package/{skills → library/skills}/git/worktree-merge/evals.md +0 -0
  654. /package/{skills → library/skills}/git/worktree-merge/references/merge-strategies.md +0 -0
  655. /package/{skills → library/skills}/meta/clio-coder-test/references/harness.md +0 -0
  656. /package/{skills → library/skills}/meta/clio-coder-test/references/test-map.md +0 -0
  657. /package/{skills → library/skills}/planning/archify/evals.md +0 -0
@@ -1,43 +1,33 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
- import {
3
- combineBashOutput
4
- } from "./chunk-5A6XR3RJ.js";
5
- import {
6
- init_esm_shims
7
- } from "./chunk-ECBHH7LU.js";
8
-
9
- // src/engine/tui.ts
10
- init_esm_shims();
11
2
  import {
12
3
  Box,
13
- CombinedAutocompleteProvider,
14
- Container,
15
4
  Editor,
16
- fuzzyFilter,
17
- getKeybindings,
18
5
  Input,
19
- isKeyRelease,
20
6
  KeybindingsManager,
21
- Markdown,
22
- Marked,
23
- matchesKey,
24
7
  ProcessTerminal,
25
- ScrollView,
8
+ SelectList,
9
+ TUI_KEYBINDINGS,
10
+ TuiAltScreen,
11
+ TuiMainScreen,
12
+ decodePrintableKey,
13
+ getKeybindings,
26
14
  setKeybindings,
27
15
  stripTerminalSequences,
28
- Text,
29
- TUI_KEYBINDINGS,
30
- TuiAltScreen as TuiAltScreen2,
31
- TuiMainScreen as TuiMainScreen2,
32
16
  truncateToWidth,
33
- VStack,
34
- visibleWidth,
35
- wrapTextWithAnsi
36
- } from "@earendil-works/pi-tui";
17
+ visibleWidth
18
+ } from "./chunk-V4ZKOKRB.js";
19
+ import {
20
+ combineBashOutput
21
+ } from "./chunk-5A6XR3RJ.js";
22
+ import {
23
+ init_esm_shims
24
+ } from "./chunk-ECBHH7LU.js";
25
+
26
+ // src/engine/tui.ts
27
+ init_esm_shims();
37
28
 
38
29
  // src/engine/instrumented-tui.ts
39
30
  init_esm_shims();
40
- import { TuiAltScreen, TuiMainScreen } from "@earendil-works/pi-tui";
41
31
  var DeferredRenderAdmission = class {
42
32
  constructor(admission, render) {
43
33
  this.admission = admission;
@@ -178,13 +168,10 @@ var InstrumentedTuiAltScreen = class extends TuiAltScreen {
178
168
 
179
169
  // src/engine/select-list.ts
180
170
  init_esm_shims();
181
- import {
182
- SelectList as EngineSelectList
183
- } from "@earendil-works/pi-tui";
184
171
  var PI_SELECT_CURSOR = "\u2192";
185
172
  var ESC = String.fromCharCode(27);
186
173
  var LEADING_CURSOR_PATTERN = new RegExp(`^((?:${ESC}\\[[0-9;]*m)*)${PI_SELECT_CURSOR} `);
187
- var SelectList = class extends EngineSelectList {
174
+ var SelectList2 = class extends SelectList {
188
175
  designCursor;
189
176
  constructor(items, maxVisible, theme, layout) {
190
177
  super(items, maxVisible, theme, layout);
@@ -289,6 +276,40 @@ function spinnerFrame(tick) {
289
276
  return SPINNER_FRAMES[index] ?? SPINNER_FRAMES[0];
290
277
  }
291
278
 
279
+ // src/interactive/theme/segments.ts
280
+ init_esm_shims();
281
+ function present(parts) {
282
+ return parts.filter((part) => typeof part === "string" && part.length > 0);
283
+ }
284
+ function brandMark(theme) {
285
+ const prompt = GLYPH.brand.slice(0, 1);
286
+ const initial = GLYPH.brand.slice(1, 2);
287
+ const cursor = GLYPH.brand.slice(2, 3);
288
+ return `${theme.fg("dim", prompt)}${theme.style("accent", initial, { bold: true })}${theme.fg("dim", cursor)}`;
289
+ }
290
+ function dotSep(theme) {
291
+ return theme.fg("dim", " \xB7 ");
292
+ }
293
+ function barSep(theme) {
294
+ return theme.fg("frame", " \u2502 ");
295
+ }
296
+ function sectionTag(theme, token, label, pad = 0) {
297
+ const text = pad > 0 ? label.padEnd(pad) : label;
298
+ return theme.style(token, text, { bold: true });
299
+ }
300
+ function screenTitle(theme, label) {
301
+ return theme.style("title", label, { bold: true });
302
+ }
303
+ function listGroupHeader(theme, label) {
304
+ return theme.fg("dim", `\u2500\u2500 ${label}`);
305
+ }
306
+ function joinChips(theme, parts) {
307
+ return present(parts).join(dotSep(theme));
308
+ }
309
+ function joinSections(theme, parts) {
310
+ return present(parts).join(barSep(theme));
311
+ }
312
+
292
313
  // src/interactive/theme/index.ts
293
314
  init_esm_shims();
294
315
 
@@ -379,42 +400,6 @@ function paintHex(text, hex, options = {}) {
379
400
 
380
401
  // src/interactive/theme/components.ts
381
402
  init_esm_shims();
382
-
383
- // src/interactive/theme/segments.ts
384
- init_esm_shims();
385
- function present(parts) {
386
- return parts.filter((part) => typeof part === "string" && part.length > 0);
387
- }
388
- function brandMark(theme) {
389
- const prompt = GLYPH.brand.slice(0, 1);
390
- const initial = GLYPH.brand.slice(1, 2);
391
- const cursor = GLYPH.brand.slice(2, 3);
392
- return `${theme.fg("dim", prompt)}${theme.style("accent", initial, { bold: true })}${theme.fg("dim", cursor)}`;
393
- }
394
- function dotSep(theme) {
395
- return theme.fg("dim", " \xB7 ");
396
- }
397
- function barSep(theme) {
398
- return theme.fg("frame", " \u2502 ");
399
- }
400
- function sectionTag(theme, token, label, pad = 0) {
401
- const text = pad > 0 ? label.padEnd(pad) : label;
402
- return theme.style(token, text, { bold: true });
403
- }
404
- function screenTitle(theme, label) {
405
- return theme.style("title", label, { bold: true });
406
- }
407
- function listGroupHeader(theme, label) {
408
- return theme.fg("dim", `\u2500\u2500 ${label}`);
409
- }
410
- function joinChips(theme, parts) {
411
- return present(parts).join(dotSep(theme));
412
- }
413
- function joinSections(theme, parts) {
414
- return present(parts).join(barSep(theme));
415
- }
416
-
417
- // src/interactive/theme/components.ts
418
403
  var identity = (text) => text;
419
404
  function markdownTheme(theme, highlightCode) {
420
405
  return {
@@ -621,6 +606,27 @@ function bashExecutionEntryInput(args) {
621
606
  // src/interactive/overlay-frame.ts
622
607
  init_esm_shims();
623
608
 
609
+ // src/interactive/keyboard-owner.ts
610
+ init_esm_shims();
611
+ function keyboardOwner(component) {
612
+ if (component instanceof Editor || component instanceof Input) {
613
+ return {
614
+ keyboardScope: "edit",
615
+ undoInput: () => {
616
+ component.applyEdit("undo");
617
+ return true;
618
+ }
619
+ };
620
+ }
621
+ return component ?? {};
622
+ }
623
+ function focusedComponent(tui) {
624
+ return tui instanceof TuiAltScreen || tui instanceof TuiMainScreen ? tui.getFocusedComponent() : null;
625
+ }
626
+ function localKey(data) {
627
+ return data.includes("\x1B[200~") ? data : decodePrintableKey(data) ?? data;
628
+ }
629
+
624
630
  // src/interactive/modal-marker.ts
625
631
  init_esm_shims();
626
632
  var MODAL_MARKER_BASE_TITLE = "clio";
@@ -696,6 +702,12 @@ var FocusBox = class extends Box {
696
702
  this.inputTarget = options?.inputTarget === void 0 ? childList[0] ?? null : options.inputTarget;
697
703
  this.onInput = options?.onInput;
698
704
  }
705
+ get keyboardScope() {
706
+ return keyboardOwner(this.inputTarget).keyboardScope;
707
+ }
708
+ undoInput() {
709
+ return keyboardOwner(this.inputTarget).undoInput?.() ?? false;
710
+ }
699
711
  handleInput(data) {
700
712
  if (this.onInput) {
701
713
  this.onInput(data);
@@ -901,6 +913,12 @@ var ClioOverlayFrame = class {
901
913
  this.cachedRender = { width, rowBudget: this.rowBudget, childLines, title: titleText, hint, tone, lines };
902
914
  return lines;
903
915
  }
916
+ get keyboardScope() {
917
+ return keyboardOwner(this.child).keyboardScope;
918
+ }
919
+ undoInput() {
920
+ return keyboardOwner(this.child).undoInput?.() ?? false;
921
+ }
904
922
  handleInput(data) {
905
923
  this.child.handleInput?.(data);
906
924
  }
@@ -965,9 +983,14 @@ function resolveRowSize(value, termHeight) {
965
983
  // src/interactive/permission-hint.ts
966
984
  init_esm_shims();
967
985
  var MUTATION_PREVIEW_KEY = "v";
968
- function permissionHintEntries(composerHasDraft = false, inspection = "none") {
986
+ var PERMISSION_TERMS_KEY = "?";
987
+ function permissionHintEntries(composerHasDraft = false, inspection = "none", terms) {
969
988
  return [
970
989
  composerHasDraft ? { key: "Backspace", verb: "clear the draft to allow", short: "clear draft", critical: true } : { key: "Enter", verb: "allow once", short: "allow", critical: true },
990
+ // The terms key is the card's own and the most droppable entry: the folded
991
+ // card already states what the keys do in one row. It sits before the
992
+ // inspect key so the narrowing drops it first.
993
+ ...terms === void 0 ? [] : [{ key: PERMISSION_TERMS_KEY, verb: terms === "open" ? "hide terms" : "terms", short: "terms", critical: false }],
971
994
  ...inspection === "none" ? [] : inspection === "open" ? [
972
995
  { key: "\u2191\u2193", verb: "scroll", critical: false },
973
996
  { key: MUTATION_PREVIEW_KEY, verb: "hide mutation", short: "hide", critical: false }
@@ -1026,7 +1049,7 @@ function composerMode(chrome, text) {
1026
1049
  function lowerRailHint(theme, chrome) {
1027
1050
  return theme.fg(
1028
1051
  "dim",
1029
- `${chrome.getSubmitKeyLabel?.() ?? "Enter"} send \xB7 ${chrome.getNewlineKeyLabel?.() ?? "Shift+Enter"} newline`
1052
+ `${chrome.getSubmitKeyLabel?.() ?? "Enter"} send \xB7 ${chrome.getNewlineKeyLabel?.() ?? "Ctrl+J"} newline`
1030
1053
  );
1031
1054
  }
1032
1055
  function confirmRailHint(theme, width, hasDraft, inspection) {
@@ -1098,6 +1121,22 @@ var ClioEditor = class extends Editor {
1098
1121
  chrome;
1099
1122
  pastedBangOffsets = /* @__PURE__ */ new Set();
1100
1123
  bracketedPasteActive = false;
1124
+ revision = 0;
1125
+ pastedOperatorTokens = /* @__PURE__ */ new Set();
1126
+ get draftRevision() {
1127
+ return this.revision;
1128
+ }
1129
+ /** Restored queues and external buffers are literal editor content. */
1130
+ setLiteralText(text) {
1131
+ this.setText(text);
1132
+ this.pastedBangOffsets = new Set([...text.matchAll(/!/gu)].map((match) => match.index));
1133
+ }
1134
+ applyEdit(operation) {
1135
+ const before = this.getText();
1136
+ super.applyEdit(operation);
1137
+ this.revision += 1;
1138
+ this.pastedBangOffsets = remapPastedBangOffsets(before, this.getText(), this.pastedBangOffsets, operation === "undo");
1139
+ }
1101
1140
  render(width) {
1102
1141
  const lines = super.render(width);
1103
1142
  if (lines.length === 0) return lines;
@@ -1145,23 +1184,21 @@ var ClioEditor = class extends Editor {
1145
1184
  */
1146
1185
  getTextForSubmit() {
1147
1186
  const text = this.getExpandedText();
1148
- return startsWithPastedOperator(this.getText(), this.pastedBangOffsets) ? guardPastedEditorOperator(text) : text;
1187
+ return this.startsWithLiteralOperator() ? guardPastedEditorOperator(text) : text;
1149
1188
  }
1150
- /**
1151
- * pi-tui's bracketed-paste handling inserts pasted text (including a
1152
- * trailing newline the paste carried) without submitting: a pasted
1153
- * `/model\n` lands as two lines in the buffer and just sits there. Once
1154
- * the base handler has applied a chunk that closed a paste, check whether
1155
- * the buffer now reads as a completed slash command and, if so, submit it
1156
- * through the same handler the typed-Enter path uses.
1157
- */
1189
+ startsWithLiteralOperator() {
1190
+ const visible = this.getText();
1191
+ return startsWithPastedOperator(visible, this.pastedBangOffsets) || [...this.pastedOperatorTokens].some((token) => visible.trimStart().startsWith(token));
1192
+ }
1193
+ /** Paste is always literal; a later deliberate key submits it. */
1158
1194
  handleInput(data) {
1195
+ this.revision += 1;
1159
1196
  const openedPaste = data.includes("\x1B[200~");
1160
1197
  const closedPaste = data.includes("\x1B[201~");
1161
1198
  const pasteMutation = this.bracketedPasteActive || openedPaste;
1162
1199
  const textBeforeInput = this.getText();
1163
1200
  const keybindings = getKeybindings();
1164
- if (startsWithPastedOperator(textBeforeInput, this.pastedBangOffsets) && keybindings.matches(data, "tui.input.submit")) {
1201
+ if (this.startsWithLiteralOperator() && keybindings.matches(data, "tui.input.submit")) {
1165
1202
  const pastedText = this.getTextForSubmit();
1166
1203
  this.pastedBangOffsets.clear();
1167
1204
  this.bracketedPasteActive = false;
@@ -1184,15 +1221,22 @@ var ClioEditor = class extends Editor {
1184
1221
  );
1185
1222
  if (openedPaste) this.bracketedPasteActive = true;
1186
1223
  if (closedPaste) this.bracketedPasteActive = false;
1187
- if (!closedPaste) return;
1188
- const text = this.getText();
1189
- if (!text.endsWith("\n")) return;
1190
- const command = text.trimEnd();
1191
- if (!command.startsWith("/")) return;
1192
- this.setText("");
1193
- this.onSubmit?.(command);
1224
+ if (pasteMutation && textAfterInput !== this.getExpandedText()) {
1225
+ let start = 0;
1226
+ while (start < textBeforeInput.length && start < textAfterInput.length && textBeforeInput[start] === textAfterInput[start])
1227
+ start++;
1228
+ let oldEnd = textBeforeInput.length, end = textAfterInput.length;
1229
+ while (oldEnd > start && end > start && textBeforeInput[oldEnd - 1] === textAfterInput[end - 1]) {
1230
+ oldEnd--;
1231
+ end--;
1232
+ }
1233
+ const token = textAfterInput.slice(start, end).trimStart();
1234
+ if (token && !token.startsWith("!")) this.pastedOperatorTokens.add(token);
1235
+ }
1194
1236
  }
1195
1237
  setText(text) {
1238
+ this.revision += 1;
1239
+ this.pastedOperatorTokens.clear();
1196
1240
  this.pastedBangOffsets.clear();
1197
1241
  this.bracketedPasteActive = false;
1198
1242
  super.setText(text);
@@ -1969,105 +2013,177 @@ init_esm_shims();
1969
2013
  // src/domains/config/keybindings.ts
1970
2014
  init_esm_shims();
1971
2015
  var CLIO_APP_KEYBINDINGS = {
1972
- "clio-coder.thinking.cycle": {
1973
- defaultKeys: "shift+tab",
1974
- description: "Cycle orchestrator thinking level"
2016
+ "clio-coder.library.toggle": {
2017
+ defaultKeys: "alt+l",
2018
+ description: "Library",
2019
+ scope: "composer",
2020
+ kind: "toggle",
2021
+ repeat: false,
2022
+ leader: "l"
1975
2023
  },
1976
- "clio-coder.exit": {
1977
- defaultKeys: "ctrl+d",
1978
- description: "Exit when the editor is empty"
2024
+ "clio-coder.model.select": {
2025
+ defaultKeys: "alt+m",
2026
+ description: "Model picker",
2027
+ scope: "composer",
2028
+ kind: "toggle",
2029
+ repeat: false,
2030
+ leader: "m"
2031
+ },
2032
+ "clio-coder.output.cycle": {
2033
+ defaultKeys: "alt+o",
2034
+ description: "Output style",
2035
+ scope: "composer",
2036
+ kind: "cycle",
2037
+ repeat: false,
2038
+ leader: "o"
1979
2039
  },
1980
2040
  "clio-coder.status.toggle": {
1981
2041
  defaultKeys: "alt+u",
1982
- description: "Toggle the footer dashboard (compact / expanded)"
1983
- },
1984
- "clio-coder.session.tree": {
1985
- defaultKeys: "alt+t",
1986
- description: "Open the /tree navigator"
2042
+ description: "Dashboard",
2043
+ scope: "composer",
2044
+ kind: "toggle",
2045
+ repeat: false,
2046
+ leader: "u"
1987
2047
  },
1988
2048
  "clio-coder.dispatchBoard.toggle": {
1989
2049
  defaultKeys: "alt+w",
1990
- description: "Toggle the dispatch (workers) board overlay"
2050
+ description: "Workers",
2051
+ scope: "composer",
2052
+ kind: "toggle",
2053
+ repeat: false,
2054
+ leader: "w"
1991
2055
  },
1992
2056
  "clio-coder.files.toggle": {
1993
- // Alt+F is a pi-tui editor reserve (word-forward), so the files pane
1994
- // takes the next letter that reads as "explorer" and stays inside the
1995
- // Alt+<letter> scheme, which also earns it the Ctrl+G leader fallback.
1996
2057
  defaultKeys: "alt+e",
1997
- description: "Toggle the files pane beside the session (a --with-panes session inside herdr)"
2058
+ description: "Files (from Clio focus)",
2059
+ scope: "composer",
2060
+ kind: "toggle",
2061
+ repeat: false,
2062
+ leader: "e"
2063
+ },
2064
+ "clio-coder.thinking.cycle": {
2065
+ defaultKeys: "shift+tab",
2066
+ description: "Thinking effort",
2067
+ scope: "composer",
2068
+ kind: "cycle",
2069
+ repeat: false,
2070
+ leader: "t"
2071
+ },
2072
+ "clio-coder.message.followUp": {
2073
+ defaultKeys: "ctrl+q",
2074
+ description: "Send after the active run",
2075
+ scope: "composer",
2076
+ kind: "send",
2077
+ repeat: false,
2078
+ leader: "f"
2079
+ },
2080
+ "clio-coder.message.dequeue": {
2081
+ defaultKeys: "alt+q",
2082
+ description: "Restore queued messages",
2083
+ scope: "composer",
2084
+ kind: "send",
2085
+ repeat: false,
2086
+ leader: "q"
2087
+ },
2088
+ "clio-coder.exit": {
2089
+ defaultKeys: "ctrl+d",
2090
+ description: "Exit empty idle composer with no queued messages",
2091
+ scope: "composer",
2092
+ kind: "exit",
2093
+ repeat: false
2094
+ },
2095
+ "clio-coder.leader": {
2096
+ defaultKeys: "ctrl+g",
2097
+ description: "Open contextual action menu",
2098
+ scope: "composer",
2099
+ kind: "toggle",
2100
+ repeat: false
1998
2101
  },
1999
2102
  "clio-coder.tasks.open": {
2000
- // Approved application-boundary override of pi-tui editor word-back.
2001
- defaultKeys: "alt+b",
2002
- description: "Open the composite session and operator task board"
2103
+ defaultKeys: [],
2104
+ description: "Tasks (/tasks)",
2105
+ scope: "composer",
2106
+ kind: "toggle",
2107
+ repeat: false
2003
2108
  },
2004
2109
  "clio-coder.decisions.open": {
2005
- // Approved application-boundary override of pi-tui editor word-delete.
2006
- defaultKeys: "alt+d",
2007
- description: "Open the settled interview decision board"
2008
- },
2009
- "clio-coder.dispatch.background": {
2010
- // Ctrl+B alone is pi-tui's editor cursor-left, so the Claude Code chord
2011
- // cannot be the primary here. Alt+S ("send to background") keeps the app
2012
- // scheme and earns the Ctrl+G leader fallback, which only alt+<letter>
2013
- // bindings get; Ctrl+Alt+B stays for the b-for-background muscle memory.
2014
- defaultKeys: ["alt+s", "ctrl+alt+b"],
2015
- description: "Send the running attached dispatch to the background as a detached batch"
2110
+ defaultKeys: [],
2111
+ description: "Decisions (/decisions)",
2112
+ scope: "composer",
2113
+ kind: "toggle",
2114
+ repeat: false
2016
2115
  },
2017
- "clio-coder.model.select": {
2018
- defaultKeys: "alt+l",
2019
- description: "Open the model + targets selector"
2116
+ "clio-coder.session.tree": {
2117
+ defaultKeys: [],
2118
+ description: "Session tree (/tree)",
2119
+ scope: "composer",
2120
+ kind: "toggle",
2121
+ repeat: false
2020
2122
  },
2021
2123
  "clio-coder.model.cycleForward": {
2022
- defaultKeys: "alt+j",
2023
- description: "Cycle to next scoped model"
2124
+ defaultKeys: [],
2125
+ description: "Next scoped model",
2126
+ scope: "composer",
2127
+ kind: "cycle",
2128
+ repeat: false
2024
2129
  },
2025
2130
  "clio-coder.model.cycleBackward": {
2026
- defaultKeys: "alt+k",
2027
- description: "Cycle to previous scoped model"
2028
- },
2029
- "clio-coder.output.cycle": {
2030
- defaultKeys: "alt+o",
2031
- description: "Cycle output style: Compact, Standard, Detailed"
2032
- },
2033
- "clio-coder.editor.external": {
2034
- defaultKeys: "alt+g",
2035
- description: "Open the current input in an external editor"
2131
+ defaultKeys: [],
2132
+ description: "Previous scoped model",
2133
+ scope: "composer",
2134
+ kind: "cycle",
2135
+ repeat: false
2036
2136
  },
2037
- "clio-coder.message.followUp": {
2038
- defaultKeys: "alt+enter",
2039
- 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)"
2137
+ "clio-coder.dispatch.background": {
2138
+ defaultKeys: [],
2139
+ description: "Background attached dispatch",
2140
+ scope: "composer",
2141
+ kind: "send",
2142
+ repeat: false,
2143
+ leader: "s"
2040
2144
  },
2041
2145
  "clio-coder.message.interrupt": {
2042
- // Alt+I keeps the app scheme and earns the Ctrl+G leader fallback. A
2043
- // Ctrl+Enter chord was rejected because legacy terminals send it as a
2044
- // plain Enter, which would turn every send into a cancel.
2045
- defaultKeys: "alt+i",
2046
- 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)"
2146
+ defaultKeys: [],
2147
+ description: "Interrupt with draft",
2148
+ scope: "composer",
2149
+ kind: "send",
2150
+ repeat: false,
2151
+ leader: "i"
2047
2152
  },
2048
- "clio-coder.message.dequeue": {
2049
- defaultKeys: "alt+up",
2050
- description: "Restore queued steering and follow-up messages to the editor"
2153
+ "clio-coder.editor.external": {
2154
+ defaultKeys: [],
2155
+ description: "Edit expanded draft externally",
2156
+ scope: "composer",
2157
+ kind: "edit",
2158
+ repeat: false,
2159
+ leader: "g"
2051
2160
  },
2052
2161
  "clio-coder.notifications.dismiss": {
2053
- defaultKeys: "alt+x",
2054
- description: "Dismiss footer notifications"
2055
- },
2056
- "clio-coder.leader": {
2057
- defaultKeys: "ctrl+g",
2058
- description: "Start portable leader-key fallback for Alt shortcuts"
2162
+ defaultKeys: [],
2163
+ description: "Dismiss oldest notification",
2164
+ scope: "composer",
2165
+ kind: "dismiss",
2166
+ repeat: false,
2167
+ leader: "x"
2059
2168
  }
2060
2169
  };
2061
2170
  var CLIO_KEYBINDINGS = {
2062
2171
  ...TUI_KEYBINDINGS,
2063
- "tui.editor.historyPrevious": {
2064
- ...TUI_KEYBINDINGS["tui.editor.historyPrevious"],
2065
- defaultKeys: "ctrl+p"
2066
- },
2067
- "tui.editor.historyNext": {
2068
- ...TUI_KEYBINDINGS["tui.editor.historyNext"],
2069
- defaultKeys: "ctrl+n"
2172
+ "tui.editor.historyPrevious": { ...TUI_KEYBINDINGS["tui.editor.historyPrevious"], defaultKeys: "ctrl+p" },
2173
+ "tui.editor.historyNext": { ...TUI_KEYBINDINGS["tui.editor.historyNext"], defaultKeys: "ctrl+n" },
2174
+ "tui.editor.deleteWordBackward": {
2175
+ ...TUI_KEYBINDINGS["tui.editor.deleteWordBackward"],
2176
+ defaultKeys: ["ctrl+w", "alt+backspace", "ctrl+backspace"]
2070
2177
  },
2178
+ "tui.editor.undo": { ...TUI_KEYBINDINGS["tui.editor.undo"], defaultKeys: "ctrl+_" },
2179
+ "tui.input.newLine": { ...TUI_KEYBINDINGS["tui.input.newLine"], defaultKeys: ["ctrl+j", "shift+enter"] },
2180
+ "tui.altScreen.top": { ...TUI_KEYBINDINGS["tui.altScreen.top"], defaultKeys: [] },
2181
+ "tui.altScreen.bottom": { ...TUI_KEYBINDINGS["tui.altScreen.bottom"], defaultKeys: [] },
2182
+ "tui.altScreen.previousPrompt": { ...TUI_KEYBINDINGS["tui.altScreen.previousPrompt"], defaultKeys: "ctrl+up" },
2183
+ "tui.altScreen.nextPrompt": { ...TUI_KEYBINDINGS["tui.altScreen.nextPrompt"], defaultKeys: "ctrl+down" },
2184
+ "tui.altScreen.search": { ...TUI_KEYBINDINGS["tui.altScreen.search"], defaultKeys: "ctrl+r" },
2185
+ "tui.altScreen.searchNext": { ...TUI_KEYBINDINGS["tui.altScreen.searchNext"], defaultKeys: "enter" },
2186
+ "tui.altScreen.searchPrevious": { ...TUI_KEYBINDINGS["tui.altScreen.searchPrevious"], defaultKeys: "up" },
2071
2187
  ...CLIO_APP_KEYBINDINGS
2072
2188
  };
2073
2189
  var CLIO_APP_KEYBINDING_IDS = Object.keys(CLIO_APP_KEYBINDINGS);
@@ -2139,6 +2255,14 @@ var BASE_SYMBOL_KEYS = /* @__PURE__ */ new Set([
2139
2255
  "?"
2140
2256
  ]);
2141
2257
  var MODIFIERS = /* @__PURE__ */ new Set(["ctrl", "shift", "alt", "super"]);
2258
+ function canonicalKey(key) {
2259
+ const parts = key.toLowerCase().split("+");
2260
+ let base = parts.pop() ?? "";
2261
+ if (base === "esc") base = "escape";
2262
+ if (base === "return") base = "enter";
2263
+ const modifiers = ["ctrl", "alt", "shift", "super"].filter((mod) => parts.includes(mod));
2264
+ return [...modifiers, base].join("+");
2265
+ }
2142
2266
  function isValidKeyId(keyId) {
2143
2267
  if (typeof keyId !== "string" || keyId.length === 0) return false;
2144
2268
  const parts = keyId.toLowerCase().split("+");
@@ -2164,10 +2288,13 @@ function validateKeybindings(raw) {
2164
2288
  const valid = {};
2165
2289
  const invalid = [];
2166
2290
  for (const [id, value] of Object.entries(raw)) {
2291
+ if (!Object.hasOwn(CLIO_KEYBINDINGS, id)) {
2292
+ invalid.push({ id, keys: ["unknown action ID; use /help"] });
2293
+ continue;
2294
+ }
2167
2295
  if (typeof value === "string") {
2168
- if (value.length === 0) continue;
2169
2296
  if (isValidKeyId(value)) {
2170
- valid[id] = value;
2297
+ valid[id] = canonicalKey(value);
2171
2298
  } else {
2172
2299
  invalid.push({ id, keys: [value] });
2173
2300
  }
@@ -2177,14 +2304,17 @@ function validateKeybindings(raw) {
2177
2304
  const accepted = [];
2178
2305
  const rejected = [];
2179
2306
  for (const entry of value) {
2180
- if (typeof entry !== "string" || entry.length === 0) continue;
2307
+ if (typeof entry !== "string") {
2308
+ rejected.push(String(entry));
2309
+ continue;
2310
+ }
2181
2311
  if (isValidKeyId(entry)) {
2182
- accepted.push(entry);
2312
+ accepted.push(canonicalKey(entry));
2183
2313
  } else {
2184
2314
  rejected.push(entry);
2185
2315
  }
2186
2316
  }
2187
- if (accepted.length > 0) valid[id] = accepted;
2317
+ if (accepted.length > 0 || value.length === 0) valid[id] = accepted;
2188
2318
  if (rejected.length > 0) invalid.push({ id, keys: rejected });
2189
2319
  }
2190
2320
  }
@@ -2284,8 +2414,10 @@ function keyUsesAltLetter(keyId) {
2284
2414
  }
2285
2415
  function terminalReservedReason(keyId) {
2286
2416
  const key = normalizeKeyForRisk(keyId);
2287
- if (key === "ctrl+s" || key === "ctrl+q") return "terminal flow control may intercept this chord";
2288
- if (key === "ctrl+z") return "shell job control may suspend the process";
2417
+ if (key === "ctrl+s")
2418
+ return "an intermediary may intercept this chord; Node raw mode normally disables terminal flow control";
2419
+ if (key === "ctrl+z")
2420
+ return "an intermediary may intercept this chord; Node raw mode normally disables signal generation";
2289
2421
  return null;
2290
2422
  }
2291
2423
  function keyRiskReason(keyId, support) {
@@ -2295,7 +2427,7 @@ function keyRiskReason(keyId, support) {
2295
2427
  if (support.ideReservedKeys?.map(normalizeKeyForRisk).includes(key)) return `${support.name} may reserve this chord`;
2296
2428
  return terminalReservedReason(key);
2297
2429
  }
2298
- var MACOS_OPTION_DEFAULT_WARNING_ID = "clio.macos.option-letter.defaults";
2430
+ var MACOS_OPTION_DEFAULT_WARNING_ID = "clio-coder.macos.option-letter.defaults";
2299
2431
  function detectPlatformKeybindingWarnings(userBindings, support = detectTerminalKeySupport()) {
2300
2432
  const warnings = [];
2301
2433
  const macosDefaultAltKeys = [];
@@ -2346,94 +2478,124 @@ function joinKeys(keys) {
2346
2478
  if (keys.length === 1) return String(keys[0]);
2347
2479
  return keys.join(" / ");
2348
2480
  }
2349
- function deriveLeaderTargets(inner) {
2350
- const targets = [];
2351
- for (const id of CLIO_APP_KEYBINDING_IDS) {
2481
+ var VIEWPORT_LEADER_TARGETS = [
2482
+ { key: "z", id: "tui.editor.undo" },
2483
+ { key: "r", id: "tui.altScreen.search" },
2484
+ { key: "p", id: "tui.altScreen.pageUp" },
2485
+ { key: "n", id: "tui.altScreen.pageDown" },
2486
+ { key: "home", id: "tui.altScreen.top" },
2487
+ { key: "end", id: "tui.altScreen.bottom" },
2488
+ { key: "", id: "tui.altScreen.previousPrompt" },
2489
+ { key: "", id: "tui.altScreen.nextPrompt" }
2490
+ ];
2491
+ function keybindingScope(id) {
2492
+ if (id.startsWith("clio-coder.")) return "composer";
2493
+ if (id.startsWith("tui.select.")) return "selection";
2494
+ if (/tui.altScreen.search(Next|Previous|Close)/u.test(id)) return "search";
2495
+ if (id.startsWith("tui.altScreen.")) return "fullscreen composer";
2496
+ return "editable field";
2497
+ }
2498
+ function legacyKey(key) {
2499
+ const canonical = canonicalKey(key);
2500
+ return { "ctrl+i": "tab", "ctrl+m": "enter", "ctrl+[": "escape", "ctrl+_": "ctrl+-" }[canonical] ?? canonical;
2501
+ }
2502
+ function scopesOverlap(a, b) {
2503
+ const left = keybindingScope(a), right = keybindingScope(b);
2504
+ if (left === "selection" || right === "selection") return left === right;
2505
+ if (left === "search" || right === "search") return left === right;
2506
+ if (a === "clio-coder.exit" && b === "tui.editor.deleteCharForward" || b === "clio-coder.exit" && a === "tui.editor.deleteCharForward")
2507
+ return false;
2508
+ return true;
2509
+ }
2510
+ function effectiveConflicts(inner) {
2511
+ const keys = /* @__PURE__ */ new Map();
2512
+ for (const id of Object.keys(CLIO_KEYBINDINGS)) {
2352
2513
  for (const key of inner.getKeys(id)) {
2353
- const base = altLetterBase(String(key));
2354
- if (base) targets.push({ key: base, id });
2514
+ const canonical = legacyKey(key);
2515
+ const ids = keys.get(canonical) ?? [];
2516
+ if (!ids.includes(id)) ids.push(id);
2517
+ keys.set(canonical, ids);
2355
2518
  }
2356
2519
  }
2357
- return targets;
2358
- }
2359
- function buildManager(inner, invalid, platformWarnings) {
2360
- const frozen = invalid.map((entry) => ({ id: entry.id, keys: [...entry.keys] }));
2361
- const frozenPlatformWarnings = platformWarnings.map((entry) => ({
2362
- id: entry.id,
2363
- keys: [...entry.keys],
2364
- terminal: entry.terminal,
2365
- reason: entry.reason,
2366
- source: entry.source
2520
+ return [...keys].filter(
2521
+ ([, ids]) => ids.length > 1 && ids.some((id, index) => ids.slice(index + 1).some((other) => scopesOverlap(id, other)))
2522
+ ).map(([key, keybindings]) => ({
2523
+ key,
2524
+ keybindings: keybindings.filter((id) => keybindings.some((other) => other !== id && scopesOverlap(id, other)))
2367
2525
  }));
2368
- const frozenLeaderTargets = deriveLeaderTargets(inner).map((entry) => ({ ...entry }));
2526
+ }
2527
+ function buildManager(overrides, env, install) {
2528
+ let validated = validateKeybindings(overrides);
2529
+ const inner = new KeybindingsManager(CLIO_KEYBINDINGS, validated.valid);
2530
+ if (install) setKeybindings(inner);
2531
+ let generation = 0;
2532
+ const listeners = /* @__PURE__ */ new Set();
2533
+ const isDisabled = (id) => {
2534
+ const value = inner.getUserBindings()[id];
2535
+ return Array.isArray(value) && value.length === 0;
2536
+ };
2537
+ const leaderTargets = () => {
2538
+ if (inner.getKeys("clio-coder.leader").length === 0) return [];
2539
+ const app = CLIO_APP_KEYBINDING_IDS.flatMap((id) => {
2540
+ const descriptor = CLIO_APP_KEYBINDINGS[id];
2541
+ return "leader" in descriptor ? [{ key: descriptor.leader, id }] : [];
2542
+ });
2543
+ return [...app, ...VIEWPORT_LEADER_TARGETS].filter(({ id }) => !isDisabled(id));
2544
+ };
2545
+ const actionLabel = (id) => {
2546
+ const keys = inner.getKeys(id);
2547
+ const suffix = leaderTargets().find((entry) => entry.id === id)?.key;
2548
+ return [keys.join(" / "), suffix ? `${inner.getKeys("clio-coder.leader")[0]} ${suffix}` : ""].filter(Boolean).join(" \xB7 ") || "unbound; see /help";
2549
+ };
2369
2550
  return {
2370
- matches(data, id) {
2371
- return inner.matches(data, id);
2372
- },
2373
- getKeys(id) {
2374
- return inner.getKeys(id);
2375
- },
2376
- getDescription(id) {
2377
- return inner.getDefinition(id).description ?? "";
2378
- },
2379
- getConflicts() {
2380
- return inner.getConflicts();
2381
- },
2382
- overrideCount() {
2383
- return Object.keys(inner.getUserBindings()).length;
2384
- },
2385
- invalidCount() {
2386
- return frozen.reduce((sum, entry) => sum + entry.keys.length, 0);
2551
+ matches: (data, id) => inner.matches(data, id),
2552
+ getKeys: (id) => inner.getKeys(id),
2553
+ getDescription: (id) => inner.getDefinition(id).description ?? "",
2554
+ getConflicts: () => effectiveConflicts(inner),
2555
+ get generation() {
2556
+ return generation;
2387
2557
  },
2388
- invalidBindings() {
2389
- return frozen;
2390
- },
2391
- platformWarnings() {
2392
- return frozenPlatformWarnings;
2558
+ reload(next) {
2559
+ validated = validateKeybindings(next);
2560
+ inner.setUserBindings(validated.valid);
2561
+ if (install) setKeybindings(inner);
2562
+ generation += 1;
2563
+ for (const listener of listeners) listener();
2393
2564
  },
2394
- leaderTargets() {
2395
- return frozenLeaderTargets;
2565
+ onReload(listener) {
2566
+ listeners.add(listener);
2567
+ return () => {
2568
+ listeners.delete(listener);
2569
+ };
2396
2570
  },
2397
- hotkeyEntries() {
2398
- const userBindings = inner.getUserBindings();
2399
- return CLIO_APP_KEYBINDING_IDS.map((id) => ({
2400
- id,
2401
- keys: joinKeys(inner.getKeys(id)),
2402
- description: inner.getDefinition(id).description ?? "",
2403
- source: userBindings[id] === void 0 ? "default" : "user"
2404
- }));
2405
- }
2571
+ isDisabled,
2572
+ actionLabel,
2573
+ overrideCount: () => Object.keys(validated.valid).length,
2574
+ invalidCount: () => validated.invalid.reduce((sum, entry) => sum + entry.keys.length, 0),
2575
+ invalidBindings: () => validated.invalid,
2576
+ platformWarnings: () => detectPlatformKeybindingWarnings(validated.valid, detectTerminalKeySupport(env)),
2577
+ leaderTargets,
2578
+ hotkeyEntries: () => Object.keys(CLIO_KEYBINDINGS).map((id) => ({
2579
+ id,
2580
+ keys: joinKeys(inner.getKeys(id)),
2581
+ description: `${inner.getDefinition(id).description ?? ""} (${keybindingScope(id)}${isDisabled(id) ? "; disabled by user" : ""})${id === "tui.input.copy" ? "; composer Ctrl+C cancels; use native terminal clipboard" : ""}`,
2582
+ source: validated.valid[id] === void 0 ? "default" : "user"
2583
+ }))
2406
2584
  };
2407
2585
  }
2408
2586
  function createKeybindingManager(settings, env = process.env) {
2409
- const { valid, invalid } = validateKeybindings(settings.interface.keybindings ?? {});
2410
- const inner = new KeybindingsManager(CLIO_KEYBINDINGS, valid);
2411
- setKeybindings(inner);
2412
- return buildManager(inner, invalid, detectPlatformKeybindingWarnings(valid, detectTerminalKeySupport(env)));
2587
+ return buildManager(settings.interface.keybindings ?? {}, env, true);
2413
2588
  }
2414
2589
 
2415
2590
  export {
2416
- SelectList,
2591
+ SelectList2 as SelectList,
2417
2592
  createAgentProgress,
2418
- CombinedAutocompleteProvider,
2419
- Container,
2420
- fuzzyFilter,
2421
- getKeybindings,
2422
- Input,
2423
- isKeyRelease,
2424
- Markdown,
2425
- Marked,
2426
- matchesKey,
2427
- ScrollView,
2428
- stripTerminalSequences,
2429
- Text,
2430
- truncateToWidth,
2431
- VStack,
2432
- visibleWidth,
2433
- wrapTextWithAnsi,
2434
2593
  unguardPastedEditorOperator,
2435
2594
  parseEditorBashCommand,
2436
2595
  bashExecutionEntryInput,
2596
+ keyboardOwner,
2597
+ focusedComponent,
2598
+ localKey,
2437
2599
  SGR_RESET,
2438
2600
  SGR_DIM,
2439
2601
  fgSequence,
@@ -2451,6 +2613,7 @@ export {
2451
2613
  joinSections,
2452
2614
  markdownTheme,
2453
2615
  selectListTheme,
2616
+ editorTheme,
2454
2617
  abbreviateModelId,
2455
2618
  formatTargetLabel,
2456
2619
  formatCompactMs,
@@ -2473,11 +2636,13 @@ export {
2473
2636
  diagnosticSeverityToken,
2474
2637
  showClioOverlayFrame,
2475
2638
  MUTATION_PREVIEW_KEY,
2639
+ PERMISSION_TERMS_KEY,
2476
2640
  permissionHintEntries,
2477
2641
  ClioEditor,
2478
2642
  writeInputWedgeDump,
2479
2643
  getActiveRenderTrace,
2480
2644
  createProcessInteractiveShell,
2645
+ CLIO_APP_KEYBINDING_IDS,
2481
2646
  validateKeybindings,
2482
2647
  formatInvalidKeybindingNotice,
2483
2648
  detectTerminalKeySupport,
@@ -2485,4 +2650,4 @@ export {
2485
2650
  formatPlatformKeybindingNotice,
2486
2651
  createKeybindingManager
2487
2652
  };
2488
- //# sourceMappingURL=chunk-VANN3GDP.js.map
2653
+ //# sourceMappingURL=chunk-U3TPUXOQ.js.map