@iowarp/clio-coder 0.4.5 → 0.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (700) hide show
  1. package/.claude-plugin/marketplace.json +283 -0
  2. package/CHANGELOG.md +74 -0
  3. package/CONTRIBUTING.md +116 -38
  4. package/NOTICE +24 -0
  5. package/README.md +341 -682
  6. package/dist/{acp-H3CU2HBQ.js → acp-W3Y3TRHD.js} +12 -12
  7. package/dist/{agents-IXQQZ7BD.js → agents-J4ICNLQ3.js} +57 -56
  8. package/dist/assets/codewiki.json +1 -1
  9. package/dist/assets/tui-notices/get-east-asian-width-LICENSE +9 -0
  10. package/dist/assets/tui-notices/marked-LICENSE +44 -0
  11. package/dist/assets/tui-notices/pi-tui-LICENSE +21 -0
  12. package/dist/{auth-R7KYF7N3.js → auth-X2UJUMOC.js} +25 -25
  13. package/dist/{builtins-CRFDQUVP.js → builtins-XLXWWSRF.js} +6 -6
  14. package/dist/{chunk-DZK63TZJ.js → chunk-24S3DN22.js} +336 -612
  15. package/dist/{chunk-NTK3WTHM.js → chunk-24TOGHPO.js} +2 -2
  16. package/dist/{chunk-M6TAYK66.js → chunk-2O2LVQQK.js} +11 -4
  17. package/dist/{chunk-OQM5IVJY.js → chunk-34XHRVKG.js} +3 -3
  18. package/dist/{chunk-LY4N4TTL.js → chunk-3LXJOICS.js} +2 -2
  19. package/dist/{chunk-SE4ZKILO.js → chunk-3XE4NRLF.js} +30 -9
  20. package/dist/{chunk-YYB3MC65.js → chunk-4MFBBY2Z.js} +3 -3
  21. package/dist/{chunk-5VTJP36Q.js → chunk-4N2RZ4TO.js} +2 -2
  22. package/dist/{chunk-FKIOX6DS.js → chunk-4QKAITQT.js} +10 -5
  23. package/dist/chunk-4UHVS5T7.js +207 -0
  24. package/dist/{chunk-VLPTKCKT.js → chunk-5AJPUR72.js} +6 -6
  25. package/dist/{chunk-5CY4Q6QI.js → chunk-5EQO5NWP.js} +105 -3
  26. package/dist/{chunk-RXIOCVBZ.js → chunk-65BGHOUR.js} +8 -5
  27. package/dist/{chunk-T53XI6I7.js → chunk-6CA2BHOR.js} +2 -2
  28. package/dist/{chunk-HL26ADLH.js → chunk-6CB2IL4N.js} +2 -1
  29. package/dist/{chunk-HR3HPQ76.js → chunk-6LRLOJHQ.js} +3 -3
  30. package/dist/{chunk-HXHFDHB6.js → chunk-6TAATXXH.js} +6 -6
  31. package/dist/{chunk-WFKDPU7U.js → chunk-6YHPAAZR.js} +3 -3
  32. package/dist/{chunk-ZMZQEBKI.js → chunk-7EEGBKV4.js} +11 -11
  33. package/dist/{chunk-BS4GAMUB.js → chunk-A67NR5AT.js} +2 -2
  34. package/dist/{chunk-WJIMKGD6.js → chunk-BAU36233.js} +8 -8
  35. package/dist/{chunk-MDU3C27C.js → chunk-BO4XV5VX.js} +8 -8
  36. package/dist/{chunk-KF6GFW6O.js → chunk-BQQ5MXUC.js} +11 -11
  37. package/dist/{chunk-K6RDB7IA.js → chunk-C3G5PNUO.js} +23 -23
  38. package/dist/{chunk-SRZOW5L2.js → chunk-C6GEXX4L.js} +1 -1
  39. package/dist/{chunk-U2JOLB7O.js → chunk-CE64C5K5.js} +227 -72
  40. package/dist/chunk-CP3HIR5H.js +2119 -0
  41. package/dist/{chunk-BBV5TKE6.js → chunk-CPXGJI2A.js} +2 -2
  42. package/dist/{chunk-5DDOTTG4.js → chunk-CULVKYTK.js} +5 -5
  43. package/dist/{chunk-F34AR6O3.js → chunk-D2T66PDV.js} +6 -6
  44. package/dist/{chunk-NF3BK5WR.js → chunk-DACXIVVF.js} +5 -5
  45. package/dist/{chunk-4SVIVOMC.js → chunk-DLIYANB7.js} +20 -15
  46. package/dist/{chunk-E3BQTQUP.js → chunk-DO7M3LSX.js} +9 -9
  47. package/dist/{chunk-2QPI3TR3.js → chunk-DVJL77SO.js} +2 -2
  48. package/dist/chunk-EM2WNQS2.js +93 -0
  49. package/dist/{chunk-ODUTYZIU.js → chunk-EUEXGXXR.js} +5 -5
  50. package/dist/{chunk-UL36QJX6.js → chunk-EUZRMP4Y.js} +18 -16
  51. package/dist/{chunk-R6MAYTMS.js → chunk-G4LGUTOE.js} +4 -4
  52. package/dist/{chunk-CBSKDFWL.js → chunk-GEVQNST4.js} +2 -2
  53. package/dist/{chunk-XXBQKW32.js → chunk-GFQ7P2UF.js} +7 -7
  54. package/dist/{chunk-SBZX6ARC.js → chunk-GI5RRMAH.js} +14 -14
  55. package/dist/{chunk-KDWLXVMN.js → chunk-GVZFCJHE.js} +343 -113
  56. package/dist/{chunk-633EXGZA.js → chunk-GXIWHXDB.js} +3 -3
  57. package/dist/{chunk-LUL5Z66S.js → chunk-HOX4YZ2K.js} +6 -5
  58. package/dist/chunk-HRAKUPIH.js +57 -0
  59. package/dist/{chunk-KYKNBD4Y.js → chunk-IJMW64DX.js} +978 -258
  60. package/dist/{chunk-DIMRLNIC.js → chunk-IMOD2YPV.js} +16 -9
  61. package/dist/{chunk-6CDNRHWH.js → chunk-IQCNVLO6.js} +28 -8
  62. package/dist/{chunk-UTUNT5QL.js → chunk-ISNCCX42.js} +9 -9
  63. package/dist/{chunk-RLTT5GVY.js → chunk-IZYTT3CD.js} +9 -5
  64. package/dist/{chunk-5ZMXGW7P.js → chunk-KAFMW7WM.js} +4 -85
  65. package/dist/chunk-KKEYGFX4.js +915 -0
  66. package/dist/{chunk-HHVJNVUJ.js → chunk-KS7ETA3P.js} +2 -2
  67. package/dist/{chunk-UXAC2FX4.js → chunk-L3Z5ANCV.js} +7 -7
  68. package/dist/{chunk-EHCPSZJF.js → chunk-LBFQMYS3.js} +2 -2
  69. package/dist/{chunk-QEQISF75.js → chunk-LK2FN5JY.js} +1 -1
  70. package/dist/{chunk-URBGEOH3.js → chunk-M6Z2V6YU.js} +5 -5
  71. package/dist/{chunk-DRD2A54W.js → chunk-MBJO5VNZ.js} +18 -18
  72. package/dist/chunk-MNQN3X6Y.js +595 -0
  73. package/dist/{chunk-GXCCHKN6.js → chunk-MZHXENL7.js} +7 -7
  74. package/dist/chunk-MZNWZUJM.js +1801 -0
  75. package/dist/{chunk-7YJWEF2L.js → chunk-N37QC5FV.js} +5 -5
  76. package/dist/{chunk-WLMSOT73.js → chunk-NCCQ6DVS.js} +7 -7
  77. package/dist/{chunk-TZ7MFRG4.js → chunk-NO7J45X6.js} +170 -53
  78. package/dist/chunk-OH3YYA3B.js +15 -0
  79. package/dist/{chunk-22PQ4TX4.js → chunk-P4DL2LM5.js} +16 -77
  80. package/dist/{chunk-R6MICQYU.js → chunk-PFLOULP3.js} +4 -4
  81. package/dist/{chunk-MC3JSVR6.js → chunk-QJMRYTCX.js} +7 -7
  82. package/dist/{chunk-ILJ7DWGE.js → chunk-QKWL7SYE.js} +12 -12
  83. package/dist/chunk-R2CT5YDO.js +66 -0
  84. package/dist/chunk-RFCKPS2V.js +26 -0
  85. package/dist/{chunk-ONRTXOZY.js → chunk-RTLNFZMD.js} +12 -4
  86. package/dist/{chunk-U7H5WRG5.js → chunk-RXFPB32E.js} +8 -6
  87. package/dist/{chunk-S32UQ5GL.js → chunk-SEDI5K5B.js} +18 -18
  88. package/dist/{chunk-ICO4TQ2F.js → chunk-SELG4SUR.js} +41 -25
  89. package/dist/{chunk-YEJIG7LN.js → chunk-SER7RRAE.js} +27 -832
  90. package/dist/{chunk-K2HL3GBL.js → chunk-T4TY5GG3.js} +165 -15
  91. package/dist/chunk-T7QQBNLH.js +691 -0
  92. package/dist/{chunk-HGSLRG33.js → chunk-TLTGZTXI.js} +3 -3
  93. package/dist/chunk-TZ6UVP2H.js +637 -0
  94. package/dist/{chunk-EWD5P3GK.js → chunk-TZHN5ITX.js} +13 -41
  95. package/dist/{chunk-7TKWWPD7.js → chunk-U3TPUXOQ.js} +398 -253
  96. package/dist/{chunk-GNQRWTMY.js → chunk-UA3W4FGC.js} +6 -6
  97. package/dist/{chunk-O2RQ7LCK.js → chunk-UA6W4XFJ.js} +2 -2
  98. package/dist/chunk-UWD3JD5X.js +709 -0
  99. package/dist/chunk-V4ZKOKRB.js +13433 -0
  100. package/dist/{chunk-NC4KV7EL.js → chunk-VCRVEDUC.js} +5 -5
  101. package/dist/{chunk-I7VLWRK2.js → chunk-VMATUZB6.js} +12 -10
  102. package/dist/{chunk-J2FYEQ5L.js → chunk-VTYHHQ57.js} +2 -2
  103. package/dist/chunk-WB7POC6M.js +891 -0
  104. package/dist/{chunk-GVYWZNRK.js → chunk-WBVKKTUT.js} +2 -2
  105. package/dist/{chunk-EHOSNVVM.js → chunk-WLHX3MM5.js} +6 -2
  106. package/dist/{chunk-SDWNDICN.js → chunk-WN552PKN.js} +573 -316
  107. package/dist/{chunk-TEG3RYVZ.js → chunk-WT5TRMO4.js} +51 -26
  108. package/dist/{chunk-NY6IWDVU.js → chunk-WURGVOZJ.js} +56 -12
  109. package/dist/{chunk-7WUZEB2M.js → chunk-XR3XJN2M.js} +2 -2
  110. package/dist/chunk-XW2UZICE.js +372 -0
  111. package/dist/{chunk-FSTIBAGM.js → chunk-XZ6UFQ52.js} +11 -11
  112. package/dist/chunk-Y3JU5RPK.js +8 -0
  113. package/dist/chunk-YKRJTYNP.js +1143 -0
  114. package/dist/{chunk-7HBHHVCK.js → chunk-YPRSNUTC.js} +2 -2
  115. package/dist/{chunk-PWWSIB2A.js → chunk-ZGIGW4ZG.js} +5 -5
  116. package/dist/cli/index.js +34 -36
  117. package/dist/{clio-5I2IBFYL.js → clio-L2P7S2R2.js} +9 -9
  118. package/dist/{code-nav-YXIAEZVS.js → code-nav-B5LNX4KU.js} +25 -25
  119. package/dist/{components-TNIKXCBH.js → components-63MMQKUT.js} +6 -6
  120. package/dist/{config-Y2JDJ3JJ.js → config-YXARKGTX.js} +81 -77
  121. package/dist/configure-LMVQJ46J.js +85 -0
  122. package/dist/{context-QQ53HSGJ.js → context-7HJEWTTP.js} +92 -48
  123. package/dist/{context-S2EEC3EJ.js → context-XSZKKFBW.js} +14 -14
  124. package/dist/{context-P5YSEO55.js → context-YG2LZDYZ.js} +67 -64
  125. package/dist/{context-clear-TMEQCOTH.js → context-clear-AC5NXHM2.js} +64 -61
  126. package/dist/{context-index-HP2JFUWA.js → context-index-KKTPRV5G.js} +3 -3
  127. package/dist/{context-map-INTXD54D.js → context-map-T7ROR5D5.js} +4 -4
  128. package/dist/{context-working-set-CNLSQN5K.js → context-working-set-F4Q4J3NS.js} +15 -12
  129. package/dist/{detail-5572VLBO.js → detail-H73BEF2N.js} +65 -62
  130. package/dist/{dispatch-runner-FRHD6P2O.js → dispatch-runner-3RY5FSJC.js} +83 -80
  131. package/dist/{doctor-N3LCM2LG.js → doctor-EQYJOGUG.js} +47 -32
  132. package/dist/{eval-BUU3ZOUZ.js → eval-4P7O6CCE.js} +114 -50
  133. package/dist/{evidence-DTGEN456.js → evidence-D6GUSYJW.js} +64 -61
  134. package/dist/{evidence-SQ5DNFEN.js → evidence-O76QF7TZ.js} +69 -65
  135. package/dist/{evolve-IJNUFZDS.js → evolve-H47BCETS.js} +65 -62
  136. package/dist/{extensions-YVRHX6ZI.js → extensions-NNL3ZOCU.js} +98 -20
  137. package/dist/{fleet-ZNNVSYFO.js → fleet-KMNS6NOM.js} +115 -107
  138. package/dist/{fleet-commands-5YE7NPJL.js → fleet-commands-DOWSYCBX.js} +15 -15
  139. package/dist/{fleet-decisions-3SBSCTCW.js → fleet-decisions-S3PTZV2D.js} +9 -9
  140. package/dist/{fleet-graph-6HHPWF5T.js → fleet-graph-F2DE2TME.js} +26 -24
  141. package/dist/{fleet-inspect-JEYMGCGC.js → fleet-inspect-EN2Q6IVB.js} +67 -63
  142. package/dist/{fleet-preflight-QRSHIIDE.js → fleet-preflight-FRLETDD3.js} +3 -3
  143. package/dist/{fleet-validate-4PM4GDDL.js → fleet-validate-B2XDLS57.js} +28 -29
  144. package/dist/{fleet-verify-NJDTHTO3.js → fleet-verify-4JKUWGJ7.js} +64 -61
  145. package/dist/{fleet-view-UP2BWQQY.js → fleet-view-BHJFW26B.js} +67 -63
  146. package/dist/{init-S3GZQ5ZF.js → init-XAT5N5YM.js} +86 -80
  147. package/dist/interop-FVECHFKG.js +246 -0
  148. package/dist/{inventory-K2OZ36YJ.js → inventory-7KFQGLCV.js} +67 -63
  149. package/dist/library-NY2XOT75.js +492 -0
  150. package/dist/library-QAPAO23R.js +306 -0
  151. package/dist/library-import-5Y6MAS3R.js +183 -0
  152. package/dist/library-inventory-JT6HWITQ.js +56 -0
  153. package/dist/library-validation-EQUH25DC.js +42 -0
  154. package/dist/{memory-OQOXQGYD.js → memory-DYVTTCP6.js} +65 -62
  155. package/dist/{models-3IK2Y5WE.js → models-MASFJ6Y2.js} +51 -38
  156. package/dist/{monitor-FTJLTKCQ.js → monitor-YMP4NXJJ.js} +73 -69
  157. package/dist/{orchestrator-N47O7SFD.js → orchestrator-AFQRRTEI.js} +4255 -2845
  158. package/dist/{panes-7BTYH3XQ.js → panes-D3Y2KFG5.js} +4 -4
  159. package/dist/{panes-WPOMEMRH.js → panes-NICTHQCV.js} +7 -7
  160. package/dist/{paths-J3KN7UAO.js → paths-PSFAUIGO.js} +5 -5
  161. package/dist/{preload-65U34NG6.js → preload-5Q7VXRFJ.js} +64 -61
  162. package/dist/{reset-MUVQDLNL.js → reset-7NKZK7JN.js} +11 -9
  163. package/dist/{resources-LM76COAO.js → resources-NILSIZAT.js} +94 -38
  164. package/dist/{run-3VFZQ33N.js → run-BPZGEBZV.js} +131 -114
  165. package/dist/{share-4JUB4BL7.js → share-EZ6ERBMH.js} +31 -28
  166. package/dist/skills-BTVVNYVM.js +100 -0
  167. package/dist/{skills-eval-G6T57L7M.js → skills-eval-UY34MNK7.js} +117 -78
  168. package/dist/{skills-inventory-WLM46PJH.js → skills-inventory-JDHSIA7I.js} +30 -25
  169. package/dist/{slash-commands-GBARG3Y7.js → slash-commands-K4FNQ2AT.js} +53 -49
  170. package/dist/{steer-S7D7IKPU.js → steer-2B3EQGFH.js} +4 -4
  171. package/dist/{support-5VAEC32W.js → support-L2SOL3IE.js} +7 -7
  172. package/dist/{targets-N5REUETU.js → targets-44VKGFLN.js} +69 -47
  173. package/dist/{tasks-6BVY5YZF.js → tasks-3KODKFU7.js} +14 -14
  174. package/dist/{terminal-lease-57UEOJKS.js → terminal-lease-LXA7MMPO.js} +32 -19
  175. package/dist/{tools-6OCQ6SVB.js → tools-3UB7TEVR.js} +7 -7
  176. package/dist/{trace-JHLXWUMN.js → trace-TAMIU4OJ.js} +5 -4
  177. package/dist/{tui-primitives-RCY2HN7G.js → tui-primitives-A6MUW32V.js} +3 -2
  178. package/dist/{uninstall-FXYMFFRT.js → uninstall-QYVRPEM4.js} +9 -9
  179. package/dist/{upgrade-4HD5HAIV.js → upgrade-7PMKM2JH.js} +17 -18
  180. package/dist/{usage-4GWM2WWP.js → usage-6EQV7EQK.js} +77 -73
  181. package/dist/{verifiers-GSKWKWVG.js → verifiers-JLITWSHU.js} +16 -16
  182. package/dist/{verify-3AS3ULCY.js → verify-T7NAEVIG.js} +13 -13
  183. package/dist/{web-fetch-MQN4FH3X.js → web-fetch-W4TNW4Q7.js} +4 -4
  184. package/dist/{wiki-generate-7BV7XWIY.js → wiki-generate-T2TJQJUA.js} +90 -84
  185. package/dist/{with-panes-OFTNAR4Y.js → with-panes-CHFC7HGI.js} +4 -4
  186. package/dist/worker/entry.js +297 -88
  187. package/docs/README.md +43 -0
  188. package/docs/architecture/architecture.md +8 -7
  189. package/docs/architecture/artifact-versions.md +3 -3
  190. package/docs/architecture/context-engine.md +36 -2
  191. package/docs/architecture/library.md +32 -0
  192. package/docs/architecture/middleware-and-components.md +1 -1
  193. package/docs/architecture/model-catalog.md +21 -1
  194. package/docs/architecture/pi-boundary.md +18 -0
  195. package/docs/architecture/prompt-envelope-and-tools.md +5 -5
  196. package/docs/architecture/safety-model.md +21 -2
  197. package/docs/architecture/session-lifecycle.md +12 -1
  198. package/docs/architecture/tui-design.md +153 -39
  199. package/docs/architecture/worker-context.md +106 -0
  200. package/docs/guide/authoring-plugins.md +160 -0
  201. package/docs/guide/built-in-agents.md +5 -5
  202. package/docs/guide/commands-and-modes.md +186 -80
  203. package/docs/guide/configuration-and-targets.md +123 -28
  204. package/docs/guide/configuration-reference.md +36 -38
  205. package/docs/guide/environment-variables.md +2 -2
  206. package/docs/guide/exit-codes-and-output.md +1 -1
  207. package/docs/guide/extensions-and-sharing.md +93 -53
  208. package/docs/guide/fleet-dispatch.md +32 -10
  209. package/docs/guide/glossary.md +2 -2
  210. package/docs/guide/harness-extensions.md +291 -0
  211. package/docs/guide/installation-and-lifecycle.md +53 -20
  212. package/docs/guide/interop.md +243 -0
  213. package/docs/guide/panes-and-files.md +3 -3
  214. package/docs/guide/plugins.md +80 -0
  215. package/docs/guide/resource-library.md +111 -45
  216. package/docs/guide/skills-marketplace.md +35 -72
  217. package/docs/guide/tool-usage.md +19 -7
  218. package/docs/guide/troubleshooting.md +1 -1
  219. package/docs/process/development-pipeline.md +15 -15
  220. package/docs/process/documentation-coverage.md +29 -2
  221. package/docs/process/documentation-guide.md +15 -7
  222. package/docs/process/eval-runner.md +8 -3
  223. package/docs/process/performance-methodology.md +1 -1
  224. package/docs/process/release-cut-checklist.md +22 -6
  225. package/docs/process/scientific-validation.md +23 -0
  226. package/evals/scalar-decision-machinery.ts +1 -1
  227. package/examples/extensions/README.md +67 -0
  228. package/examples/extensions/lab-status/clio-coder-extension.json +14 -0
  229. package/examples/extensions/lab-status/extension.mjs +68 -0
  230. package/examples/extensions/lab-status/jobs.synthetic.json +9 -0
  231. package/examples/extensions/measurements/clio-coder-extension.json +28 -0
  232. package/examples/extensions/measurements/summarize.cjs +23 -0
  233. package/library/README.md +109 -0
  234. package/library/_authoring/templates/agent/README.md +28 -0
  235. package/library/_authoring/templates/agent/agents/benchmark-scout.md +30 -0
  236. package/library/_authoring/templates/agent/plugin.json +23 -0
  237. package/library/_authoring/templates/fleet/README.md +29 -0
  238. package/library/_authoring/templates/fleet/fleets/pipeline-review.md +31 -0
  239. package/library/_authoring/templates/fleet/plugin.json +23 -0
  240. package/library/_authoring/templates/plugin/README.md +37 -0
  241. package/library/_authoring/templates/plugin/agents/data-curator.md +31 -0
  242. package/library/_authoring/templates/plugin/assets/curation-guide.md +22 -0
  243. package/library/_authoring/templates/plugin/plugin.json +42 -0
  244. package/library/_authoring/templates/plugin/prompts/inspect-dataset.md +15 -0
  245. package/library/_authoring/templates/plugin/skills/dataset-curation/SKILL.md +36 -0
  246. package/library/_authoring/templates/plugin/skills/dataset-curation/evals.md +17 -0
  247. package/library/_authoring/templates/prompt/README.md +28 -0
  248. package/library/_authoring/templates/prompt/plugin.json +23 -0
  249. package/library/_authoring/templates/prompt/prompts/paper-summary.md +26 -0
  250. package/library/_authoring/templates/skill/README.md +24 -0
  251. package/library/_authoring/templates/skill/SKILL.md +39 -0
  252. package/library/_authoring/templates/skill/evals.md +30 -0
  253. package/library/_authoring/templates/skill/plugin.json +23 -0
  254. package/library/agents/README.md +7 -0
  255. package/library/fleets/README.md +7 -0
  256. package/library/plugins/materio/README.md +137 -0
  257. package/library/plugins/materio/ai.iowarp.clio/agents/materio-lab-definer.md +208 -0
  258. package/library/plugins/materio/ai.iowarp.clio/agents/materio-literature-reviewer.md +308 -0
  259. package/library/plugins/materio/ai.iowarp.clio/agents/materio-research-explorer.md +249 -0
  260. package/library/plugins/materio/ai.iowarp.clio/agents/materio-task-executor.md +416 -0
  261. package/library/plugins/materio/ai.iowarp.clio/agents/materio-task-verifier.md +60 -0
  262. package/library/plugins/materio/ai.iowarp.clio/agents/materio-workflow-planner.md +238 -0
  263. package/library/plugins/materio/ai.iowarp.clio/fleets/materio-execute-task.md +50 -0
  264. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/add-task.md +66 -0
  265. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/archive-task.md +65 -0
  266. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/checkpoint.md +26 -0
  267. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/define-research-tasks.md +230 -0
  268. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/define-virtual-lab.md +181 -0
  269. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/execute-task.md +292 -0
  270. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/help.md +129 -0
  271. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/identify-research.md +206 -0
  272. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/literature-review.md +201 -0
  273. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/pause-research.md +12 -0
  274. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/progress.md +105 -0
  275. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/remove-task.md +63 -0
  276. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/resume-research.md +64 -0
  277. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/settings.md +16 -0
  278. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/status.md +92 -0
  279. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/upload-data.md +104 -0
  280. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/wtfp.md +145 -0
  281. package/library/plugins/materio/ai.iowarp.clio/references/execution.md +56 -0
  282. package/library/plugins/materio/ai.iowarp.portability/provenance.json +9 -0
  283. package/library/plugins/materio/assets/actions/add-task.md +86 -0
  284. package/library/plugins/materio/assets/actions/archive-task.md +84 -0
  285. package/library/plugins/materio/assets/actions/checkpoint.md +47 -0
  286. package/library/plugins/materio/assets/actions/define-research-tasks.md +228 -0
  287. package/library/plugins/materio/assets/actions/define-virtual-lab.md +179 -0
  288. package/library/plugins/materio/assets/actions/execute-task.md +290 -0
  289. package/library/plugins/materio/assets/actions/help.md +140 -0
  290. package/library/plugins/materio/assets/actions/identify-research.md +204 -0
  291. package/library/plugins/materio/assets/actions/literature-review.md +199 -0
  292. package/library/plugins/materio/assets/actions/pause-research.md +34 -0
  293. package/library/plugins/materio/assets/actions/progress.md +125 -0
  294. package/library/plugins/materio/assets/actions/remove-task.md +82 -0
  295. package/library/plugins/materio/assets/actions/resume-research.md +84 -0
  296. package/library/plugins/materio/assets/actions/settings.md +38 -0
  297. package/library/plugins/materio/assets/actions/status.md +112 -0
  298. package/library/plugins/materio/assets/actions/upload-data.md +123 -0
  299. package/library/plugins/materio/assets/actions/wtfp.md +179 -0
  300. package/library/plugins/materio/assets/references/research-domains.md +134 -0
  301. package/library/plugins/materio/assets/references/research-policy.md +77 -0
  302. package/library/plugins/materio/assets/references/traditional-workflows.md +146 -0
  303. package/library/plugins/materio/assets/scripts/check_physics.py +271 -0
  304. package/library/plugins/materio/assets/scripts/check_scripts.py +248 -0
  305. package/library/plugins/materio/assets/scripts/project_plugin.py +165 -0
  306. package/library/plugins/materio/assets/scripts/research_state.py +400 -0
  307. package/library/plugins/materio/assets/scripts/verify_citations.py +616 -0
  308. package/library/plugins/materio/assets/templates/RESEARCH.md +39 -0
  309. package/library/plugins/materio/assets/templates/VIRTUAL-LAB.md +120 -0
  310. package/library/plugins/materio/assets/templates/WORKFLOW.md +42 -0
  311. package/library/plugins/materio/assets/templates/config.json +5 -0
  312. package/library/plugins/materio/evals/scripts.yaml +29 -0
  313. package/library/plugins/materio/plugin.json +530 -0
  314. package/library/plugins/materio/skills/materio-lab-definer/SKILL.md +74 -0
  315. package/library/plugins/materio/skills/materio-literature-reviewer/SKILL.md +64 -0
  316. package/library/plugins/materio/skills/materio-research-explorer/SKILL.md +74 -0
  317. package/library/plugins/materio/skills/materio-task-executor/SKILL.md +214 -0
  318. package/library/plugins/materio/skills/materio-task-verifier/SKILL.md +46 -0
  319. package/library/plugins/materio/skills/materio-workflow-planner/SKILL.md +79 -0
  320. package/library/plugins/materio/tests/test_check_physics.py +139 -0
  321. package/library/plugins/materio/tests/test_check_scripts.py +140 -0
  322. package/library/plugins/materio/tests/test_research_state.py +291 -0
  323. package/library/plugins/materio/tests/test_verify_citations.py +337 -0
  324. package/library/prompts/README.md +7 -0
  325. package/library/registry.yaml +921 -0
  326. package/library/skills/README.md +120 -0
  327. package/{skills → library/skills}/coding/ast-grep/SKILL.md +1 -1
  328. package/{skills → library/skills}/coding/ast-grep/evals.md +1 -1
  329. package/library/skills/coding/ast-grep/plugin.json +23 -0
  330. package/{skills → library/skills}/coding/coding-standards/SKILL.md +1 -1
  331. package/{skills → library/skills}/coding/coding-standards/evals.md +1 -1
  332. package/library/skills/coding/coding-standards/plugin.json +23 -0
  333. package/{skills → library/skills}/coding/prototype/SKILL.md +1 -1
  334. package/{skills → library/skills}/coding/prototype/evals.md +1 -1
  335. package/library/skills/coding/prototype/plugin.json +23 -0
  336. package/{skills → library/skills}/coding/tdd/SKILL.md +1 -1
  337. package/{skills → library/skills}/coding/tdd/evals.md +1 -1
  338. package/library/skills/coding/tdd/plugin.json +23 -0
  339. package/{skills → library/skills}/context/context-handoff/SKILL.md +1 -1
  340. package/{skills → library/skills}/context/context-handoff/evals.md +1 -1
  341. package/library/skills/context/context-handoff/plugin.json +23 -0
  342. package/{skills → library/skills}/context/context-prime/SKILL.md +1 -1
  343. package/{skills → library/skills}/context/context-prime/evals.md +1 -1
  344. package/library/skills/context/context-prime/plugin.json +23 -0
  345. package/{skills → library/skills}/git/branch-closeout/SKILL.md +1 -1
  346. package/library/skills/git/branch-closeout/plugin.json +23 -0
  347. package/{skills → library/skills}/git/file-ticket/SKILL.md +1 -1
  348. package/library/skills/git/file-ticket/plugin.json +23 -0
  349. package/{skills → library/skills}/git/fix-issue/SKILL.md +1 -1
  350. package/library/skills/git/fix-issue/plugin.json +23 -0
  351. package/{skills → library/skills}/git/resolve-merge-conflicts/SKILL.md +1 -1
  352. package/{skills → library/skills}/git/resolve-merge-conflicts/evals.md +1 -1
  353. package/library/skills/git/resolve-merge-conflicts/plugin.json +23 -0
  354. package/{skills → library/skills}/git/ship/SKILL.md +1 -1
  355. package/library/skills/git/ship/plugin.json +23 -0
  356. package/{skills → library/skills}/git/worktree-create/SKILL.md +1 -1
  357. package/library/skills/git/worktree-create/plugin.json +23 -0
  358. package/{skills → library/skills}/git/worktree-merge/SKILL.md +1 -1
  359. package/library/skills/git/worktree-merge/plugin.json +23 -0
  360. package/{skills → library/skills}/meta/clio-coder-dev/SKILL.md +1 -1
  361. package/{skills → library/skills}/meta/clio-coder-dev/evals.md +1 -1
  362. package/library/skills/meta/clio-coder-dev/plugin.json +23 -0
  363. package/{skills → library/skills}/meta/clio-coder-test/SKILL.md +1 -1
  364. package/{skills → library/skills}/meta/clio-coder-test/evals.md +1 -1
  365. package/library/skills/meta/clio-coder-test/plugin.json +23 -0
  366. package/{skills → library/skills}/meta/credentials/SKILL.md +1 -1
  367. package/{skills → library/skills}/meta/credentials/evals.md +1 -1
  368. package/library/skills/meta/credentials/plugin.json +23 -0
  369. package/library/skills/meta/find-skills/SKILL.md +85 -0
  370. package/library/skills/meta/find-skills/evals.md +65 -0
  371. package/library/skills/meta/find-skills/plugin.json +23 -0
  372. package/{skills → library/skills}/meta/herdr/SKILL.md +1 -1
  373. package/{skills → library/skills}/meta/herdr/evals.md +1 -1
  374. package/library/skills/meta/herdr/plugin.json +23 -0
  375. package/{skills → library/skills}/meta/skill-craft/SKILL.md +23 -9
  376. package/{skills → library/skills}/meta/skill-craft/evals.md +11 -3
  377. package/library/skills/meta/skill-craft/plugin.json +23 -0
  378. package/{skills → library/skills}/planning/archify/SKILL.md +13 -13
  379. package/library/skills/planning/archify/plugin.json +23 -0
  380. package/{skills → library/skills}/planning/architecture/SKILL.md +1 -1
  381. package/{skills → library/skills}/planning/architecture/evals.md +1 -1
  382. package/library/skills/planning/architecture/plugin.json +23 -0
  383. package/{skills → library/skills}/planning/backlog/SKILL.md +1 -1
  384. package/{skills → library/skills}/planning/backlog/evals.md +1 -1
  385. package/library/skills/planning/backlog/plugin.json +23 -0
  386. package/{skills → library/skills}/planning/prd/SKILL.md +1 -1
  387. package/{skills → library/skills}/planning/prd/evals.md +1 -1
  388. package/library/skills/planning/prd/plugin.json +23 -0
  389. package/{skills → library/skills}/planning/product-intent/SKILL.md +1 -1
  390. package/{skills → library/skills}/planning/product-intent/evals.md +1 -1
  391. package/library/skills/planning/product-intent/plugin.json +23 -0
  392. package/{skills → library/skills}/planning/tech-spec/SKILL.md +1 -1
  393. package/{skills → library/skills}/planning/tech-spec/evals.md +1 -1
  394. package/library/skills/planning/tech-spec/plugin.json +23 -0
  395. package/{skills → library/skills}/registry.yaml +7 -7
  396. package/{skills → library/skills}/remote.yaml +1 -1
  397. package/{skills → library/skills}/research/arxiv-literature/SKILL.md +1 -1
  398. package/{skills → library/skills}/research/arxiv-literature/evals.md +1 -1
  399. package/library/skills/research/arxiv-literature/plugin.json +23 -0
  400. package/{skills → library/skills}/research/experiment-protocol/SKILL.md +1 -1
  401. package/{skills → library/skills}/research/experiment-protocol/evals.md +1 -1
  402. package/library/skills/research/experiment-protocol/plugin.json +23 -0
  403. package/{skills → library/skills}/research/scientific-debugging/SKILL.md +1 -1
  404. package/{skills → library/skills}/research/scientific-debugging/evals.md +1 -1
  405. package/library/skills/research/scientific-debugging/plugin.json +23 -0
  406. package/{skills → library/skills}/research/scientific-modernization/SKILL.md +1 -1
  407. package/{skills → library/skills}/research/scientific-modernization/evals.md +1 -1
  408. package/library/skills/research/scientific-modernization/plugin.json +23 -0
  409. package/{skills → library/skills}/skill-marketplace.json +37 -37
  410. package/{skills → library/skills}/workflow/cut-it/SKILL.md +1 -1
  411. package/{skills → library/skills}/workflow/cut-it/evals.md +1 -1
  412. package/library/skills/workflow/cut-it/plugin.json +23 -0
  413. package/{skills → library/skills}/workflow/design-council/SKILL.md +1 -1
  414. package/{skills → library/skills}/workflow/design-council/evals.md +1 -1
  415. package/library/skills/workflow/design-council/plugin.json +23 -0
  416. package/{skills → library/skills}/workflow/grill-me/SKILL.md +1 -1
  417. package/{skills → library/skills}/workflow/grill-me/evals.md +1 -1
  418. package/library/skills/workflow/grill-me/plugin.json +23 -0
  419. package/{skills → library/skills}/workflow/workflow-distiller/SKILL.md +14 -11
  420. package/{skills → library/skills}/workflow/workflow-distiller/evals.md +14 -6
  421. package/library/skills/workflow/workflow-distiller/plugin.json +23 -0
  422. package/package.json +12 -5
  423. package/src/cli/agents.ts +1 -1
  424. package/src/cli/ask.ts +10 -10
  425. package/src/cli/config-inspect.ts +1 -1
  426. package/src/cli/configure-editor.ts +51 -0
  427. package/src/cli/configure-interop.ts +1 -1
  428. package/src/cli/configure-oauth.ts +1 -1
  429. package/src/cli/configure-onboarding.ts +232 -96
  430. package/src/cli/configure-prompts.ts +76 -0
  431. package/src/cli/configure-quick.ts +274 -0
  432. package/src/cli/configure-target.ts +14 -2
  433. package/src/cli/configure.ts +415 -176
  434. package/src/cli/eval.ts +40 -6
  435. package/src/cli/extensions.ts +74 -8
  436. package/src/cli/fleet-preflight.ts +2 -0
  437. package/src/cli/fleet.ts +2 -0
  438. package/src/cli/index.ts +1 -3
  439. package/src/cli/interop-inspect.ts +61 -33
  440. package/src/cli/interop.ts +79 -9
  441. package/src/cli/library-import.ts +139 -0
  442. package/src/cli/library.ts +418 -120
  443. package/src/cli/oauth-manual-input.ts +1 -1
  444. package/src/cli/reset.ts +2 -0
  445. package/src/cli/run.ts +26 -9
  446. package/src/cli/select.ts +35 -4
  447. package/src/cli/skills-eval.ts +43 -6
  448. package/src/cli/skills-inventory.ts +6 -2
  449. package/src/cli/skills.ts +44 -491
  450. package/src/cli/upgrade.ts +2 -2
  451. package/src/core/bus-events.ts +5 -0
  452. package/src/core/config.ts +6 -1
  453. package/src/core/defaults.ts +34 -12
  454. package/src/{interactive → core}/external-editor.ts +4 -4
  455. package/src/core/recent-models.ts +2 -2
  456. package/src/core/session-routing.ts +3 -3
  457. package/src/core/state-file-lock.ts +1 -1
  458. package/src/core/tool-names.ts +5 -0
  459. package/src/domains/agents/extension.ts +42 -6
  460. package/src/domains/agents/fleet-commands.ts +92 -1
  461. package/src/domains/agents/fleet-contract.ts +87 -19
  462. package/src/domains/agents/recipe.ts +5 -4
  463. package/src/domains/agents/registry.ts +80 -24
  464. package/src/domains/config/classify.ts +1 -1
  465. package/src/domains/config/keybindings.ts +156 -124
  466. package/src/domains/context/worker/contract.ts +91 -0
  467. package/src/domains/context/worker/pressure.ts +120 -0
  468. package/src/domains/context/worker/recall.ts +62 -0
  469. package/src/domains/context/worker/select.ts +164 -0
  470. package/src/domains/context/worker/snapshot.ts +35 -0
  471. package/src/domains/context/worker/store.ts +16 -0
  472. package/src/domains/context/working-set/replay/synthetic.ts +2 -1
  473. package/src/domains/dispatch/active-route-planner.ts +2 -0
  474. package/src/domains/dispatch/backoff.ts +1 -0
  475. package/src/domains/dispatch/code-step.ts +12 -2
  476. package/src/domains/dispatch/contract.ts +3 -0
  477. package/src/domains/dispatch/execution-plan.ts +2 -0
  478. package/src/domains/dispatch/extension.ts +109 -27
  479. package/src/domains/dispatch/fleet-plan.ts +10 -0
  480. package/src/domains/dispatch/fleet-run.ts +1 -0
  481. package/src/domains/dispatch/orphan-recovery.ts +1 -0
  482. package/src/domains/dispatch/receipt-integrity.ts +4 -0
  483. package/src/domains/dispatch/state.ts +1 -0
  484. package/src/domains/dispatch/types.ts +5 -0
  485. package/src/domains/dispatch/validation.ts +12 -0
  486. package/src/domains/dispatch/workspace-checkpoint.ts +1 -1
  487. package/src/domains/evidence/failure-attribution.ts +1 -0
  488. package/src/domains/evidence/trust-status.ts +22 -3
  489. package/src/domains/extensions/command-schema.ts +145 -0
  490. package/src/domains/extensions/command-tools.ts +15 -0
  491. package/src/domains/extensions/compatibility.ts +7 -0
  492. package/src/domains/extensions/contract.ts +0 -4
  493. package/src/domains/extensions/discovery.ts +69 -205
  494. package/src/domains/extensions/extension.ts +0 -4
  495. package/src/domains/extensions/index.ts +1 -5
  496. package/src/domains/extensions/manager.ts +1 -6
  497. package/src/domains/extensions/operator-commands.ts +29 -0
  498. package/src/domains/extensions/operator-runtime.ts +483 -0
  499. package/src/domains/extensions/public-api.ts +53 -0
  500. package/src/domains/extensions/runtime-child.mjs +114 -0
  501. package/src/domains/extensions/runtime-process.ts +306 -0
  502. package/src/domains/extensions/runtime-schema.ts +146 -0
  503. package/src/domains/extensions/{resources.ts → snapshot-access.ts} +1 -17
  504. package/src/domains/extensions/snapshot.ts +4 -32
  505. package/src/domains/extensions/state.ts +5 -83
  506. package/src/domains/extensions/types.ts +33 -34
  507. package/src/domains/interop/adopt.ts +546 -0
  508. package/src/domains/interop/detect.ts +50 -12
  509. package/src/domains/interop/foreign.ts +554 -0
  510. package/src/domains/interop/import.ts +277 -0
  511. package/src/domains/interop/index.ts +24 -0
  512. package/src/domains/interop/install.ts +6 -0
  513. package/src/domains/interop/inventory.ts +351 -0
  514. package/src/domains/interop/projection.ts +360 -0
  515. package/src/domains/interop/registry.ts +106 -3
  516. package/src/domains/interop/types.ts +51 -0
  517. package/src/domains/lifecycle/migrations/index.ts +0 -2
  518. package/src/domains/lifecycle/naming-resources.ts +1 -1
  519. package/src/domains/middleware/marketplace-offer.ts +1 -1
  520. package/src/domains/mux/contract.ts +1 -1
  521. package/src/domains/plugins/catalog.ts +204 -0
  522. package/src/domains/plugins/contract.ts +24 -0
  523. package/src/domains/plugins/discovery.ts +316 -0
  524. package/src/domains/plugins/extension.ts +40 -0
  525. package/src/domains/plugins/index.ts +77 -0
  526. package/src/domains/plugins/integrity.ts +6 -0
  527. package/src/domains/plugins/manifest.ts +3 -0
  528. package/src/domains/plugins/resources.ts +102 -0
  529. package/src/domains/plugins/state.ts +753 -0
  530. package/src/domains/plugins/types.ts +217 -0
  531. package/src/domains/prompts/extension.ts +9 -2
  532. package/src/domains/prompts/fragments/operating/skills.md +10 -10
  533. package/src/domains/providers/probe/fingerprint.ts +13 -6
  534. package/src/domains/providers/probe/reasoning.ts +2 -0
  535. package/src/domains/providers/runtimes/common/probe-helpers.ts +23 -7
  536. package/src/domains/providers/runtimes/protocol/anthropic-compat.ts +7 -2
  537. package/src/domains/providers/runtimes/protocol/openai-compat.ts +10 -4
  538. package/src/domains/resources/common-loader.ts +9 -6
  539. package/src/domains/resources/index.ts +67 -0
  540. package/src/domains/resources/library-actions.ts +836 -0
  541. package/src/domains/resources/library-evals.ts +38 -0
  542. package/src/domains/resources/library-inventory.ts +1048 -0
  543. package/src/domains/resources/library-types.ts +50 -0
  544. package/src/domains/resources/library-validation.ts +634 -0
  545. package/src/domains/resources/library.ts +437 -156
  546. package/src/domains/resources/package-references.ts +66 -0
  547. package/src/domains/resources/prompts/loader.ts +75 -41
  548. package/src/domains/resources/skills/install.ts +2 -2
  549. package/src/domains/resources/skills/loader.ts +77 -22
  550. package/src/domains/resources/skills/marketplace.ts +48 -57
  551. package/src/domains/resources/skills/promotion.ts +2 -2
  552. package/src/domains/resources/skills/provenance-pin.ts +17 -4
  553. package/src/domains/safety/action-classifier.ts +2 -2
  554. package/src/domains/safety/default-path-policy.ts +3 -1
  555. package/src/domains/safety/policy-engine.ts +1 -1
  556. package/src/domains/safety/protected-artifacts.ts +21 -5
  557. package/src/domains/safety/skill-authority.ts +5 -2
  558. package/src/domains/share/archive.ts +1 -1
  559. package/src/engine/apis/openai-completions.ts +52 -2
  560. package/src/engine/notices/pi-tui-LICENSE +21 -0
  561. package/src/engine/tui.ts +3 -0
  562. package/src/engine/worker-runtime.ts +58 -14
  563. package/src/engine/worker-tools.ts +5 -0
  564. package/src/entry/orchestrator.ts +26 -5
  565. package/src/entry/plugin-reload.ts +18 -0
  566. package/src/interactive/application-controller.ts +68 -52
  567. package/src/interactive/chat-loop.ts +32 -5
  568. package/src/interactive/chat-panel.ts +168 -638
  569. package/src/interactive/chat-renderer.ts +13 -30
  570. package/src/interactive/clio-editor.ts +53 -21
  571. package/src/interactive/command-output.ts +56 -1
  572. package/src/interactive/dispatch-board.ts +1 -3
  573. package/src/interactive/editor-submit.ts +73 -59
  574. package/src/interactive/fleet-run-preview.ts +2 -0
  575. package/src/interactive/follow-up-queue-panel.ts +3 -3
  576. package/src/interactive/footer/dashboard.ts +12 -4
  577. package/src/interactive/footer/notifications.ts +2 -2
  578. package/src/interactive/footer/widgets.ts +52 -93
  579. package/src/interactive/interactive-application.ts +225 -63
  580. package/src/interactive/interactive-event-projection.ts +2 -44
  581. package/src/interactive/interactive-input-runtime.ts +257 -35
  582. package/src/interactive/interactive-presentation.ts +71 -21
  583. package/src/interactive/interactive-slash-runtime.ts +40 -48
  584. package/src/interactive/keybinding-manager.ts +156 -79
  585. package/src/interactive/keyboard-owner.ts +37 -0
  586. package/src/interactive/layout.ts +29 -4
  587. package/src/interactive/leader-key.ts +49 -102
  588. package/src/interactive/leader-menu.ts +45 -0
  589. package/src/interactive/overlay-ask-user-lifecycle.ts +9 -1
  590. package/src/interactive/overlay-frame.ts +15 -0
  591. package/src/interactive/overlay-general-openers.ts +2 -0
  592. package/src/interactive/overlay-key-routing.ts +46 -47
  593. package/src/interactive/overlay-lifecycle.ts +31 -15
  594. package/src/interactive/overlay-resource-openers.ts +56 -46
  595. package/src/interactive/overlay-session-lifecycle.ts +1 -1
  596. package/src/interactive/overlays/ask-user.ts +630 -556
  597. package/src/interactive/overlays/extension-panel.ts +70 -0
  598. package/src/interactive/overlays/extensions.ts +28 -5
  599. package/src/interactive/overlays/fleet-run-approval.ts +7 -3
  600. package/src/interactive/overlays/help-reference.ts +89 -40
  601. package/src/interactive/overlays/interop.ts +122 -3
  602. package/src/interactive/overlays/keybinding-detail.ts +2 -2
  603. package/src/interactive/overlays/library-lifecycle.ts +90 -0
  604. package/src/interactive/overlays/library-model.ts +574 -0
  605. package/src/interactive/overlays/library-review.ts +557 -0
  606. package/src/interactive/overlays/library-tabs.ts +3 -15
  607. package/src/interactive/overlays/library.ts +602 -0
  608. package/src/interactive/overlays/list-overlay.ts +218 -39
  609. package/src/interactive/overlays/model-selector.ts +28 -25
  610. package/src/interactive/overlays/session-selector.ts +9 -3
  611. package/src/interactive/overlays/settings.ts +34 -26
  612. package/src/interactive/overlays/tree-selector.ts +16 -11
  613. package/src/interactive/permission-hint.ts +13 -0
  614. package/src/interactive/permission-overlay.ts +77 -28
  615. package/src/interactive/prompt-source-label.ts +21 -0
  616. package/src/interactive/renderers/preview.ts +16 -0
  617. package/src/interactive/renderers/reference-card.ts +35 -0
  618. package/src/interactive/renderers/tool-execution.ts +67 -160
  619. package/src/interactive/renderers/worker-entry.ts +90 -42
  620. package/src/interactive/slash-autocomplete.ts +100 -7
  621. package/src/interactive/slash-commands.ts +396 -105
  622. package/src/interactive/slash-spec.ts +0 -1
  623. package/src/interactive/status/controller.ts +0 -5
  624. package/src/interactive/status/state-machine.ts +44 -26
  625. package/src/interactive/status/types.ts +3 -0
  626. package/src/interactive/status/verbs.ts +13 -12
  627. package/src/interactive/terminal-lease.ts +44 -12
  628. package/src/interactive/transcript-detail.ts +50 -112
  629. package/src/interactive/turn-queues.ts +8 -7
  630. package/src/interactive/turn-runtime.ts +1 -1
  631. package/src/interactive/view/artifacts.ts +4 -0
  632. package/src/interactive/view/view-overlay.ts +58 -43
  633. package/src/interactive/welcome-dashboard.ts +525 -408
  634. package/src/tools/bootstrap.ts +8 -0
  635. package/src/tools/builtin-tool-catalog.ts +7 -2
  636. package/src/tools/context/index.ts +58 -5
  637. package/src/tools/context/library.ts +465 -0
  638. package/src/tools/context/surface.ts +20 -6
  639. package/src/tools/core-bootstrap.ts +3 -0
  640. package/src/tools/dispatch-admission.ts +24 -1
  641. package/src/tools/dispatch-arguments.ts +8 -0
  642. package/src/tools/dispatch-plan.ts +32 -0
  643. package/src/tools/dispatch-schema.ts +31 -1
  644. package/src/tools/dispatch-types.ts +3 -0
  645. package/src/tools/dispatch.ts +1 -1
  646. package/src/tools/harness-extensions.ts +169 -0
  647. package/src/tools/observation.ts +4 -0
  648. package/src/tools/policy.ts +7 -1
  649. package/src/tools/presentation.ts +1 -1
  650. package/src/tools/registry.ts +20 -2
  651. package/src/tools/verify/numeric.ts +4 -4
  652. package/src/tools/worker-evidence.ts +5 -0
  653. package/src/worker/context-seed.ts +192 -0
  654. package/src/worker/entry.ts +1 -0
  655. package/src/worker/spec-contract.ts +8 -1
  656. package/dist/chunk-3UW3KU4A.js +0 -21
  657. package/dist/chunk-6SYEGZI3.js +0 -433
  658. package/dist/chunk-CXQ37WJH.js +0 -45
  659. package/dist/chunk-EQEJJ53P.js +0 -399
  660. package/dist/chunk-KTFSFCVN.js +0 -46
  661. package/dist/chunk-QRFXEO6Y.js +0 -17
  662. package/dist/chunk-T7FDXNRU.js +0 -1257
  663. package/dist/chunk-U7VQ4NI4.js +0 -911
  664. package/dist/configure-SML6UBZ5.js +0 -55
  665. package/dist/interop-YOTGXFJM.js +0 -115
  666. package/dist/library-GJI6W6OK.js +0 -226
  667. package/dist/skills-S36AAJHU.js +0 -510
  668. package/skills/README.md +0 -418
  669. package/skills/meta/find-skills/SKILL.md +0 -78
  670. package/skills/meta/find-skills/evals.md +0 -47
  671. package/src/domains/extensions/resource-path.ts +0 -27
  672. package/src/domains/lifecycle/migrations/2026-09-01-extension-install-digests.ts +0 -27
  673. package/src/interactive/overlays/agents.ts +0 -70
  674. package/src/interactive/overlays/library-install-confirm.ts +0 -152
  675. package/src/interactive/overlays/prompts.ts +0 -89
  676. package/src/interactive/overlays/skills-hub.ts +0 -615
  677. /package/{skills → library/skills}/coding/ast-grep/references/rule_reference.md +0 -0
  678. /package/{skills → library/skills}/coding/prototype/references/LOGIC.md +0 -0
  679. /package/{skills → library/skills}/coding/prototype/references/UI.md +0 -0
  680. /package/{skills → library/skills}/coding/tdd/references/mocking.md +0 -0
  681. /package/{skills → library/skills}/coding/tdd/references/tests.md +0 -0
  682. /package/{skills → library/skills}/context/context-handoff/scripts/new-handoff.sh +0 -0
  683. /package/{skills → library/skills}/git/branch-closeout/evals.md +0 -0
  684. /package/{skills → library/skills}/git/branch-closeout/references/closeout-checklist.md +0 -0
  685. /package/{skills → library/skills}/git/file-ticket/assets/issue-template.md +0 -0
  686. /package/{skills → library/skills}/git/file-ticket/evals.md +0 -0
  687. /package/{skills → library/skills}/git/file-ticket/references/issue-discovery.md +0 -0
  688. /package/{skills → library/skills}/git/fix-issue/evals.md +0 -0
  689. /package/{skills → library/skills}/git/fix-issue/references/diagnosis-and-rca.md +0 -0
  690. /package/{skills → library/skills}/git/resolve-merge-conflicts/references/conflict-matrix.md +0 -0
  691. /package/{skills → library/skills}/git/ship/assets/pr-template.md +0 -0
  692. /package/{skills → library/skills}/git/ship/evals.md +0 -0
  693. /package/{skills → library/skills}/git/ship/references/remote-and-branch-policy.md +0 -0
  694. /package/{skills → library/skills}/git/worktree-create/evals.md +0 -0
  695. /package/{skills → library/skills}/git/worktree-create/references/worktree-setup.md +0 -0
  696. /package/{skills → library/skills}/git/worktree-merge/evals.md +0 -0
  697. /package/{skills → library/skills}/git/worktree-merge/references/merge-strategies.md +0 -0
  698. /package/{skills → library/skills}/meta/clio-coder-test/references/harness.md +0 -0
  699. /package/{skills → library/skills}/meta/clio-coder-test/references/test-map.md +0 -0
  700. /package/{skills → library/skills}/planning/archify/evals.md +0 -0
@@ -0,0 +1,217 @@
1
+ export type PluginScope = "user" | "project";
2
+ export type PluginResourceKind = "skills" | "prompts" | "agents" | "fleets" | "themes";
3
+ export type PluginComponentKind = "prompt" | "agent" | "skill" | "fleet" | "script" | "resource" | "tool";
4
+ export type PluginResources = Partial<Record<PluginResourceKind, string>>;
5
+
6
+ export interface PluginDiagnostic {
7
+ type: "warning" | "error";
8
+ message: string;
9
+ path?: string;
10
+ /** Machine-readable reason for writer refusals; message text is unchanged. */
11
+ code?: PluginDiagnosticCode;
12
+ /** The reviewed fact that changed, for `stale_plan`. */
13
+ changed?: { scope: PluginScope; id: string; fact: keyof PluginExpectedCopy; expected: unknown; observed: unknown };
14
+ }
15
+ export type PluginDiagnosticCode = "stale_plan" | "locked" | "dependents";
16
+
17
+ /**
18
+ * One reviewed copy fact. Every field present is rechecked inside the writer's
19
+ * lock before any write; a mismatch refuses with `stale_plan`.
20
+ */
21
+ export interface PluginExpectedCopy {
22
+ scope: PluginScope;
23
+ id: string;
24
+ /**
25
+ * A full snapshot (default) also fails when a fact appears or disappears.
26
+ * `partial` checks only the facts listed; reserved for the legacy
27
+ * digest-only update path that never reviewed the other facts.
28
+ */
29
+ partial?: boolean;
30
+ /** Install record present in that scope's state.json. */
31
+ recorded: boolean;
32
+ /** Observed full-tree digest, or absent. */
33
+ tree: "absent" | string;
34
+ enabled?: boolean;
35
+ recordedDigest?: string;
36
+ kind?: LibraryEntryKind;
37
+ trust?: PackageTrust;
38
+ /** Compared JSON-equal, so identical bytes with a different origin still stale a plan. */
39
+ origin?: PluginOrigin;
40
+ }
41
+ export interface PluginExpectedState {
42
+ copies: PluginExpectedCopy[];
43
+ }
44
+
45
+ export interface PluginComponent {
46
+ kind: PluginComponentKind;
47
+ id: string;
48
+ path: string;
49
+ requires?: string[];
50
+ }
51
+
52
+ export interface ClioPluginConfiguration {
53
+ manifestVersion: 1;
54
+ /** Absent in portable bundles means plugin. All kinds share the package lifecycle. */
55
+ kind?: LibraryEntryKind;
56
+ requires?: LibraryRequirementRef[];
57
+ /** Contained Suite v2 files, selected explicitly by `clio-coder eval`. */
58
+ evals?: Record<string, string>;
59
+ compatibility?: { clio?: string };
60
+ resources: PluginResources;
61
+ components: PluginComponent[];
62
+ }
63
+
64
+ /** Standard identity stays canonical; `clio` is the validated runtime projection. */
65
+ export interface PluginManifest {
66
+ $schema: string;
67
+ name: string;
68
+ version?: string;
69
+ description?: string;
70
+ author?: { name?: string; email?: string; url?: string };
71
+ homepage?: string;
72
+ repository?: string;
73
+ license?: string;
74
+ keywords?: string[];
75
+ extensions?: Record<string, Record<string, unknown>>;
76
+ clio: ClioPluginConfiguration;
77
+ }
78
+
79
+ export interface PluginCandidate {
80
+ path: string;
81
+ manifestPath?: string;
82
+ manifest?: PluginManifest;
83
+ valid: boolean;
84
+ diagnostics: PluginDiagnostic[];
85
+ contentDigest?: string;
86
+ manifestDigest?: string;
87
+ }
88
+
89
+ /** Format of a foreign package as it was found on disk; author labels never set this. */
90
+ export type ForeignPackageFormat = "portable" | "claude-code" | "codex";
91
+ /**
92
+ * `interop` is a package imported from an installed local agent; `import` is an
93
+ * explicit source path or GitHub tree. Both always carry foreign trust.
94
+ */
95
+ export type PluginOrigin =
96
+ | string
97
+ | { kind: "local" | "catalog" | "github"; source: string }
98
+ | { kind: "interop"; host: string; source: string; format?: ForeignPackageFormat; marketplace?: string }
99
+ | {
100
+ kind: "import";
101
+ source: string;
102
+ transport: "local" | "github";
103
+ format: ForeignPackageFormat;
104
+ host?: string;
105
+ marketplace?: string;
106
+ };
107
+ export function isForeignPluginOrigin(origin: PluginOrigin | undefined): boolean {
108
+ return typeof origin === "object" && (origin.kind === "interop" || origin.kind === "import");
109
+ }
110
+ export type PackageTrust = "trusted" | "foreign";
111
+
112
+ export interface PluginProvenance {
113
+ id: string;
114
+ scope: PluginScope;
115
+ sourcePath?: string;
116
+ canonicalRoot: string;
117
+ manifestDigest: string;
118
+ contentDigest: string;
119
+ }
120
+
121
+ export interface InstalledPlugin {
122
+ id: string;
123
+ kind?: LibraryEntryKind;
124
+ trust?: PackageTrust;
125
+ name: string;
126
+ version: string;
127
+ description: string;
128
+ scope: PluginScope;
129
+ rootPath: string;
130
+ manifestPath: string;
131
+ enabled: boolean;
132
+ valid: boolean;
133
+ compatible: boolean;
134
+ effective: boolean;
135
+ loadable: boolean;
136
+ resources: PluginResources;
137
+ manifest?: PluginManifest;
138
+ provenance?: PluginProvenance;
139
+ observedContentDigest?: string;
140
+ overriddenBy?: PluginScope;
141
+ diagnostics: PluginDiagnostic[];
142
+ }
143
+
144
+ export interface PluginResourceRoot {
145
+ id: string;
146
+ scope: PluginScope;
147
+ path: string;
148
+ rootPath: string;
149
+ source: string;
150
+ provenance: PluginProvenance;
151
+ generation: number;
152
+ trust?: PackageTrust;
153
+ }
154
+
155
+ export interface PluginListOptions {
156
+ cwd?: string;
157
+ scope?: PluginScope;
158
+ all?: boolean;
159
+ }
160
+
161
+ export interface PluginMutationOptions extends PluginListOptions {
162
+ expect?: PluginExpectedState;
163
+ }
164
+
165
+ export interface PluginInstallOptions extends PluginMutationOptions {
166
+ force?: boolean;
167
+ expectedDigest?: string;
168
+ expectedId?: string;
169
+ expectedVersion?: string;
170
+ origin?: PluginOrigin;
171
+ trust?: PackageTrust;
172
+ expectedKind?: LibraryEntryKind;
173
+ }
174
+
175
+ /** One kind-aware publication seam for library and interop adapters. */
176
+ export interface LibraryPackageInstallInput extends Omit<PluginInstallOptions, "expectedKind"> {
177
+ kind: LibraryEntryKind;
178
+ sourcePath: string;
179
+ scope: PluginScope;
180
+ origin: PluginOrigin;
181
+ trust: PackageTrust;
182
+ }
183
+
184
+ export interface PluginMutationResult {
185
+ plugin?: InstalledPlugin;
186
+ removed?: { id: string; scope: PluginScope; path: string };
187
+ recovery?: { stateBackup?: string; packageBackup?: string };
188
+ diagnostics: PluginDiagnostic[];
189
+ }
190
+
191
+ export type PluginInstallResult = PluginMutationResult;
192
+
193
+ export interface PluginInstallRecord {
194
+ kind?: LibraryEntryKind;
195
+ installedAt: string;
196
+ source: string;
197
+ origin?: PluginOrigin;
198
+ contentDigest: string;
199
+ trust?: PackageTrust;
200
+ }
201
+
202
+ export interface PluginState {
203
+ version: 1;
204
+ disabled: string[];
205
+ installed: Record<string, PluginInstallRecord>;
206
+ }
207
+
208
+ export interface PluginSnapshot {
209
+ version: 1;
210
+ generation: number;
211
+ cwd: string;
212
+ digest: string;
213
+ packages: ReadonlyArray<InstalledPlugin>;
214
+ resourceRoots: Readonly<Record<PluginResourceKind, ReadonlyArray<PluginResourceRoot>>>;
215
+ }
216
+
217
+ import type { LibraryEntryKind, LibraryRequirementRef } from "../resources/library-types.js";
@@ -229,10 +229,17 @@ export function createPromptsBundle(
229
229
  // Extension prompt and skill roots feed fragments through the
230
230
  // resources domain; a committed generation with new content means
231
231
  // the table must be rebuilt from the new roots.
232
- unsubscribeExtensionsReload = context.bus.on(BusChannels.ExtensionsReloaded, (payload: unknown) => {
232
+ const onResourceReload = (payload: unknown) => {
233
233
  if ((payload as { changed?: unknown } | undefined)?.changed !== true) return;
234
234
  reload();
235
- });
235
+ };
236
+ const unsubscribe = [
237
+ context.bus.on(BusChannels.ExtensionsReloaded, onResourceReload),
238
+ context.bus.on(BusChannels.PluginsReloaded, () => reload()),
239
+ ];
240
+ unsubscribeExtensionsReload = () => {
241
+ for (const stop of unsubscribe) stop();
242
+ };
236
243
  },
237
244
  async stop() {
238
245
  unsubscribeContextSources?.();
@@ -7,13 +7,13 @@ description: Coordinator skill suggestion discipline; rendered only when context
7
7
  # Skills
8
8
 
9
9
  Skills are operator-activated workflows: git delivery, planning, coding
10
- practice, context priming and handoff, research, and plan stress-testing.
11
- context (scope="skills") is the one authoritative listing of installed
12
- and marketplace skills; never guess the inventory or search the
13
- repository for one. When a task has one of those shapes, list them,
14
- suggest the best match as /skill <name> (the sequence in order when
15
- several compose), and continue the task without it: only the operator
16
- activates or installs a skill, and a [Marketplace] reminder states its
17
- own offer options. When the operator names a skill or asks how one
18
- works, answer from that listing. If nothing fits, proceed normally and
19
- suggest nothing.
10
+ practice, context priming/handoff, research, plan stress-testing.
11
+ context (scope="skills") lists installed and marketplace skills; never
12
+ guess it or search the repository for one. When a task has one of those
13
+ shapes, list them, suggest the best match as /skill <name> (in order
14
+ when several compose), and continue without it: only the operator
15
+ activates or installs a skill; a [Marketplace] reminder states its
16
+ own offer options. When the operator names a skill or asks how it
17
+ works, answer from it. If nothing fits, suggest none. context
18
+ (scope="library") is the read-only catalog of recipes and installable
19
+ packages; it activates nothing.
@@ -3,11 +3,15 @@ export interface NativeRuntimeFingerprint {
3
3
  displayName: string;
4
4
  }
5
5
 
6
- async function fetchWithTimeout(url: string, timeoutMs: number): Promise<Response | null> {
6
+ async function fetchWithTimeout(
7
+ url: string,
8
+ timeoutMs: number,
9
+ headers: Record<string, string>,
10
+ ): Promise<Response | null> {
7
11
  const controller = new AbortController();
8
12
  const timer = setTimeout(() => controller.abort(), timeoutMs);
9
13
  try {
10
- return await fetch(url, { signal: controller.signal });
14
+ return await fetch(url, { signal: controller.signal, headers });
11
15
  } catch {
12
16
  return null;
13
17
  } finally {
@@ -22,10 +26,13 @@ async function fetchWithTimeout(url: string, timeoutMs: number): Promise<Respons
22
26
  * by doctor + configure wizard to steer users onto native runtimes for
23
27
  * resident-model lifecycle.
24
28
  */
25
- export async function fingerprintNativeRuntime(baseUrl: string): Promise<NativeRuntimeFingerprint | null> {
29
+ export async function fingerprintNativeRuntime(
30
+ baseUrl: string,
31
+ headers: Record<string, string> = {},
32
+ ): Promise<NativeRuntimeFingerprint | null> {
26
33
  const normalized = baseUrl.replace(/^ws:/u, "http:").replace(/^wss:/u, "https:");
27
34
  const trimmed = normalized.endsWith("/") ? normalized.slice(0, -1) : normalized;
28
- const greeting = await fetchWithTimeout(`${trimmed}/lmstudio-greeting`, 750);
35
+ const greeting = await fetchWithTimeout(`${trimmed}/lmstudio-greeting`, 750, headers);
29
36
  if (greeting?.ok) {
30
37
  try {
31
38
  const data = (await greeting.json()) as { lmstudio?: unknown };
@@ -34,7 +41,7 @@ export async function fingerprintNativeRuntime(baseUrl: string): Promise<NativeR
34
41
  // The exact JSON body is the fingerprint.
35
42
  }
36
43
  }
37
- const lmStudioV0 = await fetchWithTimeout(`${trimmed}/api/v0/models`, 750);
44
+ const lmStudioV0 = await fetchWithTimeout(`${trimmed}/api/v0/models`, 750, headers);
38
45
  if (lmStudioV0?.ok) {
39
46
  try {
40
47
  const data = (await lmStudioV0.json()) as { data?: unknown };
@@ -48,7 +55,7 @@ export async function fingerprintNativeRuntime(baseUrl: string): Promise<NativeR
48
55
  // A malformed v0 body is not an LM Studio fingerprint.
49
56
  }
50
57
  }
51
- const ollama = await fetchWithTimeout(`${trimmed}/api/version`, 750);
58
+ const ollama = await fetchWithTimeout(`${trimmed}/api/version`, 750, headers);
52
59
  if (ollama?.ok) {
53
60
  try {
54
61
  const data = (await ollama.json()) as { version?: unknown };
@@ -19,6 +19,7 @@ export interface ProbeReasoningOptions {
19
19
  modelId: string;
20
20
  timeoutMs: number;
21
21
  apiKey?: string;
22
+ headers?: Record<string, string>;
22
23
  signal?: AbortSignal;
23
24
  }
24
25
 
@@ -72,6 +73,7 @@ export async function probeOpenAICompatReasoning(opts: ProbeReasoningOptions): P
72
73
 
73
74
  const headers: Record<string, string> = { "content-type": "application/json" };
74
75
  if (opts.apiKey && opts.apiKey.length > 0) headers.authorization = `Bearer ${opts.apiKey}`;
76
+ Object.assign(headers, opts.headers);
75
77
 
76
78
  const body = JSON.stringify({
77
79
  model: opts.modelId,
@@ -8,13 +8,27 @@ export interface OpenAIModelsResponse {
8
8
  data?: Array<Record<string, unknown> & { id?: unknown; status?: unknown }>;
9
9
  }
10
10
 
11
- export async function probeUrl(url: string, ctx: ProbeContext, method: "GET" | "HEAD" = "GET"): Promise<ProbeResult> {
12
- const base = { url, timeoutMs: ctx.httpTimeoutMs, method } as const;
11
+ function bearerHeaders(ctx: ProbeContext): Record<string, string> {
12
+ return ctx.authToken ? { Authorization: `Bearer ${ctx.authToken}` } : {};
13
+ }
14
+
15
+ export async function probeUrl(
16
+ url: string,
17
+ ctx: ProbeContext,
18
+ method: "GET" | "HEAD" = "GET",
19
+ headers: Record<string, string> = bearerHeaders(ctx),
20
+ ): Promise<ProbeResult> {
21
+ const base = { url, timeoutMs: ctx.httpTimeoutMs, method, headers } as const;
13
22
  return ctx.signal ? probeHttp({ ...base, signal: ctx.signal }) : probeHttp(base);
14
23
  }
15
24
 
16
- export async function probeOpenAIModels(base: string, ctx: ProbeContext, modelsPath = "/v1/models"): Promise<string[]> {
17
- return (await probeOpenAIModelCatalog(base, ctx, modelsPath)).models;
25
+ export async function probeOpenAIModels(
26
+ base: string,
27
+ ctx: ProbeContext,
28
+ modelsPath = "/v1/models",
29
+ headers: Record<string, string> = bearerHeaders(ctx),
30
+ ): Promise<string[]> {
31
+ return (await probeOpenAIModelCatalog(base, ctx, modelsPath, headers)).models;
18
32
  }
19
33
 
20
34
  export interface OpenAIModelCatalogProbe {
@@ -38,11 +52,12 @@ async function probeModelDetailRows(
38
52
  base: string,
39
53
  ctx: ProbeContext,
40
54
  modelsPath: string,
55
+ headers: Record<string, string>,
41
56
  ): Promise<Map<string, Record<string, unknown>>> {
42
57
  const rows = new Map<string, Record<string, unknown>>();
43
58
  for (const detailPath of OPENAI_COMPAT_DETAIL_PATHS) {
44
59
  if (detailPath === modelsPath) continue;
45
- const opts = { url: `${base}${detailPath}`, timeoutMs: ctx.httpTimeoutMs } as const;
60
+ const opts = { url: `${base}${detailPath}`, timeoutMs: ctx.httpTimeoutMs, headers } as const;
46
61
  const result = await (ctx.signal
47
62
  ? probeJson<OpenAIModelsResponse>({ ...opts, signal: ctx.signal })
48
63
  : probeJson<OpenAIModelsResponse>(opts));
@@ -60,13 +75,14 @@ export async function probeOpenAIModelCatalog(
60
75
  base: string,
61
76
  ctx: ProbeContext,
62
77
  modelsPath = "/v1/models",
78
+ headers: Record<string, string> = bearerHeaders(ctx),
63
79
  ): Promise<OpenAIModelCatalogProbe> {
64
- const opts = { url: `${base}${modelsPath}`, timeoutMs: ctx.httpTimeoutMs } as const;
80
+ const opts = { url: `${base}${modelsPath}`, timeoutMs: ctx.httpTimeoutMs, headers } as const;
65
81
  const result = await (ctx.signal
66
82
  ? probeJson<OpenAIModelsResponse>({ ...opts, signal: ctx.signal })
67
83
  : probeJson<OpenAIModelsResponse>(opts));
68
84
  if (!result.ok || !result.data?.data) return { models: [], modelCapabilities: {}, modelStates: {} };
69
- const detail = await probeModelDetailRows(base, ctx, modelsPath);
85
+ const detail = await probeModelDetailRows(base, ctx, modelsPath, headers);
70
86
  const models: string[] = [];
71
87
  const modelCapabilities: Record<string, Partial<CapabilityFlags>> = {};
72
88
  const modelStates: Record<string, ProbeModelStatus> = {};
@@ -49,6 +49,11 @@ function synthesizeAnthropicCompatModel(input: AnthropicCompatSynthesisInput): M
49
49
  export function makeAnthropicCompatRuntime(spec: AnthropicCompatSpec): RuntimeDescriptor {
50
50
  const messagesPath = spec.messagesPath ?? "/v1/messages";
51
51
  const modelsPath = spec.modelsPath ?? "/v1/models";
52
+ const headers = (target: TargetDescriptor, ctx: ProbeContext): Record<string, string> => ({
53
+ "anthropic-version": "2023-06-01",
54
+ ...(ctx.authToken ? { "x-api-key": ctx.authToken } : {}),
55
+ ...target.auth?.headers,
56
+ });
52
57
  return {
53
58
  id: spec.id,
54
59
  displayName: spec.displayName,
@@ -61,12 +66,12 @@ export function makeAnthropicCompatRuntime(spec: AnthropicCompatSpec): RuntimeDe
61
66
  async probe(target: TargetDescriptor, ctx: ProbeContext): Promise<ProbeResult> {
62
67
  const base = targetBaseUrl(target);
63
68
  if (!base) return { ok: false, error: "target has no url" };
64
- return probeUrl(`${base}${messagesPath}`, ctx, "HEAD");
69
+ return probeUrl(`${base}${messagesPath}`, ctx, "HEAD", headers(target, ctx));
65
70
  },
66
71
  async probeModels(target: TargetDescriptor, ctx: ProbeContext): Promise<string[]> {
67
72
  const base = targetBaseUrl(target);
68
73
  if (!base) return [];
69
- return probeOpenAIModels(base, ctx, modelsPath);
74
+ return probeOpenAIModels(base, ctx, modelsPath, headers(target, ctx));
70
75
  },
71
76
  synthesizeModel(target: TargetDescriptor, wireModelId: string, kb: KnowledgeBaseHit | null): Model<Api> {
72
77
  return synthesizeAnthropicCompatModel({
@@ -61,6 +61,10 @@ export function makeOpenAICompatRuntime(spec: OpenAICompatSpec): RuntimeDescript
61
61
  // root and a target naming the `/v1` mount point has to be reduced to it. An
62
62
  // `asIs` spec sends the URL verbatim, so it keeps whatever the user typed.
63
63
  const probeBase = asIs ? targetBaseUrl : targetRootUrl;
64
+ const headers = (target: TargetDescriptor, ctx: ProbeContext): Record<string, string> => ({
65
+ ...(ctx.authToken ? { Authorization: `Bearer ${ctx.authToken}` } : {}),
66
+ ...target.auth?.headers,
67
+ });
64
68
  return {
65
69
  id: spec.id,
66
70
  displayName: spec.displayName,
@@ -72,9 +76,9 @@ export function makeOpenAICompatRuntime(spec: OpenAICompatSpec): RuntimeDescript
72
76
  async probe(target: TargetDescriptor, ctx: ProbeContext): Promise<ProbeResult> {
73
77
  const base = probeBase(target);
74
78
  if (!base) return { ok: false, error: "target has no url" };
75
- const health = await probeUrl(`${base}${healthPath}`, ctx);
79
+ const health = await probeUrl(`${base}${healthPath}`, ctx, "GET", headers(target, ctx));
76
80
  if (!health.ok) return health;
77
- const catalog = await probeOpenAIModelCatalog(base, ctx, modelsPath);
81
+ const catalog = await probeOpenAIModelCatalog(base, ctx, modelsPath, headers(target, ctx));
78
82
  const result: ProbeResult = { ...health };
79
83
  if (catalog.models.length > 0) result.models = catalog.models;
80
84
  if (Object.keys(catalog.modelStates).length > 0) result.modelStates = catalog.modelStates;
@@ -92,19 +96,21 @@ export function makeOpenAICompatRuntime(spec: OpenAICompatSpec): RuntimeDescript
92
96
  async probeModels(target: TargetDescriptor, ctx: ProbeContext): Promise<string[]> {
93
97
  const base = probeBase(target);
94
98
  if (!base) return [];
95
- return probeOpenAIModels(base, ctx, modelsPath);
99
+ return probeOpenAIModels(base, ctx, modelsPath, headers(target, ctx));
96
100
  },
97
101
  async probeReasoning(target: TargetDescriptor, modelId: string, ctx: ProbeContext): Promise<ReasoningProbeResult> {
98
102
  const base = probeBase(target);
99
103
  if (!base) return { reasoning: false, latencyMs: 0, error: "target has no url" };
100
104
  const apiKeyEnv = target.auth?.apiKeyEnvVar;
101
- const apiKey = apiKeyEnv && ctx.credentialsPresent.has(apiKeyEnv) ? process.env[apiKeyEnv] : undefined;
105
+ const apiKey =
106
+ ctx.authToken ?? (apiKeyEnv && ctx.credentialsPresent.has(apiKeyEnv) ? process.env[apiKeyEnv] : undefined);
102
107
  const probeOpts: Parameters<typeof probeOpenAICompatReasoning>[0] = {
103
108
  baseUrl: base,
104
109
  modelId,
105
110
  timeoutMs: Math.max(ctx.httpTimeoutMs, 8000),
106
111
  };
107
112
  if (apiKey) probeOpts.apiKey = apiKey;
113
+ if (target.auth?.headers) probeOpts.headers = target.auth.headers;
108
114
  if (ctx.signal) probeOpts.signal = ctx.signal;
109
115
  return probeOpenAICompatReasoning(probeOpts);
110
116
  },
@@ -2,13 +2,14 @@ import { type Dirent, existsSync, readdirSync, statSync } from "node:fs";
2
2
  import path from "node:path";
3
3
  import { parse as parseYaml } from "yaml";
4
4
  import { clioConfigDir } from "../../core/xdg.js";
5
- import { type ExtensionResourceKind, enabledExtensionResourceRoots } from "../extensions/index.js";
5
+ import { enabledPluginResourceRoots, type PluginResourceKind } from "../plugins/index.js";
6
6
  import type { ResourceDiagnostic, ResourceScope, ResourceSourceInfo } from "./collision.js";
7
7
 
8
8
  export interface ResourceRoot {
9
9
  path: string;
10
- /** Package root for safely resolving extension-relative prompt references. */
10
+ /** Package root for safely resolving package-relative prompt references. */
11
11
  rootPath?: string;
12
+ plugin?: boolean;
12
13
  scope: ResourceScope;
13
14
  source?: string;
14
15
  /** Collision rank, higher wins. See {@link ResourceSourceInfo.precedence}. */
@@ -23,7 +24,7 @@ export interface ResourceRoot {
23
24
  * roots exactly the way a foreign skill root does.
24
25
  */
25
26
  export const COMPAT_RESOURCE_PRECEDENCE = {
26
- extension: 10,
27
+ package: 10,
27
28
  userCompat: 20,
28
29
  user: 30,
29
30
  projectCompat: 40,
@@ -42,14 +43,16 @@ export type FrontmatterSplitResult =
42
43
  body: string;
43
44
  };
44
45
 
45
- export function defaultScopedResourceRoots(kind: ExtensionResourceKind, cwd: string): ResourceRoot[] {
46
+ export function defaultScopedResourceRoots(kind: PluginResourceKind, cwd: string): ResourceRoot[] {
46
47
  return [
47
- ...enabledExtensionResourceRoots(kind, cwd).map((root) => ({
48
+ ...enabledPluginResourceRoots(kind, cwd).map((root) => ({
48
49
  path: root.path,
49
50
  rootPath: root.rootPath,
51
+ plugin: true,
50
52
  scope: "package" as const,
51
53
  source: root.source,
52
- precedence: COMPAT_RESOURCE_PRECEDENCE.extension,
54
+ precedence: COMPAT_RESOURCE_PRECEDENCE.package,
55
+ trusted: root.trust !== "foreign",
53
56
  })),
54
57
  {
55
58
  path: path.join(clioConfigDir(), kind),
@@ -20,6 +20,7 @@ export { resolveResourceCollisions } from "./collision.js";
20
20
  export type { ResourceList, ResourcesContract } from "./contract.js";
21
21
  export {
22
22
  classifyLibraryRequirements,
23
+ commitLibraryInstallPlan,
23
24
  confirmLibraryRemote,
24
25
  discoverLibrary,
25
26
  installLibraryPlan,
@@ -28,14 +29,79 @@ export {
28
29
  type LibraryEntry,
29
30
  type LibraryInstallPlan,
30
31
  type LibraryRequirementStatus,
32
+ libraryEntryDrift,
31
33
  libraryEntryInstalled,
32
34
  libraryEntryPin,
33
35
  libraryEntryRef,
34
36
  libraryInstallPath,
37
+ pinLibraryEntry,
35
38
  planLibraryInstall,
39
+ planLibraryUpdate,
40
+ releaseLibraryPlan,
41
+ removeLibraryEntry,
42
+ resolveLibraryPackage,
36
43
  resolveLibraryRequirements,
37
44
  syncLibrary,
38
45
  } from "./library.js";
46
+ export {
47
+ applyLibraryLifecycle,
48
+ type LibraryApplyResult,
49
+ type LibraryExpectedCopy,
50
+ type LibraryLifecyclePlan,
51
+ type LibraryLifecycleRequest,
52
+ type LibraryOperation,
53
+ type LibraryPackageIdentity,
54
+ type LibraryPlanStep,
55
+ type LibraryRefreshHost,
56
+ type LibraryRefreshResult,
57
+ type LibraryStepOutcome,
58
+ type LibraryStepStatus,
59
+ type LibraryStepVerification,
60
+ libraryImportOutcome,
61
+ libraryLifecyclePlanSummary,
62
+ planLibraryLifecycle,
63
+ pluginSnapshotRefreshHost,
64
+ releaseLibraryLifecycle,
65
+ retryLibraryRefresh,
66
+ verifyLibraryStep,
67
+ } from "./library-actions.js";
68
+ export {
69
+ classifyLibraryOrigin,
70
+ inspectLibraryCopy,
71
+ LIBRARY_INVENTORY_LIMITS,
72
+ type LibraryCopy,
73
+ type LibraryCopyInspection,
74
+ type LibraryCopyState,
75
+ type LibraryInventory,
76
+ type LibraryInventoryOptions,
77
+ type LibraryOrigin,
78
+ type LibraryOriginEvidence,
79
+ type LibraryPackageFormat,
80
+ type LibraryPackageRecord,
81
+ type LibraryResource,
82
+ type LibraryResourceAvailability,
83
+ type LibraryResourceKeyParts,
84
+ type LibraryResourceSourceClass,
85
+ libraryCopyState,
86
+ libraryResourceKey,
87
+ parseLibraryResourceKey,
88
+ readLibraryInventory,
89
+ } from "./library-inventory.js";
90
+ export {
91
+ isLibraryResourceKind,
92
+ LIBRARY_RESOURCE_KINDS,
93
+ type LibraryProvidedResource,
94
+ type LibraryResourceKind,
95
+ } from "./library-types.js";
96
+ export {
97
+ type LibraryPackageValidation,
98
+ type LibraryPackageValidationResult,
99
+ type LibraryResourceValidationRecord,
100
+ type LibraryValidationDiagnostic,
101
+ type LibraryValidationPrerequisite,
102
+ type LibraryValidationSeverity,
103
+ validateLibraryPackage,
104
+ } from "./library-validation.js";
39
105
  export { createResourcesLoader, type ResourceLoaderOptions } from "./loader.js";
40
106
  export { ResourcesManifest } from "./manifest.js";
41
107
  export {
@@ -45,6 +111,7 @@ export {
45
111
  type PromptTemplateExpansion,
46
112
  type PromptTemplateList,
47
113
  type PromptTemplateRoot,
114
+ promptTemplateDisplayText,
48
115
  } from "./prompts/loader.js";
49
116
  export { parseCommandArgs, substituteArgs } from "./prompts/substitute.js";
50
117
  export { parseSkillEvals, type SkillEvalParseResult, type SkillEvalScenario } from "./skills/evals.js";