@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
package/src/cli/skills.ts CHANGED
@@ -1,495 +1,48 @@
1
1
  import { resolve } from "node:path";
2
- import {
3
- discoverMarketplaceSkills,
4
- installSkill,
5
- loadSkills,
6
- type MarketplaceSkill,
7
- modelVisibleSkills,
8
- type ResourceDiagnostic,
9
- resolveMarketplaceShaping,
10
- type Skill,
11
- type SkillUpdateReport,
12
- skillCatalogValidity,
13
- updateSkills,
14
- } from "../domains/resources/index.js";
15
- import { formatColumns, printError, printOk } from "./shared.js";
16
-
17
- const HELP = `clio-coder skills <command>
18
-
19
- Manage local Clio and Agent Skills-compatible skills.
20
-
21
- Commands:
22
- clio-coder skills list [--json] [--all]
23
- clio-coder skills inventory --json
24
- clio-coder skills search <query> [--json]
25
- clio-coder skills inspect <name> [--json]
26
- clio-coder skills validate [path] [--json]
27
- clio-coder skills install <name|path|github-url>... [--user|--project] [--name <name>] [--force]
28
- clio-coder skills install --category <category> [--user|--project] [--force]
29
- clio-coder skills update <name> | --all [--force]
30
- clio-coder skills sync [--force]
31
- clio-coder skills eval <name|path> [--scenario <id>] [--target <id>] [--workspace <path>] [--timeout <seconds>] [--trust-fixtures] [--allow-network] [--json]
32
-
33
- inventory is the fixed machine-readable read a GUI host may run. Unlike a bare
34
- list it reports every installed skill, not only the ones the model may load, and
35
- says which are which; it carries no body, path, hash, or install URL.
36
-
37
- search covers installed skills plus the local marketplace: CLIO_CODER_SKILL_CATALOG_DIR,
38
- a repo skills/ catalog, or the catalog and skill-marketplace.json index the
39
- installed clio-coder package carries. Installing from the shipped catalog copies
40
- local files and needs no network.
41
-
42
- install resolves a bare name through that marketplace; a path or GitHub URL
43
- installs directly, and an existing local path always wins over a same-named
44
- marketplace entry. Several sources install in one command, and --category
45
- installs every marketplace skill in one catalog group (git, research, ...).
46
-
47
- eval (experimental) executes the skill's evals.md RED-GREEN scenarios: per
48
- scenario a baseline headless run without the skill, a treatment run with it,
49
- and a judge run scoring each Expected bullet from the transcripts. Exit is 1
50
- when a treatment bullet fails and 3 when a scenario was never measured (a
51
- truncated or unparseable judge response scores no bullet, which is not a skill
52
- failure). Every arm runs hermetic: the network tool plane is stripped from the
53
- child runs unless you pass --allow-network. The baseline and treatment arms run
54
- at autonomy full-auto in per-run disposable workspaces, because a headless run
55
- has no operator to approve anything and a gated arm measures the harness rather
56
- than the skill. --scenario takes a full id as written
57
- in evals.md, whose prefix is per-skill (S1, but also D2 in clio-dev, T3 in
58
- clio-test, F1 in find-skills, H2 in context-handoff), or a bare number that
59
- selects that scenario whatever its prefix. --json emits one JSONL row per
60
- (scenario, bullet) with schema: "experimental". --workspace copies an existing
61
- checkout into a throwaway seed; the source checkout is not mutated. Fixture
62
- commands declared in evals.md are real shell run in that seed; they only execute
63
- with --trust-fixtures, after you have reviewed the evals.md.
64
- `;
65
-
66
- type SkillInstallScope = "user" | "project";
67
-
68
- interface Parsed {
69
- command?: string;
70
- positional: string[];
71
- json: boolean;
72
- all: boolean;
73
- help: boolean;
74
- force: boolean;
75
- name?: string;
76
- category?: string;
77
- scope?: SkillInstallScope;
78
- scenario?: string;
79
- target?: string;
80
- workspace?: string;
81
- timeoutSeconds?: number;
82
- trustFixtures: boolean;
83
- allowNetwork: boolean;
84
- }
85
-
86
- function parse(argv: ReadonlyArray<string>): Parsed {
87
- const out: Parsed = {
88
- positional: [],
89
- json: false,
90
- all: false,
91
- help: false,
92
- force: false,
93
- trustFixtures: false,
94
- allowNetwork: false,
95
- };
96
- for (let i = 0; i < argv.length; i++) {
97
- const arg = argv[i];
98
- if (arg === undefined) continue;
99
- if (!out.command && !arg.startsWith("-")) {
100
- out.command = arg;
101
- continue;
102
- }
103
- switch (arg) {
104
- case "--json":
105
- out.json = true;
106
- break;
107
- case "--all":
108
- out.all = true;
109
- break;
110
- case "--force":
111
- out.force = true;
112
- break;
113
- case "--trust-fixtures":
114
- out.trustFixtures = true;
115
- break;
116
- case "--allow-network":
117
- out.allowNetwork = true;
118
- break;
119
- case "--name": {
120
- const value = argv[i + 1];
121
- if (!value || value.startsWith("-")) throw new Error("--name requires a value");
122
- out.name = value;
123
- i++;
124
- break;
125
- }
126
- case "--category": {
127
- const value = argv[i + 1];
128
- if (!value || value.startsWith("-")) throw new Error("--category requires a value");
129
- out.category = value;
130
- i++;
131
- break;
132
- }
133
- case "--scenario": {
134
- const value = argv[i + 1];
135
- if (!value || value.startsWith("-")) throw new Error("--scenario requires a value");
136
- out.scenario = value;
137
- i++;
138
- break;
139
- }
140
- case "--target": {
141
- const value = argv[i + 1];
142
- if (!value || value.startsWith("-")) throw new Error("--target requires a value");
143
- out.target = value;
144
- i++;
145
- break;
146
- }
147
- case "--workspace": {
148
- const value = argv[i + 1];
149
- if (!value || value.startsWith("-")) throw new Error("--workspace requires a value");
150
- out.workspace = value;
151
- i++;
152
- break;
153
- }
154
- case "--timeout": {
155
- const value = argv[i + 1];
156
- const seconds = value === undefined ? Number.NaN : Number.parseInt(value, 10);
157
- if (!Number.isInteger(seconds) || seconds <= 0) throw new Error("--timeout requires a positive integer");
158
- out.timeoutSeconds = seconds;
159
- i++;
160
- break;
161
- }
162
- case "--user":
163
- if (out.scope && out.scope !== "user") throw new Error("--user and --project are mutually exclusive");
164
- out.scope = "user";
165
- break;
166
- case "--project":
167
- if (out.scope && out.scope !== "project") throw new Error("--user and --project are mutually exclusive");
168
- out.scope = "project";
169
- break;
170
- case "--help":
171
- case "-h":
172
- out.help = true;
173
- break;
174
- default:
175
- if (arg.startsWith("-")) throw new Error(`unknown flag: ${arg}`);
176
- out.positional.push(arg);
177
- }
178
- }
179
- return out;
180
- }
181
-
182
- function printUpdateReports(reports: ReadonlyArray<SkillUpdateReport>): number {
183
- if (reports.length === 0) {
184
- process.stdout.write("skills: nothing to update (no installed skills with source-url provenance)\n");
185
- return 0;
186
- }
187
- for (const report of reports) {
188
- const detail = report.detail ? ` (${report.detail})` : "";
189
- process.stdout.write(`${report.name}: ${report.status}${detail}\n`);
190
- }
191
- return reports.some((report) => report.status === "error") ? 1 : 0;
192
- }
193
-
194
- function printDiagnostics(diagnostics: ReadonlyArray<ResourceDiagnostic>): void {
195
- for (const diag of diagnostics) {
196
- const detail = diag.path ? `${diag.message}: ${diag.path}` : diag.message;
197
- if (diag.type === "error") printError(detail);
198
- else process.stderr.write(`warning: ${detail}\n`);
199
- }
200
- }
201
-
202
- function skillRows(skills: ReadonlyArray<Skill>): string[][] {
203
- return skills.map((skill) => [
204
- skill.name,
205
- skill.scope,
206
- skill.source,
207
- skill.trusted ? "trusted" : "untrusted",
208
- skill.disableModelInvocation ? "manual" : "model",
209
- skill.hash.slice(0, 12),
210
- // Blank for the ordinary operator-installed case; a worker install is
211
- // the anomaly worth a column, so it is the only value that ever prints.
212
- skill.provenance?.installedBy ?? "",
213
- skill.description,
214
- ]);
215
- }
216
-
217
- function printList(skills: ReadonlyArray<Skill>): void {
218
- if (skills.length === 0) {
219
- process.stdout.write("skills: none\n");
220
- return;
221
- }
222
- process.stdout.write(
223
- formatColumns([["name", "scope", "source", "trust", "invoke", "hash", "by", "description"], ...skillRows(skills)]),
224
- );
225
- }
226
-
227
- function printInspect(skill: Skill): void {
228
- process.stdout.write(`name: ${skill.name}\n`);
229
- process.stdout.write(`description: ${skill.description}\n`);
230
- process.stdout.write(`path: ${skill.filePath}\n`);
231
- process.stdout.write(`baseDir: ${skill.baseDir}\n`);
232
- process.stdout.write(`scope: ${skill.scope}\n`);
233
- process.stdout.write(`source: ${skill.source}\n`);
234
- process.stdout.write(`trusted: ${skill.trusted}\n`);
235
- process.stdout.write(`disableModelInvocation: ${skill.disableModelInvocation}\n`);
236
- process.stdout.write(`hash: ${skill.hash}\n`);
237
- if (skill.provenance?.installedBy) {
238
- process.stdout.write(`installed-by: ${skill.provenance.installedBy}\n`);
239
- }
240
- if (skill.diagnostics.length > 0) {
241
- process.stdout.write("diagnostics:\n");
242
- for (const diag of skill.diagnostics) process.stdout.write(` ${diag.type}: ${diag.message}\n`);
243
- }
244
- }
245
-
246
- function formatMarketplaceOrigin(skill: MarketplaceSkill): string {
247
- const parts = [skill.origin === "catalog" ? "catalog" : "index"];
248
- if (skill.version) parts.push(`v${skill.version}`);
249
- if (skill.audit) parts.push(`audit: ${skill.audit}`);
250
- return parts.join(", ");
251
- }
252
-
253
- function validationLoad(pathArg: string | undefined): ReturnType<typeof loadSkills> {
254
- if (!pathArg) return loadSkills({ cwd: process.cwd() });
255
- return loadSkills({ disableDiscovery: true, explicitSkillPaths: [resolve(pathArg)] });
256
- }
257
-
258
- export async function runSkillsCommand(argv: ReadonlyArray<string>): Promise<number> {
259
- // Routed before the shared parser so the fixed read stays exactly fixed: no
260
- // skills flag can reach it, and no flag it does not name can be spent on it.
261
- if (argv[0] === "inventory") {
262
- const { runSkillsInventory } = await import("./skills-inventory.js");
263
- return runSkillsInventory(argv.slice(1));
264
- }
265
- let parsed: Parsed;
266
- try {
267
- parsed = parse(argv);
268
- } catch (error) {
269
- printError(error instanceof Error ? error.message : String(error));
270
- process.stderr.write(HELP);
2
+ import { readSettings } from "../core/config.js";
3
+ import { loadSkills, modelVisibleSkills, skillCatalogValidity } from "../domains/resources/index.js";
4
+ import { formatColumns } from "./shared.js";
5
+
6
+ /** Runtime discovery is a read surface of the library; package mutations live in library.ts. */
7
+ export function runSkillsRead(args: ReadonlyArray<string>): number {
8
+ const command = args[0];
9
+ const positional = args.slice(1).filter((arg) => !arg.startsWith("-"));
10
+ const json = args.includes("--json");
11
+ if (
12
+ (command !== "list" && command !== "validate") ||
13
+ args.slice(1).some((arg) => arg.startsWith("-") && arg !== "--json" && arg !== "--all") ||
14
+ positional.length > (command === "list" ? 0 : 1)
15
+ ) {
16
+ process.stderr.write("usage: clio-coder library skills [--all] [--json], or library validate <SKILL.md> [--json]\n");
271
17
  return 2;
272
18
  }
273
- if (parsed.help) {
274
- process.stdout.write(HELP);
275
- return 0;
276
- }
277
- // A bare `clio-coder skills` is a missing required argument, which the
278
- // exit-code contract puts at 2 with the usage on stderr. See the same note in
279
- // extensions.ts.
280
- if (!parsed.command) {
281
- process.stderr.write(HELP);
282
- return 2;
283
- }
284
- switch (parsed.command) {
285
- case "list": {
286
- const list = loadSkills({ cwd: process.cwd() });
287
- const skills = parsed.all ? list.items : modelVisibleSkills(list.items);
288
- if (parsed.json) process.stdout.write(`${JSON.stringify({ skills, diagnostics: list.diagnostics }, null, 2)}\n`);
289
- else {
290
- printList(skills);
291
- printDiagnostics(list.diagnostics);
292
- }
293
- return list.diagnostics.some((diag) => diag.type === "error") ? 1 : 0;
294
- }
295
- case "search": {
296
- const query = parsed.positional.join(" ").trim().toLowerCase();
297
- if (query.length === 0) {
298
- process.stderr.write("usage: clio-coder skills search <query> [--json]\n");
299
- return 2;
300
- }
301
- const list = loadSkills({ cwd: process.cwd() });
302
- const discovery = discoverMarketplaceSkills({ cwd: process.cwd() });
303
- const installedNames = new Set(list.items.map((skill) => skill.name));
304
- const matchesQuery = (name: string, description: string): boolean =>
305
- name.toLowerCase().includes(query) || description.toLowerCase().includes(query);
306
- const installed = list.items.filter((skill) => matchesQuery(skill.name, skill.description));
307
- // A catalog group name is the other thing an operator types here, and
308
- // `install --category git` treats it as a real field: without this,
309
- // `search git` answered with the skills whose prose mentions git and
310
- // omitted every member of skills/git/.
311
- const marketplace = discovery.skills.filter(
312
- (skill) =>
313
- !installedNames.has(skill.name) &&
314
- (matchesQuery(skill.name, skill.description) || skill.category?.toLowerCase() === query),
315
- );
316
- // Search must report anything that made the result incomplete: loader
317
- // diagnostics (like list) plus marketplace discovery diagnostics, so a
318
- // broken index looks different from a skill that does not exist.
319
- const exitCode = list.diagnostics.some((diag) => diag.type === "error") ? 1 : 0;
320
- if (parsed.json) {
321
- process.stdout.write(
322
- `${JSON.stringify(
323
- { query, installed, marketplace, diagnostics: list.diagnostics, marketplaceDiagnostics: discovery.diagnostics },
324
- null,
325
- 2,
326
- )}\n`,
327
- );
328
- return exitCode;
329
- }
330
- if (installed.length > 0) {
331
- process.stdout.write("installed:\n");
332
- for (const skill of installed) {
333
- process.stdout.write(` ${skill.name.padEnd(24)} ${skill.description} (${skill.scope}/${skill.source})\n`);
334
- }
335
- }
336
- if (marketplace.length > 0) {
337
- process.stdout.write("marketplace (clio-coder skills install <name>):\n");
338
- for (const skill of marketplace) {
339
- process.stdout.write(` ${skill.name.padEnd(24)} ${skill.description} (${formatMarketplaceOrigin(skill)})\n`);
340
- }
341
- }
342
- if (installed.length === 0 && marketplace.length === 0) {
343
- process.stdout.write(`skills: no matches for "${query}"\n`);
344
- }
345
- printDiagnostics(list.diagnostics);
346
- for (const message of discovery.diagnostics) process.stderr.write(`warning: ${message}\n`);
347
- return exitCode;
348
- }
349
- case "inspect": {
350
- const name = parsed.positional[0];
351
- if (!name || parsed.positional.length !== 1) {
352
- process.stderr.write("usage: clio-coder skills inspect <name> [--json]\n");
353
- return 2;
354
- }
355
- const list = loadSkills({ cwd: process.cwd() });
356
- const skill = list.items.find((entry) => entry.name === name);
357
- if (!skill) {
358
- // inspect reads an installed skill's loaded record, which a marketplace
359
- // entry does not have yet. Saying "unknown skill" about a name `search`
360
- // just listed denies the skill exists; name the state and the one
361
- // command that changes it.
362
- const available = discoverMarketplaceSkills({ cwd: process.cwd() }).skills.some((entry) => entry.name === name);
363
- printError(
364
- available
365
- ? `skill not installed: ${name} (available in the marketplace; install it with: clio-coder skills install ${name})`
366
- : `unknown skill: ${name}`,
367
- );
368
- return 1;
369
- }
370
- if (parsed.json) process.stdout.write(`${JSON.stringify({ skill }, null, 2)}\n`);
371
- else printInspect(skill);
372
- return 0;
373
- }
374
- case "validate": {
375
- const pathArg = parsed.positional[0];
376
- if (parsed.positional.length > 1) {
377
- process.stderr.write("usage: clio-coder skills validate [path] [--json]\n");
378
- return 2;
379
- }
380
- const list = validationLoad(pathArg);
381
- // The rule itself lives in the loader, because `skills inspect --json`
382
- // reports the same verdict to a GUI host and a verdict that drifts
383
- // between the terminal and the browser is worse than no verdict.
384
- const { ok } = skillCatalogValidity(list);
385
- if (parsed.json) {
386
- process.stdout.write(`${JSON.stringify({ ok, skills: list.items, diagnostics: list.diagnostics }, null, 2)}\n`);
387
- } else {
388
- printDiagnostics(list.diagnostics);
389
- process.stdout.write(`${ok ? "valid" : "invalid"}: ${list.items.length} skill(s)\n`);
390
- }
391
- return ok ? 0 : 1;
392
- }
393
- case "install": {
394
- let sources = parsed.positional;
395
- if (parsed.category !== undefined) {
396
- if (sources.length > 0) {
397
- process.stderr.write("--category installs a whole catalog group; do not also name skills\n");
398
- return 2;
399
- }
400
- const grouped = discoverMarketplaceSkills().skills.filter((skill) => skill.category === parsed.category);
401
- if (grouped.length === 0) {
402
- printError(`no marketplace skills in category "${parsed.category}"`);
403
- return 1;
404
- }
405
- sources = grouped.map((skill) => skill.name);
406
- }
407
- if (sources.length === 0) {
408
- process.stderr.write(
409
- "usage: clio-coder skills install <name|path|github-url>... [--user|--project] [--name <name>] [--force]\n" +
410
- " clio-coder skills install --category <category> [--user|--project] [--force]\n",
411
- );
412
- return 2;
413
- }
414
- // --name renames the destination directory, which can only mean one
415
- // thing for one source; silently applying it to a list would install
416
- // every skill over the same directory.
417
- if (parsed.name !== undefined && sources.length !== 1) {
418
- process.stderr.write("--name applies to a single skill; install them one at a time to rename\n");
419
- return 2;
420
- }
421
- let failed = 0;
422
- for (const source of sources) {
423
- try {
424
- const result = installSkill({
425
- source,
426
- scope: parsed.scope ?? "project",
427
- force: parsed.force,
428
- ...(parsed.name ? { name: parsed.name } : {}),
429
- });
430
- printOk(`installed ${result.scope} skill ${result.name} at ${result.path}`);
431
- for (const warning of result.warnings) process.stderr.write(`warning: ${warning}\n`);
432
- } catch (err) {
433
- failed += 1;
434
- printError(err instanceof Error ? err.message : String(err));
435
- }
436
- }
437
- if (failed === sources.length) return 1;
438
- process.stdout.write("audit is set to unknown; review the skill and set audit: pass yourself\n");
439
- return failed > 0 ? 1 : 0;
440
- }
441
- case "update": {
442
- const name = parsed.positional[0];
443
- if ((!name && !parsed.all) || parsed.positional.length > 1) {
444
- process.stderr.write("usage: clio-coder skills update <name> | --all [--force]\n");
445
- return 2;
446
- }
447
- try {
448
- const reports = updateSkills({
449
- ...(name ? { name } : { all: true }),
450
- force: parsed.force,
451
- resolveShaping: resolveMarketplaceShaping(),
452
- });
453
- return printUpdateReports(reports);
454
- } catch (err) {
455
- printError(err instanceof Error ? err.message : String(err));
456
- return 1;
457
- }
458
- }
459
- case "sync": {
460
- try {
461
- return printUpdateReports(
462
- updateSkills({ all: true, force: parsed.force, resolveShaping: resolveMarketplaceShaping() }),
463
- );
464
- } catch (err) {
465
- printError(err instanceof Error ? err.message : String(err));
466
- return 1;
467
- }
468
- }
469
- case "eval": {
470
- const name = parsed.positional[0];
471
- if (!name || parsed.positional.length !== 1) {
472
- process.stderr.write(
473
- "usage: clio-coder skills eval <name|path> [--scenario <id>] [--target <id>] [--workspace <path>] [--timeout <seconds>] [--trust-fixtures] [--allow-network] [--json]\n",
474
- );
475
- return 2;
476
- }
477
- // Dynamic import keeps the eval lane (evidence + eval domains) out of
478
- // the chunk that clio-coder skills list/search load.
479
- const { runSkillsEvalCommand } = await import("./skills-eval.js");
480
- return runSkillsEvalCommand(name, {
481
- json: parsed.json,
482
- trustFixtures: parsed.trustFixtures,
483
- allowNetwork: parsed.allowNetwork,
484
- ...(parsed.scenario !== undefined ? { scenario: parsed.scenario } : {}),
485
- ...(parsed.target !== undefined ? { target: parsed.target } : {}),
486
- ...(parsed.workspace !== undefined ? { workspace: parsed.workspace } : {}),
487
- ...(parsed.timeoutSeconds !== undefined ? { timeoutSeconds: parsed.timeoutSeconds } : {}),
488
- });
489
- }
490
- default:
491
- printError(`unknown skills command: ${parsed.command}`);
492
- process.stderr.write(HELP);
493
- return 2;
494
- }
19
+ const list = loadSkills(
20
+ command === "validate" && positional[0]
21
+ ? { disableDiscovery: true, explicitSkillPaths: [resolve(positional[0])] }
22
+ : { cwd: process.cwd(), trustProjectCompatRoots: readSettings().integrations.projectResources.trustProjectImports },
23
+ );
24
+ const skills = command === "validate" || args.includes("--all") ? list.items : modelVisibleSkills(list.items);
25
+ const valid =
26
+ command === "validate" ? skillCatalogValidity(list).ok : !list.diagnostics.some((diag) => diag.type === "error");
27
+ if (json)
28
+ process.stdout.write(
29
+ `${JSON.stringify({ ...(command === "validate" ? { ok: valid } : {}), skills, diagnostics: list.diagnostics }, null, 2)}\n`,
30
+ );
31
+ else {
32
+ process.stdout.write(
33
+ formatColumns([
34
+ ["name", "scope", "source", "trust", "invoke", "description"],
35
+ ...skills.map((skill) => [
36
+ skill.name,
37
+ skill.scope,
38
+ skill.source,
39
+ skill.trusted ? "trusted" : "untrusted",
40
+ skill.disableModelInvocation ? "manual" : "model",
41
+ skill.description,
42
+ ]),
43
+ ]),
44
+ );
45
+ for (const diagnostic of list.diagnostics) process.stderr.write(`${diagnostic.type}: ${diagnostic.message}\n`);
46
+ }
47
+ return valid ? 0 : 1;
495
48
  }
@@ -64,6 +64,7 @@ export const BusChannels = {
64
64
  CompactionEnd: "compaction.end",
65
65
  MiddlewareHookFailed: "middleware.hookFailed",
66
66
  ExtensionsReloaded: "extensions.reloaded",
67
+ PluginsReloaded: "plugins.reloaded",
67
68
  ExtensionsLoadIssue: "extensions.loadIssue",
68
69
  ContextActivity: "context.activity",
69
70
  ContextSourcesChanged: "context.sourcesChanged",
@@ -726,6 +727,9 @@ export interface ExtensionsReloadedPayload {
726
727
  digest: string;
727
728
  }
728
729
 
730
+ /** Data-only plugin generation publication, independent of extension hook generations. */
731
+ export type PluginsReloadedPayload = ExtensionsReloadedPayload;
732
+
729
733
  /** Operator diagnostics for skipped extension or project-hook configuration. */
730
734
  export interface ExtensionsLoadIssuePayload {
731
735
  message: string;
@@ -859,6 +863,7 @@ export type BusPayloadMap = {
859
863
  [BusChannels.CompactionEnd]: CompactionPayload;
860
864
  [BusChannels.MiddlewareHookFailed]: MiddlewareHookFailedPayload;
861
865
  [BusChannels.ExtensionsReloaded]: ExtensionsReloadedPayload;
866
+ [BusChannels.PluginsReloaded]: PluginsReloadedPayload;
862
867
  [BusChannels.ExtensionsLoadIssue]: ExtensionsLoadIssuePayload;
863
868
  [BusChannels.ContextActivity]: ContextActivityPayload;
864
869
  [BusChannels.ContextSourcesChanged]: ContextSourcesChangedPayload;
@@ -283,7 +283,7 @@ export interface ReviewSettings {
283
283
  }
284
284
 
285
285
  export interface ModelSelectorSettings {
286
- /** Exact target/model refs cycled by Alt+J/Alt+K. */
286
+ /** Exact target/model refs used by the scoped model cycle actions. */
287
287
  cycleSet: string[];
288
288
  /** Exact target/model refs shown in the focused model picker. */
289
289
  favorites: string[];
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Recents are runtime state, not user configuration, so they live in the state
5
5
  * dir (recent-models.json) and never in settings.yaml. Keeping them out
6
- * of the settings file means an Alt+L model pick does not rewrite settings.yaml
6
+ * of the settings file means an Alt+M model pick does not rewrite settings.yaml
7
7
  * just to bump a recency list, which would fire the config watcher in every
8
8
  * other running session. Favorites (modelSelector.favorites) remain in
9
9
  * settings.yaml because they are deliberate user configuration.
@@ -72,7 +72,7 @@ export function rememberRecentModel(ref: string, limit: number): string[] {
72
72
  const next = [ref, ...base.filter((entry) => entry !== ref)].slice(0, max);
73
73
  cache = next;
74
74
  cachePath = path;
75
- // An Alt+L model pick in a session outliving `clio-coder uninstall` must not
75
+ // An Alt+M model pick in a session outliving `clio-coder uninstall` must not
76
76
  // rebuild the state root around recent-models.json. The in-memory list still
77
77
  // updates so the picker behaves for the rest of the run; see stateRootRemoved().
78
78
  if (stateRootRemoved()) return next;
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Saved settings (settings.yaml) are defaults shared by every Clio process.
5
5
  * Live routing for a running session — active orchestrator target/model/
6
- * thinking, the fleet default used by /run, and the Alt+J / Alt+K scope list —
6
+ * thinking, the fleet default used by /run, and the configured model-cycle scope list —
7
7
  * is owned by the process that is running the session. Each process seeds its
8
8
  * routing from saved settings at boot and afterwards reads everything through
9
9
  * an effective view: the shared snapshot (targets, theme, safety, retry, …)
@@ -279,7 +279,7 @@ const ROUTING_FIELD_LABELS: ReadonlyArray<{
279
279
  },
280
280
  {
281
281
  field: "chat.modelPicker.cycleSet",
282
- label: "Alt+J/Alt+K cycle set",
282
+ label: "Scoped model cycle set",
283
283
  read: (s) => s.chat.modelPicker.cycleSet.join(","),
284
284
  },
285
285
  ];
@@ -317,7 +317,7 @@ export interface RoutingChangeNotice {
317
317
  * moves settings.yaml underneath it. One helper feeds every surface — the TUI
318
318
  * notification center and the ACP session ledger — so the wording cannot
319
319
  * drift. `commandHints` appends the interactive remedies (/settings, /model,
320
- * Alt+L), which only make sense where a user can type slash commands.
320
+ * Alt+M), which only make sense where a user can type slash commands.
321
321
  */
322
322
  export function routingChangeNotices(
323
323
  changedPaths: ReadonlyArray<string>,
@@ -118,7 +118,7 @@ function tryAcquire(lockPath: string): boolean {
118
118
 
119
119
  function timeoutError(lockPath: string, timeoutMs: number): Error {
120
120
  return new Error(
121
- `timed out after ${timeoutMs}ms waiting for ${lockPath} (owner pid=${readLockOwner(lockPath)?.pid ?? "?"}); delete it if no other clio process is running`,
121
+ `timed out after ${timeoutMs}ms waiting for ${lockPath} (owner pid=${readLockOwner(lockPath)?.pid ?? "?"}); delete it if no other clio-coder process is running`,
122
122
  );
123
123
  }
124
124
 
@@ -67,3 +67,8 @@ export const ALL_TOOL_NAMES: ReadonlyArray<BuiltinToolName> = Object.values(Tool
67
67
  export function isBuiltinToolName(name: ToolName): name is BuiltinToolName {
68
68
  return (ALL_TOOL_NAMES as ReadonlyArray<string>).includes(name);
69
69
  }
70
+
71
+ /** Reserved command-capability namespace. Syntax conveys execution class, never availability. */
72
+ export function isHarnessExtensionToolName(name: string): name is DynamicToolName {
73
+ return name.length <= 64 && /^extension_[a-z0-9][a-z0-9_-]*__[a-z][a-z0-9_]*$/.test(name);
74
+ }