@iowarp/clio-coder 0.4.5 → 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 (700) hide show
  1. package/.claude-plugin/marketplace.json +283 -0
  2. package/CHANGELOG.md +74 -0
  3. package/CONTRIBUTING.md +116 -38
  4. package/NOTICE +24 -0
  5. package/README.md +341 -682
  6. package/dist/{acp-H3CU2HBQ.js → acp-W3Y3TRHD.js} +12 -12
  7. package/dist/{agents-IXQQZ7BD.js → agents-J4ICNLQ3.js} +57 -56
  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-R7KYF7N3.js → auth-X2UJUMOC.js} +25 -25
  13. package/dist/{builtins-CRFDQUVP.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-SE4ZKILO.js → chunk-3XE4NRLF.js} +30 -9
  20. package/dist/{chunk-YYB3MC65.js → chunk-4MFBBY2Z.js} +3 -3
  21. package/dist/{chunk-5VTJP36Q.js → chunk-4N2RZ4TO.js} +2 -2
  22. package/dist/{chunk-FKIOX6DS.js → chunk-4QKAITQT.js} +10 -5
  23. package/dist/chunk-4UHVS5T7.js +207 -0
  24. package/dist/{chunk-VLPTKCKT.js → chunk-5AJPUR72.js} +6 -6
  25. package/dist/{chunk-5CY4Q6QI.js → chunk-5EQO5NWP.js} +105 -3
  26. package/dist/{chunk-RXIOCVBZ.js → chunk-65BGHOUR.js} +8 -5
  27. package/dist/{chunk-T53XI6I7.js → chunk-6CA2BHOR.js} +2 -2
  28. package/dist/{chunk-HL26ADLH.js → chunk-6CB2IL4N.js} +2 -1
  29. package/dist/{chunk-HR3HPQ76.js → chunk-6LRLOJHQ.js} +3 -3
  30. package/dist/{chunk-HXHFDHB6.js → chunk-6TAATXXH.js} +6 -6
  31. package/dist/{chunk-WFKDPU7U.js → chunk-6YHPAAZR.js} +3 -3
  32. package/dist/{chunk-ZMZQEBKI.js → chunk-7EEGBKV4.js} +11 -11
  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-MDU3C27C.js → chunk-BO4XV5VX.js} +8 -8
  36. package/dist/{chunk-KF6GFW6O.js → chunk-BQQ5MXUC.js} +11 -11
  37. package/dist/{chunk-K6RDB7IA.js → chunk-C3G5PNUO.js} +23 -23
  38. package/dist/{chunk-SRZOW5L2.js → chunk-C6GEXX4L.js} +1 -1
  39. package/dist/{chunk-U2JOLB7O.js → chunk-CE64C5K5.js} +227 -72
  40. package/dist/chunk-CP3HIR5H.js +2119 -0
  41. package/dist/{chunk-BBV5TKE6.js → chunk-CPXGJI2A.js} +2 -2
  42. package/dist/{chunk-5DDOTTG4.js → chunk-CULVKYTK.js} +5 -5
  43. package/dist/{chunk-F34AR6O3.js → chunk-D2T66PDV.js} +6 -6
  44. package/dist/{chunk-NF3BK5WR.js → chunk-DACXIVVF.js} +5 -5
  45. package/dist/{chunk-4SVIVOMC.js → chunk-DLIYANB7.js} +20 -15
  46. package/dist/{chunk-E3BQTQUP.js → chunk-DO7M3LSX.js} +9 -9
  47. package/dist/{chunk-2QPI3TR3.js → chunk-DVJL77SO.js} +2 -2
  48. package/dist/chunk-EM2WNQS2.js +93 -0
  49. package/dist/{chunk-ODUTYZIU.js → chunk-EUEXGXXR.js} +5 -5
  50. package/dist/{chunk-UL36QJX6.js → chunk-EUZRMP4Y.js} +18 -16
  51. package/dist/{chunk-R6MAYTMS.js → chunk-G4LGUTOE.js} +4 -4
  52. package/dist/{chunk-CBSKDFWL.js → chunk-GEVQNST4.js} +2 -2
  53. package/dist/{chunk-XXBQKW32.js → chunk-GFQ7P2UF.js} +7 -7
  54. package/dist/{chunk-SBZX6ARC.js → chunk-GI5RRMAH.js} +14 -14
  55. package/dist/{chunk-KDWLXVMN.js → chunk-GVZFCJHE.js} +343 -113
  56. package/dist/{chunk-633EXGZA.js → chunk-GXIWHXDB.js} +3 -3
  57. package/dist/{chunk-LUL5Z66S.js → chunk-HOX4YZ2K.js} +6 -5
  58. package/dist/chunk-HRAKUPIH.js +57 -0
  59. package/dist/{chunk-KYKNBD4Y.js → chunk-IJMW64DX.js} +978 -258
  60. package/dist/{chunk-DIMRLNIC.js → chunk-IMOD2YPV.js} +16 -9
  61. package/dist/{chunk-6CDNRHWH.js → chunk-IQCNVLO6.js} +28 -8
  62. package/dist/{chunk-UTUNT5QL.js → chunk-ISNCCX42.js} +9 -9
  63. package/dist/{chunk-RLTT5GVY.js → chunk-IZYTT3CD.js} +9 -5
  64. package/dist/{chunk-5ZMXGW7P.js → chunk-KAFMW7WM.js} +4 -85
  65. package/dist/chunk-KKEYGFX4.js +915 -0
  66. package/dist/{chunk-HHVJNVUJ.js → chunk-KS7ETA3P.js} +2 -2
  67. package/dist/{chunk-UXAC2FX4.js → chunk-L3Z5ANCV.js} +7 -7
  68. package/dist/{chunk-EHCPSZJF.js → chunk-LBFQMYS3.js} +2 -2
  69. package/dist/{chunk-QEQISF75.js → chunk-LK2FN5JY.js} +1 -1
  70. package/dist/{chunk-URBGEOH3.js → chunk-M6Z2V6YU.js} +5 -5
  71. package/dist/{chunk-DRD2A54W.js → chunk-MBJO5VNZ.js} +18 -18
  72. package/dist/chunk-MNQN3X6Y.js +595 -0
  73. package/dist/{chunk-GXCCHKN6.js → chunk-MZHXENL7.js} +7 -7
  74. package/dist/chunk-MZNWZUJM.js +1801 -0
  75. package/dist/{chunk-7YJWEF2L.js → chunk-N37QC5FV.js} +5 -5
  76. package/dist/{chunk-WLMSOT73.js → chunk-NCCQ6DVS.js} +7 -7
  77. package/dist/{chunk-TZ7MFRG4.js → chunk-NO7J45X6.js} +170 -53
  78. package/dist/chunk-OH3YYA3B.js +15 -0
  79. package/dist/{chunk-22PQ4TX4.js → chunk-P4DL2LM5.js} +16 -77
  80. package/dist/{chunk-R6MICQYU.js → chunk-PFLOULP3.js} +4 -4
  81. package/dist/{chunk-MC3JSVR6.js → chunk-QJMRYTCX.js} +7 -7
  82. package/dist/{chunk-ILJ7DWGE.js → chunk-QKWL7SYE.js} +12 -12
  83. package/dist/chunk-R2CT5YDO.js +66 -0
  84. package/dist/chunk-RFCKPS2V.js +26 -0
  85. package/dist/{chunk-ONRTXOZY.js → chunk-RTLNFZMD.js} +12 -4
  86. package/dist/{chunk-U7H5WRG5.js → chunk-RXFPB32E.js} +8 -6
  87. package/dist/{chunk-S32UQ5GL.js → chunk-SEDI5K5B.js} +18 -18
  88. package/dist/{chunk-ICO4TQ2F.js → chunk-SELG4SUR.js} +41 -25
  89. package/dist/{chunk-YEJIG7LN.js → chunk-SER7RRAE.js} +27 -832
  90. package/dist/{chunk-K2HL3GBL.js → chunk-T4TY5GG3.js} +165 -15
  91. package/dist/chunk-T7QQBNLH.js +691 -0
  92. package/dist/{chunk-HGSLRG33.js → chunk-TLTGZTXI.js} +3 -3
  93. package/dist/chunk-TZ6UVP2H.js +637 -0
  94. package/dist/{chunk-EWD5P3GK.js → chunk-TZHN5ITX.js} +13 -41
  95. package/dist/{chunk-7TKWWPD7.js → chunk-U3TPUXOQ.js} +398 -253
  96. package/dist/{chunk-GNQRWTMY.js → chunk-UA3W4FGC.js} +6 -6
  97. package/dist/{chunk-O2RQ7LCK.js → chunk-UA6W4XFJ.js} +2 -2
  98. package/dist/chunk-UWD3JD5X.js +709 -0
  99. package/dist/chunk-V4ZKOKRB.js +13433 -0
  100. package/dist/{chunk-NC4KV7EL.js → chunk-VCRVEDUC.js} +5 -5
  101. package/dist/{chunk-I7VLWRK2.js → chunk-VMATUZB6.js} +12 -10
  102. package/dist/{chunk-J2FYEQ5L.js → chunk-VTYHHQ57.js} +2 -2
  103. package/dist/chunk-WB7POC6M.js +891 -0
  104. package/dist/{chunk-GVYWZNRK.js → chunk-WBVKKTUT.js} +2 -2
  105. package/dist/{chunk-EHOSNVVM.js → chunk-WLHX3MM5.js} +6 -2
  106. package/dist/{chunk-SDWNDICN.js → chunk-WN552PKN.js} +573 -316
  107. package/dist/{chunk-TEG3RYVZ.js → chunk-WT5TRMO4.js} +51 -26
  108. package/dist/{chunk-NY6IWDVU.js → chunk-WURGVOZJ.js} +56 -12
  109. package/dist/{chunk-7WUZEB2M.js → chunk-XR3XJN2M.js} +2 -2
  110. package/dist/chunk-XW2UZICE.js +372 -0
  111. package/dist/{chunk-FSTIBAGM.js → chunk-XZ6UFQ52.js} +11 -11
  112. package/dist/chunk-Y3JU5RPK.js +8 -0
  113. package/dist/chunk-YKRJTYNP.js +1143 -0
  114. package/dist/{chunk-7HBHHVCK.js → chunk-YPRSNUTC.js} +2 -2
  115. package/dist/{chunk-PWWSIB2A.js → chunk-ZGIGW4ZG.js} +5 -5
  116. package/dist/cli/index.js +34 -36
  117. package/dist/{clio-5I2IBFYL.js → clio-L2P7S2R2.js} +9 -9
  118. package/dist/{code-nav-YXIAEZVS.js → code-nav-B5LNX4KU.js} +25 -25
  119. package/dist/{components-TNIKXCBH.js → components-63MMQKUT.js} +6 -6
  120. package/dist/{config-Y2JDJ3JJ.js → config-YXARKGTX.js} +81 -77
  121. package/dist/configure-LMVQJ46J.js +85 -0
  122. package/dist/{context-QQ53HSGJ.js → context-7HJEWTTP.js} +92 -48
  123. package/dist/{context-S2EEC3EJ.js → context-XSZKKFBW.js} +14 -14
  124. package/dist/{context-P5YSEO55.js → context-YG2LZDYZ.js} +67 -64
  125. package/dist/{context-clear-TMEQCOTH.js → context-clear-AC5NXHM2.js} +64 -61
  126. package/dist/{context-index-HP2JFUWA.js → context-index-KKTPRV5G.js} +3 -3
  127. package/dist/{context-map-INTXD54D.js → context-map-T7ROR5D5.js} +4 -4
  128. package/dist/{context-working-set-CNLSQN5K.js → context-working-set-F4Q4J3NS.js} +15 -12
  129. package/dist/{detail-5572VLBO.js → detail-H73BEF2N.js} +65 -62
  130. package/dist/{dispatch-runner-FRHD6P2O.js → dispatch-runner-3RY5FSJC.js} +83 -80
  131. package/dist/{doctor-N3LCM2LG.js → doctor-EQYJOGUG.js} +47 -32
  132. package/dist/{eval-BUU3ZOUZ.js → eval-4P7O6CCE.js} +114 -50
  133. package/dist/{evidence-DTGEN456.js → evidence-D6GUSYJW.js} +64 -61
  134. package/dist/{evidence-SQ5DNFEN.js → evidence-O76QF7TZ.js} +69 -65
  135. package/dist/{evolve-IJNUFZDS.js → evolve-H47BCETS.js} +65 -62
  136. package/dist/{extensions-YVRHX6ZI.js → extensions-NNL3ZOCU.js} +98 -20
  137. package/dist/{fleet-ZNNVSYFO.js → fleet-KMNS6NOM.js} +115 -107
  138. package/dist/{fleet-commands-5YE7NPJL.js → fleet-commands-DOWSYCBX.js} +15 -15
  139. package/dist/{fleet-decisions-3SBSCTCW.js → fleet-decisions-S3PTZV2D.js} +9 -9
  140. package/dist/{fleet-graph-6HHPWF5T.js → fleet-graph-F2DE2TME.js} +26 -24
  141. package/dist/{fleet-inspect-JEYMGCGC.js → fleet-inspect-EN2Q6IVB.js} +67 -63
  142. package/dist/{fleet-preflight-QRSHIIDE.js → fleet-preflight-FRLETDD3.js} +3 -3
  143. package/dist/{fleet-validate-4PM4GDDL.js → fleet-validate-B2XDLS57.js} +28 -29
  144. package/dist/{fleet-verify-NJDTHTO3.js → fleet-verify-4JKUWGJ7.js} +64 -61
  145. package/dist/{fleet-view-UP2BWQQY.js → fleet-view-BHJFW26B.js} +67 -63
  146. package/dist/{init-S3GZQ5ZF.js → init-XAT5N5YM.js} +86 -80
  147. package/dist/interop-FVECHFKG.js +246 -0
  148. package/dist/{inventory-K2OZ36YJ.js → inventory-7KFQGLCV.js} +67 -63
  149. package/dist/library-NY2XOT75.js +492 -0
  150. package/dist/library-QAPAO23R.js +306 -0
  151. package/dist/library-import-5Y6MAS3R.js +183 -0
  152. package/dist/library-inventory-JT6HWITQ.js +56 -0
  153. package/dist/library-validation-EQUH25DC.js +42 -0
  154. package/dist/{memory-OQOXQGYD.js → memory-DYVTTCP6.js} +65 -62
  155. package/dist/{models-3IK2Y5WE.js → models-MASFJ6Y2.js} +51 -38
  156. package/dist/{monitor-FTJLTKCQ.js → monitor-YMP4NXJJ.js} +73 -69
  157. package/dist/{orchestrator-N47O7SFD.js → orchestrator-AFQRRTEI.js} +4255 -2845
  158. package/dist/{panes-7BTYH3XQ.js → panes-D3Y2KFG5.js} +4 -4
  159. package/dist/{panes-WPOMEMRH.js → panes-NICTHQCV.js} +7 -7
  160. package/dist/{paths-J3KN7UAO.js → paths-PSFAUIGO.js} +5 -5
  161. package/dist/{preload-65U34NG6.js → preload-5Q7VXRFJ.js} +64 -61
  162. package/dist/{reset-MUVQDLNL.js → reset-7NKZK7JN.js} +11 -9
  163. package/dist/{resources-LM76COAO.js → resources-NILSIZAT.js} +94 -38
  164. package/dist/{run-3VFZQ33N.js → run-BPZGEBZV.js} +131 -114
  165. package/dist/{share-4JUB4BL7.js → share-EZ6ERBMH.js} +31 -28
  166. package/dist/skills-BTVVNYVM.js +100 -0
  167. package/dist/{skills-eval-G6T57L7M.js → skills-eval-UY34MNK7.js} +117 -78
  168. package/dist/{skills-inventory-WLM46PJH.js → skills-inventory-JDHSIA7I.js} +30 -25
  169. package/dist/{slash-commands-GBARG3Y7.js → slash-commands-K4FNQ2AT.js} +53 -49
  170. package/dist/{steer-S7D7IKPU.js → steer-2B3EQGFH.js} +4 -4
  171. package/dist/{support-5VAEC32W.js → support-L2SOL3IE.js} +7 -7
  172. package/dist/{targets-N5REUETU.js → targets-44VKGFLN.js} +69 -47
  173. package/dist/{tasks-6BVY5YZF.js → tasks-3KODKFU7.js} +14 -14
  174. package/dist/{terminal-lease-57UEOJKS.js → terminal-lease-LXA7MMPO.js} +32 -19
  175. package/dist/{tools-6OCQ6SVB.js → tools-3UB7TEVR.js} +7 -7
  176. package/dist/{trace-JHLXWUMN.js → trace-TAMIU4OJ.js} +5 -4
  177. package/dist/{tui-primitives-RCY2HN7G.js → tui-primitives-A6MUW32V.js} +3 -2
  178. package/dist/{uninstall-FXYMFFRT.js → uninstall-QYVRPEM4.js} +9 -9
  179. package/dist/{upgrade-4HD5HAIV.js → upgrade-7PMKM2JH.js} +17 -18
  180. package/dist/{usage-4GWM2WWP.js → usage-6EQV7EQK.js} +77 -73
  181. package/dist/{verifiers-GSKWKWVG.js → verifiers-JLITWSHU.js} +16 -16
  182. package/dist/{verify-3AS3ULCY.js → verify-T7NAEVIG.js} +13 -13
  183. package/dist/{web-fetch-MQN4FH3X.js → web-fetch-W4TNW4Q7.js} +4 -4
  184. package/dist/{wiki-generate-7BV7XWIY.js → wiki-generate-T2TJQJUA.js} +90 -84
  185. package/dist/{with-panes-OFTNAR4Y.js → with-panes-CHFC7HGI.js} +4 -4
  186. package/dist/worker/entry.js +297 -88
  187. package/docs/README.md +43 -0
  188. package/docs/architecture/architecture.md +8 -7
  189. package/docs/architecture/artifact-versions.md +3 -3
  190. package/docs/architecture/context-engine.md +36 -2
  191. package/docs/architecture/library.md +32 -0
  192. package/docs/architecture/middleware-and-components.md +1 -1
  193. package/docs/architecture/model-catalog.md +21 -1
  194. package/docs/architecture/pi-boundary.md +18 -0
  195. package/docs/architecture/prompt-envelope-and-tools.md +5 -5
  196. package/docs/architecture/safety-model.md +21 -2
  197. package/docs/architecture/session-lifecycle.md +12 -1
  198. package/docs/architecture/tui-design.md +153 -39
  199. package/docs/architecture/worker-context.md +106 -0
  200. package/docs/guide/authoring-plugins.md +160 -0
  201. package/docs/guide/built-in-agents.md +5 -5
  202. package/docs/guide/commands-and-modes.md +186 -80
  203. package/docs/guide/configuration-and-targets.md +123 -28
  204. package/docs/guide/configuration-reference.md +36 -38
  205. package/docs/guide/environment-variables.md +2 -2
  206. package/docs/guide/exit-codes-and-output.md +1 -1
  207. package/docs/guide/extensions-and-sharing.md +93 -53
  208. package/docs/guide/fleet-dispatch.md +32 -10
  209. package/docs/guide/glossary.md +2 -2
  210. package/docs/guide/harness-extensions.md +291 -0
  211. package/docs/guide/installation-and-lifecycle.md +53 -20
  212. package/docs/guide/interop.md +243 -0
  213. package/docs/guide/panes-and-files.md +3 -3
  214. package/docs/guide/plugins.md +80 -0
  215. package/docs/guide/resource-library.md +111 -45
  216. package/docs/guide/skills-marketplace.md +35 -72
  217. package/docs/guide/tool-usage.md +19 -7
  218. package/docs/guide/troubleshooting.md +1 -1
  219. package/docs/process/development-pipeline.md +15 -15
  220. package/docs/process/documentation-coverage.md +29 -2
  221. package/docs/process/documentation-guide.md +15 -7
  222. package/docs/process/eval-runner.md +8 -3
  223. package/docs/process/performance-methodology.md +1 -1
  224. package/docs/process/release-cut-checklist.md +22 -6
  225. package/docs/process/scientific-validation.md +23 -0
  226. package/evals/scalar-decision-machinery.ts +1 -1
  227. package/examples/extensions/README.md +67 -0
  228. package/examples/extensions/lab-status/clio-coder-extension.json +14 -0
  229. package/examples/extensions/lab-status/extension.mjs +68 -0
  230. package/examples/extensions/lab-status/jobs.synthetic.json +9 -0
  231. package/examples/extensions/measurements/clio-coder-extension.json +28 -0
  232. package/examples/extensions/measurements/summarize.cjs +23 -0
  233. package/library/README.md +109 -0
  234. package/library/_authoring/templates/agent/README.md +28 -0
  235. package/library/_authoring/templates/agent/agents/benchmark-scout.md +30 -0
  236. package/library/_authoring/templates/agent/plugin.json +23 -0
  237. package/library/_authoring/templates/fleet/README.md +29 -0
  238. package/library/_authoring/templates/fleet/fleets/pipeline-review.md +31 -0
  239. package/library/_authoring/templates/fleet/plugin.json +23 -0
  240. package/library/_authoring/templates/plugin/README.md +37 -0
  241. package/library/_authoring/templates/plugin/agents/data-curator.md +31 -0
  242. package/library/_authoring/templates/plugin/assets/curation-guide.md +22 -0
  243. package/library/_authoring/templates/plugin/plugin.json +42 -0
  244. package/library/_authoring/templates/plugin/prompts/inspect-dataset.md +15 -0
  245. package/library/_authoring/templates/plugin/skills/dataset-curation/SKILL.md +36 -0
  246. package/library/_authoring/templates/plugin/skills/dataset-curation/evals.md +17 -0
  247. package/library/_authoring/templates/prompt/README.md +28 -0
  248. package/library/_authoring/templates/prompt/plugin.json +23 -0
  249. package/library/_authoring/templates/prompt/prompts/paper-summary.md +26 -0
  250. package/library/_authoring/templates/skill/README.md +24 -0
  251. package/library/_authoring/templates/skill/SKILL.md +39 -0
  252. package/library/_authoring/templates/skill/evals.md +30 -0
  253. package/library/_authoring/templates/skill/plugin.json +23 -0
  254. package/library/agents/README.md +7 -0
  255. package/library/fleets/README.md +7 -0
  256. package/library/plugins/materio/README.md +137 -0
  257. package/library/plugins/materio/ai.iowarp.clio/agents/materio-lab-definer.md +208 -0
  258. package/library/plugins/materio/ai.iowarp.clio/agents/materio-literature-reviewer.md +308 -0
  259. package/library/plugins/materio/ai.iowarp.clio/agents/materio-research-explorer.md +249 -0
  260. package/library/plugins/materio/ai.iowarp.clio/agents/materio-task-executor.md +416 -0
  261. package/library/plugins/materio/ai.iowarp.clio/agents/materio-task-verifier.md +60 -0
  262. package/library/plugins/materio/ai.iowarp.clio/agents/materio-workflow-planner.md +238 -0
  263. package/library/plugins/materio/ai.iowarp.clio/fleets/materio-execute-task.md +50 -0
  264. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/add-task.md +66 -0
  265. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/archive-task.md +65 -0
  266. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/checkpoint.md +26 -0
  267. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/define-research-tasks.md +230 -0
  268. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/define-virtual-lab.md +181 -0
  269. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/execute-task.md +292 -0
  270. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/help.md +129 -0
  271. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/identify-research.md +206 -0
  272. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/literature-review.md +201 -0
  273. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/pause-research.md +12 -0
  274. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/progress.md +105 -0
  275. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/remove-task.md +63 -0
  276. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/resume-research.md +64 -0
  277. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/settings.md +16 -0
  278. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/status.md +92 -0
  279. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/upload-data.md +104 -0
  280. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/wtfp.md +145 -0
  281. package/library/plugins/materio/ai.iowarp.clio/references/execution.md +56 -0
  282. package/library/plugins/materio/ai.iowarp.portability/provenance.json +9 -0
  283. package/library/plugins/materio/assets/actions/add-task.md +86 -0
  284. package/library/plugins/materio/assets/actions/archive-task.md +84 -0
  285. package/library/plugins/materio/assets/actions/checkpoint.md +47 -0
  286. package/library/plugins/materio/assets/actions/define-research-tasks.md +228 -0
  287. package/library/plugins/materio/assets/actions/define-virtual-lab.md +179 -0
  288. package/library/plugins/materio/assets/actions/execute-task.md +290 -0
  289. package/library/plugins/materio/assets/actions/help.md +140 -0
  290. package/library/plugins/materio/assets/actions/identify-research.md +204 -0
  291. package/library/plugins/materio/assets/actions/literature-review.md +199 -0
  292. package/library/plugins/materio/assets/actions/pause-research.md +34 -0
  293. package/library/plugins/materio/assets/actions/progress.md +125 -0
  294. package/library/plugins/materio/assets/actions/remove-task.md +82 -0
  295. package/library/plugins/materio/assets/actions/resume-research.md +84 -0
  296. package/library/plugins/materio/assets/actions/settings.md +38 -0
  297. package/library/plugins/materio/assets/actions/status.md +112 -0
  298. package/library/plugins/materio/assets/actions/upload-data.md +123 -0
  299. package/library/plugins/materio/assets/actions/wtfp.md +179 -0
  300. package/library/plugins/materio/assets/references/research-domains.md +134 -0
  301. package/library/plugins/materio/assets/references/research-policy.md +77 -0
  302. package/library/plugins/materio/assets/references/traditional-workflows.md +146 -0
  303. package/library/plugins/materio/assets/scripts/check_physics.py +271 -0
  304. package/library/plugins/materio/assets/scripts/check_scripts.py +248 -0
  305. package/library/plugins/materio/assets/scripts/project_plugin.py +165 -0
  306. package/library/plugins/materio/assets/scripts/research_state.py +400 -0
  307. package/library/plugins/materio/assets/scripts/verify_citations.py +616 -0
  308. package/library/plugins/materio/assets/templates/RESEARCH.md +39 -0
  309. package/library/plugins/materio/assets/templates/VIRTUAL-LAB.md +120 -0
  310. package/library/plugins/materio/assets/templates/WORKFLOW.md +42 -0
  311. package/library/plugins/materio/assets/templates/config.json +5 -0
  312. package/library/plugins/materio/evals/scripts.yaml +29 -0
  313. package/library/plugins/materio/plugin.json +530 -0
  314. package/library/plugins/materio/skills/materio-lab-definer/SKILL.md +74 -0
  315. package/library/plugins/materio/skills/materio-literature-reviewer/SKILL.md +64 -0
  316. package/library/plugins/materio/skills/materio-research-explorer/SKILL.md +74 -0
  317. package/library/plugins/materio/skills/materio-task-executor/SKILL.md +214 -0
  318. package/library/plugins/materio/skills/materio-task-verifier/SKILL.md +46 -0
  319. package/library/plugins/materio/skills/materio-workflow-planner/SKILL.md +79 -0
  320. package/library/plugins/materio/tests/test_check_physics.py +139 -0
  321. package/library/plugins/materio/tests/test_check_scripts.py +140 -0
  322. package/library/plugins/materio/tests/test_research_state.py +291 -0
  323. package/library/plugins/materio/tests/test_verify_citations.py +337 -0
  324. package/library/prompts/README.md +7 -0
  325. package/library/registry.yaml +921 -0
  326. package/library/skills/README.md +120 -0
  327. package/{skills → library/skills}/coding/ast-grep/SKILL.md +1 -1
  328. package/{skills → library/skills}/coding/ast-grep/evals.md +1 -1
  329. package/library/skills/coding/ast-grep/plugin.json +23 -0
  330. package/{skills → library/skills}/coding/coding-standards/SKILL.md +1 -1
  331. package/{skills → library/skills}/coding/coding-standards/evals.md +1 -1
  332. package/library/skills/coding/coding-standards/plugin.json +23 -0
  333. package/{skills → library/skills}/coding/prototype/SKILL.md +1 -1
  334. package/{skills → library/skills}/coding/prototype/evals.md +1 -1
  335. package/library/skills/coding/prototype/plugin.json +23 -0
  336. package/{skills → library/skills}/coding/tdd/SKILL.md +1 -1
  337. package/{skills → library/skills}/coding/tdd/evals.md +1 -1
  338. package/library/skills/coding/tdd/plugin.json +23 -0
  339. package/{skills → library/skills}/context/context-handoff/SKILL.md +1 -1
  340. package/{skills → library/skills}/context/context-handoff/evals.md +1 -1
  341. package/library/skills/context/context-handoff/plugin.json +23 -0
  342. package/{skills → library/skills}/context/context-prime/SKILL.md +1 -1
  343. package/{skills → library/skills}/context/context-prime/evals.md +1 -1
  344. package/library/skills/context/context-prime/plugin.json +23 -0
  345. package/{skills → library/skills}/git/branch-closeout/SKILL.md +1 -1
  346. package/library/skills/git/branch-closeout/plugin.json +23 -0
  347. package/{skills → library/skills}/git/file-ticket/SKILL.md +1 -1
  348. package/library/skills/git/file-ticket/plugin.json +23 -0
  349. package/{skills → library/skills}/git/fix-issue/SKILL.md +1 -1
  350. package/library/skills/git/fix-issue/plugin.json +23 -0
  351. package/{skills → library/skills}/git/resolve-merge-conflicts/SKILL.md +1 -1
  352. package/{skills → library/skills}/git/resolve-merge-conflicts/evals.md +1 -1
  353. package/library/skills/git/resolve-merge-conflicts/plugin.json +23 -0
  354. package/{skills → library/skills}/git/ship/SKILL.md +1 -1
  355. package/library/skills/git/ship/plugin.json +23 -0
  356. package/{skills → library/skills}/git/worktree-create/SKILL.md +1 -1
  357. package/library/skills/git/worktree-create/plugin.json +23 -0
  358. package/{skills → library/skills}/git/worktree-merge/SKILL.md +1 -1
  359. package/library/skills/git/worktree-merge/plugin.json +23 -0
  360. package/{skills → library/skills}/meta/clio-coder-dev/SKILL.md +1 -1
  361. package/{skills → library/skills}/meta/clio-coder-dev/evals.md +1 -1
  362. package/library/skills/meta/clio-coder-dev/plugin.json +23 -0
  363. package/{skills → library/skills}/meta/clio-coder-test/SKILL.md +1 -1
  364. package/{skills → library/skills}/meta/clio-coder-test/evals.md +1 -1
  365. package/library/skills/meta/clio-coder-test/plugin.json +23 -0
  366. package/{skills → library/skills}/meta/credentials/SKILL.md +1 -1
  367. package/{skills → library/skills}/meta/credentials/evals.md +1 -1
  368. package/library/skills/meta/credentials/plugin.json +23 -0
  369. package/library/skills/meta/find-skills/SKILL.md +85 -0
  370. package/library/skills/meta/find-skills/evals.md +65 -0
  371. package/library/skills/meta/find-skills/plugin.json +23 -0
  372. package/{skills → library/skills}/meta/herdr/SKILL.md +1 -1
  373. package/{skills → library/skills}/meta/herdr/evals.md +1 -1
  374. package/library/skills/meta/herdr/plugin.json +23 -0
  375. package/{skills → library/skills}/meta/skill-craft/SKILL.md +23 -9
  376. package/{skills → library/skills}/meta/skill-craft/evals.md +11 -3
  377. package/library/skills/meta/skill-craft/plugin.json +23 -0
  378. package/{skills → library/skills}/planning/archify/SKILL.md +13 -13
  379. package/library/skills/planning/archify/plugin.json +23 -0
  380. package/{skills → library/skills}/planning/architecture/SKILL.md +1 -1
  381. package/{skills → library/skills}/planning/architecture/evals.md +1 -1
  382. package/library/skills/planning/architecture/plugin.json +23 -0
  383. package/{skills → library/skills}/planning/backlog/SKILL.md +1 -1
  384. package/{skills → library/skills}/planning/backlog/evals.md +1 -1
  385. package/library/skills/planning/backlog/plugin.json +23 -0
  386. package/{skills → library/skills}/planning/prd/SKILL.md +1 -1
  387. package/{skills → library/skills}/planning/prd/evals.md +1 -1
  388. package/library/skills/planning/prd/plugin.json +23 -0
  389. package/{skills → library/skills}/planning/product-intent/SKILL.md +1 -1
  390. package/{skills → library/skills}/planning/product-intent/evals.md +1 -1
  391. package/library/skills/planning/product-intent/plugin.json +23 -0
  392. package/{skills → library/skills}/planning/tech-spec/SKILL.md +1 -1
  393. package/{skills → library/skills}/planning/tech-spec/evals.md +1 -1
  394. package/library/skills/planning/tech-spec/plugin.json +23 -0
  395. package/{skills → library/skills}/registry.yaml +7 -7
  396. package/{skills → library/skills}/remote.yaml +1 -1
  397. package/{skills → library/skills}/research/arxiv-literature/SKILL.md +1 -1
  398. package/{skills → library/skills}/research/arxiv-literature/evals.md +1 -1
  399. package/library/skills/research/arxiv-literature/plugin.json +23 -0
  400. package/{skills → library/skills}/research/experiment-protocol/SKILL.md +1 -1
  401. package/{skills → library/skills}/research/experiment-protocol/evals.md +1 -1
  402. package/library/skills/research/experiment-protocol/plugin.json +23 -0
  403. package/{skills → library/skills}/research/scientific-debugging/SKILL.md +1 -1
  404. package/{skills → library/skills}/research/scientific-debugging/evals.md +1 -1
  405. package/library/skills/research/scientific-debugging/plugin.json +23 -0
  406. package/{skills → library/skills}/research/scientific-modernization/SKILL.md +1 -1
  407. package/{skills → library/skills}/research/scientific-modernization/evals.md +1 -1
  408. package/library/skills/research/scientific-modernization/plugin.json +23 -0
  409. package/{skills → library/skills}/skill-marketplace.json +37 -37
  410. package/{skills → library/skills}/workflow/cut-it/SKILL.md +1 -1
  411. package/{skills → library/skills}/workflow/cut-it/evals.md +1 -1
  412. package/library/skills/workflow/cut-it/plugin.json +23 -0
  413. package/{skills → library/skills}/workflow/design-council/SKILL.md +1 -1
  414. package/{skills → library/skills}/workflow/design-council/evals.md +1 -1
  415. package/library/skills/workflow/design-council/plugin.json +23 -0
  416. package/{skills → library/skills}/workflow/grill-me/SKILL.md +1 -1
  417. package/{skills → library/skills}/workflow/grill-me/evals.md +1 -1
  418. package/library/skills/workflow/grill-me/plugin.json +23 -0
  419. package/{skills → library/skills}/workflow/workflow-distiller/SKILL.md +14 -11
  420. package/{skills → library/skills}/workflow/workflow-distiller/evals.md +14 -6
  421. package/library/skills/workflow/workflow-distiller/plugin.json +23 -0
  422. package/package.json +12 -5
  423. package/src/cli/agents.ts +1 -1
  424. package/src/cli/ask.ts +10 -10
  425. package/src/cli/config-inspect.ts +1 -1
  426. package/src/cli/configure-editor.ts +51 -0
  427. package/src/cli/configure-interop.ts +1 -1
  428. package/src/cli/configure-oauth.ts +1 -1
  429. package/src/cli/configure-onboarding.ts +232 -96
  430. package/src/cli/configure-prompts.ts +76 -0
  431. package/src/cli/configure-quick.ts +274 -0
  432. package/src/cli/configure-target.ts +14 -2
  433. package/src/cli/configure.ts +415 -176
  434. package/src/cli/eval.ts +40 -6
  435. package/src/cli/extensions.ts +74 -8
  436. package/src/cli/fleet-preflight.ts +2 -0
  437. package/src/cli/fleet.ts +2 -0
  438. package/src/cli/index.ts +1 -3
  439. package/src/cli/interop-inspect.ts +61 -33
  440. package/src/cli/interop.ts +79 -9
  441. package/src/cli/library-import.ts +139 -0
  442. package/src/cli/library.ts +418 -120
  443. package/src/cli/oauth-manual-input.ts +1 -1
  444. package/src/cli/reset.ts +2 -0
  445. package/src/cli/run.ts +26 -9
  446. package/src/cli/select.ts +35 -4
  447. package/src/cli/skills-eval.ts +43 -6
  448. package/src/cli/skills-inventory.ts +6 -2
  449. package/src/cli/skills.ts +44 -491
  450. package/src/cli/upgrade.ts +2 -2
  451. package/src/core/bus-events.ts +5 -0
  452. package/src/core/config.ts +6 -1
  453. package/src/core/defaults.ts +34 -12
  454. package/src/{interactive → core}/external-editor.ts +4 -4
  455. package/src/core/recent-models.ts +2 -2
  456. package/src/core/session-routing.ts +3 -3
  457. package/src/core/state-file-lock.ts +1 -1
  458. package/src/core/tool-names.ts +5 -0
  459. package/src/domains/agents/extension.ts +42 -6
  460. package/src/domains/agents/fleet-commands.ts +92 -1
  461. package/src/domains/agents/fleet-contract.ts +87 -19
  462. package/src/domains/agents/recipe.ts +5 -4
  463. package/src/domains/agents/registry.ts +80 -24
  464. package/src/domains/config/classify.ts +1 -1
  465. package/src/domains/config/keybindings.ts +156 -124
  466. package/src/domains/context/worker/contract.ts +91 -0
  467. package/src/domains/context/worker/pressure.ts +120 -0
  468. package/src/domains/context/worker/recall.ts +62 -0
  469. package/src/domains/context/worker/select.ts +164 -0
  470. package/src/domains/context/worker/snapshot.ts +35 -0
  471. package/src/domains/context/worker/store.ts +16 -0
  472. package/src/domains/context/working-set/replay/synthetic.ts +2 -1
  473. package/src/domains/dispatch/active-route-planner.ts +2 -0
  474. package/src/domains/dispatch/backoff.ts +1 -0
  475. package/src/domains/dispatch/code-step.ts +12 -2
  476. package/src/domains/dispatch/contract.ts +3 -0
  477. package/src/domains/dispatch/execution-plan.ts +2 -0
  478. package/src/domains/dispatch/extension.ts +109 -27
  479. package/src/domains/dispatch/fleet-plan.ts +10 -0
  480. package/src/domains/dispatch/fleet-run.ts +1 -0
  481. package/src/domains/dispatch/orphan-recovery.ts +1 -0
  482. package/src/domains/dispatch/receipt-integrity.ts +4 -0
  483. package/src/domains/dispatch/state.ts +1 -0
  484. package/src/domains/dispatch/types.ts +5 -0
  485. package/src/domains/dispatch/validation.ts +12 -0
  486. package/src/domains/dispatch/workspace-checkpoint.ts +1 -1
  487. package/src/domains/evidence/failure-attribution.ts +1 -0
  488. package/src/domains/evidence/trust-status.ts +22 -3
  489. package/src/domains/extensions/command-schema.ts +145 -0
  490. package/src/domains/extensions/command-tools.ts +15 -0
  491. package/src/domains/extensions/compatibility.ts +7 -0
  492. package/src/domains/extensions/contract.ts +0 -4
  493. package/src/domains/extensions/discovery.ts +69 -205
  494. package/src/domains/extensions/extension.ts +0 -4
  495. package/src/domains/extensions/index.ts +1 -5
  496. package/src/domains/extensions/manager.ts +1 -6
  497. package/src/domains/extensions/operator-commands.ts +29 -0
  498. package/src/domains/extensions/operator-runtime.ts +483 -0
  499. package/src/domains/extensions/public-api.ts +53 -0
  500. package/src/domains/extensions/runtime-child.mjs +114 -0
  501. package/src/domains/extensions/runtime-process.ts +306 -0
  502. package/src/domains/extensions/runtime-schema.ts +146 -0
  503. package/src/domains/extensions/{resources.ts → snapshot-access.ts} +1 -17
  504. package/src/domains/extensions/snapshot.ts +4 -32
  505. package/src/domains/extensions/state.ts +5 -83
  506. package/src/domains/extensions/types.ts +33 -34
  507. package/src/domains/interop/adopt.ts +546 -0
  508. package/src/domains/interop/detect.ts +50 -12
  509. package/src/domains/interop/foreign.ts +554 -0
  510. package/src/domains/interop/import.ts +277 -0
  511. package/src/domains/interop/index.ts +24 -0
  512. package/src/domains/interop/install.ts +6 -0
  513. package/src/domains/interop/inventory.ts +351 -0
  514. package/src/domains/interop/projection.ts +360 -0
  515. package/src/domains/interop/registry.ts +106 -3
  516. package/src/domains/interop/types.ts +51 -0
  517. package/src/domains/lifecycle/migrations/index.ts +0 -2
  518. package/src/domains/lifecycle/naming-resources.ts +1 -1
  519. package/src/domains/middleware/marketplace-offer.ts +1 -1
  520. package/src/domains/mux/contract.ts +1 -1
  521. package/src/domains/plugins/catalog.ts +204 -0
  522. package/src/domains/plugins/contract.ts +24 -0
  523. package/src/domains/plugins/discovery.ts +316 -0
  524. package/src/domains/plugins/extension.ts +40 -0
  525. package/src/domains/plugins/index.ts +77 -0
  526. package/src/domains/plugins/integrity.ts +6 -0
  527. package/src/domains/plugins/manifest.ts +3 -0
  528. package/src/domains/plugins/resources.ts +102 -0
  529. package/src/domains/plugins/state.ts +753 -0
  530. package/src/domains/plugins/types.ts +217 -0
  531. package/src/domains/prompts/extension.ts +9 -2
  532. package/src/domains/prompts/fragments/operating/skills.md +10 -10
  533. package/src/domains/providers/probe/fingerprint.ts +13 -6
  534. package/src/domains/providers/probe/reasoning.ts +2 -0
  535. package/src/domains/providers/runtimes/common/probe-helpers.ts +23 -7
  536. package/src/domains/providers/runtimes/protocol/anthropic-compat.ts +7 -2
  537. package/src/domains/providers/runtimes/protocol/openai-compat.ts +10 -4
  538. package/src/domains/resources/common-loader.ts +9 -6
  539. package/src/domains/resources/index.ts +67 -0
  540. package/src/domains/resources/library-actions.ts +836 -0
  541. package/src/domains/resources/library-evals.ts +38 -0
  542. package/src/domains/resources/library-inventory.ts +1048 -0
  543. package/src/domains/resources/library-types.ts +50 -0
  544. package/src/domains/resources/library-validation.ts +634 -0
  545. package/src/domains/resources/library.ts +437 -156
  546. package/src/domains/resources/package-references.ts +66 -0
  547. package/src/domains/resources/prompts/loader.ts +75 -41
  548. package/src/domains/resources/skills/install.ts +2 -2
  549. package/src/domains/resources/skills/loader.ts +77 -22
  550. package/src/domains/resources/skills/marketplace.ts +48 -57
  551. package/src/domains/resources/skills/promotion.ts +2 -2
  552. package/src/domains/resources/skills/provenance-pin.ts +17 -4
  553. package/src/domains/safety/action-classifier.ts +2 -2
  554. package/src/domains/safety/default-path-policy.ts +3 -1
  555. package/src/domains/safety/policy-engine.ts +1 -1
  556. package/src/domains/safety/protected-artifacts.ts +21 -5
  557. package/src/domains/safety/skill-authority.ts +5 -2
  558. package/src/domains/share/archive.ts +1 -1
  559. package/src/engine/apis/openai-completions.ts +52 -2
  560. package/src/engine/notices/pi-tui-LICENSE +21 -0
  561. package/src/engine/tui.ts +3 -0
  562. package/src/engine/worker-runtime.ts +58 -14
  563. package/src/engine/worker-tools.ts +5 -0
  564. package/src/entry/orchestrator.ts +26 -5
  565. package/src/entry/plugin-reload.ts +18 -0
  566. package/src/interactive/application-controller.ts +68 -52
  567. package/src/interactive/chat-loop.ts +32 -5
  568. package/src/interactive/chat-panel.ts +168 -638
  569. package/src/interactive/chat-renderer.ts +13 -30
  570. package/src/interactive/clio-editor.ts +53 -21
  571. package/src/interactive/command-output.ts +56 -1
  572. package/src/interactive/dispatch-board.ts +1 -3
  573. package/src/interactive/editor-submit.ts +73 -59
  574. package/src/interactive/fleet-run-preview.ts +2 -0
  575. package/src/interactive/follow-up-queue-panel.ts +3 -3
  576. package/src/interactive/footer/dashboard.ts +12 -4
  577. package/src/interactive/footer/notifications.ts +2 -2
  578. package/src/interactive/footer/widgets.ts +52 -93
  579. package/src/interactive/interactive-application.ts +225 -63
  580. package/src/interactive/interactive-event-projection.ts +2 -44
  581. package/src/interactive/interactive-input-runtime.ts +257 -35
  582. package/src/interactive/interactive-presentation.ts +71 -21
  583. package/src/interactive/interactive-slash-runtime.ts +40 -48
  584. package/src/interactive/keybinding-manager.ts +156 -79
  585. package/src/interactive/keyboard-owner.ts +37 -0
  586. package/src/interactive/layout.ts +29 -4
  587. package/src/interactive/leader-key.ts +49 -102
  588. package/src/interactive/leader-menu.ts +45 -0
  589. package/src/interactive/overlay-ask-user-lifecycle.ts +9 -1
  590. package/src/interactive/overlay-frame.ts +15 -0
  591. package/src/interactive/overlay-general-openers.ts +2 -0
  592. package/src/interactive/overlay-key-routing.ts +46 -47
  593. package/src/interactive/overlay-lifecycle.ts +31 -15
  594. package/src/interactive/overlay-resource-openers.ts +56 -46
  595. package/src/interactive/overlay-session-lifecycle.ts +1 -1
  596. package/src/interactive/overlays/ask-user.ts +630 -556
  597. package/src/interactive/overlays/extension-panel.ts +70 -0
  598. package/src/interactive/overlays/extensions.ts +28 -5
  599. package/src/interactive/overlays/fleet-run-approval.ts +7 -3
  600. package/src/interactive/overlays/help-reference.ts +89 -40
  601. package/src/interactive/overlays/interop.ts +122 -3
  602. package/src/interactive/overlays/keybinding-detail.ts +2 -2
  603. package/src/interactive/overlays/library-lifecycle.ts +90 -0
  604. package/src/interactive/overlays/library-model.ts +574 -0
  605. package/src/interactive/overlays/library-review.ts +557 -0
  606. package/src/interactive/overlays/library-tabs.ts +3 -15
  607. package/src/interactive/overlays/library.ts +602 -0
  608. package/src/interactive/overlays/list-overlay.ts +218 -39
  609. package/src/interactive/overlays/model-selector.ts +28 -25
  610. package/src/interactive/overlays/session-selector.ts +9 -3
  611. package/src/interactive/overlays/settings.ts +34 -26
  612. package/src/interactive/overlays/tree-selector.ts +16 -11
  613. package/src/interactive/permission-hint.ts +13 -0
  614. package/src/interactive/permission-overlay.ts +77 -28
  615. package/src/interactive/prompt-source-label.ts +21 -0
  616. package/src/interactive/renderers/preview.ts +16 -0
  617. package/src/interactive/renderers/reference-card.ts +35 -0
  618. package/src/interactive/renderers/tool-execution.ts +67 -160
  619. package/src/interactive/renderers/worker-entry.ts +90 -42
  620. package/src/interactive/slash-autocomplete.ts +100 -7
  621. package/src/interactive/slash-commands.ts +396 -105
  622. package/src/interactive/slash-spec.ts +0 -1
  623. package/src/interactive/status/controller.ts +0 -5
  624. package/src/interactive/status/state-machine.ts +44 -26
  625. package/src/interactive/status/types.ts +3 -0
  626. package/src/interactive/status/verbs.ts +13 -12
  627. package/src/interactive/terminal-lease.ts +44 -12
  628. package/src/interactive/transcript-detail.ts +50 -112
  629. package/src/interactive/turn-queues.ts +8 -7
  630. package/src/interactive/turn-runtime.ts +1 -1
  631. package/src/interactive/view/artifacts.ts +4 -0
  632. package/src/interactive/view/view-overlay.ts +58 -43
  633. package/src/interactive/welcome-dashboard.ts +525 -408
  634. package/src/tools/bootstrap.ts +8 -0
  635. package/src/tools/builtin-tool-catalog.ts +7 -2
  636. package/src/tools/context/index.ts +58 -5
  637. package/src/tools/context/library.ts +465 -0
  638. package/src/tools/context/surface.ts +20 -6
  639. package/src/tools/core-bootstrap.ts +3 -0
  640. package/src/tools/dispatch-admission.ts +24 -1
  641. package/src/tools/dispatch-arguments.ts +8 -0
  642. package/src/tools/dispatch-plan.ts +32 -0
  643. package/src/tools/dispatch-schema.ts +31 -1
  644. package/src/tools/dispatch-types.ts +3 -0
  645. package/src/tools/dispatch.ts +1 -1
  646. package/src/tools/harness-extensions.ts +169 -0
  647. package/src/tools/observation.ts +4 -0
  648. package/src/tools/policy.ts +7 -1
  649. package/src/tools/presentation.ts +1 -1
  650. package/src/tools/registry.ts +20 -2
  651. package/src/tools/verify/numeric.ts +4 -4
  652. package/src/tools/worker-evidence.ts +5 -0
  653. package/src/worker/context-seed.ts +192 -0
  654. package/src/worker/entry.ts +1 -0
  655. package/src/worker/spec-contract.ts +8 -1
  656. package/dist/chunk-3UW3KU4A.js +0 -21
  657. package/dist/chunk-6SYEGZI3.js +0 -433
  658. package/dist/chunk-CXQ37WJH.js +0 -45
  659. package/dist/chunk-EQEJJ53P.js +0 -399
  660. package/dist/chunk-KTFSFCVN.js +0 -46
  661. package/dist/chunk-QRFXEO6Y.js +0 -17
  662. package/dist/chunk-T7FDXNRU.js +0 -1257
  663. package/dist/chunk-U7VQ4NI4.js +0 -911
  664. package/dist/configure-SML6UBZ5.js +0 -55
  665. package/dist/interop-YOTGXFJM.js +0 -115
  666. package/dist/library-GJI6W6OK.js +0 -226
  667. package/dist/skills-S36AAJHU.js +0 -510
  668. package/skills/README.md +0 -418
  669. package/skills/meta/find-skills/SKILL.md +0 -78
  670. package/skills/meta/find-skills/evals.md +0 -47
  671. package/src/domains/extensions/resource-path.ts +0 -27
  672. package/src/domains/lifecycle/migrations/2026-09-01-extension-install-digests.ts +0 -27
  673. package/src/interactive/overlays/agents.ts +0 -70
  674. package/src/interactive/overlays/library-install-confirm.ts +0 -152
  675. package/src/interactive/overlays/prompts.ts +0 -89
  676. package/src/interactive/overlays/skills-hub.ts +0 -615
  677. /package/{skills → library/skills}/coding/ast-grep/references/rule_reference.md +0 -0
  678. /package/{skills → library/skills}/coding/prototype/references/LOGIC.md +0 -0
  679. /package/{skills → library/skills}/coding/prototype/references/UI.md +0 -0
  680. /package/{skills → library/skills}/coding/tdd/references/mocking.md +0 -0
  681. /package/{skills → library/skills}/coding/tdd/references/tests.md +0 -0
  682. /package/{skills → library/skills}/context/context-handoff/scripts/new-handoff.sh +0 -0
  683. /package/{skills → library/skills}/git/branch-closeout/evals.md +0 -0
  684. /package/{skills → library/skills}/git/branch-closeout/references/closeout-checklist.md +0 -0
  685. /package/{skills → library/skills}/git/file-ticket/assets/issue-template.md +0 -0
  686. /package/{skills → library/skills}/git/file-ticket/evals.md +0 -0
  687. /package/{skills → library/skills}/git/file-ticket/references/issue-discovery.md +0 -0
  688. /package/{skills → library/skills}/git/fix-issue/evals.md +0 -0
  689. /package/{skills → library/skills}/git/fix-issue/references/diagnosis-and-rca.md +0 -0
  690. /package/{skills → library/skills}/git/resolve-merge-conflicts/references/conflict-matrix.md +0 -0
  691. /package/{skills → library/skills}/git/ship/assets/pr-template.md +0 -0
  692. /package/{skills → library/skills}/git/ship/evals.md +0 -0
  693. /package/{skills → library/skills}/git/ship/references/remote-and-branch-policy.md +0 -0
  694. /package/{skills → library/skills}/git/worktree-create/evals.md +0 -0
  695. /package/{skills → library/skills}/git/worktree-create/references/worktree-setup.md +0 -0
  696. /package/{skills → library/skills}/git/worktree-merge/evals.md +0 -0
  697. /package/{skills → library/skills}/git/worktree-merge/references/merge-strategies.md +0 -0
  698. /package/{skills → library/skills}/meta/clio-coder-test/references/harness.md +0 -0
  699. /package/{skills → library/skills}/meta/clio-coder-test/references/test-map.md +0 -0
  700. /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,125 +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)"
1998
- },
1999
- "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"
2003
- },
2004
- "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"
2058
+ description: "Files (from Clio focus)",
2059
+ scope: "composer",
2060
+ kind: "toggle",
2061
+ repeat: false,
2062
+ leader: "e"
2008
2063
  },
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"
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"
2016
2071
  },
2017
- "clio-coder.model.select": {
2018
- defaultKeys: "alt+l",
2019
- description: "Open the model + targets selector"
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"
2020
2079
  },
2021
- "clio-coder.model.cycleForward": {
2022
- defaultKeys: "alt+j",
2023
- description: "Cycle to next scoped model"
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"
2024
2087
  },
2025
- "clio-coder.model.cycleBackward": {
2026
- defaultKeys: "alt+k",
2027
- description: "Cycle to previous scoped model"
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
2028
2094
  },
2029
- "clio-coder.tool.expand": {
2030
- defaultKeys: "alt+o",
2031
- 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"
2095
+ "clio-coder.leader": {
2096
+ defaultKeys: "ctrl+g",
2097
+ description: "Open contextual action menu",
2098
+ scope: "composer",
2099
+ kind: "toggle",
2100
+ repeat: false
2032
2101
  },
2033
- "clio-coder.tool.expandAll": {
2034
- // Alt+Shift+letter is commonly consumed by OS keyboard-layout switching.
2035
- // Keep it discoverable, but pair it with the legacy-safe Ctrl+Alt form.
2036
- defaultKeys: ["ctrl+alt+o", "alt+shift+o"],
2037
- description: "Fold or unfold every tool call and worker block at once, overriding the /output level; changing /output clears the overrides"
2102
+ "clio-coder.tasks.open": {
2103
+ defaultKeys: [],
2104
+ description: "Tasks (/tasks)",
2105
+ scope: "composer",
2106
+ kind: "toggle",
2107
+ repeat: false
2038
2108
  },
2039
- "clio-coder.tool.liveOutput": {
2040
- defaultKeys: "alt+p",
2041
- description: "Toggle streaming partial tool output in expanded tool bodies"
2109
+ "clio-coder.decisions.open": {
2110
+ defaultKeys: [],
2111
+ description: "Decisions (/decisions)",
2112
+ scope: "composer",
2113
+ kind: "toggle",
2114
+ repeat: false
2042
2115
  },
2043
- "clio-coder.thinking.expand": {
2044
- defaultKeys: "alt+r",
2045
- description: "Toggle the latest thinking block between hidden marker and full body (no effect while /output verbose pins it open)"
2116
+ "clio-coder.session.tree": {
2117
+ defaultKeys: [],
2118
+ description: "Session tree (/tree)",
2119
+ scope: "composer",
2120
+ kind: "toggle",
2121
+ repeat: false
2046
2122
  },
2047
- "clio-coder.thinking.expandAll": {
2048
- // Ctrl+Alt+R is the fallback for terminals/OSes that do not forward
2049
- // Alt+Shift+R as a distinct key event.
2050
- defaultKeys: ["ctrl+alt+r", "alt+shift+r"],
2051
- description: "Toggle all thinking blocks between hidden markers and full bodies, overriding the /output level; changing /output clears the overrides"
2123
+ "clio-coder.model.cycleForward": {
2124
+ defaultKeys: [],
2125
+ description: "Next scoped model",
2126
+ scope: "composer",
2127
+ kind: "cycle",
2128
+ repeat: false
2052
2129
  },
2053
- "clio-coder.editor.external": {
2054
- defaultKeys: "alt+g",
2055
- description: "Open the current input in an external editor"
2130
+ "clio-coder.model.cycleBackward": {
2131
+ defaultKeys: [],
2132
+ description: "Previous scoped model",
2133
+ scope: "composer",
2134
+ kind: "cycle",
2135
+ repeat: false
2056
2136
  },
2057
- "clio-coder.message.followUp": {
2058
- defaultKeys: "alt+enter",
2059
- 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"
2060
2144
  },
2061
2145
  "clio-coder.message.interrupt": {
2062
- // Alt+I keeps the app scheme and earns the Ctrl+G leader fallback. A
2063
- // Ctrl+Enter chord was rejected because legacy terminals send it as a
2064
- // plain Enter, which would turn every send into a cancel.
2065
- defaultKeys: "alt+i",
2066
- 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"
2067
2152
  },
2068
- "clio-coder.message.dequeue": {
2069
- defaultKeys: "alt+up",
2070
- 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"
2071
2160
  },
2072
2161
  "clio-coder.notifications.dismiss": {
2073
- defaultKeys: "alt+x",
2074
- description: "Dismiss footer notifications"
2075
- },
2076
- "clio-coder.leader": {
2077
- defaultKeys: "ctrl+g",
2078
- 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"
2079
2168
  }
2080
2169
  };
2081
2170
  var CLIO_KEYBINDINGS = {
2082
2171
  ...TUI_KEYBINDINGS,
2083
- "tui.editor.historyPrevious": {
2084
- ...TUI_KEYBINDINGS["tui.editor.historyPrevious"],
2085
- defaultKeys: "ctrl+p"
2086
- },
2087
- "tui.editor.historyNext": {
2088
- ...TUI_KEYBINDINGS["tui.editor.historyNext"],
2089
- 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"]
2090
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" },
2091
2187
  ...CLIO_APP_KEYBINDINGS
2092
2188
  };
2093
2189
  var CLIO_APP_KEYBINDING_IDS = Object.keys(CLIO_APP_KEYBINDINGS);
@@ -2159,6 +2255,14 @@ var BASE_SYMBOL_KEYS = /* @__PURE__ */ new Set([
2159
2255
  "?"
2160
2256
  ]);
2161
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
+ }
2162
2266
  function isValidKeyId(keyId) {
2163
2267
  if (typeof keyId !== "string" || keyId.length === 0) return false;
2164
2268
  const parts = keyId.toLowerCase().split("+");
@@ -2184,10 +2288,13 @@ function validateKeybindings(raw) {
2184
2288
  const valid = {};
2185
2289
  const invalid = [];
2186
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
+ }
2187
2295
  if (typeof value === "string") {
2188
- if (value.length === 0) continue;
2189
2296
  if (isValidKeyId(value)) {
2190
- valid[id] = value;
2297
+ valid[id] = canonicalKey(value);
2191
2298
  } else {
2192
2299
  invalid.push({ id, keys: [value] });
2193
2300
  }
@@ -2197,14 +2304,17 @@ function validateKeybindings(raw) {
2197
2304
  const accepted = [];
2198
2305
  const rejected = [];
2199
2306
  for (const entry of value) {
2200
- if (typeof entry !== "string" || entry.length === 0) continue;
2307
+ if (typeof entry !== "string") {
2308
+ rejected.push(String(entry));
2309
+ continue;
2310
+ }
2201
2311
  if (isValidKeyId(entry)) {
2202
- accepted.push(entry);
2312
+ accepted.push(canonicalKey(entry));
2203
2313
  } else {
2204
2314
  rejected.push(entry);
2205
2315
  }
2206
2316
  }
2207
- if (accepted.length > 0) valid[id] = accepted;
2317
+ if (accepted.length > 0 || value.length === 0) valid[id] = accepted;
2208
2318
  if (rejected.length > 0) invalid.push({ id, keys: rejected });
2209
2319
  }
2210
2320
  }
@@ -2304,8 +2414,10 @@ function keyUsesAltLetter(keyId) {
2304
2414
  }
2305
2415
  function terminalReservedReason(keyId) {
2306
2416
  const key = normalizeKeyForRisk(keyId);
2307
- if (key === "ctrl+s" || key === "ctrl+q") return "terminal flow control may intercept this chord";
2308
- 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";
2309
2421
  return null;
2310
2422
  }
2311
2423
  function keyRiskReason(keyId, support) {
@@ -2315,7 +2427,7 @@ function keyRiskReason(keyId, support) {
2315
2427
  if (support.ideReservedKeys?.map(normalizeKeyForRisk).includes(key)) return `${support.name} may reserve this chord`;
2316
2428
  return terminalReservedReason(key);
2317
2429
  }
2318
- var MACOS_OPTION_DEFAULT_WARNING_ID = "clio.macos.option-letter.defaults";
2430
+ var MACOS_OPTION_DEFAULT_WARNING_ID = "clio-coder.macos.option-letter.defaults";
2319
2431
  function detectPlatformKeybindingWarnings(userBindings, support = detectTerminalKeySupport()) {
2320
2432
  const warnings = [];
2321
2433
  const macosDefaultAltKeys = [];
@@ -2366,94 +2478,124 @@ function joinKeys(keys) {
2366
2478
  if (keys.length === 1) return String(keys[0]);
2367
2479
  return keys.join(" / ");
2368
2480
  }
2369
- function deriveLeaderTargets(inner) {
2370
- const targets = [];
2371
- 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)) {
2372
2513
  for (const key of inner.getKeys(id)) {
2373
- const base = altLetterBase(String(key));
2374
- 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);
2375
2518
  }
2376
2519
  }
2377
- return targets;
2378
- }
2379
- function buildManager(inner, invalid, platformWarnings) {
2380
- const frozen = invalid.map((entry) => ({ id: entry.id, keys: [...entry.keys] }));
2381
- const frozenPlatformWarnings = platformWarnings.map((entry) => ({
2382
- id: entry.id,
2383
- keys: [...entry.keys],
2384
- terminal: entry.terminal,
2385
- reason: entry.reason,
2386
- 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)))
2387
2525
  }));
2388
- 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
+ };
2389
2550
  return {
2390
- matches(data, id) {
2391
- return inner.matches(data, id);
2392
- },
2393
- getKeys(id) {
2394
- return inner.getKeys(id);
2395
- },
2396
- getDescription(id) {
2397
- return inner.getDefinition(id).description ?? "";
2398
- },
2399
- getConflicts() {
2400
- return inner.getConflicts();
2401
- },
2402
- overrideCount() {
2403
- return Object.keys(inner.getUserBindings()).length;
2404
- },
2405
- invalidCount() {
2406
- 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;
2407
2557
  },
2408
- invalidBindings() {
2409
- return frozen;
2410
- },
2411
- platformWarnings() {
2412
- 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();
2413
2564
  },
2414
- leaderTargets() {
2415
- return frozenLeaderTargets;
2565
+ onReload(listener) {
2566
+ listeners.add(listener);
2567
+ return () => {
2568
+ listeners.delete(listener);
2569
+ };
2416
2570
  },
2417
- hotkeyEntries() {
2418
- const userBindings = inner.getUserBindings();
2419
- return CLIO_APP_KEYBINDING_IDS.map((id) => ({
2420
- id,
2421
- keys: joinKeys(inner.getKeys(id)),
2422
- description: inner.getDefinition(id).description ?? "",
2423
- source: userBindings[id] === void 0 ? "default" : "user"
2424
- }));
2425
- }
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
+ }))
2426
2584
  };
2427
2585
  }
2428
2586
  function createKeybindingManager(settings, env = process.env) {
2429
- const { valid, invalid } = validateKeybindings(settings.interface.keybindings ?? {});
2430
- const inner = new KeybindingsManager(CLIO_KEYBINDINGS, valid);
2431
- setKeybindings(inner);
2432
- return buildManager(inner, invalid, detectPlatformKeybindingWarnings(valid, detectTerminalKeySupport(env)));
2587
+ return buildManager(settings.interface.keybindings ?? {}, env, true);
2433
2588
  }
2434
2589
 
2435
2590
  export {
2436
- SelectList,
2591
+ SelectList2 as SelectList,
2437
2592
  createAgentProgress,
2438
- CombinedAutocompleteProvider,
2439
- Container,
2440
- fuzzyFilter,
2441
- getKeybindings,
2442
- Input,
2443
- isKeyRelease,
2444
- Markdown,
2445
- Marked,
2446
- matchesKey,
2447
- ScrollView,
2448
- stripTerminalSequences,
2449
- Text,
2450
- truncateToWidth,
2451
- VStack,
2452
- visibleWidth,
2453
- wrapTextWithAnsi,
2454
2593
  unguardPastedEditorOperator,
2455
2594
  parseEditorBashCommand,
2456
2595
  bashExecutionEntryInput,
2596
+ keyboardOwner,
2597
+ focusedComponent,
2598
+ localKey,
2457
2599
  SGR_RESET,
2458
2600
  SGR_DIM,
2459
2601
  fgSequence,
@@ -2471,6 +2613,7 @@ export {
2471
2613
  joinSections,
2472
2614
  markdownTheme,
2473
2615
  selectListTheme,
2616
+ editorTheme,
2474
2617
  abbreviateModelId,
2475
2618
  formatTargetLabel,
2476
2619
  formatCompactMs,
@@ -2493,11 +2636,13 @@ export {
2493
2636
  diagnosticSeverityToken,
2494
2637
  showClioOverlayFrame,
2495
2638
  MUTATION_PREVIEW_KEY,
2639
+ PERMISSION_TERMS_KEY,
2496
2640
  permissionHintEntries,
2497
2641
  ClioEditor,
2498
2642
  writeInputWedgeDump,
2499
2643
  getActiveRenderTrace,
2500
2644
  createProcessInteractiveShell,
2645
+ CLIO_APP_KEYBINDING_IDS,
2501
2646
  validateKeybindings,
2502
2647
  formatInvalidKeybindingNotice,
2503
2648
  detectTerminalKeySupport,
@@ -2505,4 +2650,4 @@ export {
2505
2650
  formatPlatformKeybindingNotice,
2506
2651
  createKeybindingManager
2507
2652
  };
2508
- //# sourceMappingURL=chunk-7TKWWPD7.js.map
2653
+ //# sourceMappingURL=chunk-U3TPUXOQ.js.map