@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
@@ -12,6 +12,9 @@ import type { RunReceipt } from "../domains/dispatch/types.js";
12
12
  import type { JobThinkingLevel } from "../domains/dispatch/validation.js";
13
13
  import type { ReceiptIntegrityOutcome } from "../domains/evidence/trust-status.js";
14
14
  import type { InstalledExtension } from "../domains/extensions/index.js";
15
+ import { isExtensionCommandToken } from "../domains/extensions/operator-commands.js";
16
+ import type { OperatorExtensionRuntime } from "../domains/extensions/operator-runtime.js";
17
+ import type { ExtensionOutput } from "../domains/extensions/public-api.js";
15
18
  import type { InteropAgentId, InteropProposal, InteropReport } from "../domains/interop/index.js";
16
19
  import {
17
20
  PANES_PRESET_IDS,
@@ -30,6 +33,7 @@ import type {
30
33
  ResourceList,
31
34
  } from "../domains/resources/index.js";
32
35
  import { parseSkillCommand, SKILL_SURFACE_CLEAR_ARG } from "../domains/resources/index.js";
36
+ import { isLibraryKind } from "../domains/resources/library-types.js";
33
37
  import { activeDecisionRefs } from "../domains/session/decision-board.js";
34
38
  import type { DecisionLedgerEntry } from "../domains/session/entries.js";
35
39
  import type { ShareImportPlan } from "../domains/share/index.js";
@@ -56,7 +60,7 @@ import {
56
60
  type OracleDigestSources,
57
61
  packOracleDigest,
58
62
  } from "./oracle.js";
59
- import { isLibraryTab, LIBRARY_TABS } from "./overlays/library-tabs.js";
63
+ import { promptSourceLabel } from "./prompt-source-label.js";
60
64
  import type { CommandArgsSpec, CommandPositionalSpec, ParsedArgs } from "./slash-spec.js";
61
65
  import { matchFromSpec, usageLine } from "./slash-spec.js";
62
66
  import {
@@ -85,9 +89,9 @@ import type { WorkerEntryState } from "./worker-stream.js";
85
89
  * `../engine/tui.js`. Those modules share one bundle chunk with the instant
86
90
  * shell's Stage 0 closure, and a second, disjoint reacher makes esbuild split
87
91
  * it, which is a startup-latency regression rather than a style problem. The
88
- * parse-time data tables the registry needs live in leaves for that reason:
89
- * `./overlays/library-tabs.js` and `COUNCIL_SYNTHESIS_LABEL` in
90
- * `./council.js`. Import from those, not from overlays that re-export them.
92
+ * parse-time data tables the registry needs live in leaves for that reason,
93
+ * such as `COUNCIL_SYNTHESIS_LABEL` in `./council.js`. Import from those,
94
+ * not from overlays that re-export them.
91
95
  *
92
96
  * Boundaries rule6 in `tests/boundaries/check-boundaries.ts` refuses a violation
93
97
  * at lint time; `tests/contracts/instant-shell-import-graph.test.ts` is the
@@ -112,6 +116,24 @@ export const SETTINGS_AREA_IDS = [
112
116
  ] as const;
113
117
  export type SettingsAreaId = (typeof SETTINGS_AREA_IDS)[number];
114
118
 
119
+ /** What `/library <verb> <ref>` asks the browser to review once it is open. */
120
+ export type LibraryBrowseIntent = "install" | "update" | "enable" | "disable" | "remove";
121
+
122
+ /**
123
+ * How a command opens the Library.
124
+ *
125
+ * A reference is a selection, never a write. `/library install <ref>` opens the
126
+ * browser on that row with its review armed, so the operator reads the plan
127
+ * that command produced before any of it lands.
128
+ */
129
+ export interface LibraryBrowseRequest {
130
+ tab?: LibraryEntryKind;
131
+ focus?: string;
132
+ intent?: LibraryBrowseIntent;
133
+ importSource?: string;
134
+ scope?: "user" | "project";
135
+ }
136
+
115
137
  type SlashCommandVariant =
116
138
  | { kind: "quit" }
117
139
  | { kind: "help"; query?: string }
@@ -120,8 +142,20 @@ type SlashCommandVariant =
120
142
  | { kind: "context-refresh" }
121
143
  /** `ref` is the turnId an `[evicted ...]` marker names. */
122
144
  | { kind: "context-recall"; ref: string }
123
- | { kind: "skill-selector" }
124
- | { kind: "resources"; family?: "skills" | "prompts" | "extensions"; tab?: LibraryEntryKind; action?: "reload" }
145
+ | {
146
+ kind: "resources";
147
+ family?: "extensions" | "plugins";
148
+ tab?: LibraryEntryKind;
149
+ action?: "reload";
150
+ /** A package ref or resource key the browser selects on open. */
151
+ focus?: string;
152
+ /** An operation to review on that row. Nothing is written before the review. */
153
+ intent?: LibraryBrowseIntent;
154
+ /** A path or URL `/library import` asks the import surface to review. */
155
+ importSource?: string;
156
+ /** Explicit `--user`/`--project`; absent leaves the browser's own selection. */
157
+ scope?: "user" | "project";
158
+ }
125
159
  | { kind: "skill-invocation"; text: string }
126
160
  /** `/skill off`: drop the tool surface an activated skill armed for the session. */
127
161
  | { kind: "skill-surface-clear" }
@@ -189,7 +223,12 @@ type SlashCommandVariant =
189
223
  | { kind: "usage-error"; command: string; reason: string }
190
224
  | { kind: "empty" };
191
225
 
192
- export type SlashCommand = SlashCommandVariant;
226
+ export type SlashCommand =
227
+ | SlashCommandVariant
228
+ | { kind: "background" }
229
+ | { kind: "editor"; text: string }
230
+ | { kind: "interrupt"; text: string }
231
+ | { kind: "notifications-dismiss"; all: boolean };
193
232
 
194
233
  export type SlashCommandKind = SlashCommand["kind"];
195
234
 
@@ -553,12 +592,31 @@ function shareWorkerRun(runId: string | undefined, ctx: SlashCommandContext): vo
553
592
  ctx.submitOperatorNote(note);
554
593
  }
555
594
 
595
+ /** What the transcript shows for a display-only prompt template. */
596
+ export interface PromptReferenceCard {
597
+ /** Command name as typed, without the slash: `materio:help`. */
598
+ command: string;
599
+ /** Where the template came from, in operator words: `plugin materio`. */
600
+ source: string;
601
+ /** The body to show, already reduced to its reference block. */
602
+ text: string;
603
+ }
604
+
556
605
  /**
557
606
  * Runtime dependencies every slash-command handler may need. Every field is
558
607
  * injected at startInteractive construction time; handlers never reach into
559
608
  * the TUI, chat loop, or overlay module graph directly.
560
609
  */
561
610
  export interface SlashCommandContext {
611
+ keyboardActions?: {
612
+ background(): void;
613
+ editor(text: string): boolean;
614
+ interrupt(text: string): void;
615
+ dismiss(all: boolean): void;
616
+ outputLabel(): string;
617
+ };
618
+ operatorExtensions?: OperatorExtensionRuntime;
619
+ showExtensionOutput?: (invocation: string, output: ExtensionOutput) => void;
562
620
  io: RunIo;
563
621
  notice: (level: NoticeLevel, text: string) => void;
564
622
  dispatch: DispatchContract;
@@ -572,6 +630,12 @@ export interface SlashCommandContext {
572
630
  * the request above it. Transcript-only; the line never enters model context.
573
631
  */
574
632
  echoOperatorCommand?: (text: string) => void;
633
+ /**
634
+ * Render a display-only prompt template as an operator card in the
635
+ * transcript. Transcript-only, like the echo: the host that has no chat
636
+ * panel leaves it unset and the card falls back to `io.stdout`.
637
+ */
638
+ showReference?: (card: PromptReferenceCard) => void;
575
639
  /**
576
640
  * Put operator-authored text into the session the way typed text enters it:
577
641
  * a user turn, persisted in the ledger, visible in the transcript. Used only
@@ -599,7 +663,7 @@ export interface SlashCommandContext {
599
663
  * until the host wires a session.
600
664
  */
601
665
  runContextRecall?: (ref: string) => void;
602
- openSkillsHub?: (tab?: LibraryEntryKind) => void;
666
+ openSkillsHub?: (request?: LibraryBrowseRequest) => void;
603
667
  /**
604
668
  * `/skill off`: drop the tool surface an activated skill armed for the
605
669
  * session. Returns the names that were armed. Absent on a host with no
@@ -615,12 +679,13 @@ export interface SlashCommandContext {
615
679
  expandPromptTemplate?: (text: string) => PromptTemplateExpansion;
616
680
  listExtensions?: () => ReadonlyArray<InstalledExtension>;
617
681
  /**
618
- * `/resources extensions reload`: build, validate, and commit the next
682
+ * `/extensions reload`: build, validate, and commit the next
619
683
  * extension generation together with its user hooks, or report why it was
620
684
  * refused. Absent on a host without the reload coordinator, in which case
621
685
  * the command says so instead of pretending.
622
686
  */
623
687
  reloadExtensions?: () => ExtensionReloadOutcome;
688
+ reloadPlugins?: () => { generation: number };
624
689
  /** Detection report, pending proposals, and the two consent actions `/interop` drives. */
625
690
  interop?: {
626
691
  report: () => InteropReport | null;
@@ -737,8 +802,6 @@ export interface SlashCommandContext {
737
802
  openTree: () => void;
738
803
  openMessagePicker: () => void;
739
804
  openHelp: (query?: string) => void;
740
- openAgents: () => void;
741
- openPrompts: () => void;
742
805
  openExtensions: () => void;
743
806
  openInterop?: () => void;
744
807
  setEditorText?: (text: string) => void;
@@ -809,7 +872,7 @@ export interface BuiltinSlashCommand {
809
872
  match?(trimmed: string): SlashCommand | null;
810
873
  fromArgs?(parsed: ParsedArgs, trimmed: string): SlashCommand;
811
874
  /** Execute `command` against `ctx`. Called only for kinds declared in `kinds`. */
812
- handle(command: SlashCommand, ctx: SlashCommandContext): void;
875
+ handle(command: SlashCommand, ctx: SlashCommandContext): void | "rejected";
813
876
  }
814
877
 
815
878
  const RUN_THINKING_LEVELS: ReadonlyArray<JobThinkingLevel> = THINKING_LEVELS;
@@ -887,6 +950,85 @@ function formatPanesStatus(status: PanesStatus): ReadonlyArray<string> {
887
950
  }
888
951
 
889
952
  export const BUILTIN_SLASH_COMMANDS: ReadonlyArray<BuiltinSlashCommand> = [
953
+ {
954
+ name: "background",
955
+ description: "Detach the newest eligible attached dispatch",
956
+ group: "Work",
957
+ kinds: ["background"],
958
+ args: {},
959
+ fromArgs: fromArgsOrUsage("background", { kind: "background" }),
960
+ handle(_command, ctx) {
961
+ if (!ctx.keyboardActions) {
962
+ ctx.notice("warn", "Background action requires an interactive session");
963
+ return "rejected";
964
+ }
965
+ ctx.keyboardActions.background();
966
+ },
967
+ },
968
+ {
969
+ name: "editor",
970
+ description: "Edit explicit text (or an empty buffer) externally",
971
+ group: "Work",
972
+ kinds: ["editor"],
973
+ args: { positionals: [{ name: "text", required: false, rest: true }] },
974
+ match(text) {
975
+ const match = /^\/editor(?:\s+([\s\S]*))?$/u.exec(text);
976
+ return match ? { kind: "editor", text: match[1] ?? "" } : null;
977
+ },
978
+ handle(command, ctx) {
979
+ if (command.kind !== "editor") return;
980
+ if (!ctx.keyboardActions) {
981
+ ctx.notice("warn", "External editing requires an interactive session");
982
+ return "rejected";
983
+ }
984
+ if (!ctx.keyboardActions.editor(command.text)) return "rejected";
985
+ },
986
+ },
987
+ {
988
+ name: "interrupt",
989
+ description: "Interrupt the active run and send this text",
990
+ group: "Work",
991
+ kinds: ["interrupt"],
992
+ args: { positionals: [{ name: "text", required: true, rest: true }] },
993
+ match(text) {
994
+ const match = /^\/interrupt(?:\s+([\s\S]*))?$/u.exec(text);
995
+ return match
996
+ ? match[1]?.trim()
997
+ ? { kind: "interrupt", text: match[1] }
998
+ : { kind: "usage-error", command: "interrupt", reason: "Text is required" }
999
+ : null;
1000
+ },
1001
+ handle(command, ctx) {
1002
+ if (command.kind !== "interrupt") return;
1003
+ if (!ctx.keyboardActions) {
1004
+ ctx.notice("warn", "Interrupt requires an interactive session");
1005
+ return "rejected";
1006
+ }
1007
+ ctx.keyboardActions.interrupt(command.text);
1008
+ },
1009
+ },
1010
+ {
1011
+ name: "notifications",
1012
+ description: "Dismiss the oldest notification or explicitly dismiss all",
1013
+ group: "Inspect",
1014
+ kinds: ["notifications-dismiss"],
1015
+ args: { subcommands: { dismiss: { positionals: [{ name: "all", required: false }] } } },
1016
+ match(text) {
1017
+ if (!/^\/notifications(?:\s|$)/u.test(text)) return null;
1018
+ const match = /^\/notifications\s+dismiss(?:\s+(all))?$/u.exec(text);
1019
+ return match
1020
+ ? { kind: "notifications-dismiss", all: match[1] === "all" }
1021
+ : { kind: "usage-error", command: "notifications", reason: "Use /notifications dismiss [all]" };
1022
+ },
1023
+ handle(command, ctx) {
1024
+ if (command.kind !== "notifications-dismiss") return;
1025
+ if (!ctx.keyboardActions) {
1026
+ ctx.notice("warn", "Notifications require an interactive session");
1027
+ return "rejected";
1028
+ }
1029
+ ctx.keyboardActions.dismiss(command.all);
1030
+ },
1031
+ },
890
1032
  {
891
1033
  name: "quit",
892
1034
  description: "Exit Clio Coder",
@@ -915,18 +1057,22 @@ export const BUILTIN_SLASH_COMMANDS: ReadonlyArray<BuiltinSlashCommand> = [
915
1057
  },
916
1058
  {
917
1059
  name: "skill",
918
- description: "Open the Skills Hub, invoke a skill, or `off` to drop an active skill's tool surface",
1060
+ description: "Invoke a skill, or use `off` to clear its tool surface",
919
1061
  group: "Work",
920
- kinds: ["skill-selector", "skill-invocation", "skill-surface-clear"],
1062
+ kinds: ["skill-invocation", "skill-surface-clear"],
921
1063
  args: {
922
1064
  positionals: [
923
- { name: "name", required: false },
1065
+ { name: "name", required: true },
924
1066
  { name: "task", required: false, rest: true },
925
1067
  ],
926
1068
  },
927
1069
  match(trimmed) {
928
1070
  if (trimmed === "/skill") {
929
- return { kind: "skill-selector" };
1071
+ return {
1072
+ kind: "usage-error",
1073
+ command: "skill",
1074
+ reason: "Choose /skills to browse, /skill <name> to invoke, or /skill off to clear the active tool surface",
1075
+ };
930
1076
  }
931
1077
  const command = parseSkillCommand(trimmed);
932
1078
  if (!command) return null;
@@ -939,9 +1085,7 @@ export const BUILTIN_SLASH_COMMANDS: ReadonlyArray<BuiltinSlashCommand> = [
939
1085
  return { kind: "skill-invocation", text: trimmed };
940
1086
  },
941
1087
  handle(command, ctx) {
942
- if (command.kind === "skill-selector") {
943
- ctx.openSkillsHub?.();
944
- } else if (command.kind === "skill-invocation") {
1088
+ if (command.kind === "skill-invocation") {
945
1089
  ctx.submitChat(command.text);
946
1090
  } else if (command.kind === "skill-surface-clear") {
947
1091
  const cleared = ctx.clearSkillSurface?.() ?? [];
@@ -953,50 +1097,153 @@ export const BUILTIN_SLASH_COMMANDS: ReadonlyArray<BuiltinSlashCommand> = [
953
1097
  },
954
1098
  },
955
1099
  {
956
- name: "resources",
957
- description: "Browse skills, prompts, libraries, and extensions",
1100
+ name: "library",
1101
+ description: "Open the full-screen recipe library, review a package operation, or reload installed recipes",
958
1102
  group: "Inspect",
959
1103
  kinds: ["resources"],
960
1104
  subcommandDescriptions: {
961
- skills: "Browse installed skills",
962
- prompts: "Browse prompt templates",
963
- library: "Browse resource libraries",
964
- extensions: "Browse installed extensions; `reload` commits a new extension generation",
1105
+ inspect: "Open the Library on one package or recipe",
1106
+ install: "Review installing one package, then apply it",
1107
+ remove: "Review removing one package, then apply it",
1108
+ import: "Review a plugin source from a path or URL",
1109
+ reload: "Refresh installed recipe resources in this session",
965
1110
  },
966
1111
  args: {
967
1112
  subcommands: {
968
- skills: {},
969
- prompts: {},
970
- library: { positionals: [{ name: "kind", required: false }] },
971
- extensions: { positionals: [{ name: "action", required: false, values: ["reload"] }] },
1113
+ inspect: {
1114
+ positionals: [{ name: "ref", required: true }],
1115
+ flags: [{ name: "--user" }, { name: "--project" }],
1116
+ },
1117
+ install: {
1118
+ positionals: [{ name: "ref", required: true }],
1119
+ flags: [{ name: "--user" }, { name: "--project" }],
1120
+ },
1121
+ remove: {
1122
+ positionals: [{ name: "ref", required: true }],
1123
+ flags: [{ name: "--user" }, { name: "--project" }],
1124
+ },
1125
+ import: {
1126
+ positionals: [{ name: "path-or-url", required: true }],
1127
+ flags: [{ name: "--user" }, { name: "--project" }],
1128
+ },
1129
+ reload: {},
972
1130
  },
973
1131
  },
974
1132
  fromArgs(parsed) {
975
- if (parsed.error) return { kind: "usage-error", command: "resources", reason: parsed.error };
976
- if (parsed.subcommand === undefined || parsed.subcommand === "skills")
977
- return { kind: "resources", family: "skills" };
978
- if (parsed.subcommand === "prompts") return { kind: "resources", family: "prompts" };
979
- if (parsed.subcommand === "extensions") {
980
- const action = parsed.positionals[0];
981
- if (action === undefined) return { kind: "resources", family: "extensions" };
982
- if (action === "reload") return { kind: "resources", family: "extensions", action: "reload" };
983
- return { kind: "usage-error", command: "resources", reason: `Unknown action: ${action} (one of reload)` };
984
- }
985
- const tab = parsed.positionals[0];
986
- if (tab === undefined) return { kind: "resources" };
987
- if (!isLibraryTab(tab)) {
988
- const known = LIBRARY_TABS.map((entry) => entry.id).join(", ");
989
- return { kind: "usage-error", command: "resources", reason: `Unknown kind: ${tab} (one of ${known})` };
990
- }
991
- return { kind: "resources", tab };
1133
+ if (parsed.error) return { kind: "usage-error", command: "library", reason: parsed.error };
1134
+ if (parsed.flags.has("--user") && parsed.flags.has("--project"))
1135
+ return { kind: "usage-error", command: "library", reason: "Choose one destination: --user or --project" };
1136
+ const scope = parsed.flags.has("--project")
1137
+ ? ("project" as const)
1138
+ : parsed.flags.has("--user")
1139
+ ? ("user" as const)
1140
+ : undefined;
1141
+ const subcommand = parsed.subcommand;
1142
+ if (subcommand === "reload") return { kind: "resources", family: "plugins", action: "reload" };
1143
+ if (subcommand === "import") {
1144
+ const source = parsed.rest ?? parsed.positionals[0];
1145
+ if (!source)
1146
+ return {
1147
+ kind: "usage-error",
1148
+ command: "library",
1149
+ reason: "/library import needs a directory path or a source URL to review",
1150
+ };
1151
+ return { kind: "resources", tab: "plugin", importSource: source, ...(scope ? { scope } : {}) };
1152
+ }
1153
+ if (subcommand === "inspect" || subcommand === "install" || subcommand === "remove") {
1154
+ const ref = parsed.positionals[0];
1155
+ if (!ref)
1156
+ return {
1157
+ kind: "usage-error",
1158
+ command: "library",
1159
+ reason: `/library ${subcommand} needs a kind:name reference, such as plugin:materio, or a recipe name`,
1160
+ };
1161
+ const prefix = ref.split(":", 1)[0] ?? "";
1162
+ return {
1163
+ kind: "resources",
1164
+ tab: isLibraryKind(prefix) && ref.includes(":") ? prefix : "plugin",
1165
+ focus: ref,
1166
+ ...(subcommand === "inspect" ? {} : { intent: subcommand as LibraryBrowseIntent }),
1167
+ ...(scope ? { scope } : {}),
1168
+ };
1169
+ }
1170
+ if (parsed.error || parsed.positionals.length > 0)
1171
+ return {
1172
+ kind: "usage-error",
1173
+ command: "library",
1174
+ reason:
1175
+ "Use /library to browse, /library inspect|install|remove <ref>, /library import <path-or-url>, or /library reload; /skills, /agents and /prompts open the same browser on their category",
1176
+ };
1177
+ return { kind: "resources", tab: "plugin" };
992
1178
  },
993
1179
  handle(command, ctx) {
994
1180
  if (command.kind !== "resources") return;
995
- if (command.family === "prompts") ctx.openPrompts();
996
- else if (command.family === "extensions") {
1181
+ if (command.family === "plugins") {
1182
+ if (!ctx.reloadPlugins)
1183
+ ctx.notice("warn", "library: reload is unavailable in this session; restart to refresh resources");
1184
+ else {
1185
+ try {
1186
+ const snapshot = ctx.reloadPlugins();
1187
+ ctx.notice("success", `library: generation ${snapshot.generation} committed`);
1188
+ } catch (error) {
1189
+ ctx.notice("error", `library: reload failed: ${error instanceof Error ? error.message : String(error)}`);
1190
+ }
1191
+ }
1192
+ return;
1193
+ }
1194
+ if (command.family === "extensions") {
997
1195
  if (command.action === "reload") reloadExtensionsCommand(ctx);
998
1196
  else ctx.openExtensions();
999
- } else ctx.openSkillsHub?.(command.tab);
1197
+ return;
1198
+ }
1199
+ ctx.openSkillsHub?.({
1200
+ ...(command.tab ? { tab: command.tab } : {}),
1201
+ ...(command.focus ? { focus: command.focus } : {}),
1202
+ ...(command.intent ? { intent: command.intent } : {}),
1203
+ ...(command.importSource ? { importSource: command.importSource } : {}),
1204
+ ...(command.scope ? { scope: command.scope } : {}),
1205
+ });
1206
+ },
1207
+ },
1208
+ {
1209
+ name: "skills",
1210
+ description: "Open the Library on Skills",
1211
+ group: "Inspect",
1212
+ kinds: [],
1213
+ args: {},
1214
+ fromArgs: fromArgsOrUsage("skills", { kind: "resources", tab: "skill" }),
1215
+ handle(_command, ctx) {
1216
+ ctx.openSkillsHub?.({ tab: "skill" });
1217
+ },
1218
+ },
1219
+ {
1220
+ name: "prompts",
1221
+ description: "Open the Library on Prompts",
1222
+ group: "Inspect",
1223
+ kinds: [],
1224
+ args: {},
1225
+ fromArgs: fromArgsOrUsage("prompts", { kind: "resources", tab: "prompt" }),
1226
+ handle(_command, ctx) {
1227
+ ctx.openSkillsHub?.({ tab: "prompt" });
1228
+ },
1229
+ },
1230
+ {
1231
+ name: "extensions",
1232
+ description: "Inspect harness extensions or reload their commands, hooks and operator UI",
1233
+ group: "Inspect",
1234
+ // Harness navigation uses the shared overlay dispatcher, independently of recipe reload.
1235
+ kinds: [],
1236
+ args: { positionals: [{ name: "action", required: false, values: ["reload"] }] },
1237
+ fromArgs(parsed) {
1238
+ if (parsed.error) return { kind: "usage-error", command: "extensions", reason: parsed.error };
1239
+ if (parsed.positionals[0] && parsed.positionals[0] !== "reload")
1240
+ return { kind: "usage-error", command: "extensions", reason: "extensions accepts only reload" };
1241
+ return { kind: "resources", family: "extensions", ...(parsed.positionals[0] ? { action: "reload" as const } : {}) };
1242
+ },
1243
+ handle(command, ctx) {
1244
+ if (command.kind !== "resources" || command.family !== "extensions") return;
1245
+ if (command.action === "reload") reloadExtensionsCommand(ctx);
1246
+ else ctx.openExtensions();
1000
1247
  },
1001
1248
  },
1002
1249
  {
@@ -1338,23 +1585,36 @@ export const BUILTIN_SLASH_COMMANDS: ReadonlyArray<BuiltinSlashCommand> = [
1338
1585
  },
1339
1586
  },
1340
1587
  {
1341
- name: "agents",
1342
- description: "List agents or connect a detected external agent",
1588
+ name: "interop",
1589
+ description: "Inspect coding agents and adopt safe resources",
1343
1590
  group: "Inspect",
1344
1591
  kinds: ["agents"],
1345
- subcommandDescriptions: {
1346
- list: "List native and external agents",
1347
- connect: "Review detected external-agent proposals",
1592
+ args: {},
1593
+ fromArgs(parsed) {
1594
+ if (parsed.error) return { kind: "usage-error", command: "interop", reason: parsed.error };
1595
+ return { kind: "agents", connect: true };
1348
1596
  },
1349
- args: { subcommands: { list: {}, connect: {} } },
1597
+ handle(_command, ctx) {
1598
+ ctx.openInterop?.();
1599
+ },
1600
+ },
1601
+ {
1602
+ name: "agents",
1603
+ description: "Open the Library on Agents",
1604
+ group: "Inspect",
1605
+ kinds: [],
1606
+ args: {},
1350
1607
  fromArgs(parsed) {
1351
- if (parsed.error) return { kind: "usage-error", command: "agents", reason: parsed.error };
1352
- return { kind: "agents", ...(parsed.subcommand === "connect" ? { connect: true } : {}) };
1608
+ if (parsed.error)
1609
+ return {
1610
+ kind: "usage-error",
1611
+ command: "agents",
1612
+ reason: "Use /agents to browse recipes, or /interop to inspect another local agent's resources",
1613
+ };
1614
+ return { kind: "resources", tab: "agent" };
1353
1615
  },
1354
- handle(command, ctx) {
1355
- if (command.kind !== "agents") return;
1356
- if (command.connect) ctx.openInterop?.();
1357
- else ctx.openAgents();
1616
+ handle(_command, ctx) {
1617
+ ctx.openSkillsHub?.({ tab: "agent" });
1358
1618
  },
1359
1619
  },
1360
1620
  {
@@ -2147,6 +2407,12 @@ export function formatExtensionReloadNotice(outcome: ExtensionReloadOutcome): [N
2147
2407
  }
2148
2408
 
2149
2409
  function reloadExtensionsCommand(ctx: SlashCommandContext): void {
2410
+ if (ctx.operatorExtensions) {
2411
+ void ctx.operatorExtensions.reload().then((result) => {
2412
+ if (result.status === "deferred") ctx.notice("info", result.message);
2413
+ });
2414
+ return;
2415
+ }
2150
2416
  if (!ctx.reloadExtensions) {
2151
2417
  ctx.notice("warn", "extensions: reload is unavailable in this session; restart to pick up installed changes");
2152
2418
  return;
@@ -2161,11 +2427,20 @@ function reloadExtensionsCommand(ctx: SlashCommandContext): void {
2161
2427
  export function parseSlashCommand(input: string): SlashCommand {
2162
2428
  const trimmed = input.trim();
2163
2429
  if (trimmed.length === 0) return { kind: "empty" };
2430
+ const retiredLibrary = /^\/(resources|plugins)(?:\s|$)/u.exec(trimmed);
2431
+ if (retiredLibrary) {
2432
+ return {
2433
+ kind: "usage-error",
2434
+ command: retiredLibrary[1] ?? "library",
2435
+ reason: "Use /library to browse and manage recipes; use /extensions for harness extensions",
2436
+ };
2437
+ }
2164
2438
  if (/^\/output(?:\s|$)/u.test(trimmed)) {
2165
2439
  return {
2166
2440
  kind: "usage-error",
2167
2441
  command: "output",
2168
- reason: "Use Alt+O to cycle Output style, or /settings interface to save a default. Use /view for full details",
2442
+ reason:
2443
+ "Use /help for the effective Output cycle keys, or /settings interface to save a default. Use /view for full details",
2169
2444
  };
2170
2445
  }
2171
2446
  if (trimmed.startsWith(COMMAND_ESCAPE)) return { kind: "unknown", text: trimmed.slice(1) };
@@ -2175,7 +2450,8 @@ export function parseSlashCommand(input: string): SlashCommand {
2175
2450
  }
2176
2451
  if (trimmed.startsWith("/")) {
2177
2452
  const token = trimmed.slice(1).split(/\s+/u)[0] ?? "";
2178
- if (COMMAND_SHAPED_TOKEN.test(token)) return { kind: "unknown-command", token, text: trimmed };
2453
+ if (COMMAND_SHAPED_TOKEN.test(token) || isExtensionCommandToken(token))
2454
+ return { kind: "unknown-command", token, text: trimmed };
2179
2455
  }
2180
2456
  return { kind: "unknown", text: trimmed };
2181
2457
  }
@@ -2203,9 +2479,49 @@ export function dispatchSlashCommand(command: SlashCommand, ctx: SlashCommandCon
2203
2479
  ctx.submitChat(command.text);
2204
2480
  return "accepted";
2205
2481
  }
2482
+ // A display-only template is answered here, for the operator, and the
2483
+ // model is never told it was asked: no turn, no session entry, no tokens.
2484
+ if (expansion?.expanded === false && expansion.display) {
2485
+ const { template, text } = expansion.display;
2486
+ const card: PromptReferenceCard = {
2487
+ command: template.name,
2488
+ source: promptSourceLabel(template.sourceInfo),
2489
+ text,
2490
+ };
2491
+ if (ctx.showReference) ctx.showReference(card);
2492
+ else ctx.io.stdout(`/${card.command} (${card.source})\n${card.text}\n`);
2493
+ ctx.render();
2494
+ return "accepted";
2495
+ }
2206
2496
  // A template that exists and refused is not a typo. Its reason reaches the
2207
2497
  // operator and nothing reaches the model.
2208
2498
  const refusal = expansion?.expanded === false ? expansion.refusal : undefined;
2499
+ if (!refusal && isExtensionCommandToken(command.token) && ctx.operatorExtensions) {
2500
+ const runtime = ctx.operatorExtensions;
2501
+ const promptNames = ctx.listPrompts().items.map((prompt) => prompt.name);
2502
+ const row = runtime.commands(promptNames).find((row) => row.invocation === command.token);
2503
+ if (!row?.available) {
2504
+ ctx.notice("error", row?.reason ?? `/${command.token} is not an available extension command`);
2505
+ ctx.render();
2506
+ return "rejected";
2507
+ }
2508
+ const args = command.text.slice(command.token.length + 1).trim();
2509
+ const runLocal = ctx.runLocalOperation ?? ((operation: () => Promise<void>) => void operation());
2510
+ runLocal(async () => {
2511
+ try {
2512
+ const output = await runtime.invoke(
2513
+ command.token,
2514
+ args,
2515
+ ctx.listPrompts().items.map((prompt) => prompt.name),
2516
+ );
2517
+ if (ctx.showExtensionOutput) ctx.showExtensionOutput(command.token, output);
2518
+ else ctx.io.stdout(`${output.text}\n`);
2519
+ } catch (error) {
2520
+ ctx.notice("error", `${command.token}: ${error instanceof Error ? error.message : String(error)}`);
2521
+ }
2522
+ });
2523
+ return "accepted";
2524
+ }
2209
2525
  ctx.notice("error", refusal ? refusal.message : `/${command.token} is not a command. Type /help for the list.`);
2210
2526
  ctx.render();
2211
2527
  return "rejected";
@@ -2213,14 +2529,17 @@ export function dispatchSlashCommand(command: SlashCommand, ctx: SlashCommandCon
2213
2529
  if (command.kind === "usage-error") {
2214
2530
  const entry = BUILTIN_SLASH_COMMANDS.find((candidate) => candidate.name === command.command);
2215
2531
  const usage = entry ? ` ${usageNotice(entry)}` : "";
2216
- ctx.notice("error", `${command.reason}.${usage}`);
2532
+ const reason =
2533
+ command.command === "output" && ctx.keyboardActions
2534
+ ? `Use ${ctx.keyboardActions.outputLabel()} to cycle Output style, or /settings interface to save a default`
2535
+ : command.reason;
2536
+ ctx.notice("error", `${reason}.${usage}`);
2217
2537
  ctx.render();
2218
2538
  return "rejected";
2219
2539
  }
2220
2540
  const entry = HANDLER_BY_KIND.get(command.kind);
2221
2541
  if (!entry) return "rejected";
2222
- entry.handle(command, ctx);
2223
- return "accepted";
2542
+ return entry.handle(command, ctx) === "rejected" ? "rejected" : "accepted";
2224
2543
  }
2225
2544
 
2226
2545
  export interface CommandReferenceEntry {
@@ -2244,6 +2563,7 @@ const COMMAND_ORDER = [
2244
2563
  "share",
2245
2564
  "skill",
2246
2565
  "agents",
2566
+ "interop",
2247
2567
  "tasks",
2248
2568
  "context",
2249
2569
  "memory",
@@ -2251,7 +2571,10 @@ const COMMAND_ORDER = [
2251
2571
  "panes",
2252
2572
  "cost",
2253
2573
  "decisions",
2254
- "resources",
2574
+ "library",
2575
+ "skills",
2576
+ "prompts",
2577
+ "extensions",
2255
2578
  "help",
2256
2579
  "model",
2257
2580
  "thinking",