@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,360 @@
1
+ /**
2
+ * Shared per-resource projection for every inbound route: local-agent adoption
3
+ * and explicit foreign package import both turn host text into the same Clio
4
+ * recipe bytes through these helpers. Nothing here writes to a source tree.
5
+ */
6
+ import { createHash } from "node:crypto";
7
+ import { lstatSync, readdirSync, readFileSync, readlinkSync } from "node:fs";
8
+ import path from "node:path";
9
+ import { parse as parseToml } from "smol-toml";
10
+ import { parse as parseYaml, stringify as stringifyYaml } from "yaml";
11
+ import { parseAgentRecipeSchema } from "../agents/index.js";
12
+ import { inventoryText } from "./inventory.js";
13
+
14
+ export const DATA_EXTENSIONS: ReadonlySet<string> = new Set([".md", ".txt", ".rst", ".csv", ".bib"]);
15
+ export const FORBIDDEN_PARTS: ReadonlySet<string> = new Set([
16
+ "hooks",
17
+ "output-styles",
18
+ "scripts",
19
+ "tools",
20
+ "node_modules",
21
+ ".git",
22
+ ".claude-plugin",
23
+ ".codex-plugin",
24
+ ]);
25
+ /** Skill frontmatter keys that describe host execution policy, never recipe text. */
26
+ export const HOST_SKILL_KEYS: ReadonlyArray<string> = [
27
+ "audit",
28
+ "installed-hash",
29
+ "source-url",
30
+ "installed-by",
31
+ "hooks",
32
+ "mcpServers",
33
+ "allowed-tools",
34
+ "tools",
35
+ "context",
36
+ "agent",
37
+ "model",
38
+ "effort",
39
+ "user-invocable",
40
+ "disable-model-invocation",
41
+ "argument-hint",
42
+ "paths",
43
+ "when_to_use",
44
+ ];
45
+ /** Prompt (command) keys Clio reads; every other host key is reported as omitted. */
46
+ const PROMPT_KEYS: ReadonlySet<string> = new Set(["description", "argument-hint", "argumentHint"]);
47
+
48
+ export function safeName(name: string): string {
49
+ const value = name
50
+ .toLowerCase()
51
+ .replace(/[^a-z0-9]+/g, "-")
52
+ .replace(/^-|-$/g, "")
53
+ .slice(0, 45)
54
+ .replace(/-$/u, "");
55
+ if (!value) throw new Error("No safe resource identifier.");
56
+ return value;
57
+ }
58
+
59
+ function safeData(file: string): boolean {
60
+ return !file.split("/").some((part) => FORBIDDEN_PARTS.has(part)) && DATA_EXTENSIONS.has(path.extname(file));
61
+ }
62
+
63
+ /**
64
+ * Bounded text tree. `dataOnly` drops executable, host-specific and non-text
65
+ * files into `omitted` instead of failing; otherwise any of those is fatal.
66
+ */
67
+ /** Names of every regular file below `dir`, relative to `root`; symlinks are listed, never followed. */
68
+ function listFiles(root: string, dir: string, out: string[], depth = 0): void {
69
+ if (depth > 12 || out.length > 4096) return;
70
+ let names: string[];
71
+ try {
72
+ names = readdirSync(dir).sort();
73
+ } catch {
74
+ return;
75
+ }
76
+ for (const name of names) {
77
+ const file = path.join(dir, name);
78
+ const relative = path.relative(root, file).split(path.sep).join("/");
79
+ try {
80
+ const stat = lstatSync(file);
81
+ if (stat.isDirectory()) listFiles(root, file, out, depth + 1);
82
+ else out.push(relative);
83
+ } catch {
84
+ out.push(relative);
85
+ }
86
+ }
87
+ }
88
+
89
+ export function tree(root: string, dataOnly = false, omitted: string[] = []): Record<string, string> {
90
+ const files: Record<string, string> = {};
91
+ let bytes = 0;
92
+ const visit = (dir: string, depth: number): void => {
93
+ if (depth > 12) throw new Error("Source tree exceeds depth limit.");
94
+ if (lstatSync(dir).isSymbolicLink()) throw new Error("Symbolic links are not adoptable.");
95
+ for (const name of readdirSync(dir).sort()) {
96
+ const file = path.join(dir, name);
97
+ const relative = path.relative(root, file).split(path.sep).join("/");
98
+ if (dataOnly && relative.split("/").some((part) => FORBIDDEN_PARTS.has(part) || part === "fleets")) {
99
+ let isDirectory = false;
100
+ try {
101
+ isDirectory = lstatSync(file).isDirectory();
102
+ } catch {
103
+ /* unreadable entries are still listed as omitted */
104
+ }
105
+ if (isDirectory) listFiles(root, file, omitted);
106
+ else omitted.push(relative);
107
+ continue;
108
+ }
109
+ const stat = lstatSync(file);
110
+ if (stat.isSymbolicLink() || (!stat.isDirectory() && !stat.isFile()))
111
+ throw new Error("Symbolic links and special files are not adoptable.");
112
+ if (stat.isDirectory()) visit(file, depth + 1);
113
+ else {
114
+ if (dataOnly && relative !== "plugin.json" && (!safeData(relative) || (stat.mode & 0o111) !== 0)) {
115
+ omitted.push(relative);
116
+ continue;
117
+ }
118
+ if ((stat.mode & 0o111) !== 0) throw new Error(`Executable file is not adoptable: ${path.relative(root, file)}`);
119
+ const text = inventoryText(file);
120
+ bytes += Buffer.byteLength(text);
121
+ if (bytes > 16 * 1024 * 1024 || Object.keys(files).length >= 2048)
122
+ throw new Error("Source tree exceeds adoption limits.");
123
+ files[relative] = text;
124
+ }
125
+ }
126
+ };
127
+ visit(root, 0);
128
+ return files;
129
+ }
130
+
131
+ /**
132
+ * Review fingerprint of an entire source tree: every entry's path, type, mode
133
+ * bits and bounded raw bytes, including hidden vendor manifests and omitted
134
+ * runtime files. A change to policy or dependencies never slips past review
135
+ * merely because the projected text stayed equal.
136
+ */
137
+ export function reviewFingerprint(root: string): string {
138
+ const hash = createHash("sha256");
139
+ let budget = 64 * 1024 * 1024;
140
+ let count = 0;
141
+ const visit = (dir: string, depth: number): void => {
142
+ if (depth > 12) throw new Error("Source tree exceeds depth limit.");
143
+ for (const name of readdirSync(dir).sort()) {
144
+ if (++count > 8192) throw new Error("Source tree exceeds review limits.");
145
+ const file = path.join(dir, name);
146
+ const relative = path.relative(root, file).split(path.sep).join("/");
147
+ const stat = lstatSync(file);
148
+ hash.update(relative).update("\0");
149
+ if (stat.isSymbolicLink()) hash.update(`symlink:${readlinkSync(file)}`);
150
+ else if (stat.isDirectory()) {
151
+ hash.update("dir");
152
+ visit(file, depth + 1);
153
+ } else if (stat.isFile()) {
154
+ hash.update(`file:${stat.mode & 0o777}:${stat.size}:`);
155
+ budget -= stat.size;
156
+ if (budget < 0) throw new Error("Source tree exceeds review limits.");
157
+ hash.update(readFileSync(file));
158
+ } else hash.update("special");
159
+ hash.update("\0");
160
+ }
161
+ };
162
+ visit(root, 0);
163
+ return hash.digest("hex");
164
+ }
165
+
166
+ export function digest(files: Readonly<Record<string, string>>): string {
167
+ const hash = createHash("sha256");
168
+ for (const key of Object.keys(files).sort())
169
+ hash
170
+ .update(key)
171
+ .update("\0")
172
+ .update(files[key] ?? "")
173
+ .update("\0");
174
+ return hash.digest("hex");
175
+ }
176
+
177
+ export function prose(text: string): { metadata: Record<string, unknown>; body: string } {
178
+ const match = /^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)([\s\S]*)$/.exec(text);
179
+ if (!match) return { metadata: {}, body: text };
180
+ const metadata: unknown = parseYaml(match[1] ?? "");
181
+ if (!metadata || typeof metadata !== "object" || Array.isArray(metadata))
182
+ throw new Error("Invalid resource frontmatter.");
183
+ return { metadata: metadata as Record<string, unknown>, body: match[2] ?? "" };
184
+ }
185
+
186
+ export interface ProjectedResource {
187
+ /** Clio resource id, safe for a component id and a file name. */
188
+ id: string;
189
+ /** Name the host would have used to invoke the resource. */
190
+ name: string;
191
+ /** Files relative to the projected package root. */
192
+ files: Record<string, string>;
193
+ componentPath: string;
194
+ omittedFields: string[];
195
+ omittedFiles: string[];
196
+ /** Companion files the retained text refers to; the recipe is unavailable without them. */
197
+ requiredOmissions: string[];
198
+ /** Skill names the host bound to this resource; the caller decides whether they are satisfiable. */
199
+ bindings: string[];
200
+ }
201
+
202
+ /**
203
+ * Project one skill directory. `source` is the bounded text tree of the skill
204
+ * directory; when `lenient` is set, non-text companions are dropped and
205
+ * reported rather than fatal.
206
+ */
207
+ export function projectSkill(input: {
208
+ skillDir: string;
209
+ fallbackName: string;
210
+ lenient?: boolean;
211
+ /** Top-level entries that belong to sibling roots, not to this skill; neither projected nor omitted. */
212
+ excludeTopLevel?: ReadonlySet<string>;
213
+ }): ProjectedResource {
214
+ const rawOmitted: string[] = [];
215
+ const rawSource = input.lenient ? tree(input.skillDir, true, rawOmitted) : tree(input.skillDir);
216
+ const foreign = (file: string): boolean => input.excludeTopLevel?.has(file.split("/")[0] ?? "") === true;
217
+ const source = Object.fromEntries(Object.entries(rawSource).filter(([file]) => !foreign(file)));
218
+ const omittedFiles = rawOmitted.filter((file) => !foreign(file));
219
+ delete source["plugin.json"];
220
+ if (!input.lenient && Object.keys(source).some((file) => !safeData(file)))
221
+ throw new Error("Not adoptable: skill contains executable or non-text companion files.");
222
+ const raw = source["SKILL.md"];
223
+ if (raw === undefined) throw new Error("Skill directory has no SKILL.md.");
224
+ const skill = prose(raw);
225
+ const name = typeof skill.metadata.name === "string" && skill.metadata.name.trim() ? skill.metadata.name.trim() : "";
226
+ if (!input.lenient && (!name || typeof skill.metadata.description !== "string"))
227
+ throw new Error("Skill requires name and description frontmatter.");
228
+ if (typeof skill.metadata.description !== "string" || !skill.metadata.description.trim())
229
+ throw new Error("Skill requires description frontmatter.");
230
+ const actualName = name || input.fallbackName;
231
+ const omittedFields: string[] = [];
232
+ // Never carry a foreign audit stamp across the approval boundary.
233
+ for (const key of ["clio-coder", "clio"]) if (key in skill.metadata) delete skill.metadata[key];
234
+ for (const key of HOST_SKILL_KEYS)
235
+ if (key in skill.metadata) {
236
+ omittedFields.push(key);
237
+ delete skill.metadata[key];
238
+ }
239
+ const id = safeName(actualName);
240
+ const body = skill.body;
241
+ // Deterministic reference check over every retained text, not only SKILL.md.
242
+ const retained = [
243
+ body,
244
+ ...Object.entries(source)
245
+ .filter(([file]) => file !== "SKILL.md")
246
+ .map(([, text]) => text),
247
+ ];
248
+ const requiredOmissions = omittedFiles.filter((file) => {
249
+ const base = path.basename(file);
250
+ return retained.some((text) => text.includes(file) || (base.includes(".") && text.includes(base)));
251
+ });
252
+ source["SKILL.md"] =
253
+ `---\n${stringifyYaml({ ...skill.metadata, name: actualName, "clio-coder": { audit: "unknown" } })}---\n${body}`;
254
+ return {
255
+ id,
256
+ name: actualName,
257
+ files: Object.fromEntries(Object.entries(source).map(([file, text]) => [`skills/${id}/${file}`, text])),
258
+ componentPath: `skills/${id}/SKILL.md`,
259
+ omittedFields,
260
+ omittedFiles,
261
+ requiredOmissions,
262
+ bindings: [],
263
+ };
264
+ }
265
+
266
+ /** Persona-only agent projection; host tools, model, permissions and skill bindings are omitted. */
267
+ export function projectAgent(input: {
268
+ file: string;
269
+ name: string;
270
+ text?: string;
271
+ /** Package-local skill names to bind through the real Clio `skills` field. */
272
+ bindSkills?: ReadonlyArray<string>;
273
+ }): ProjectedResource {
274
+ if (input.text === undefined && (lstatSync(input.file).mode & 0o111) !== 0)
275
+ throw new Error("Executable files are not adoptable.");
276
+ const raw = input.text ?? inventoryText(input.file);
277
+ const parsed = input.file.endsWith(".toml")
278
+ ? (() => {
279
+ const data = parseToml(raw);
280
+ if (typeof data.developer_instructions !== "string") throw new Error("Agent developer_instructions is unknown.");
281
+ return { metadata: data as Record<string, unknown>, body: data.developer_instructions };
282
+ })()
283
+ : prose(raw);
284
+ if (!parsed.body.trim()) throw new Error("Empty resource body.");
285
+ const name =
286
+ typeof parsed.metadata.name === "string" && parsed.metadata.name.trim() ? parsed.metadata.name.trim() : input.name;
287
+ const id = safeName(name);
288
+ const omittedFields = Object.keys(parsed.metadata).filter(
289
+ (key) => !["name", "description", "developer_instructions", ...(input.bindSkills ? ["skills"] : [])].includes(key),
290
+ );
291
+ const metadata: Record<string, unknown> = {
292
+ description: typeof parsed.metadata.description === "string" ? parsed.metadata.description : `Adopted agent ${name}`,
293
+ version: 1,
294
+ name,
295
+ tools: { required: ["read"], optional: ["grep", "find", "ls"] },
296
+ skills: [...(input.bindSkills ?? [])],
297
+ audience: "custom",
298
+ category: "research",
299
+ capabilityClass: "read-only",
300
+ latencyClass: "balanced",
301
+ projectContextTier: "bounded",
302
+ budget: { toolCalls: 24, readReserve: 4, synthesis: true },
303
+ resultContract: { kind: "artifact-report" },
304
+ tags: ["interop"],
305
+ };
306
+ parseAgentRecipeSchema({
307
+ id,
308
+ source: "plugin",
309
+ filepath: input.file,
310
+ body: parsed.body,
311
+ frontmatter: metadata,
312
+ });
313
+ const componentPath = `agents/${id}.md`;
314
+ const declaredSkills = parsed.metadata.skills;
315
+ const bindings = Array.isArray(declaredSkills)
316
+ ? declaredSkills.filter((skill): skill is string => typeof skill === "string")
317
+ : typeof declaredSkills === "string"
318
+ ? declaredSkills
319
+ .split(",")
320
+ .map((skill) => skill.trim())
321
+ .filter(Boolean)
322
+ : [];
323
+ return {
324
+ id,
325
+ name,
326
+ files: { [componentPath]: `---\n${stringifyYaml(metadata)}---\n${parsed.body}` },
327
+ componentPath,
328
+ omittedFields,
329
+ omittedFiles: [],
330
+ requiredOmissions: [],
331
+ bindings,
332
+ };
333
+ }
334
+
335
+ /** Command markdown becomes a Clio prompt recipe; only description and argument hint survive. */
336
+ export function projectPrompt(input: { file: string; name: string; text?: string }): ProjectedResource {
337
+ if (input.text === undefined && (lstatSync(input.file).mode & 0o111) !== 0)
338
+ throw new Error("Executable files are not adoptable.");
339
+ const parsed = prose(input.text ?? inventoryText(input.file));
340
+ if (!parsed.body.trim()) throw new Error("Empty resource body.");
341
+ const name = input.name;
342
+ const id = safeName(name);
343
+ const omittedFields = Object.keys(parsed.metadata).filter((key) => !PROMPT_KEYS.has(key));
344
+ const metadata: Record<string, unknown> = {
345
+ description: typeof parsed.metadata.description === "string" ? parsed.metadata.description : `Adopted prompt ${name}`,
346
+ };
347
+ const hint = parsed.metadata["argument-hint"] ?? parsed.metadata.argumentHint;
348
+ if (typeof hint === "string") metadata["argument-hint"] = hint;
349
+ const componentPath = `prompts/${id}.md`;
350
+ return {
351
+ id,
352
+ name,
353
+ files: { [componentPath]: `---\n${stringifyYaml(metadata)}---\n${parsed.body}` },
354
+ componentPath,
355
+ omittedFields,
356
+ omittedFiles: [],
357
+ requiredOmissions: [],
358
+ bindings: [],
359
+ };
360
+ }
@@ -1,4 +1,104 @@
1
- import type { InteropAgentId, InteropAgentKind } from "./types.js";
1
+ import type { InteropAgentId, InteropAgentKind, InteropInventoryLayout } from "./types.js";
2
+
3
+ const MARKDOWN_ROOTS: InteropInventoryLayout["roots"] = [
4
+ { path: "skills", kind: "skill", extensions: [".md"] },
5
+ { path: "agents", kind: "agent", extensions: [".md", ".toml"] },
6
+ { path: "commands", kind: "prompt", extensions: [".md"] },
7
+ ];
8
+ const INVENTORIES: Partial<Record<InteropAgentId, InteropInventoryLayout>> = {
9
+ "claude-code": {
10
+ userDeclarations: [{ path: ".claude.json", kind: "mcp", key: "mcpServers" }],
11
+ projectDeclarations: [{ path: ".mcp.json", kind: "mcp", key: "mcpServers" }],
12
+ userRoot: ".claude",
13
+ homeEnv: "CLAUDE_CONFIG_DIR",
14
+ projectRoots: [".claude"],
15
+ roots: [...MARKDOWN_ROOTS, { path: "output-styles", kind: "output-style", extensions: [".md"] }],
16
+ declarations: [
17
+ { path: "settings.json", kind: "hook", key: "hooks" },
18
+ { path: "settings.local.json", kind: "hook", key: "hooks" },
19
+ { path: "hooks/hooks.json", kind: "hook", key: "hooks" },
20
+ { path: ".mcp.json", kind: "mcp", key: "mcpServers" },
21
+ ],
22
+ pluginDirs: [],
23
+ pluginManifests: ["plugin.json", ".claude-plugin/plugin.json"],
24
+ installedRegistry: "plugins/installed_plugins.json",
25
+ listCommand: ["plugin", "list", "--json"],
26
+ },
27
+ codex: {
28
+ additionalUserRoots: [".agents"],
29
+ settingsRegistry: "codex",
30
+ cacheMarketplace: true,
31
+ userRoot: ".codex",
32
+ homeEnv: "CODEX_HOME",
33
+ projectRoots: [".codex", ".agents"],
34
+ roots: [
35
+ ...MARKDOWN_ROOTS.filter((r) => r.kind !== "prompt"),
36
+ { path: "prompts", kind: "prompt", extensions: [".md"] },
37
+ ],
38
+ declarations: [
39
+ { path: "config.toml", kind: "mcp" },
40
+ { path: "mcp.json", kind: "mcp", key: "mcpServers" },
41
+ { path: "hooks/hooks.json", kind: "hook", key: "hooks" },
42
+ ],
43
+ pluginDirs: ["plugins/cache"],
44
+ pluginManifests: ["plugin.json", ".codex-plugin/plugin.json"],
45
+ listCommand: ["plugin", "list", "--json"],
46
+ },
47
+ antigravity: {
48
+ settingsRegistry: "antigravity",
49
+ userRoot: ".gemini/config",
50
+ homeEnv: "ANTIGRAVITY_HOME",
51
+ projectRoots: [".agents"],
52
+ roots: MARKDOWN_ROOTS,
53
+ declarations: [
54
+ { path: "hooks.json", kind: "hook", key: "hooks" },
55
+ { path: "mcp_config.json", kind: "mcp", key: "mcpServers" },
56
+ ],
57
+ pluginDirs: ["plugins"],
58
+ pluginManifests: ["plugin.json"],
59
+ listCommand: ["plugin", "list"],
60
+ },
61
+ copilot: {
62
+ settingsRegistry: "copilot",
63
+ userRoot: ".copilot",
64
+ homeEnv: "COPILOT_HOME",
65
+ projectRoots: [".github", ".copilot"],
66
+ roots: [...MARKDOWN_ROOTS, { path: "hooks", kind: "hook", extensions: [".json"] }],
67
+ declarations: [
68
+ { path: "mcp-config.json", kind: "mcp", key: "mcpServers" },
69
+ { path: ".mcp.json", kind: "mcp", key: "mcpServers" },
70
+ ],
71
+ pluginDirs: ["installed-plugins", "plugins"],
72
+ pluginManifests: ["plugin.json", ".claude-plugin/plugin.json"],
73
+ listCommand: ["plugin", "list"],
74
+ },
75
+ opencode: {
76
+ projectDeclarations: [
77
+ { path: "opencode.json", kind: "mcp", key: "mcp" },
78
+ { path: "opencode.jsonc", kind: "mcp", key: "mcp" },
79
+ ],
80
+ projectModuleConfig: "opencode.json",
81
+ xdgConfigSubdir: "opencode",
82
+ moduleConfig: "opencode.json",
83
+ userRoot: ".config/opencode",
84
+ homeEnv: "OPENCODE_CONFIG_DIR",
85
+ projectRoots: [".opencode"],
86
+ roots: [
87
+ ...MARKDOWN_ROOTS,
88
+ { path: "agent", kind: "agent", extensions: [".md"] },
89
+ { path: "command", kind: "prompt", extensions: [".md"] },
90
+ { path: "plugins", kind: "executable", extensions: [".js", ".ts", ".mjs"] },
91
+ { path: "tools", kind: "executable", extensions: [".js", ".ts"] },
92
+ ],
93
+ declarations: [
94
+ { path: "opencode.json", kind: "mcp", key: "mcp" },
95
+ { path: "opencode.jsonc", kind: "mcp", key: "mcp" },
96
+ ],
97
+ pluginDirs: [],
98
+ pluginManifests: [],
99
+ listCommand: ["agent", "list"],
100
+ },
101
+ };
2
102
 
3
103
  /**
4
104
  * The known agents, in preference order. Order is load-bearing: equal-precedence
@@ -95,7 +195,7 @@ export const INTEROP_AGENT_KINDS: ReadonlyArray<InteropAgentKind> = [
95
195
  label: "Antigravity CLI",
96
196
  binaryNames: ["agy"],
97
197
  userDir: ".gemini/antigravity-cli",
98
- legacyUserDirs: [".antigravitycli"],
198
+ legacyUserDirs: [".antigravitycli", ".gemini/config"],
99
199
  projectDir: ".gemini/antigravity-cli",
100
200
  legacyProjectDirs: [".antigravitycli"],
101
201
  instructionFiles: [],
@@ -112,7 +212,10 @@ export const INTEROP_AGENT_KINDS: ReadonlyArray<InteropAgentKind> = [
112
212
  adoptionProvider: "agents",
113
213
  skillSource: "agents",
114
214
  },
115
- ];
215
+ ].map((kind) => ({
216
+ ...kind,
217
+ ...(INVENTORIES[kind.id as InteropAgentId] ? { inventory: INVENTORIES[kind.id as InteropAgentId] } : {}),
218
+ })) as ReadonlyArray<InteropAgentKind>;
116
219
 
117
220
  const BY_ID = new Map<InteropAgentId, InteropAgentKind>(INTEROP_AGENT_KINDS.map((kind) => [kind.id, kind]));
118
221
 
@@ -27,6 +27,7 @@ export interface InteropAcpRecipe {
27
27
  * and instruction files in the tree is a projection of this table.
28
28
  */
29
29
  export interface InteropAgentKind {
30
+ inventory?: InteropInventoryLayout;
30
31
  id: InteropAgentId;
31
32
  label: string;
32
33
  /** Executables whose presence means the agent is installed. Empty for conventions with no CLI. */
@@ -54,6 +55,7 @@ export interface InteropAgentKind {
54
55
  export type InteropPresence = "present" | "absent" | "unknown";
55
56
 
56
57
  export interface InteropAgentFacts {
58
+ inventory?: InteropInventory;
57
59
  kind: InteropAgentId;
58
60
  presence: InteropPresence;
59
61
  binary?: string;
@@ -102,6 +104,8 @@ export interface InteropDecisionResult {
102
104
  }
103
105
 
104
106
  export interface InteropDetectInput {
107
+ /** Explicit inventory sweep; bootstrap remains lightweight. */
108
+ inventory?: boolean;
105
109
  cwd?: string;
106
110
  home?: string;
107
111
  /** Run a bounded `<bin> --version` for kinds whose binary already resolved. */
@@ -111,3 +115,50 @@ export interface InteropDetectInput {
111
115
  /** Foreign artifact providers already scanned by the context domain. */
112
116
  artifactProviders?: ReadonlyArray<AdoptionProvider>;
113
117
  }
118
+
119
+ export type InteropResourceKind =
120
+ | "skill"
121
+ | "agent"
122
+ | "prompt"
123
+ | "plugin"
124
+ | "output-style"
125
+ | "hook"
126
+ | "mcp"
127
+ | "executable";
128
+ export interface InteropInventoryItem {
129
+ kind: InteropResourceKind;
130
+ name: string;
131
+ path: string;
132
+ scope: "user" | "project";
133
+ plugin?: string;
134
+ version?: string;
135
+ marketplace?: string;
136
+ installation?: "installed" | "unknown";
137
+ enabled?: boolean;
138
+ }
139
+ export interface InteropInventory {
140
+ status: "known" | "unknown";
141
+ items: InteropInventoryItem[];
142
+ diagnostics: string[];
143
+ listing: "unknown";
144
+ }
145
+ export interface InteropInventoryLayout {
146
+ userRoot: string;
147
+ additionalUserRoots?: string[];
148
+ xdgConfigSubdir?: string;
149
+ homeEnv?: string;
150
+ projectRoots: string[];
151
+ roots: Array<{ path: string; kind: InteropResourceKind; extensions: string[] }>;
152
+ declarations: Array<{ path: string; kind: "hook" | "mcp"; key?: string }>;
153
+ userDeclarations?: Array<{ path: string; kind: "hook" | "mcp"; key?: string }>;
154
+ projectDeclarations?: Array<{ path: string; kind: "hook" | "mcp"; key?: string }>;
155
+ projectModuleConfig?: string;
156
+ pluginDirs: string[];
157
+ pluginManifests: string[];
158
+ installedRegistry?: string;
159
+ /** Evidence command, never an agent work command. */
160
+ listCommand: string[];
161
+ cacheMarketplace?: boolean;
162
+ settingsRegistry?: "copilot" | "codex" | "antigravity";
163
+ moduleConfig?: string;
164
+ }
@@ -34,7 +34,6 @@ import { join } from "node:path";
34
34
 
35
35
  import lmStudioRuntimeId from "./2026-08-18-lmstudio-runtime-id.js";
36
36
  import clioCoderNaming from "./2026-09-01-clio-coder-naming.js";
37
- import extensionInstallDigests from "./2026-09-01-extension-install-digests.js";
38
37
  import retirePanesKnobs from "./2026-09-01-retire-panes-knobs.js";
39
38
  import settingsV2 from "./2026-09-01-settings-v2.js";
40
39
 
@@ -62,7 +61,6 @@ export interface MigrationRunResult {
62
61
  // migration independently and for manifest continuity; it is a no-op on v2.
63
62
  const REGISTRY: ReadonlyArray<Migration> = Object.freeze([
64
63
  settingsV2,
65
- extensionInstallDigests,
66
64
  clioCoderNaming,
67
65
  retirePanesKnobs,
68
66
  lmStudioRuntimeId,
@@ -162,7 +162,7 @@ export function inspectInstalledNamingResources(options: NamingResourceOptions =
162
162
  });
163
163
  continue;
164
164
  }
165
- const canonicalBundleDir = path.join(packageRoot, "skills", "meta", canonicalName);
165
+ const canonicalBundleDir = path.join(packageRoot, "library", "skills", "meta", canonicalName);
166
166
  if (!existingDirectory(canonicalBundleDir) || !provesUnmodifiedShippedCopy(legacyPath, canonicalBundleDir)) {
167
167
  reports.push({
168
168
  kind: "skill",
@@ -314,7 +314,7 @@ export function createMarketplaceOfferRegistration(deps: MarketplaceOfferDeps):
314
314
  {
315
315
  kind: "inject_reminder",
316
316
  severity: "info",
317
- message: `[Marketplace] Skill "${match.entry.name}" matches this request; install with clio-coder skills install ${match.entry.name}.`,
317
+ message: `[Marketplace] Skill "${match.entry.name}" matches this request; install with clio-coder library install ${match.entry.name}.`,
318
318
  },
319
319
  ];
320
320
  }
@@ -9,7 +9,7 @@
9
9
  *
10
10
  * Two ownership rules run through the whole file. Clio acts only on panes it
11
11
  * created, tracked in `pane-registry.ts` and tagged with the `clio_coder_owner`
12
- * metadata token so `clio doctor` can find orphans. The one documented
12
+ * metadata token so `clio-coder doctor` can find orphans. The one documented
13
13
  * exception is Clio's own hosting pane in guest mode, which `reportSelf`
14
14
  * writes to under SA-3 of the v0.4.0 cycle plan.
15
15
  *