@iowarp/clio-coder 0.4.6 → 0.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (657) hide show
  1. package/.claude-plugin/marketplace.json +283 -0
  2. package/CHANGELOG.md +50 -0
  3. package/CONTRIBUTING.md +102 -29
  4. package/NOTICE +8 -0
  5. package/README.md +37 -5
  6. package/dist/{acp-UVEVWSDL.js → acp-W3Y3TRHD.js} +12 -12
  7. package/dist/{agents-VWY37DTK.js → agents-J4ICNLQ3.js} +52 -52
  8. package/dist/assets/codewiki.json +1 -1
  9. package/dist/assets/tui-notices/get-east-asian-width-LICENSE +9 -0
  10. package/dist/assets/tui-notices/marked-LICENSE +44 -0
  11. package/dist/assets/tui-notices/pi-tui-LICENSE +21 -0
  12. package/dist/{auth-PCV2XQDV.js → auth-X2UJUMOC.js} +24 -24
  13. package/dist/{builtins-PD652MTK.js → builtins-XLXWWSRF.js} +6 -6
  14. package/dist/{chunk-DZK63TZJ.js → chunk-24S3DN22.js} +336 -612
  15. package/dist/{chunk-NTK3WTHM.js → chunk-24TOGHPO.js} +2 -2
  16. package/dist/{chunk-M6TAYK66.js → chunk-2O2LVQQK.js} +11 -4
  17. package/dist/{chunk-OQM5IVJY.js → chunk-34XHRVKG.js} +3 -3
  18. package/dist/{chunk-LY4N4TTL.js → chunk-3LXJOICS.js} +2 -2
  19. package/dist/{chunk-3BJGMT2D.js → chunk-3XE4NRLF.js} +1 -1
  20. package/dist/{chunk-N2OKBREN.js → chunk-4MFBBY2Z.js} +3 -3
  21. package/dist/{chunk-5VTJP36Q.js → chunk-4N2RZ4TO.js} +2 -2
  22. package/dist/{chunk-WNGF5AJX.js → chunk-4QKAITQT.js} +3 -3
  23. package/dist/chunk-4UHVS5T7.js +207 -0
  24. package/dist/{chunk-GLYBJ4RQ.js → chunk-5AJPUR72.js} +6 -6
  25. package/dist/{chunk-5CY4Q6QI.js → chunk-5EQO5NWP.js} +105 -3
  26. package/dist/{chunk-6HAO6X5B.js → chunk-65BGHOUR.js} +8 -5
  27. package/dist/{chunk-6VRRJT7L.js → chunk-6CA2BHOR.js} +2 -2
  28. package/dist/{chunk-HL26ADLH.js → chunk-6CB2IL4N.js} +2 -1
  29. package/dist/{chunk-E7RF4KBO.js → chunk-6LRLOJHQ.js} +3 -3
  30. package/dist/{chunk-HXHFDHB6.js → chunk-6TAATXXH.js} +6 -6
  31. package/dist/{chunk-P6M7RKMI.js → chunk-6YHPAAZR.js} +3 -3
  32. package/dist/{chunk-5QRX7SLS.js → chunk-7EEGBKV4.js} +7 -7
  33. package/dist/{chunk-BS4GAMUB.js → chunk-A67NR5AT.js} +2 -2
  34. package/dist/{chunk-WJIMKGD6.js → chunk-BAU36233.js} +8 -8
  35. package/dist/{chunk-PZN2LQY6.js → chunk-BO4XV5VX.js} +4 -4
  36. package/dist/{chunk-I2K2NCZQ.js → chunk-BQQ5MXUC.js} +6 -6
  37. package/dist/{chunk-X3BI7HTV.js → chunk-C3G5PNUO.js} +21 -21
  38. package/dist/{chunk-SRZOW5L2.js → chunk-C6GEXX4L.js} +1 -1
  39. package/dist/{chunk-6RYDAVQT.js → chunk-CE64C5K5.js} +219 -64
  40. package/dist/chunk-CP3HIR5H.js +2119 -0
  41. package/dist/{chunk-BBV5TKE6.js → chunk-CPXGJI2A.js} +2 -2
  42. package/dist/{chunk-IGLVVNEG.js → chunk-CULVKYTK.js} +4 -4
  43. package/dist/{chunk-DXLUVUD4.js → chunk-D2T66PDV.js} +5 -5
  44. package/dist/{chunk-NF3BK5WR.js → chunk-DACXIVVF.js} +5 -5
  45. package/dist/{chunk-IKRWLEDA.js → chunk-DLIYANB7.js} +20 -15
  46. package/dist/{chunk-RGZNQ5CT.js → chunk-DO7M3LSX.js} +9 -9
  47. package/dist/{chunk-2QPI3TR3.js → chunk-DVJL77SO.js} +2 -2
  48. package/dist/{chunk-ODUTYZIU.js → chunk-EUEXGXXR.js} +5 -5
  49. package/dist/{chunk-WKUYQBCG.js → chunk-EUZRMP4Y.js} +18 -16
  50. package/dist/{chunk-JMPL7NUB.js → chunk-G4LGUTOE.js} +4 -4
  51. package/dist/{chunk-CBSKDFWL.js → chunk-GEVQNST4.js} +2 -2
  52. package/dist/{chunk-NNWJYUNO.js → chunk-GFQ7P2UF.js} +7 -7
  53. package/dist/{chunk-SXQKNKRA.js → chunk-GI5RRMAH.js} +14 -14
  54. package/dist/{chunk-HPTJF6DG.js → chunk-GVZFCJHE.js} +336 -83
  55. package/dist/{chunk-ACCKVSHU.js → chunk-GXIWHXDB.js} +3 -3
  56. package/dist/{chunk-LUL5Z66S.js → chunk-HOX4YZ2K.js} +6 -5
  57. package/dist/chunk-HRAKUPIH.js +57 -0
  58. package/dist/{chunk-F5Z7EWMN.js → chunk-IJMW64DX.js} +50 -50
  59. package/dist/{chunk-QNWRHOMF.js → chunk-IMOD2YPV.js} +16 -9
  60. package/dist/{chunk-HZ2T2YED.js → chunk-IQCNVLO6.js} +28 -8
  61. package/dist/{chunk-HZFBVU5X.js → chunk-ISNCCX42.js} +8 -8
  62. package/dist/{chunk-7JSSKXG2.js → chunk-IZYTT3CD.js} +7 -3
  63. package/dist/chunk-KKEYGFX4.js +915 -0
  64. package/dist/{chunk-HHVJNVUJ.js → chunk-KS7ETA3P.js} +2 -2
  65. package/dist/{chunk-BLTEAUCB.js → chunk-L3Z5ANCV.js} +7 -7
  66. package/dist/{chunk-4VMV6OS6.js → chunk-LBFQMYS3.js} +2 -2
  67. package/dist/{chunk-URBGEOH3.js → chunk-M6Z2V6YU.js} +5 -5
  68. package/dist/{chunk-BT7HGDOX.js → chunk-MBJO5VNZ.js} +12 -12
  69. package/dist/chunk-MNQN3X6Y.js +595 -0
  70. package/dist/{chunk-3QKXHCGS.js → chunk-MZHXENL7.js} +5 -5
  71. package/dist/chunk-MZNWZUJM.js +1801 -0
  72. package/dist/{chunk-7YJWEF2L.js → chunk-N37QC5FV.js} +5 -5
  73. package/dist/{chunk-TJFDL26W.js → chunk-NCCQ6DVS.js} +7 -7
  74. package/dist/{chunk-P5JMBPDJ.js → chunk-NO7J45X6.js} +162 -47
  75. package/dist/chunk-OH3YYA3B.js +15 -0
  76. package/dist/{chunk-22PQ4TX4.js → chunk-P4DL2LM5.js} +16 -77
  77. package/dist/{chunk-LIN2K3EL.js → chunk-PFLOULP3.js} +4 -4
  78. package/dist/{chunk-QXFBABFJ.js → chunk-QKWL7SYE.js} +11 -11
  79. package/dist/chunk-RFCKPS2V.js +26 -0
  80. package/dist/{chunk-ZS43Y2FT.js → chunk-RTLNFZMD.js} +12 -4
  81. package/dist/{chunk-U7H5WRG5.js → chunk-RXFPB32E.js} +8 -6
  82. package/dist/{chunk-Q7NNUHQV.js → chunk-SEDI5K5B.js} +16 -16
  83. package/dist/{chunk-WV6TDAPN.js → chunk-SELG4SUR.js} +7 -7
  84. package/dist/{chunk-3WBALRQH.js → chunk-SER7RRAE.js} +27 -832
  85. package/dist/{chunk-K2HL3GBL.js → chunk-T4TY5GG3.js} +165 -15
  86. package/dist/chunk-T7QQBNLH.js +691 -0
  87. package/dist/{chunk-6OII3LOK.js → chunk-TLTGZTXI.js} +3 -3
  88. package/dist/chunk-TZ6UVP2H.js +637 -0
  89. package/dist/{chunk-3JLFK5MW.js → chunk-TZHN5ITX.js} +13 -41
  90. package/dist/{chunk-VANN3GDP.js → chunk-U3TPUXOQ.js} +399 -234
  91. package/dist/{chunk-VHMX7SXF.js → chunk-UA3W4FGC.js} +6 -6
  92. package/dist/{chunk-3O2ZAUGQ.js → chunk-UA6W4XFJ.js} +2 -2
  93. package/dist/chunk-UWD3JD5X.js +709 -0
  94. package/dist/chunk-V4ZKOKRB.js +13433 -0
  95. package/dist/{chunk-NC4KV7EL.js → chunk-VCRVEDUC.js} +5 -5
  96. package/dist/{chunk-4DU2TVI4.js → chunk-VMATUZB6.js} +12 -10
  97. package/dist/{chunk-J2FYEQ5L.js → chunk-VTYHHQ57.js} +2 -2
  98. package/dist/chunk-WB7POC6M.js +891 -0
  99. package/dist/{chunk-3HQVBIKD.js → chunk-WBVKKTUT.js} +2 -2
  100. package/dist/{chunk-EHOSNVVM.js → chunk-WLHX3MM5.js} +6 -2
  101. package/dist/{chunk-24T2YZ7A.js → chunk-WN552PKN.js} +553 -298
  102. package/dist/{chunk-4U4TKZFR.js → chunk-WT5TRMO4.js} +51 -26
  103. package/dist/{chunk-XWMSPJYN.js → chunk-WURGVOZJ.js} +56 -12
  104. package/dist/{chunk-7WUZEB2M.js → chunk-XR3XJN2M.js} +2 -2
  105. package/dist/chunk-XW2UZICE.js +372 -0
  106. package/dist/{chunk-2AKYFREM.js → chunk-XZ6UFQ52.js} +11 -11
  107. package/dist/chunk-Y3JU5RPK.js +8 -0
  108. package/dist/chunk-YKRJTYNP.js +1143 -0
  109. package/dist/{chunk-PWWSIB2A.js → chunk-ZGIGW4ZG.js} +5 -5
  110. package/dist/cli/index.js +34 -36
  111. package/dist/{clio-QQCMTUZE.js → clio-L2P7S2R2.js} +9 -9
  112. package/dist/{code-nav-GUPM6766.js → code-nav-B5LNX4KU.js} +25 -25
  113. package/dist/{components-TNIKXCBH.js → components-63MMQKUT.js} +6 -6
  114. package/dist/{config-IIM7YOD3.js → config-YXARKGTX.js} +70 -67
  115. package/dist/{configure-4ZM5HWJX.js → configure-LMVQJ46J.js} +47 -35
  116. package/dist/{context-OL5P3HEP.js → context-7HJEWTTP.js} +87 -44
  117. package/dist/{context-44BZLJ3J.js → context-XSZKKFBW.js} +14 -14
  118. package/dist/{context-AIDVQKMW.js → context-YG2LZDYZ.js} +60 -58
  119. package/dist/{context-clear-OQV76MYP.js → context-clear-AC5NXHM2.js} +57 -55
  120. package/dist/{context-index-HP2JFUWA.js → context-index-KKTPRV5G.js} +3 -3
  121. package/dist/{context-map-INTXD54D.js → context-map-T7ROR5D5.js} +4 -4
  122. package/dist/{context-working-set-ZUW3EGLS.js → context-working-set-F4Q4J3NS.js} +12 -10
  123. package/dist/{detail-UXPWRANG.js → detail-H73BEF2N.js} +58 -56
  124. package/dist/{dispatch-runner-P3ZW6G77.js → dispatch-runner-3RY5FSJC.js} +74 -72
  125. package/dist/{doctor-JJVGPZWT.js → doctor-EQYJOGUG.js} +44 -30
  126. package/dist/{eval-V2RTN3UH.js → eval-4P7O6CCE.js} +109 -46
  127. package/dist/{evidence-35PYWGSO.js → evidence-D6GUSYJW.js} +57 -55
  128. package/dist/{evidence-CIGGKI6J.js → evidence-O76QF7TZ.js} +62 -59
  129. package/dist/{evolve-33SM3NJP.js → evolve-H47BCETS.js} +58 -56
  130. package/dist/{extensions-YVRHX6ZI.js → extensions-NNL3ZOCU.js} +98 -20
  131. package/dist/{fleet-LFO7SIPC.js → fleet-KMNS6NOM.js} +106 -99
  132. package/dist/{fleet-commands-RLK72GU3.js → fleet-commands-DOWSYCBX.js} +14 -14
  133. package/dist/{fleet-decisions-3SBSCTCW.js → fleet-decisions-S3PTZV2D.js} +9 -9
  134. package/dist/{fleet-graph-JZIBCGMW.js → fleet-graph-F2DE2TME.js} +26 -24
  135. package/dist/{fleet-inspect-2L5YGGZJ.js → fleet-inspect-EN2Q6IVB.js} +60 -57
  136. package/dist/{fleet-preflight-QRSHIIDE.js → fleet-preflight-FRLETDD3.js} +3 -3
  137. package/dist/{fleet-validate-LIAVKDUU.js → fleet-validate-B2XDLS57.js} +28 -29
  138. package/dist/{fleet-verify-JIK3OQZR.js → fleet-verify-4JKUWGJ7.js} +57 -55
  139. package/dist/{fleet-view-IWHYGQKK.js → fleet-view-BHJFW26B.js} +60 -57
  140. package/dist/{init-NJEDOTQW.js → init-XAT5N5YM.js} +79 -74
  141. package/dist/interop-FVECHFKG.js +246 -0
  142. package/dist/{inventory-74UL7UHU.js → inventory-7KFQGLCV.js} +60 -57
  143. package/dist/library-NY2XOT75.js +492 -0
  144. package/dist/library-QAPAO23R.js +306 -0
  145. package/dist/library-import-5Y6MAS3R.js +183 -0
  146. package/dist/library-inventory-JT6HWITQ.js +56 -0
  147. package/dist/library-validation-EQUH25DC.js +42 -0
  148. package/dist/{memory-I76I5VUH.js → memory-DYVTTCP6.js} +58 -56
  149. package/dist/{models-D4YDIQZQ.js → models-MASFJ6Y2.js} +48 -36
  150. package/dist/{monitor-NKVD55HX.js → monitor-YMP4NXJJ.js} +64 -61
  151. package/dist/{orchestrator-I6OATVPK.js → orchestrator-AFQRRTEI.js} +3685 -1841
  152. package/dist/{panes-7BTYH3XQ.js → panes-D3Y2KFG5.js} +4 -4
  153. package/dist/{panes-WPOMEMRH.js → panes-NICTHQCV.js} +7 -7
  154. package/dist/{paths-J3KN7UAO.js → paths-PSFAUIGO.js} +5 -5
  155. package/dist/{preload-EJAWJEIO.js → preload-5Q7VXRFJ.js} +57 -55
  156. package/dist/{reset-4XMQKDNZ.js → reset-7NKZK7JN.js} +9 -9
  157. package/dist/{resources-TVYVXK3Q.js → resources-NILSIZAT.js} +94 -38
  158. package/dist/{run-OWQNNSJU.js → run-BPZGEBZV.js} +121 -105
  159. package/dist/{share-NPZZMUXG.js → share-EZ6ERBMH.js} +31 -28
  160. package/dist/skills-BTVVNYVM.js +100 -0
  161. package/dist/{skills-eval-J5TCKSJA.js → skills-eval-UY34MNK7.js} +110 -72
  162. package/dist/{skills-inventory-7II4DM57.js → skills-inventory-JDHSIA7I.js} +30 -25
  163. package/dist/{slash-commands-MDSDSWYF.js → slash-commands-K4FNQ2AT.js} +49 -46
  164. package/dist/{steer-S7D7IKPU.js → steer-2B3EQGFH.js} +4 -4
  165. package/dist/{support-5VAEC32W.js → support-L2SOL3IE.js} +7 -7
  166. package/dist/{targets-KILZEOCE.js → targets-44VKGFLN.js} +64 -58
  167. package/dist/{tasks-R6P6OV22.js → tasks-3KODKFU7.js} +12 -12
  168. package/dist/{terminal-lease-LZCG2KN3.js → terminal-lease-LXA7MMPO.js} +32 -19
  169. package/dist/{tools-6OCQ6SVB.js → tools-3UB7TEVR.js} +7 -7
  170. package/dist/{trace-JHLXWUMN.js → trace-TAMIU4OJ.js} +5 -4
  171. package/dist/{tui-primitives-RCY2HN7G.js → tui-primitives-A6MUW32V.js} +3 -2
  172. package/dist/{uninstall-FXYMFFRT.js → uninstall-QYVRPEM4.js} +9 -9
  173. package/dist/{upgrade-D2OZH6IQ.js → upgrade-7PMKM2JH.js} +15 -16
  174. package/dist/{usage-PIASNUS4.js → usage-6EQV7EQK.js} +70 -67
  175. package/dist/{verifiers-LTHUY2PX.js → verifiers-JLITWSHU.js} +15 -15
  176. package/dist/{verify-HYF7KBVE.js → verify-T7NAEVIG.js} +13 -13
  177. package/dist/{web-fetch-MQN4FH3X.js → web-fetch-W4TNW4Q7.js} +4 -4
  178. package/dist/{wiki-generate-RK7JQ5NP.js → wiki-generate-T2TJQJUA.js} +81 -76
  179. package/dist/{with-panes-OFTNAR4Y.js → with-panes-CHFC7HGI.js} +4 -4
  180. package/dist/worker/entry.js +283 -76
  181. package/docs/README.md +43 -0
  182. package/docs/architecture/architecture.md +8 -7
  183. package/docs/architecture/artifact-versions.md +3 -3
  184. package/docs/architecture/context-engine.md +35 -1
  185. package/docs/architecture/library.md +32 -0
  186. package/docs/architecture/middleware-and-components.md +1 -1
  187. package/docs/architecture/model-catalog.md +21 -1
  188. package/docs/architecture/pi-boundary.md +18 -0
  189. package/docs/architecture/prompt-envelope-and-tools.md +5 -5
  190. package/docs/architecture/safety-model.md +21 -2
  191. package/docs/architecture/session-lifecycle.md +12 -1
  192. package/docs/architecture/tui-design.md +108 -9
  193. package/docs/architecture/worker-context.md +106 -0
  194. package/docs/guide/authoring-plugins.md +160 -0
  195. package/docs/guide/built-in-agents.md +5 -5
  196. package/docs/guide/commands-and-modes.md +161 -56
  197. package/docs/guide/configuration-and-targets.md +1 -1
  198. package/docs/guide/configuration-reference.md +27 -34
  199. package/docs/guide/environment-variables.md +2 -2
  200. package/docs/guide/exit-codes-and-output.md +1 -1
  201. package/docs/guide/extensions-and-sharing.md +93 -53
  202. package/docs/guide/fleet-dispatch.md +31 -4
  203. package/docs/guide/glossary.md +1 -1
  204. package/docs/guide/harness-extensions.md +291 -0
  205. package/docs/guide/installation-and-lifecycle.md +9 -9
  206. package/docs/guide/interop.md +243 -0
  207. package/docs/guide/panes-and-files.md +3 -3
  208. package/docs/guide/plugins.md +80 -0
  209. package/docs/guide/resource-library.md +111 -45
  210. package/docs/guide/skills-marketplace.md +35 -72
  211. package/docs/guide/tool-usage.md +19 -7
  212. package/docs/guide/troubleshooting.md +1 -1
  213. package/docs/process/development-pipeline.md +14 -14
  214. package/docs/process/documentation-coverage.md +28 -1
  215. package/docs/process/documentation-guide.md +15 -7
  216. package/docs/process/eval-runner.md +8 -3
  217. package/docs/process/performance-methodology.md +1 -1
  218. package/docs/process/release-cut-checklist.md +4 -0
  219. package/docs/process/scientific-validation.md +23 -0
  220. package/evals/scalar-decision-machinery.ts +1 -1
  221. package/examples/extensions/README.md +67 -0
  222. package/examples/extensions/lab-status/clio-coder-extension.json +14 -0
  223. package/examples/extensions/lab-status/extension.mjs +68 -0
  224. package/examples/extensions/lab-status/jobs.synthetic.json +9 -0
  225. package/examples/extensions/measurements/clio-coder-extension.json +28 -0
  226. package/examples/extensions/measurements/summarize.cjs +23 -0
  227. package/library/README.md +109 -0
  228. package/library/_authoring/templates/agent/README.md +28 -0
  229. package/library/_authoring/templates/agent/agents/benchmark-scout.md +30 -0
  230. package/library/_authoring/templates/agent/plugin.json +23 -0
  231. package/library/_authoring/templates/fleet/README.md +29 -0
  232. package/library/_authoring/templates/fleet/fleets/pipeline-review.md +31 -0
  233. package/library/_authoring/templates/fleet/plugin.json +23 -0
  234. package/library/_authoring/templates/plugin/README.md +37 -0
  235. package/library/_authoring/templates/plugin/agents/data-curator.md +31 -0
  236. package/library/_authoring/templates/plugin/assets/curation-guide.md +22 -0
  237. package/library/_authoring/templates/plugin/plugin.json +42 -0
  238. package/library/_authoring/templates/plugin/prompts/inspect-dataset.md +15 -0
  239. package/library/_authoring/templates/plugin/skills/dataset-curation/SKILL.md +36 -0
  240. package/library/_authoring/templates/plugin/skills/dataset-curation/evals.md +17 -0
  241. package/library/_authoring/templates/prompt/README.md +28 -0
  242. package/library/_authoring/templates/prompt/plugin.json +23 -0
  243. package/library/_authoring/templates/prompt/prompts/paper-summary.md +26 -0
  244. package/library/_authoring/templates/skill/README.md +24 -0
  245. package/library/_authoring/templates/skill/SKILL.md +39 -0
  246. package/library/_authoring/templates/skill/evals.md +30 -0
  247. package/library/_authoring/templates/skill/plugin.json +23 -0
  248. package/library/agents/README.md +7 -0
  249. package/library/fleets/README.md +7 -0
  250. package/library/plugins/materio/README.md +137 -0
  251. package/library/plugins/materio/ai.iowarp.clio/agents/materio-lab-definer.md +208 -0
  252. package/library/plugins/materio/ai.iowarp.clio/agents/materio-literature-reviewer.md +308 -0
  253. package/library/plugins/materio/ai.iowarp.clio/agents/materio-research-explorer.md +249 -0
  254. package/library/plugins/materio/ai.iowarp.clio/agents/materio-task-executor.md +416 -0
  255. package/library/plugins/materio/ai.iowarp.clio/agents/materio-task-verifier.md +60 -0
  256. package/library/plugins/materio/ai.iowarp.clio/agents/materio-workflow-planner.md +238 -0
  257. package/library/plugins/materio/ai.iowarp.clio/fleets/materio-execute-task.md +50 -0
  258. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/add-task.md +66 -0
  259. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/archive-task.md +65 -0
  260. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/checkpoint.md +26 -0
  261. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/define-research-tasks.md +230 -0
  262. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/define-virtual-lab.md +181 -0
  263. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/execute-task.md +292 -0
  264. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/help.md +129 -0
  265. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/identify-research.md +206 -0
  266. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/literature-review.md +201 -0
  267. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/pause-research.md +12 -0
  268. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/progress.md +105 -0
  269. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/remove-task.md +63 -0
  270. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/resume-research.md +64 -0
  271. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/settings.md +16 -0
  272. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/status.md +92 -0
  273. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/upload-data.md +104 -0
  274. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/wtfp.md +145 -0
  275. package/library/plugins/materio/ai.iowarp.clio/references/execution.md +56 -0
  276. package/library/plugins/materio/ai.iowarp.portability/provenance.json +9 -0
  277. package/library/plugins/materio/assets/actions/add-task.md +86 -0
  278. package/library/plugins/materio/assets/actions/archive-task.md +84 -0
  279. package/library/plugins/materio/assets/actions/checkpoint.md +47 -0
  280. package/library/plugins/materio/assets/actions/define-research-tasks.md +228 -0
  281. package/library/plugins/materio/assets/actions/define-virtual-lab.md +179 -0
  282. package/library/plugins/materio/assets/actions/execute-task.md +290 -0
  283. package/library/plugins/materio/assets/actions/help.md +140 -0
  284. package/library/plugins/materio/assets/actions/identify-research.md +204 -0
  285. package/library/plugins/materio/assets/actions/literature-review.md +199 -0
  286. package/library/plugins/materio/assets/actions/pause-research.md +34 -0
  287. package/library/plugins/materio/assets/actions/progress.md +125 -0
  288. package/library/plugins/materio/assets/actions/remove-task.md +82 -0
  289. package/library/plugins/materio/assets/actions/resume-research.md +84 -0
  290. package/library/plugins/materio/assets/actions/settings.md +38 -0
  291. package/library/plugins/materio/assets/actions/status.md +112 -0
  292. package/library/plugins/materio/assets/actions/upload-data.md +123 -0
  293. package/library/plugins/materio/assets/actions/wtfp.md +179 -0
  294. package/library/plugins/materio/assets/references/research-domains.md +134 -0
  295. package/library/plugins/materio/assets/references/research-policy.md +77 -0
  296. package/library/plugins/materio/assets/references/traditional-workflows.md +146 -0
  297. package/library/plugins/materio/assets/scripts/check_physics.py +271 -0
  298. package/library/plugins/materio/assets/scripts/check_scripts.py +248 -0
  299. package/library/plugins/materio/assets/scripts/project_plugin.py +165 -0
  300. package/library/plugins/materio/assets/scripts/research_state.py +400 -0
  301. package/library/plugins/materio/assets/scripts/verify_citations.py +616 -0
  302. package/library/plugins/materio/assets/templates/RESEARCH.md +39 -0
  303. package/library/plugins/materio/assets/templates/VIRTUAL-LAB.md +120 -0
  304. package/library/plugins/materio/assets/templates/WORKFLOW.md +42 -0
  305. package/library/plugins/materio/assets/templates/config.json +5 -0
  306. package/library/plugins/materio/evals/scripts.yaml +29 -0
  307. package/library/plugins/materio/plugin.json +530 -0
  308. package/library/plugins/materio/skills/materio-lab-definer/SKILL.md +74 -0
  309. package/library/plugins/materio/skills/materio-literature-reviewer/SKILL.md +64 -0
  310. package/library/plugins/materio/skills/materio-research-explorer/SKILL.md +74 -0
  311. package/library/plugins/materio/skills/materio-task-executor/SKILL.md +214 -0
  312. package/library/plugins/materio/skills/materio-task-verifier/SKILL.md +46 -0
  313. package/library/plugins/materio/skills/materio-workflow-planner/SKILL.md +79 -0
  314. package/library/plugins/materio/tests/test_check_physics.py +139 -0
  315. package/library/plugins/materio/tests/test_check_scripts.py +140 -0
  316. package/library/plugins/materio/tests/test_research_state.py +291 -0
  317. package/library/plugins/materio/tests/test_verify_citations.py +337 -0
  318. package/library/prompts/README.md +7 -0
  319. package/library/registry.yaml +921 -0
  320. package/library/skills/README.md +120 -0
  321. package/{skills → library/skills}/coding/ast-grep/SKILL.md +1 -1
  322. package/{skills → library/skills}/coding/ast-grep/evals.md +1 -1
  323. package/library/skills/coding/ast-grep/plugin.json +23 -0
  324. package/{skills → library/skills}/coding/coding-standards/SKILL.md +1 -1
  325. package/{skills → library/skills}/coding/coding-standards/evals.md +1 -1
  326. package/library/skills/coding/coding-standards/plugin.json +23 -0
  327. package/{skills → library/skills}/coding/prototype/SKILL.md +1 -1
  328. package/{skills → library/skills}/coding/prototype/evals.md +1 -1
  329. package/library/skills/coding/prototype/plugin.json +23 -0
  330. package/{skills → library/skills}/coding/tdd/SKILL.md +1 -1
  331. package/{skills → library/skills}/coding/tdd/evals.md +1 -1
  332. package/library/skills/coding/tdd/plugin.json +23 -0
  333. package/{skills → library/skills}/context/context-handoff/SKILL.md +1 -1
  334. package/{skills → library/skills}/context/context-handoff/evals.md +1 -1
  335. package/library/skills/context/context-handoff/plugin.json +23 -0
  336. package/{skills → library/skills}/context/context-prime/SKILL.md +1 -1
  337. package/{skills → library/skills}/context/context-prime/evals.md +1 -1
  338. package/library/skills/context/context-prime/plugin.json +23 -0
  339. package/{skills → library/skills}/git/branch-closeout/SKILL.md +1 -1
  340. package/library/skills/git/branch-closeout/plugin.json +23 -0
  341. package/{skills → library/skills}/git/file-ticket/SKILL.md +1 -1
  342. package/library/skills/git/file-ticket/plugin.json +23 -0
  343. package/{skills → library/skills}/git/fix-issue/SKILL.md +1 -1
  344. package/library/skills/git/fix-issue/plugin.json +23 -0
  345. package/{skills → library/skills}/git/resolve-merge-conflicts/SKILL.md +1 -1
  346. package/{skills → library/skills}/git/resolve-merge-conflicts/evals.md +1 -1
  347. package/library/skills/git/resolve-merge-conflicts/plugin.json +23 -0
  348. package/{skills → library/skills}/git/ship/SKILL.md +1 -1
  349. package/library/skills/git/ship/plugin.json +23 -0
  350. package/{skills → library/skills}/git/worktree-create/SKILL.md +1 -1
  351. package/library/skills/git/worktree-create/plugin.json +23 -0
  352. package/{skills → library/skills}/git/worktree-merge/SKILL.md +1 -1
  353. package/library/skills/git/worktree-merge/plugin.json +23 -0
  354. package/{skills → library/skills}/meta/clio-coder-dev/SKILL.md +1 -1
  355. package/{skills → library/skills}/meta/clio-coder-dev/evals.md +1 -1
  356. package/library/skills/meta/clio-coder-dev/plugin.json +23 -0
  357. package/{skills → library/skills}/meta/clio-coder-test/SKILL.md +1 -1
  358. package/{skills → library/skills}/meta/clio-coder-test/evals.md +1 -1
  359. package/library/skills/meta/clio-coder-test/plugin.json +23 -0
  360. package/{skills → library/skills}/meta/credentials/SKILL.md +1 -1
  361. package/{skills → library/skills}/meta/credentials/evals.md +1 -1
  362. package/library/skills/meta/credentials/plugin.json +23 -0
  363. package/library/skills/meta/find-skills/SKILL.md +85 -0
  364. package/library/skills/meta/find-skills/evals.md +65 -0
  365. package/library/skills/meta/find-skills/plugin.json +23 -0
  366. package/{skills → library/skills}/meta/herdr/SKILL.md +1 -1
  367. package/{skills → library/skills}/meta/herdr/evals.md +1 -1
  368. package/library/skills/meta/herdr/plugin.json +23 -0
  369. package/{skills → library/skills}/meta/skill-craft/SKILL.md +23 -9
  370. package/{skills → library/skills}/meta/skill-craft/evals.md +11 -3
  371. package/library/skills/meta/skill-craft/plugin.json +23 -0
  372. package/{skills → library/skills}/planning/archify/SKILL.md +13 -13
  373. package/library/skills/planning/archify/plugin.json +23 -0
  374. package/{skills → library/skills}/planning/architecture/SKILL.md +1 -1
  375. package/{skills → library/skills}/planning/architecture/evals.md +1 -1
  376. package/library/skills/planning/architecture/plugin.json +23 -0
  377. package/{skills → library/skills}/planning/backlog/SKILL.md +1 -1
  378. package/{skills → library/skills}/planning/backlog/evals.md +1 -1
  379. package/library/skills/planning/backlog/plugin.json +23 -0
  380. package/{skills → library/skills}/planning/prd/SKILL.md +1 -1
  381. package/{skills → library/skills}/planning/prd/evals.md +1 -1
  382. package/library/skills/planning/prd/plugin.json +23 -0
  383. package/{skills → library/skills}/planning/product-intent/SKILL.md +1 -1
  384. package/{skills → library/skills}/planning/product-intent/evals.md +1 -1
  385. package/library/skills/planning/product-intent/plugin.json +23 -0
  386. package/{skills → library/skills}/planning/tech-spec/SKILL.md +1 -1
  387. package/{skills → library/skills}/planning/tech-spec/evals.md +1 -1
  388. package/library/skills/planning/tech-spec/plugin.json +23 -0
  389. package/{skills → library/skills}/registry.yaml +7 -7
  390. package/{skills → library/skills}/remote.yaml +1 -1
  391. package/{skills → library/skills}/research/arxiv-literature/SKILL.md +1 -1
  392. package/{skills → library/skills}/research/arxiv-literature/evals.md +1 -1
  393. package/library/skills/research/arxiv-literature/plugin.json +23 -0
  394. package/{skills → library/skills}/research/experiment-protocol/SKILL.md +1 -1
  395. package/{skills → library/skills}/research/experiment-protocol/evals.md +1 -1
  396. package/library/skills/research/experiment-protocol/plugin.json +23 -0
  397. package/{skills → library/skills}/research/scientific-debugging/SKILL.md +1 -1
  398. package/{skills → library/skills}/research/scientific-debugging/evals.md +1 -1
  399. package/library/skills/research/scientific-debugging/plugin.json +23 -0
  400. package/{skills → library/skills}/research/scientific-modernization/SKILL.md +1 -1
  401. package/{skills → library/skills}/research/scientific-modernization/evals.md +1 -1
  402. package/library/skills/research/scientific-modernization/plugin.json +23 -0
  403. package/{skills → library/skills}/skill-marketplace.json +37 -37
  404. package/{skills → library/skills}/workflow/cut-it/SKILL.md +1 -1
  405. package/{skills → library/skills}/workflow/cut-it/evals.md +1 -1
  406. package/library/skills/workflow/cut-it/plugin.json +23 -0
  407. package/{skills → library/skills}/workflow/design-council/SKILL.md +1 -1
  408. package/{skills → library/skills}/workflow/design-council/evals.md +1 -1
  409. package/library/skills/workflow/design-council/plugin.json +23 -0
  410. package/{skills → library/skills}/workflow/grill-me/SKILL.md +1 -1
  411. package/{skills → library/skills}/workflow/grill-me/evals.md +1 -1
  412. package/library/skills/workflow/grill-me/plugin.json +23 -0
  413. package/{skills → library/skills}/workflow/workflow-distiller/SKILL.md +14 -11
  414. package/{skills → library/skills}/workflow/workflow-distiller/evals.md +14 -6
  415. package/library/skills/workflow/workflow-distiller/plugin.json +23 -0
  416. package/package.json +12 -5
  417. package/src/cli/agents.ts +1 -1
  418. package/src/cli/config-inspect.ts +1 -1
  419. package/src/cli/configure.ts +2 -2
  420. package/src/cli/eval.ts +40 -6
  421. package/src/cli/extensions.ts +74 -8
  422. package/src/cli/fleet-preflight.ts +2 -0
  423. package/src/cli/fleet.ts +2 -0
  424. package/src/cli/index.ts +1 -3
  425. package/src/cli/interop-inspect.ts +61 -33
  426. package/src/cli/interop.ts +79 -9
  427. package/src/cli/library-import.ts +139 -0
  428. package/src/cli/library.ts +418 -120
  429. package/src/cli/run.ts +26 -9
  430. package/src/cli/skills-eval.ts +43 -6
  431. package/src/cli/skills-inventory.ts +6 -2
  432. package/src/cli/skills.ts +44 -491
  433. package/src/core/bus-events.ts +5 -0
  434. package/src/core/defaults.ts +1 -1
  435. package/src/core/recent-models.ts +2 -2
  436. package/src/core/session-routing.ts +3 -3
  437. package/src/core/state-file-lock.ts +1 -1
  438. package/src/core/tool-names.ts +5 -0
  439. package/src/domains/agents/extension.ts +42 -6
  440. package/src/domains/agents/fleet-commands.ts +92 -1
  441. package/src/domains/agents/fleet-contract.ts +87 -19
  442. package/src/domains/agents/recipe.ts +5 -4
  443. package/src/domains/agents/registry.ts +80 -24
  444. package/src/domains/config/keybindings.ts +155 -95
  445. package/src/domains/context/worker/contract.ts +91 -0
  446. package/src/domains/context/worker/pressure.ts +120 -0
  447. package/src/domains/context/worker/recall.ts +62 -0
  448. package/src/domains/context/worker/select.ts +164 -0
  449. package/src/domains/context/worker/snapshot.ts +35 -0
  450. package/src/domains/context/worker/store.ts +16 -0
  451. package/src/domains/context/working-set/replay/synthetic.ts +2 -1
  452. package/src/domains/dispatch/active-route-planner.ts +2 -0
  453. package/src/domains/dispatch/backoff.ts +1 -0
  454. package/src/domains/dispatch/code-step.ts +12 -2
  455. package/src/domains/dispatch/contract.ts +3 -0
  456. package/src/domains/dispatch/execution-plan.ts +2 -0
  457. package/src/domains/dispatch/extension.ts +109 -27
  458. package/src/domains/dispatch/fleet-plan.ts +10 -0
  459. package/src/domains/dispatch/fleet-run.ts +1 -0
  460. package/src/domains/dispatch/orphan-recovery.ts +1 -0
  461. package/src/domains/dispatch/receipt-integrity.ts +4 -0
  462. package/src/domains/dispatch/state.ts +1 -0
  463. package/src/domains/dispatch/types.ts +5 -0
  464. package/src/domains/dispatch/validation.ts +12 -0
  465. package/src/domains/dispatch/workspace-checkpoint.ts +1 -1
  466. package/src/domains/evidence/failure-attribution.ts +1 -0
  467. package/src/domains/evidence/trust-status.ts +22 -3
  468. package/src/domains/extensions/command-schema.ts +145 -0
  469. package/src/domains/extensions/command-tools.ts +15 -0
  470. package/src/domains/extensions/compatibility.ts +7 -0
  471. package/src/domains/extensions/contract.ts +0 -4
  472. package/src/domains/extensions/discovery.ts +69 -205
  473. package/src/domains/extensions/extension.ts +0 -4
  474. package/src/domains/extensions/index.ts +1 -5
  475. package/src/domains/extensions/manager.ts +1 -6
  476. package/src/domains/extensions/operator-commands.ts +29 -0
  477. package/src/domains/extensions/operator-runtime.ts +483 -0
  478. package/src/domains/extensions/public-api.ts +53 -0
  479. package/src/domains/extensions/runtime-child.mjs +114 -0
  480. package/src/domains/extensions/runtime-process.ts +306 -0
  481. package/src/domains/extensions/runtime-schema.ts +146 -0
  482. package/src/domains/extensions/{resources.ts → snapshot-access.ts} +1 -17
  483. package/src/domains/extensions/snapshot.ts +4 -32
  484. package/src/domains/extensions/state.ts +5 -83
  485. package/src/domains/extensions/types.ts +33 -34
  486. package/src/domains/interop/adopt.ts +546 -0
  487. package/src/domains/interop/detect.ts +50 -12
  488. package/src/domains/interop/foreign.ts +554 -0
  489. package/src/domains/interop/import.ts +277 -0
  490. package/src/domains/interop/index.ts +24 -0
  491. package/src/domains/interop/install.ts +6 -0
  492. package/src/domains/interop/inventory.ts +351 -0
  493. package/src/domains/interop/projection.ts +360 -0
  494. package/src/domains/interop/registry.ts +106 -3
  495. package/src/domains/interop/types.ts +51 -0
  496. package/src/domains/lifecycle/migrations/index.ts +0 -2
  497. package/src/domains/lifecycle/naming-resources.ts +1 -1
  498. package/src/domains/middleware/marketplace-offer.ts +1 -1
  499. package/src/domains/mux/contract.ts +1 -1
  500. package/src/domains/plugins/catalog.ts +204 -0
  501. package/src/domains/plugins/contract.ts +24 -0
  502. package/src/domains/plugins/discovery.ts +316 -0
  503. package/src/domains/plugins/extension.ts +40 -0
  504. package/src/domains/plugins/index.ts +77 -0
  505. package/src/domains/plugins/integrity.ts +6 -0
  506. package/src/domains/plugins/manifest.ts +3 -0
  507. package/src/domains/plugins/resources.ts +102 -0
  508. package/src/domains/plugins/state.ts +753 -0
  509. package/src/domains/plugins/types.ts +217 -0
  510. package/src/domains/prompts/extension.ts +9 -2
  511. package/src/domains/prompts/fragments/operating/skills.md +10 -10
  512. package/src/domains/resources/common-loader.ts +9 -6
  513. package/src/domains/resources/index.ts +67 -0
  514. package/src/domains/resources/library-actions.ts +836 -0
  515. package/src/domains/resources/library-evals.ts +38 -0
  516. package/src/domains/resources/library-inventory.ts +1048 -0
  517. package/src/domains/resources/library-types.ts +50 -0
  518. package/src/domains/resources/library-validation.ts +634 -0
  519. package/src/domains/resources/library.ts +437 -156
  520. package/src/domains/resources/package-references.ts +66 -0
  521. package/src/domains/resources/prompts/loader.ts +75 -41
  522. package/src/domains/resources/skills/install.ts +2 -2
  523. package/src/domains/resources/skills/loader.ts +77 -22
  524. package/src/domains/resources/skills/marketplace.ts +48 -57
  525. package/src/domains/resources/skills/promotion.ts +2 -2
  526. package/src/domains/resources/skills/provenance-pin.ts +17 -4
  527. package/src/domains/safety/action-classifier.ts +2 -2
  528. package/src/domains/safety/default-path-policy.ts +3 -1
  529. package/src/domains/safety/policy-engine.ts +1 -1
  530. package/src/domains/safety/protected-artifacts.ts +21 -5
  531. package/src/domains/safety/skill-authority.ts +5 -2
  532. package/src/domains/share/archive.ts +1 -1
  533. package/src/engine/apis/openai-completions.ts +52 -2
  534. package/src/engine/notices/pi-tui-LICENSE +21 -0
  535. package/src/engine/tui.ts +3 -0
  536. package/src/engine/worker-runtime.ts +58 -14
  537. package/src/engine/worker-tools.ts +5 -0
  538. package/src/entry/orchestrator.ts +26 -5
  539. package/src/entry/plugin-reload.ts +18 -0
  540. package/src/interactive/application-controller.ts +67 -21
  541. package/src/interactive/chat-loop.ts +32 -5
  542. package/src/interactive/chat-panel.ts +5 -1
  543. package/src/interactive/clio-editor.ts +53 -21
  544. package/src/interactive/command-output.ts +56 -1
  545. package/src/interactive/editor-submit.ts +65 -28
  546. package/src/interactive/fleet-run-preview.ts +2 -0
  547. package/src/interactive/follow-up-queue-panel.ts +3 -3
  548. package/src/interactive/footer/dashboard.ts +4 -1
  549. package/src/interactive/footer/notifications.ts +2 -2
  550. package/src/interactive/footer/widgets.ts +2 -2
  551. package/src/interactive/interactive-application.ts +209 -21
  552. package/src/interactive/interactive-input-runtime.ts +254 -7
  553. package/src/interactive/interactive-presentation.ts +41 -12
  554. package/src/interactive/interactive-slash-runtime.ts +37 -8
  555. package/src/interactive/keybinding-manager.ts +156 -79
  556. package/src/interactive/keyboard-owner.ts +37 -0
  557. package/src/interactive/leader-key.ts +49 -102
  558. package/src/interactive/leader-menu.ts +45 -0
  559. package/src/interactive/overlay-ask-user-lifecycle.ts +9 -1
  560. package/src/interactive/overlay-frame.ts +15 -0
  561. package/src/interactive/overlay-key-routing.ts +46 -47
  562. package/src/interactive/overlay-lifecycle.ts +30 -15
  563. package/src/interactive/overlay-resource-openers.ts +56 -46
  564. package/src/interactive/overlays/ask-user.ts +630 -556
  565. package/src/interactive/overlays/extension-panel.ts +70 -0
  566. package/src/interactive/overlays/extensions.ts +28 -5
  567. package/src/interactive/overlays/fleet-run-approval.ts +7 -3
  568. package/src/interactive/overlays/help-reference.ts +89 -40
  569. package/src/interactive/overlays/interop.ts +122 -3
  570. package/src/interactive/overlays/keybinding-detail.ts +2 -2
  571. package/src/interactive/overlays/library-lifecycle.ts +90 -0
  572. package/src/interactive/overlays/library-model.ts +574 -0
  573. package/src/interactive/overlays/library-review.ts +557 -0
  574. package/src/interactive/overlays/library-tabs.ts +3 -15
  575. package/src/interactive/overlays/library.ts +602 -0
  576. package/src/interactive/overlays/list-overlay.ts +218 -39
  577. package/src/interactive/overlays/model-selector.ts +28 -25
  578. package/src/interactive/overlays/session-selector.ts +9 -3
  579. package/src/interactive/overlays/settings.ts +25 -18
  580. package/src/interactive/overlays/tree-selector.ts +16 -11
  581. package/src/interactive/permission-hint.ts +13 -0
  582. package/src/interactive/permission-overlay.ts +77 -28
  583. package/src/interactive/prompt-source-label.ts +21 -0
  584. package/src/interactive/renderers/reference-card.ts +35 -0
  585. package/src/interactive/renderers/worker-entry.ts +35 -3
  586. package/src/interactive/slash-autocomplete.ts +99 -1
  587. package/src/interactive/slash-commands.ts +390 -67
  588. package/src/interactive/slash-spec.ts +0 -1
  589. package/src/interactive/terminal-lease.ts +44 -12
  590. package/src/interactive/turn-queues.ts +8 -7
  591. package/src/interactive/turn-runtime.ts +1 -1
  592. package/src/interactive/view/view-overlay.ts +19 -14
  593. package/src/interactive/welcome-dashboard.ts +525 -408
  594. package/src/tools/bootstrap.ts +8 -0
  595. package/src/tools/builtin-tool-catalog.ts +7 -2
  596. package/src/tools/context/index.ts +58 -5
  597. package/src/tools/context/library.ts +465 -0
  598. package/src/tools/context/surface.ts +20 -6
  599. package/src/tools/core-bootstrap.ts +3 -0
  600. package/src/tools/dispatch-admission.ts +24 -1
  601. package/src/tools/dispatch-arguments.ts +8 -0
  602. package/src/tools/dispatch-plan.ts +32 -0
  603. package/src/tools/dispatch-schema.ts +31 -1
  604. package/src/tools/dispatch-types.ts +3 -0
  605. package/src/tools/dispatch.ts +1 -1
  606. package/src/tools/harness-extensions.ts +169 -0
  607. package/src/tools/observation.ts +4 -0
  608. package/src/tools/policy.ts +7 -1
  609. package/src/tools/registry.ts +19 -1
  610. package/src/tools/worker-evidence.ts +5 -0
  611. package/src/worker/context-seed.ts +192 -0
  612. package/src/worker/entry.ts +1 -0
  613. package/src/worker/spec-contract.ts +8 -1
  614. package/dist/chunk-3UW3KU4A.js +0 -21
  615. package/dist/chunk-536HXRFE.js +0 -1257
  616. package/dist/chunk-B3MOMLJ4.js +0 -433
  617. package/dist/chunk-CXQ37WJH.js +0 -45
  618. package/dist/chunk-KTFSFCVN.js +0 -46
  619. package/dist/chunk-QCOV5DFY.js +0 -911
  620. package/dist/chunk-QRFXEO6Y.js +0 -17
  621. package/dist/chunk-VAHLPXPY.js +0 -399
  622. package/dist/interop-RVCAYECG.js +0 -115
  623. package/dist/library-CTKZA7K3.js +0 -226
  624. package/dist/skills-OXFEAWMT.js +0 -510
  625. package/skills/README.md +0 -418
  626. package/skills/meta/find-skills/SKILL.md +0 -78
  627. package/skills/meta/find-skills/evals.md +0 -47
  628. package/src/domains/extensions/resource-path.ts +0 -27
  629. package/src/domains/lifecycle/migrations/2026-09-01-extension-install-digests.ts +0 -27
  630. package/src/interactive/overlays/agents.ts +0 -70
  631. package/src/interactive/overlays/library-install-confirm.ts +0 -152
  632. package/src/interactive/overlays/prompts.ts +0 -89
  633. package/src/interactive/overlays/skills-hub.ts +0 -615
  634. /package/{skills → library/skills}/coding/ast-grep/references/rule_reference.md +0 -0
  635. /package/{skills → library/skills}/coding/prototype/references/LOGIC.md +0 -0
  636. /package/{skills → library/skills}/coding/prototype/references/UI.md +0 -0
  637. /package/{skills → library/skills}/coding/tdd/references/mocking.md +0 -0
  638. /package/{skills → library/skills}/coding/tdd/references/tests.md +0 -0
  639. /package/{skills → library/skills}/context/context-handoff/scripts/new-handoff.sh +0 -0
  640. /package/{skills → library/skills}/git/branch-closeout/evals.md +0 -0
  641. /package/{skills → library/skills}/git/branch-closeout/references/closeout-checklist.md +0 -0
  642. /package/{skills → library/skills}/git/file-ticket/assets/issue-template.md +0 -0
  643. /package/{skills → library/skills}/git/file-ticket/evals.md +0 -0
  644. /package/{skills → library/skills}/git/file-ticket/references/issue-discovery.md +0 -0
  645. /package/{skills → library/skills}/git/fix-issue/evals.md +0 -0
  646. /package/{skills → library/skills}/git/fix-issue/references/diagnosis-and-rca.md +0 -0
  647. /package/{skills → library/skills}/git/resolve-merge-conflicts/references/conflict-matrix.md +0 -0
  648. /package/{skills → library/skills}/git/ship/assets/pr-template.md +0 -0
  649. /package/{skills → library/skills}/git/ship/evals.md +0 -0
  650. /package/{skills → library/skills}/git/ship/references/remote-and-branch-policy.md +0 -0
  651. /package/{skills → library/skills}/git/worktree-create/evals.md +0 -0
  652. /package/{skills → library/skills}/git/worktree-create/references/worktree-setup.md +0 -0
  653. /package/{skills → library/skills}/git/worktree-merge/evals.md +0 -0
  654. /package/{skills → library/skills}/git/worktree-merge/references/merge-strategies.md +0 -0
  655. /package/{skills → library/skills}/meta/clio-coder-test/references/harness.md +0 -0
  656. /package/{skills → library/skills}/meta/clio-coder-test/references/test-map.md +0 -0
  657. /package/{skills → library/skills}/planning/archify/evals.md +0 -0
@@ -1,911 +0,0 @@
1
- import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
- import {
3
- parseAgentRecipeSchema
4
- } from "./chunk-VAHLPXPY.js";
5
- import {
6
- discoverMarketplaceSkills,
7
- expandSkillInvocationInput,
8
- installSkill,
9
- loadSkills,
10
- parsePendingSkillRequests,
11
- projectCompatTrusted
12
- } from "./chunk-536HXRFE.js";
13
- import {
14
- normalizedSkillHash
15
- } from "./chunk-DNCE23JJ.js";
16
- import {
17
- COMPAT_RESOURCE_PRECEDENCE,
18
- defaultScopedResourceRoots,
19
- sourceInfoForRoot,
20
- splitYamlFrontmatter,
21
- stringField
22
- } from "./chunk-U7H5WRG5.js";
23
- import {
24
- parseFleetContract
25
- } from "./chunk-3WBALRQH.js";
26
- import {
27
- parseFrontmatter
28
- } from "./chunk-CXQ37WJH.js";
29
- import {
30
- assertAgentSpecPolicy,
31
- normalizeAgentSpec
32
- } from "./chunk-OQM5IVJY.js";
33
- import {
34
- readSettings,
35
- updateSettings
36
- } from "./chunk-WNGF5AJX.js";
37
- import {
38
- INTEROP_AGENT_KINDS
39
- } from "./chunk-5CY4Q6QI.js";
40
- import {
41
- runCommandVector
42
- } from "./chunk-GJ24ODAX.js";
43
- import {
44
- expandConfigPath
45
- } from "./chunk-VNBICSS2.js";
46
- import {
47
- require_dist
48
- } from "./chunk-B5GGDIHT.js";
49
- import {
50
- safeResourceWrite
51
- } from "./chunk-ZZFWWYLX.js";
52
- import {
53
- clioConfigDir
54
- } from "./chunk-CTTI7G3T.js";
55
- import {
56
- __toESM,
57
- init_esm_shims
58
- } from "./chunk-ECBHH7LU.js";
59
-
60
- // src/domains/resources/index.ts
61
- init_esm_shims();
62
-
63
- // src/domains/resources/extension.ts
64
- init_esm_shims();
65
-
66
- // src/domains/resources/loader.ts
67
- init_esm_shims();
68
-
69
- // src/domains/resources/prompts/loader.ts
70
- init_esm_shims();
71
- import { lstatSync, readdirSync, readFileSync, realpathSync } from "node:fs";
72
- import { homedir } from "node:os";
73
- import path from "node:path";
74
-
75
- // src/engine/prompt-templates.ts
76
- init_esm_shims();
77
- import { parseCommandArgs, substituteArgs as substituteParsedArgs } from "@earendil-works/pi-agent-core";
78
- var RAW_ARGUMENTS_PLACEHOLDER = /\$ARGUMENTS/g;
79
- function substituteArgs(content, args, rawArguments) {
80
- if (rawArguments === void 0) return substituteParsedArgs(content, args);
81
- return content.split(RAW_ARGUMENTS_PLACEHOLDER).map((segment) => substituteParsedArgs(segment, args)).join(rawArguments);
82
- }
83
-
84
- // src/domains/resources/collision.ts
85
- init_esm_shims();
86
- var SCOPE_RANK = {
87
- package: 0,
88
- user: 1,
89
- project: 2,
90
- cli: 3
91
- };
92
- function rankOf(info) {
93
- return info.precedence ?? SCOPE_RANK[info.scope];
94
- }
95
- function compareCandidates(a, b) {
96
- const rankDelta = rankOf(a.source) - rankOf(b.source);
97
- if (rankDelta !== 0) return rankDelta;
98
- return a.source.path.localeCompare(b.source.path);
99
- }
100
- function resolveResourceCollisions(candidates) {
101
- const byName = /* @__PURE__ */ new Map();
102
- for (const candidate of candidates) {
103
- const key = candidate.name.trim();
104
- if (key.length === 0) continue;
105
- const list = byName.get(key) ?? [];
106
- list.push(candidate);
107
- byName.set(key, list);
108
- }
109
- const winners = [];
110
- const diagnostics = [];
111
- for (const [name, entries] of byName.entries()) {
112
- const sorted = [...entries].sort(compareCandidates);
113
- const winner = sorted[sorted.length - 1];
114
- if (!winner) continue;
115
- winners.push(winner.value);
116
- for (const loser of sorted.slice(0, -1)) {
117
- diagnostics.push({
118
- type: "collision",
119
- message: `${name} from ${winner.source.scope} overrides ${loser.source.scope}`,
120
- path: loser.source.path,
121
- collision: {
122
- name,
123
- winnerPath: winner.source.path,
124
- loserPath: loser.source.path,
125
- winnerScope: winner.source.scope,
126
- loserScope: loser.source.scope
127
- }
128
- });
129
- }
130
- }
131
- return { winners, diagnostics };
132
- }
133
-
134
- // src/domains/resources/prompts/loader.ts
135
- function defaultPromptTemplateRoots(input = {}) {
136
- const cwd = input.cwd ?? process.cwd();
137
- const home = input.home ?? homedir();
138
- const trustProject = projectCompatTrusted(input.trustProjectCompatRoots);
139
- const compat = [];
140
- for (const kind of INTEROP_AGENT_KINDS) {
141
- if (kind.userPromptRoot !== void 0) {
142
- compat.push({
143
- path: path.join(home, kind.userPromptRoot),
144
- scope: "user",
145
- source: `${kind.id}-user`,
146
- precedence: COMPAT_RESOURCE_PRECEDENCE.userCompat,
147
- trusted: true
148
- });
149
- }
150
- if (kind.projectPromptRoot !== void 0) {
151
- compat.push({
152
- path: path.join(cwd, kind.projectPromptRoot),
153
- scope: "project",
154
- source: `${kind.id}-project`,
155
- precedence: COMPAT_RESOURCE_PRECEDENCE.projectCompat,
156
- trusted: trustProject
157
- });
158
- }
159
- }
160
- return [...defaultScopedResourceRoots("prompts", cwd), ...compat];
161
- }
162
- function splitOptionalFrontmatter(raw, filePath, diagnostics) {
163
- const split = splitYamlFrontmatter(raw);
164
- if (split.ok) return split;
165
- if (split.reason === "missing") return { frontmatter: {}, body: raw };
166
- const message = split.reason === "missing closing delimiter" ? "prompt template frontmatter is missing a closing delimiter; treating the file as plain markdown" : split.reason === "must be a YAML object" ? "prompt template frontmatter must be a YAML object" : `prompt template frontmatter is ${split.reason}`;
167
- diagnostics.push({ type: "warning", message, path: filePath });
168
- return { frontmatter: {}, body: split.body };
169
- }
170
- function fallbackDescription(body) {
171
- const line = body.split(/\r?\n/).map((entry) => entry.trim()).find((entry) => entry.length > 0);
172
- if (!line) return "Prompt template";
173
- const normalized = line.replace(/^#{1,6}\s+/, "");
174
- return normalized.length > 60 ? `${normalized.slice(0, 57)}...` : normalized;
175
- }
176
- var EXTENSION_ROOT_REFERENCE = /\$\{extensionRoot\}(\/[A-Za-z0-9._~%+@/-]*)?/g;
177
- var EXTENSION_ROOT_TOKEN = "${extensionRoot}";
178
- function contained(root, candidate) {
179
- const relative = path.relative(root, candidate);
180
- return relative === "" || !relative.startsWith(`..${path.sep}`) && relative !== ".." && !path.isAbsolute(relative);
181
- }
182
- function resolveExtensionReferences(body, root) {
183
- if (root.rootPath === void 0 || !body.includes(EXTENSION_ROOT_TOKEN)) return { body };
184
- let canonicalRoot;
185
- try {
186
- canonicalRoot = realpathSync(root.rootPath);
187
- } catch (error) {
188
- return { reason: `extension root could not be resolved: ${error instanceof Error ? error.message : String(error)}` };
189
- }
190
- let invalid = null;
191
- const resolved = body.replace(EXTENSION_ROOT_REFERENCE, (reference, suffix) => {
192
- const candidate = path.resolve(canonicalRoot, `.${suffix ?? ""}`);
193
- try {
194
- const canonicalCandidate = realpathSync(candidate);
195
- if (!contained(canonicalRoot, canonicalCandidate)) invalid = reference;
196
- } catch {
197
- invalid = reference;
198
- }
199
- return candidate;
200
- });
201
- if (invalid !== null) {
202
- return { reason: `prompt template has an unresolved or escaping extension reference: ${invalid}` };
203
- }
204
- return { body: resolved };
205
- }
206
- function unavailableTemplate(name, filePath, root, reason, diagnostics, description) {
207
- diagnostics.push({ type: "warning", message: reason, path: filePath });
208
- const sourceInfo = sourceInfoForRoot(root, filePath);
209
- return {
210
- name,
211
- value: {
212
- name,
213
- description: description ?? "Prompt template (unavailable)",
214
- content: "",
215
- filePath,
216
- sourceInfo,
217
- trusted: root.trusted !== false,
218
- unavailable: `${reason} (${filePath})`
219
- },
220
- source: sourceInfo
221
- };
222
- }
223
- function loadPromptFile(filePath, root, diagnostics) {
224
- const ext = path.extname(filePath).toLowerCase();
225
- if (ext !== ".md") return null;
226
- const relativePath = path.relative(root.path, filePath);
227
- if (relativePath === "" || relativePath === ".." || relativePath.startsWith(`..${path.sep}`) || path.isAbsolute(relativePath)) {
228
- diagnostics.push({ type: "warning", message: "prompt template escaped its discovery root", path: filePath });
229
- return null;
230
- }
231
- const name = relativePath.slice(0, -ext.length).split(path.sep).join(":");
232
- if (name.trim().length === 0) return null;
233
- let raw;
234
- try {
235
- raw = readFileSync(filePath, "utf8");
236
- } catch (err) {
237
- const reason = err instanceof Error ? err.message : String(err);
238
- return unavailableTemplate(name, filePath, root, `prompt template could not be read: ${reason}`, diagnostics);
239
- }
240
- const { frontmatter, body } = splitOptionalFrontmatter(raw, filePath, diagnostics);
241
- const declaredDescription = stringField(frontmatter, "description");
242
- const resolution = resolveExtensionReferences(body, root);
243
- if ("reason" in resolution) {
244
- return unavailableTemplate(name, filePath, root, resolution.reason, diagnostics, declaredDescription ?? void 0);
245
- }
246
- const description = declaredDescription ?? fallbackDescription(resolution.body);
247
- const argumentHint = stringField(frontmatter, "argument-hint") ?? stringField(frontmatter, "argumentHint");
248
- const sourceInfo = sourceInfoForRoot(root, filePath);
249
- const template = {
250
- name,
251
- description,
252
- content: resolution.body.trim(),
253
- filePath,
254
- sourceInfo,
255
- trusted: root.trusted !== false
256
- };
257
- if (argumentHint) template.argumentHint = argumentHint;
258
- return { name, value: template, source: sourceInfo };
259
- }
260
- function loadPromptRoot(root, diagnostics) {
261
- const candidates = [];
262
- const pending = [root.path];
263
- while (pending.length > 0) {
264
- const directory = pending.pop();
265
- if (!directory) continue;
266
- let entries;
267
- try {
268
- const stat = lstatSync(directory);
269
- if (stat.isSymbolicLink() || !stat.isDirectory()) {
270
- diagnostics.push({
271
- type: "warning",
272
- message: "prompt template root contains a non-directory or symbolic link",
273
- path: directory
274
- });
275
- continue;
276
- }
277
- entries = readdirSync(directory, { withFileTypes: true }).sort((a, b) => a.name.localeCompare(b.name));
278
- } catch (error) {
279
- if (error.code === "ENOENT") continue;
280
- diagnostics.push({
281
- type: "warning",
282
- message: `prompt template directory could not be read: ${error instanceof Error ? error.message : String(error)}`,
283
- path: directory
284
- });
285
- continue;
286
- }
287
- for (const entry of [...entries].reverse()) {
288
- const filePath = path.join(directory, entry.name);
289
- if (entry.isSymbolicLink()) {
290
- diagnostics.push({ type: "warning", message: "prompt template symbolic link was ignored", path: filePath });
291
- } else if (entry.isDirectory()) {
292
- pending.push(filePath);
293
- } else if (entry.isFile()) {
294
- const candidate = loadPromptFile(filePath, root, diagnostics);
295
- if (candidate) candidates.push(candidate);
296
- }
297
- }
298
- }
299
- return candidates;
300
- }
301
- function loadPromptTemplates(input = {}) {
302
- const roots = input.roots ?? defaultPromptTemplateRoots(input);
303
- const diagnostics = [];
304
- const candidates = roots.flatMap((root) => loadPromptRoot(root, diagnostics));
305
- const resolved = resolveResourceCollisions(candidates);
306
- const items = [];
307
- for (const template of resolved.winners) {
308
- if (input.reservedNames?.has(template.name) === true) {
309
- diagnostics.push({
310
- type: "collision",
311
- message: `prompt template /${template.name} conflicts with the built-in slash command /${template.name} and was ignored`,
312
- path: template.filePath
313
- });
314
- continue;
315
- }
316
- items.push(template);
317
- }
318
- return {
319
- items: items.sort((a, b) => a.name.localeCompare(b.name)),
320
- diagnostics: [...diagnostics, ...resolved.diagnostics]
321
- };
322
- }
323
- function parsePromptCommand(input) {
324
- const framed = input.trimStart();
325
- if (!framed.startsWith("/")) return null;
326
- const withoutSlash = framed.slice(1);
327
- const separator = withoutSlash.search(/\s/);
328
- const name = separator === -1 ? withoutSlash : withoutSlash.slice(0, separator);
329
- if (name.length === 0 || name.includes("/")) return null;
330
- const delimiterWidth = separator !== -1 && withoutSlash.slice(separator, separator + 2) === "\r\n" ? 2 : 1;
331
- const rest = separator === -1 ? "" : withoutSlash.slice(separator + delimiterWidth);
332
- return { name, rest };
333
- }
334
- function expandPromptTemplateInput(input, templates) {
335
- const command = parsePromptCommand(input);
336
- if (!command) return { expanded: false, text: input, args: [], diagnostics: templates.diagnostics };
337
- const template = templates.items.find((entry) => entry.name === command.name);
338
- if (!template) return { expanded: false, text: input, args: [], diagnostics: templates.diagnostics };
339
- if (template.unavailable !== void 0) {
340
- const message = `prompt template /${template.name} cannot run: ${template.unavailable}`;
341
- return {
342
- expanded: false,
343
- text: input,
344
- args: [],
345
- diagnostics: templates.diagnostics,
346
- refusal: { template, message }
347
- };
348
- }
349
- if (!template.trusted) {
350
- const message = `prompt template ${template.name} comes from an untrusted project root; set integrations.projectResources.trustProjectImports to use it`;
351
- return {
352
- expanded: false,
353
- text: input,
354
- args: [],
355
- diagnostics: [...templates.diagnostics, { type: "warning", message, path: template.filePath }],
356
- refusal: { template, message }
357
- };
358
- }
359
- const args = parseCommandArgs(command.rest);
360
- return {
361
- expanded: true,
362
- text: substituteArgs(template.content, args, command.rest),
363
- args,
364
- template,
365
- diagnostics: templates.diagnostics
366
- };
367
- }
368
-
369
- // src/domains/resources/loader.ts
370
- function createResourcesLoader(options = {}) {
371
- const defaultCwd = options.cwd ?? process.cwd();
372
- const skillOptions2 = () => options.skills?.() ?? {};
373
- const promptOptions = (cwd) => ({
374
- cwd,
375
- ...options.reservedPromptNames !== void 0 ? { reservedNames: options.reservedPromptNames } : {},
376
- ...skillOptions2().trustProjectCompatRoots !== void 0 ? { trustProjectCompatRoots: skillOptions2().trustProjectCompatRoots === true } : {}
377
- });
378
- return {
379
- skills(cwd = defaultCwd) {
380
- return loadSkills({ cwd, ...skillOptions2() });
381
- },
382
- expandSkillInvocation(text, cwd = defaultCwd, expansionOptions = {}) {
383
- return expandSkillInvocationInput(text, loadSkills({ cwd, ...skillOptions2() }), expansionOptions);
384
- },
385
- parsePendingSkillRequests(text, cwd = defaultCwd, expansionOptions = {}) {
386
- return parsePendingSkillRequests(text, loadSkills({ cwd, ...skillOptions2() }), { cwd, ...expansionOptions });
387
- },
388
- prompts(cwd = defaultCwd) {
389
- return loadPromptTemplates(promptOptions(cwd));
390
- },
391
- expandPromptTemplate(text, cwd = defaultCwd) {
392
- return expandPromptTemplateInput(text, loadPromptTemplates(promptOptions(cwd)));
393
- },
394
- resolvePath(value, cwd = defaultCwd) {
395
- return expandConfigPath(value, { cwd });
396
- },
397
- async reload() {
398
- return void 0;
399
- }
400
- };
401
- }
402
-
403
- // src/domains/resources/extension.ts
404
- function createResourcesBundle(context, options = {}) {
405
- const config = () => context.getContract("config");
406
- const loader = createResourcesLoader({
407
- ...options.cwd !== void 0 ? { cwd: options.cwd } : {},
408
- ...options.reservedPromptNames !== void 0 ? { reservedPromptNames: options.reservedPromptNames } : {},
409
- skills: () => ({
410
- ...skillOptions(config()?.get().integrations.projectResources.trustProjectImports === true, options)
411
- })
412
- });
413
- const extension = {
414
- start() {
415
- return void 0;
416
- }
417
- };
418
- const contract = {
419
- skills(cwd) {
420
- return loader.skills(cwd);
421
- },
422
- expandSkillInvocation(text, cwd, options2) {
423
- return loader.expandSkillInvocation(text, cwd, options2);
424
- },
425
- parsePendingSkillRequests(text, cwd, options2) {
426
- return loader.parsePendingSkillRequests(text, cwd, options2);
427
- },
428
- prompts(cwd) {
429
- return loader.prompts(cwd);
430
- },
431
- expandPromptTemplate(text, cwd) {
432
- return loader.expandPromptTemplate(text, cwd);
433
- },
434
- resolvePath(value, cwd) {
435
- return loader.resolvePath(value, cwd);
436
- },
437
- reload() {
438
- return loader.reload();
439
- }
440
- };
441
- return { extension, contract };
442
- }
443
- function skillOptions(trustProjectCompatRoots, options) {
444
- const runtime = options.skills?.() ?? {};
445
- return {
446
- trustProjectCompatRoots: runtime.trustProjectCompatRoots ?? trustProjectCompatRoots,
447
- ...runtime.disableDiscovery !== void 0 ? { disableDiscovery: runtime.disableDiscovery } : {},
448
- ...runtime.explicitSkillPaths !== void 0 ? { explicitSkillPaths: runtime.explicitSkillPaths } : {}
449
- };
450
- }
451
-
452
- // src/domains/resources/manifest.ts
453
- init_esm_shims();
454
- var ResourcesManifest = {
455
- name: "resources",
456
- dependsOn: ["config"]
457
- };
458
-
459
- // src/domains/resources/library.ts
460
- init_esm_shims();
461
- var import_yaml = __toESM(require_dist(), 1);
462
- import { createHash } from "node:crypto";
463
- import { existsSync, readFileSync as readFileSync2, statSync } from "node:fs";
464
- import path2 from "node:path";
465
- function isRecord(value) {
466
- return typeof value === "object" && value !== null && !Array.isArray(value);
467
- }
468
- function catalogPath() {
469
- const configured = readSettings().integrations.library.catalog;
470
- return path2.resolve(configured ?? path2.join(clioConfigDir(), "library.yaml"));
471
- }
472
- function parseCatalog(filePath, diagnostics) {
473
- if (!existsSync(filePath)) return [];
474
- try {
475
- const raw = readFileSync2(filePath, "utf8");
476
- const parsed = filePath.endsWith(".json") ? JSON.parse(raw) : (0, import_yaml.parse)(raw);
477
- const rows = Array.isArray(parsed) ? parsed : isRecord(parsed) && Array.isArray(parsed.skills) ? parsed.skills : [];
478
- return rows.flatMap((value) => {
479
- if (!isRecord(value) || typeof value.name !== "string" || typeof value.description !== "string" || typeof value.sourceUrl !== "string") {
480
- diagnostics.push(`library catalog entry malformed: ${filePath}`);
481
- return [];
482
- }
483
- const kind = value.kind === void 0 || value.kind === "skill" ? "skill" : value.kind === "agent" || value.kind === "prompt" || value.kind === "fleet" ? value.kind : "skill";
484
- if (value.kind !== void 0 && !["skill", "agent", "prompt", "fleet"].includes(String(value.kind))) {
485
- diagnostics.push(`library catalog entry has unsupported kind: ${value.name}`);
486
- return [];
487
- }
488
- if (value.requires !== void 0 && (!Array.isArray(value.requires) || value.requires.some((item) => typeof item !== "string"))) {
489
- diagnostics.push(`library_requirement_malformed: ${value.name}`);
490
- return [];
491
- }
492
- const sourceUrl = /^(?:https?:\/\/|git@)/.test(value.sourceUrl) ? value.sourceUrl : path2.resolve(path2.dirname(filePath), value.sourceUrl);
493
- const requires = Array.isArray(value.requires) ? value.requires.filter((item) => typeof item === "string") : void 0;
494
- return [
495
- {
496
- kind,
497
- name: value.name.trim(),
498
- description: value.description.trim(),
499
- sourceUrl,
500
- origin: "index",
501
- ...typeof value.version === "string" ? { version: value.version } : {},
502
- ...requires ? { requires } : {}
503
- }
504
- ];
505
- });
506
- } catch (error) {
507
- diagnostics.push(`library catalog unreadable: ${error instanceof Error ? error.message : String(error)}`);
508
- return [];
509
- }
510
- }
511
- function libraryEntryRef(entry) {
512
- return `${entry.kind}:${entry.name}`;
513
- }
514
- function discoverLibrary(options = {}) {
515
- const marketplace = discoverMarketplaceSkills({
516
- ...options.marketplace ?? {},
517
- ...options.cwd ? { cwd: options.cwd } : {}
518
- });
519
- const diagnostics = [...marketplace.diagnostics.filter((item) => !item.includes("no local skill marketplace"))];
520
- const privatePath = catalogPath();
521
- const primary = options.catalog ? parseCatalog(path2.resolve(options.catalog), diagnostics) : [];
522
- const privateEntries = parseCatalog(privatePath, diagnostics);
523
- const byRef = /* @__PURE__ */ new Map();
524
- for (const entry of [...marketplace.skills, ...primary, ...privateEntries]) byRef.set(libraryEntryRef(entry), entry);
525
- const refusals = {};
526
- const entries = [...byRef.values()].filter((entry) => {
527
- try {
528
- resolveLibraryRequirements(entry, [...byRef.values()]);
529
- return true;
530
- } catch (error) {
531
- const message = error instanceof Error ? error.message : String(error);
532
- refusals[libraryEntryRef(entry)] = message;
533
- if (!diagnostics.includes(message)) diagnostics.push(message);
534
- return false;
535
- }
536
- });
537
- return {
538
- entries: entries.sort((a, b) => libraryEntryRef(a).localeCompare(libraryEntryRef(b))),
539
- diagnostics,
540
- refusals
541
- };
542
- }
543
- var REQUIREMENT_PATTERN = /^(skill|agent|prompt|fleet):([A-Za-z0-9][A-Za-z0-9._-]*)$/;
544
- function resolveLibraryRequirements(entry, catalog) {
545
- const byRef = new Map(catalog.map((item) => [libraryEntryRef(item), item]));
546
- const ordered = [];
547
- const visiting = [];
548
- const visited = /* @__PURE__ */ new Set();
549
- const visit = (current) => {
550
- const currentRef = libraryEntryRef(current);
551
- if (visited.has(currentRef)) return;
552
- const cycleAt = visiting.indexOf(currentRef);
553
- if (cycleAt >= 0)
554
- throw new Error(`library_requirement_cycle: ${[...visiting.slice(cycleAt), currentRef].join(" -> ")}`);
555
- visiting.push(currentRef);
556
- for (const requirement of current.requires ?? []) {
557
- if (!REQUIREMENT_PATTERN.test(requirement)) throw new Error("library_requirement_malformed");
558
- const dependency = byRef.get(requirement);
559
- if (!dependency) throw new Error(`library_requirement_missing: ${requirement}`);
560
- visit(dependency);
561
- }
562
- visiting.pop();
563
- visited.add(currentRef);
564
- ordered.push(current);
565
- };
566
- visit(entry);
567
- return ordered;
568
- }
569
- function sourceFile(entry) {
570
- const source = path2.resolve(entry.sourceUrl);
571
- if (entry.kind === "skill") return source;
572
- if (!existsSync(source)) throw new Error(`library source path does not exist: ${source}`);
573
- return source;
574
- }
575
- function validateEntry(entry, raw, filePath) {
576
- if (entry.kind === "fleet") {
577
- parseFleetContract(raw, filePath);
578
- return;
579
- }
580
- if (entry.kind === "agent") {
581
- const parsed = parseFrontmatter(raw, filePath);
582
- const recipe = parseAgentRecipeSchema({ id: entry.name, source: "user", filepath: filePath, ...parsed });
583
- assertAgentSpecPolicy(normalizeAgentSpec(recipe));
584
- return;
585
- }
586
- if (entry.kind === "prompt") {
587
- const loaded = loadPromptTemplates({ roots: [{ path: path2.dirname(filePath), scope: "user", source: "library" }] });
588
- if (!loaded.items.some((item) => item.filePath === filePath))
589
- throw new Error(`prompt template is malformed: ${filePath}`);
590
- }
591
- }
592
- function libraryInstallPath(entry) {
593
- if (entry.kind === "skill") return path2.join(clioConfigDir(), "skills", entry.name, "SKILL.md");
594
- const root = entry.kind === "agent" ? "agents" : entry.kind === "fleet" ? "fleets" : "prompts";
595
- return path2.join(clioConfigDir(), root, `${entry.name}.md`);
596
- }
597
- function readLibraryPins() {
598
- const pinPath = path2.join(clioConfigDir(), "library-pins.yaml");
599
- if (!existsSync(pinPath)) return {};
600
- const parsed = (0, import_yaml.parse)(readFileSync2(pinPath, "utf8"));
601
- return isRecord(parsed) ? parsed : {};
602
- }
603
- function libraryEntryInstalled(entry) {
604
- return readLibraryPins()[libraryEntryRef(entry)] !== void 0 || existsSync(libraryInstallPath(entry));
605
- }
606
- function libraryEntryPin(entry) {
607
- return readLibraryPins()[libraryEntryRef(entry)];
608
- }
609
- function classifyLibraryRequirements(entry, catalog) {
610
- const ordered = resolveLibraryRequirements(entry, catalog).slice(0, -1);
611
- const satisfied = ordered.filter((requirement) => libraryEntryInstalled(requirement));
612
- const satisfiedRefs = new Set(satisfied.map(libraryEntryRef));
613
- return {
614
- ordered,
615
- satisfied,
616
- unsatisfied: ordered.filter((requirement) => !satisfiedRefs.has(libraryEntryRef(requirement)))
617
- };
618
- }
619
- function planLibraryInstall(entry) {
620
- if (entry.kind === "skill") {
621
- const source2 = sourceFile(entry);
622
- const file = statSync(source2).isDirectory() ? path2.join(source2, "SKILL.md") : source2;
623
- const raw2 = readFileSync2(file);
624
- return {
625
- entry,
626
- path: libraryInstallPath(entry),
627
- sha256: normalizedSkillHash(raw2.toString("utf8"))
628
- };
629
- }
630
- const source = sourceFile(entry);
631
- const raw = readFileSync2(source, "utf8");
632
- validateEntry(entry, raw, source);
633
- return {
634
- entry,
635
- path: libraryInstallPath(entry),
636
- sha256: createHash("sha256").update(raw).digest("hex")
637
- };
638
- }
639
- function recordPin(plan) {
640
- const pinPath = path2.join(clioConfigDir(), "library-pins.yaml");
641
- const pins = readLibraryPins();
642
- pins[libraryEntryRef(plan.entry)] = { sha256: plan.sha256, sourceUrl: plan.entry.sourceUrl };
643
- safeResourceWrite(pinPath, (0, import_yaml.stringify)(Object.fromEntries(Object.entries(pins).sort())), { encoding: "utf8" });
644
- }
645
- function installLibraryPlan(plan) {
646
- if (existsSync(plan.path)) throw new Error(`library destination already exists: ${plan.path}`);
647
- if (plan.entry.kind === "skill") installSkill({ source: plan.entry.sourceUrl, scope: "user", name: plan.entry.name });
648
- else safeResourceWrite(plan.path, readFileSync2(sourceFile(plan.entry)));
649
- recordPin(plan);
650
- }
651
- function confirmedRemote() {
652
- const settings = readSettings().integrations.library;
653
- if (!settings.remote || settings.remote !== settings.confirmedRemote) throw new Error("library_remote_unconfirmed");
654
- return settings.remote;
655
- }
656
- function confirmLibraryRemote(url) {
657
- const current = readSettings().integrations.library.remote;
658
- if (current !== null && current !== url) throw new Error("library_remote_mismatch");
659
- updateSettings((settings) => {
660
- if (settings.integrations.library.remote === null) settings.integrations.library.remote = url;
661
- settings.integrations.library.confirmedRemote = url;
662
- });
663
- }
664
- async function syncLibrary(direction, runner = runCommandVector) {
665
- const settings = readSettings().integrations.library;
666
- if (!settings.sync) throw new Error("library_sync_disabled");
667
- const remote = confirmedRemote();
668
- const cwd = path2.dirname(catalogPath());
669
- const remoteResult = await runner("git", ["remote", "get-url", "library"], { cwd, workspaceRoot: cwd });
670
- if (remoteResult.exitCode !== 0 || remoteResult.stdout.trim() !== remote)
671
- throw new Error("library_remote_unconfirmed");
672
- if (direction === "sync") {
673
- const fetched = await runner("git", ["fetch", "library"], { cwd, workspaceRoot: cwd });
674
- if (fetched.exitCode !== 0) throw new Error(fetched.stderr.trim() || "library sync failed");
675
- const advanced = await runner("git", ["merge", "--ff-only", "FETCH_HEAD"], { cwd, workspaceRoot: cwd });
676
- if (advanced.exitCode !== 0) throw new Error(advanced.stderr.trim() || "library sync failed");
677
- return;
678
- }
679
- const result = await runner("git", ["push", "library"], { cwd, workspaceRoot: cwd });
680
- if (result.exitCode !== 0) throw new Error(result.stderr.trim() || `library ${direction} failed`);
681
- }
682
-
683
- // src/domains/resources/prompts/substitute.ts
684
- init_esm_shims();
685
-
686
- // src/domains/resources/skills/evals.ts
687
- init_esm_shims();
688
- var SCENARIO_HEADING = /^##\s+([A-Z])(\d+)\s*[-:–—]\s*(.+?)\s*$/;
689
- function parseSkillEvals(markdown) {
690
- const lines = markdown.split("\n");
691
- const scenarios = [];
692
- const diagnostics = [];
693
- let index = 0;
694
- while (index < lines.length) {
695
- const heading = SCENARIO_HEADING.exec(lines[index] ?? "");
696
- if (heading === null) {
697
- index += 1;
698
- continue;
699
- }
700
- const blockStart = index + 1;
701
- let blockEnd = blockStart;
702
- while (blockEnd < lines.length && !/^##\s+/.test(lines[blockEnd] ?? "")) blockEnd += 1;
703
- const block = lines.slice(blockStart, blockEnd);
704
- const number = Number.parseInt(heading[2] ?? "", 10);
705
- const id = `${heading[1] ?? "S"}${number}`;
706
- const title = heading[3] ?? "";
707
- const setup = extractSetup(block);
708
- const fixtureCommands = extractFixtureCommands(block);
709
- const expected = extractExpected(block);
710
- if (setup === null) diagnostics.push(`${id} (${title}): no "Setup:" or "Prompt:" paragraph found; scenario skipped`);
711
- else if (expected.length === 0) diagnostics.push(`${id} (${title}): no "Expected:" bullets found; scenario skipped`);
712
- else scenarios.push({ id, number, title, setup, ...fixtureCommands ? { fixtureCommands } : {}, expected });
713
- index = blockEnd;
714
- }
715
- return { scenarios, diagnostics };
716
- }
717
- function extractSetup(block) {
718
- return extractLabeledParagraph(block, /^Setup:\s*(.*)$/i) ?? extractLabeledParagraph(block, /^(Prompt:.*)$/i);
719
- }
720
- function isScenarioLabel(line) {
721
- const trimmed = line.trim();
722
- return /^(Expected|Fixture|Setup commands):/i.test(trimmed) || /^Expected$/i.test(trimmed);
723
- }
724
- function extractLabeledParagraph(block, label) {
725
- for (let i = 0; i < block.length; i += 1) {
726
- const line = block[i] ?? "";
727
- const match = label.exec(line.trim());
728
- if (match === null) continue;
729
- const parts = [];
730
- if ((match[1] ?? "").length > 0) parts.push(match[1] ?? "");
731
- for (let j = i + 1; j < block.length; j += 1) {
732
- const next = (block[j] ?? "").trim();
733
- if (next.length === 0) break;
734
- if (isScenarioLabel(next)) break;
735
- parts.push(next);
736
- }
737
- const setup = parts.join(" ").trim();
738
- return setup.length > 0 ? setup : null;
739
- }
740
- return null;
741
- }
742
- function extractFixtureCommands(block) {
743
- for (let i = 0; i < block.length; i += 1) {
744
- const line = (block[i] ?? "").trim();
745
- const match = /^(?:Fixture|Setup commands):\s*(.*)$/i.exec(line);
746
- if (match === null) continue;
747
- const inline = (match[1] ?? "").trim();
748
- let cursor = i + 1;
749
- while (cursor < block.length && (block[cursor] ?? "").trim().length === 0) cursor += 1;
750
- const first = block[cursor] ?? "";
751
- const fence = /^```\w*\s*$/.test(first.trim());
752
- if (fence) {
753
- const commands2 = [];
754
- for (let j = cursor + 1; j < block.length; j += 1) {
755
- const current = block[j] ?? "";
756
- if (/^```\s*$/.test(current.trim())) {
757
- const script2 = commands2.join("\n").trim();
758
- return script2.length > 0 ? script2 : null;
759
- }
760
- commands2.push(current);
761
- }
762
- return null;
763
- }
764
- const commands = [];
765
- if (inline.length > 0) commands.push(inline);
766
- for (let j = cursor; j < block.length; j += 1) {
767
- const current = block[j] ?? "";
768
- const trimmed = current.trim();
769
- if (trimmed.length === 0) break;
770
- if (isScenarioLabel(trimmed)) break;
771
- commands.push(current);
772
- }
773
- const script = commands.join("\n").trim();
774
- return script.length > 0 ? script : null;
775
- }
776
- return null;
777
- }
778
- function extractExpected(block) {
779
- let start = -1;
780
- for (let i = 0; i < block.length; i += 1) {
781
- if (/^Expected:?\s*$/i.test((block[i] ?? "").trim())) {
782
- start = i + 1;
783
- break;
784
- }
785
- }
786
- if (start < 0) return [];
787
- const bullets = [];
788
- let current = null;
789
- for (let i = start; i < block.length; i += 1) {
790
- const raw = block[i] ?? "";
791
- const trimmed = raw.trim();
792
- if (trimmed.length === 0) {
793
- if (current !== null) {
794
- bullets.push(current.join(" "));
795
- current = null;
796
- }
797
- continue;
798
- }
799
- const bullet = /^[-*]\s+(.*)$/.exec(raw);
800
- if (bullet !== null) {
801
- if (current !== null) bullets.push(current.join(" "));
802
- current = [bullet[1] ?? ""];
803
- continue;
804
- }
805
- if (current !== null && /^\s+\S/.test(raw)) {
806
- current.push(trimmed);
807
- continue;
808
- }
809
- break;
810
- }
811
- if (current !== null) bullets.push(current.join(" "));
812
- return bullets.map((bullet) => bullet.trim()).filter((bullet) => bullet.length > 0);
813
- }
814
-
815
- // src/domains/resources/skills/provenance-pin.ts
816
- init_esm_shims();
817
- var import_yaml2 = __toESM(require_dist(), 1);
818
- import { existsSync as existsSync2, readFileSync as readFileSync3 } from "node:fs";
819
- import path3 from "node:path";
820
- var SKILL_PIN_MANIFEST_FILENAME = "registry.yaml";
821
- function isPlainObject(value) {
822
- return typeof value === "object" && value !== null && !Array.isArray(value);
823
- }
824
- function resolveSkillPinManifestPath(cwd) {
825
- const fromEnv = process.env.CLIO_CODER_SKILL_CATALOG_DIR;
826
- const catalogDir = fromEnv && fromEnv.trim().length > 0 ? path3.resolve(fromEnv.trim()) : path3.join(cwd, "skills");
827
- const manifestPath = path3.join(catalogDir, SKILL_PIN_MANIFEST_FILENAME);
828
- return existsSync2(manifestPath) ? manifestPath : null;
829
- }
830
- function loadSkillPinManifest(manifestPath) {
831
- let parsed;
832
- try {
833
- parsed = import_yaml2.default.parse(readFileSync3(manifestPath, "utf8"));
834
- } catch {
835
- return null;
836
- }
837
- if (!isPlainObject(parsed) || !Array.isArray(parsed.skills)) return null;
838
- const entries = /* @__PURE__ */ new Map();
839
- for (const raw of parsed.skills) {
840
- if (!isPlainObject(raw)) continue;
841
- const name = typeof raw.name === "string" ? raw.name.trim() : "";
842
- const sha256 = typeof raw.sha256 === "string" ? raw.sha256.trim().toLowerCase() : "";
843
- if (name.length === 0 || !/^[0-9a-f]{64}$/.test(sha256)) continue;
844
- entries.set(name, {
845
- name,
846
- version: typeof raw.version === "string" && raw.version.trim().length > 0 ? raw.version.trim() : null,
847
- sha256
848
- });
849
- }
850
- return entries;
851
- }
852
- function checkSkillDrift(skill, cwd) {
853
- const actual = skill.normalizedHash.toLowerCase();
854
- const manifestPath = resolveSkillPinManifestPath(cwd);
855
- const manifest = manifestPath === null ? null : loadSkillPinManifest(manifestPath);
856
- const pinned = manifest?.get(skill.name);
857
- if (pinned !== void 0) {
858
- return {
859
- verdict: pinned.sha256 === actual ? "match" : "mismatch",
860
- authority: "pinned-manifest",
861
- expected: pinned.sha256
862
- };
863
- }
864
- const recorded = skill.provenance?.installedHash?.trim().toLowerCase();
865
- if (recorded !== void 0 && /^[0-9a-f]{64}$/.test(recorded)) {
866
- return {
867
- verdict: recorded === actual ? "match" : "mismatch",
868
- authority: "install-record",
869
- expected: recorded
870
- };
871
- }
872
- return null;
873
- }
874
-
875
- // src/domains/resources/index.ts
876
- var ResourcesDomainModule = {
877
- manifest: ResourcesManifest,
878
- createExtension: createResourcesBundle
879
- };
880
- function createResourcesDomainModule(options = {}) {
881
- return {
882
- manifest: ResourcesManifest,
883
- createExtension: (context) => createResourcesBundle(context, options)
884
- };
885
- }
886
-
887
- export {
888
- parseCommandArgs,
889
- substituteArgs,
890
- resolveResourceCollisions,
891
- loadPromptTemplates,
892
- expandPromptTemplateInput,
893
- createResourcesLoader,
894
- ResourcesManifest,
895
- libraryEntryRef,
896
- discoverLibrary,
897
- resolveLibraryRequirements,
898
- libraryInstallPath,
899
- libraryEntryInstalled,
900
- libraryEntryPin,
901
- classifyLibraryRequirements,
902
- planLibraryInstall,
903
- installLibraryPlan,
904
- confirmLibraryRemote,
905
- syncLibrary,
906
- parseSkillEvals,
907
- checkSkillDrift,
908
- ResourcesDomainModule,
909
- createResourcesDomainModule
910
- };
911
- //# sourceMappingURL=chunk-QCOV5DFY.js.map