@skaile/workspaces 5.6.1 → 5.8.0

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 (428) hide show
  1. package/CHANGELOG.md +176 -0
  2. package/README.md +4 -2
  3. package/dist/app-sdk/index.js +1 -1
  4. package/dist/{asset-feeds-LU7NHOAP.js → asset-feeds-EYRZR4K5.js} +55 -31
  5. package/dist/asset-feeds-EYRZR4K5.js.map +1 -0
  6. package/dist/asset-manager/catalog-deployer.js +10 -10
  7. package/dist/asset-manager/index.js +16 -16
  8. package/dist/asset-manager/installer.js +12 -12
  9. package/dist/asset-manager/renderers.js +11 -11
  10. package/dist/asset-manager/src/index.d.ts +364 -30
  11. package/dist/asset-manager/src/index.d.ts.map +1 -1
  12. package/dist/asset-manager/src/install-agent.d.ts +11 -0
  13. package/dist/asset-manager/src/install-agent.d.ts.map +1 -1
  14. package/dist/asset-manager/src/installer.d.ts +6 -3
  15. package/dist/asset-manager/src/installer.d.ts.map +1 -1
  16. package/dist/bridge/drivers/claude-sdk.js +148 -212
  17. package/dist/bridge/drivers/claude-sdk.js.map +1 -1
  18. package/dist/bridge/drivers/codex.js +91 -67
  19. package/dist/bridge/drivers/codex.js.map +1 -1
  20. package/dist/bridge/drivers/continue.js +16 -17
  21. package/dist/bridge/drivers/continue.js.map +1 -1
  22. package/dist/bridge/drivers/echo.js +4 -4
  23. package/dist/bridge/drivers/gemini.js +8 -8
  24. package/dist/bridge/drivers/goose.js +16 -17
  25. package/dist/bridge/drivers/goose.js.map +1 -1
  26. package/dist/bridge/drivers/omp.js +68 -104
  27. package/dist/bridge/drivers/omp.js.map +1 -1
  28. package/dist/bridge/drivers/opencode.js +16 -17
  29. package/dist/bridge/drivers/opencode.js.map +1 -1
  30. package/dist/bridge/drivers/qwen.js +8 -8
  31. package/dist/bridge/index.js +17 -18
  32. package/dist/bridge/src/codex/managed-driver.d.ts +13 -10
  33. package/dist/bridge/src/codex/managed-driver.d.ts.map +1 -1
  34. package/dist/bridge/src/drivers/_subprocess-cli.d.ts +12 -2
  35. package/dist/bridge/src/drivers/_subprocess-cli.d.ts.map +1 -1
  36. package/dist/bridge/src/drivers/claude-sdk.d.ts +37 -62
  37. package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
  38. package/dist/bridge/src/drivers/codex.d.ts +26 -10
  39. package/dist/bridge/src/drivers/codex.d.ts.map +1 -1
  40. package/dist/bridge/src/drivers/continue.d.ts +2 -2
  41. package/dist/bridge/src/drivers/continue.d.ts.map +1 -1
  42. package/dist/bridge/src/drivers/gemini.d.ts +2 -2
  43. package/dist/bridge/src/drivers/gemini.d.ts.map +1 -1
  44. package/dist/bridge/src/drivers/goose.d.ts +2 -2
  45. package/dist/bridge/src/drivers/goose.d.ts.map +1 -1
  46. package/dist/bridge/src/drivers/omp.d.ts +24 -35
  47. package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
  48. package/dist/bridge/src/drivers/opencode.d.ts +2 -2
  49. package/dist/bridge/src/drivers/opencode.d.ts.map +1 -1
  50. package/dist/bridge/src/drivers/recovery-policy.d.ts +79 -0
  51. package/dist/bridge/src/drivers/recovery-policy.d.ts.map +1 -0
  52. package/dist/bridge/src/index.d.ts +1 -0
  53. package/dist/bridge/src/index.d.ts.map +1 -1
  54. package/dist/bridge/src/reconfigure-ledger.d.ts +117 -0
  55. package/dist/bridge/src/reconfigure-ledger.d.ts.map +1 -0
  56. package/dist/bridge/src/types.d.ts +57 -6
  57. package/dist/bridge/src/types.d.ts.map +1 -1
  58. package/dist/{chunk-OLLAQLFJ.js → chunk-2FRUUDZY.js} +5 -5
  59. package/dist/{chunk-OLLAQLFJ.js.map → chunk-2FRUUDZY.js.map} +1 -1
  60. package/dist/{chunk-SDFROXSA.js → chunk-2LWYNQK7.js} +3 -3
  61. package/dist/{chunk-SDFROXSA.js.map → chunk-2LWYNQK7.js.map} +1 -1
  62. package/dist/{chunk-TZCQ7ZWQ.js → chunk-36AFURKZ.js} +10 -11
  63. package/dist/chunk-36AFURKZ.js.map +1 -0
  64. package/dist/{chunk-MX3UQXLU.js → chunk-4MQS7CAF.js} +256 -92
  65. package/dist/chunk-4MQS7CAF.js.map +1 -0
  66. package/dist/{chunk-45VFGT7A.js → chunk-4PTSR4UU.js} +3 -3
  67. package/dist/{chunk-45VFGT7A.js.map → chunk-4PTSR4UU.js.map} +1 -1
  68. package/dist/{chunk-VX3INFBA.js → chunk-6GRX5L6A.js} +5 -5
  69. package/dist/{chunk-VX3INFBA.js.map → chunk-6GRX5L6A.js.map} +1 -1
  70. package/dist/{chunk-NFGRW3L7.js → chunk-7RGTAEG6.js} +3 -3
  71. package/dist/{chunk-NFGRW3L7.js.map → chunk-7RGTAEG6.js.map} +1 -1
  72. package/dist/{chunk-5B5IZVEP.js → chunk-AWQYXZVG.js} +15 -6
  73. package/dist/chunk-AWQYXZVG.js.map +1 -0
  74. package/dist/{chunk-XBSQ4KMC.js → chunk-B4X2N7JQ.js} +205 -3
  75. package/dist/chunk-B4X2N7JQ.js.map +1 -0
  76. package/dist/{chunk-FRHE7FFB.js → chunk-B6GIW55K.js} +5 -3
  77. package/dist/chunk-B6GIW55K.js.map +1 -0
  78. package/dist/{chunk-LLKKLKZJ.js → chunk-BJNUNQAW.js} +3 -3
  79. package/dist/{chunk-LLKKLKZJ.js.map → chunk-BJNUNQAW.js.map} +1 -1
  80. package/dist/{chunk-7ZHLYXTI.js → chunk-BTE2V4IW.js} +3 -3
  81. package/dist/{chunk-7ZHLYXTI.js.map → chunk-BTE2V4IW.js.map} +1 -1
  82. package/dist/{chunk-ZBBM6O6P.js → chunk-CGT45WN7.js} +3 -3
  83. package/dist/{chunk-ZBBM6O6P.js.map → chunk-CGT45WN7.js.map} +1 -1
  84. package/dist/{chunk-47ZD34KB.js → chunk-CIFS5K6T.js} +3 -3
  85. package/dist/{chunk-47ZD34KB.js.map → chunk-CIFS5K6T.js.map} +1 -1
  86. package/dist/{chunk-BTISGSK4.js → chunk-CKQEIY43.js} +4 -4
  87. package/dist/{chunk-BTISGSK4.js.map → chunk-CKQEIY43.js.map} +1 -1
  88. package/dist/{chunk-KXTO7HON.js → chunk-EAZECHPM.js} +3 -3
  89. package/dist/{chunk-KXTO7HON.js.map → chunk-EAZECHPM.js.map} +1 -1
  90. package/dist/{chunk-VKSXST23.js → chunk-EF7NPDDU.js} +4 -4
  91. package/dist/{chunk-VKSXST23.js.map → chunk-EF7NPDDU.js.map} +1 -1
  92. package/dist/chunk-EPBKISS5.js +84 -0
  93. package/dist/chunk-EPBKISS5.js.map +1 -0
  94. package/dist/{chunk-VJENKWXF.js → chunk-F2EKONM7.js} +3 -3
  95. package/dist/{chunk-VJENKWXF.js.map → chunk-F2EKONM7.js.map} +1 -1
  96. package/dist/{chunk-DMLDYFDS.js → chunk-F3RDEH5U.js} +7 -4
  97. package/dist/chunk-F3RDEH5U.js.map +1 -0
  98. package/dist/{chunk-UAP2XHRF.js → chunk-FTJJO3EM.js} +39 -29
  99. package/dist/chunk-FTJJO3EM.js.map +1 -0
  100. package/dist/{chunk-2GRB5ITE.js → chunk-FVJK4QWM.js} +4 -4
  101. package/dist/{chunk-2GRB5ITE.js.map → chunk-FVJK4QWM.js.map} +1 -1
  102. package/dist/{chunk-AOAZCSDI.js → chunk-FZNG4V4J.js} +16 -30
  103. package/dist/chunk-FZNG4V4J.js.map +1 -0
  104. package/dist/{chunk-BF33SCLY.js → chunk-GB7WDMH2.js} +4 -4
  105. package/dist/{chunk-BF33SCLY.js.map → chunk-GB7WDMH2.js.map} +1 -1
  106. package/dist/{chunk-NARITJS2.js → chunk-GCICGXDD.js} +3 -3
  107. package/dist/{chunk-NARITJS2.js.map → chunk-GCICGXDD.js.map} +1 -1
  108. package/dist/{chunk-PA7WLID3.js → chunk-GTILM2CI.js} +56 -5
  109. package/dist/chunk-GTILM2CI.js.map +1 -0
  110. package/dist/{chunk-WIHQWVWL.js → chunk-GXXFLBUQ.js} +26 -27
  111. package/dist/chunk-GXXFLBUQ.js.map +1 -0
  112. package/dist/{chunk-PTO2YDDG.js → chunk-H7QUDDKH.js} +1337 -168
  113. package/dist/chunk-H7QUDDKH.js.map +1 -0
  114. package/dist/{chunk-I4QBZLOR.js → chunk-HG34RNTK.js} +7 -13
  115. package/dist/chunk-HG34RNTK.js.map +1 -0
  116. package/dist/{chunk-65EYRFZJ.js → chunk-HYDRDNKN.js} +10 -6
  117. package/dist/chunk-HYDRDNKN.js.map +1 -0
  118. package/dist/{chunk-4GNJELPH.js → chunk-I6NLLJHZ.js} +2 -2
  119. package/dist/{chunk-4GNJELPH.js.map → chunk-I6NLLJHZ.js.map} +1 -1
  120. package/dist/{chunk-VSQFGU5D.js → chunk-ILFGVSTJ.js} +3 -3
  121. package/dist/{chunk-VSQFGU5D.js.map → chunk-ILFGVSTJ.js.map} +1 -1
  122. package/dist/{chunk-2XFUXGV6.js → chunk-IONAUNWB.js} +3 -3
  123. package/dist/{chunk-2XFUXGV6.js.map → chunk-IONAUNWB.js.map} +1 -1
  124. package/dist/{chunk-CT6NQSA4.js → chunk-ISHJITXJ.js} +3 -3
  125. package/dist/{chunk-CT6NQSA4.js.map → chunk-ISHJITXJ.js.map} +1 -1
  126. package/dist/chunk-IZCR27MU.js +60 -0
  127. package/dist/chunk-IZCR27MU.js.map +1 -0
  128. package/dist/{chunk-2W4LBLIN.js → chunk-JAKOMFC6.js} +68 -20
  129. package/dist/chunk-JAKOMFC6.js.map +1 -0
  130. package/dist/{chunk-MFHKHXDE.js → chunk-L5VSIPQD.js} +5 -5
  131. package/dist/chunk-L5VSIPQD.js.map +1 -0
  132. package/dist/{chunk-RGXVQZOV.js → chunk-LEMHVDET.js} +89 -67
  133. package/dist/chunk-LEMHVDET.js.map +1 -0
  134. package/dist/{chunk-37FTLYFP.js → chunk-LNFKL23K.js} +3 -3
  135. package/dist/{chunk-37FTLYFP.js.map → chunk-LNFKL23K.js.map} +1 -1
  136. package/dist/{chunk-6NPINANG.js → chunk-LSXHED6I.js} +6 -6
  137. package/dist/{chunk-6NPINANG.js.map → chunk-LSXHED6I.js.map} +1 -1
  138. package/dist/{chunk-XUUYAS3Z.js → chunk-M3WPBTGJ.js} +3 -3
  139. package/dist/{chunk-XUUYAS3Z.js.map → chunk-M3WPBTGJ.js.map} +1 -1
  140. package/dist/{chunk-QZLWJETK.js → chunk-MGGFBZWA.js} +3 -3
  141. package/dist/{chunk-QZLWJETK.js.map → chunk-MGGFBZWA.js.map} +1 -1
  142. package/dist/{chunk-QD772CGQ.js → chunk-NPLPCRW5.js} +5 -5
  143. package/dist/{chunk-QD772CGQ.js.map → chunk-NPLPCRW5.js.map} +1 -1
  144. package/dist/{chunk-QCI6D7E4.js → chunk-NUELZWCF.js} +266 -170
  145. package/dist/chunk-NUELZWCF.js.map +1 -0
  146. package/dist/{chunk-GP6ZL7PE.js → chunk-OFBIWVCR.js} +3 -3
  147. package/dist/{chunk-GP6ZL7PE.js.map → chunk-OFBIWVCR.js.map} +1 -1
  148. package/dist/{chunk-D2V42LUE.js → chunk-P23M65LB.js} +93 -52
  149. package/dist/chunk-P23M65LB.js.map +1 -0
  150. package/dist/{chunk-46OVMT76.js → chunk-PMECEZK3.js} +16 -10
  151. package/dist/chunk-PMECEZK3.js.map +1 -0
  152. package/dist/{chunk-27HS2DHB.js → chunk-PTSGWKHR.js} +4 -4
  153. package/dist/{chunk-27HS2DHB.js.map → chunk-PTSGWKHR.js.map} +1 -1
  154. package/dist/{chunk-OKGUDNDT.js → chunk-Q6E6FM7P.js} +35 -33
  155. package/dist/chunk-Q6E6FM7P.js.map +1 -0
  156. package/dist/{chunk-PJS2YWGG.js → chunk-QOP6KDFR.js} +8 -9
  157. package/dist/chunk-QOP6KDFR.js.map +1 -0
  158. package/dist/{chunk-AO7VJ6G6.js → chunk-QVNRCDTV.js} +29 -8
  159. package/dist/chunk-QVNRCDTV.js.map +1 -0
  160. package/dist/{chunk-VBBBZDI7.js → chunk-S53LOR7B.js} +3 -3
  161. package/dist/{chunk-VBBBZDI7.js.map → chunk-S53LOR7B.js.map} +1 -1
  162. package/dist/{chunk-KUFNKVBM.js → chunk-SH5D7U7N.js} +20 -7
  163. package/dist/{chunk-KUFNKVBM.js.map → chunk-SH5D7U7N.js.map} +1 -1
  164. package/dist/{chunk-SX4UIDKT.js → chunk-UAROCOXF.js} +3 -3
  165. package/dist/{chunk-SX4UIDKT.js.map → chunk-UAROCOXF.js.map} +1 -1
  166. package/dist/{chunk-JMKB7IB4.js → chunk-UMVKJM4Q.js} +4 -4
  167. package/dist/chunk-UMVKJM4Q.js.map +1 -0
  168. package/dist/{chunk-HCYS7GFP.js → chunk-V2DXZYBB.js} +3 -3
  169. package/dist/{chunk-HCYS7GFP.js.map → chunk-V2DXZYBB.js.map} +1 -1
  170. package/dist/{chunk-KYXOGHY6.js → chunk-W5DWWE4Y.js} +4 -4
  171. package/dist/{chunk-KYXOGHY6.js.map → chunk-W5DWWE4Y.js.map} +1 -1
  172. package/dist/{chunk-FK6HPLQA.js → chunk-WTQ3TATB.js} +3 -3
  173. package/dist/{chunk-FK6HPLQA.js.map → chunk-WTQ3TATB.js.map} +1 -1
  174. package/dist/{chunk-OGLDAJFL.js → chunk-Y4N2NUZD.js} +4 -4
  175. package/dist/{chunk-OGLDAJFL.js.map → chunk-Y4N2NUZD.js.map} +1 -1
  176. package/dist/{chunk-XOGG7VDZ.js → chunk-Y7QA2OLD.js} +17 -25
  177. package/dist/chunk-Y7QA2OLD.js.map +1 -0
  178. package/dist/{chunk-2KOKBTR4.js → chunk-YSHVQGUS.js} +123 -28
  179. package/dist/chunk-YSHVQGUS.js.map +1 -0
  180. package/dist/chunk-ZAOGFXDO.js +112 -0
  181. package/dist/chunk-ZAOGFXDO.js.map +1 -0
  182. package/dist/{chunk-7KLC4LZO.js → chunk-ZKSJMZKD.js} +17 -13
  183. package/dist/chunk-ZKSJMZKD.js.map +1 -0
  184. package/dist/cli/index.js +1169 -672
  185. package/dist/cli/index.js.map +1 -1
  186. package/dist/cli/src/asset-feeds.d.ts +5 -2
  187. package/dist/cli/src/asset-feeds.d.ts.map +1 -1
  188. package/dist/cli/src/commands/asset-cmd.d.ts.map +1 -1
  189. package/dist/cli/src/commands/catalog.d.ts +27 -5
  190. package/dist/cli/src/commands/catalog.d.ts.map +1 -1
  191. package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
  192. package/dist/cli/src/commands/library-index.d.ts +49 -4
  193. package/dist/cli/src/commands/library-index.d.ts.map +1 -1
  194. package/dist/cli/src/commands/library-publish.d.ts +9 -0
  195. package/dist/cli/src/commands/library-publish.d.ts.map +1 -1
  196. package/dist/cli/src/commands/manage.d.ts +8 -2
  197. package/dist/cli/src/commands/manage.d.ts.map +1 -1
  198. package/dist/cli/src/commands/outdated.d.ts +10 -4
  199. package/dist/cli/src/commands/outdated.d.ts.map +1 -1
  200. package/dist/cli/src/commands/project.d.ts +15 -4
  201. package/dist/cli/src/commands/project.d.ts.map +1 -1
  202. package/dist/cli/src/commands/publish-core.d.ts +10 -1
  203. package/dist/cli/src/commands/publish-core.d.ts.map +1 -1
  204. package/dist/cli/src/commands/session.d.ts.map +1 -1
  205. package/dist/cli/src/commands/source.d.ts +18 -3
  206. package/dist/cli/src/commands/source.d.ts.map +1 -1
  207. package/dist/cli/src/commands/tree.d.ts.map +1 -1
  208. package/dist/cli/src/commands/update.d.ts +1 -1
  209. package/dist/cli/src/commands/update.d.ts.map +1 -1
  210. package/dist/cli/src/commands/validate.d.ts.map +1 -1
  211. package/dist/cli/src/flow-discovery.d.ts +8 -5
  212. package/dist/cli/src/flow-discovery.d.ts.map +1 -1
  213. package/dist/cli/src/open-library.d.ts +0 -11
  214. package/dist/cli/src/open-library.d.ts.map +1 -1
  215. package/dist/cli/src/skill-checks.d.ts +30 -10
  216. package/dist/cli/src/skill-checks.d.ts.map +1 -1
  217. package/dist/connectors/config.js +6 -6
  218. package/dist/connectors/index.js +26 -27
  219. package/dist/connectors/src/access-policy.d.ts +33 -0
  220. package/dist/connectors/src/access-policy.d.ts.map +1 -0
  221. package/dist/connectors/src/connector-manager.d.ts.map +1 -1
  222. package/dist/connectors/src/index.d.ts +2 -0
  223. package/dist/connectors/src/index.d.ts.map +1 -1
  224. package/dist/connectors-O6Y6VESP.js +44 -0
  225. package/dist/{connectors-HWENZFKW.js.map → connectors-O6Y6VESP.js.map} +1 -1
  226. package/dist/connectors-shared/index.js +2 -2
  227. package/dist/core/index.js +9 -9
  228. package/dist/core/logging.js +1 -1
  229. package/dist/core/manifest.js +2 -2
  230. package/dist/core/models.js +1 -1
  231. package/dist/core/publish-manifest.js +2 -2
  232. package/dist/core/ref.js +1 -1
  233. package/dist/core/runtime-assets.js +6 -6
  234. package/dist/core/src/cache-paths.d.ts.map +1 -1
  235. package/dist/core/src/index.d.ts +4 -4
  236. package/dist/core/src/index.d.ts.map +1 -1
  237. package/dist/core/src/lock.d.ts +3 -3
  238. package/dist/core/src/lock.d.ts.map +1 -1
  239. package/dist/core/src/logging/config.d.ts +9 -1
  240. package/dist/core/src/logging/config.d.ts.map +1 -1
  241. package/dist/core/src/manifest.d.ts +17 -2
  242. package/dist/core/src/manifest.d.ts.map +1 -1
  243. package/dist/core/src/models.d.ts +22 -6
  244. package/dist/core/src/models.d.ts.map +1 -1
  245. package/dist/core/src/repo-manager.d.ts +41 -6
  246. package/dist/core/src/repo-manager.d.ts.map +1 -1
  247. package/dist/core/src/store.d.ts +16 -2
  248. package/dist/core/src/store.d.ts.map +1 -1
  249. package/dist/core/src/workspace-config.d.ts +10 -1
  250. package/dist/core/src/workspace-config.d.ts.map +1 -1
  251. package/dist/core/store.js +2 -2
  252. package/dist/core/workspace-config.js +5 -5
  253. package/dist/deploy/index.js +9 -9
  254. package/dist/discovery/index.js +5 -5
  255. package/dist/discovery/src/index.d.ts +1 -1
  256. package/dist/discovery/src/index.d.ts.map +1 -1
  257. package/dist/discovery/src/source-config.d.ts +12 -0
  258. package/dist/discovery/src/source-config.d.ts.map +1 -1
  259. package/dist/discovery/src/tree-entries.d.ts.map +1 -1
  260. package/dist/{ensure-sources-DSTSXJWK.js → ensure-sources-SKLNM4UZ.js} +19 -19
  261. package/dist/{ensure-sources-DSTSXJWK.js.map → ensure-sources-SKLNM4UZ.js.map} +1 -1
  262. package/dist/factory-assets/connectors/box.js +26 -27
  263. package/dist/factory-assets/connectors/deploy.js +26 -27
  264. package/dist/factory-assets/connectors/devserver.js +26 -27
  265. package/dist/factory-assets/connectors/flow/adapter.d.ts +6 -0
  266. package/dist/factory-assets/connectors/flow/adapter.d.ts.map +1 -1
  267. package/dist/factory-assets/connectors/flow/adapter.js +26 -27
  268. package/dist/factory-assets/connectors/flow/contract/expression.d.ts +3 -0
  269. package/dist/factory-assets/connectors/flow/contract/expression.d.ts.map +1 -1
  270. package/dist/factory-assets/connectors/flow/contract/output-fields.d.ts +1 -1
  271. package/dist/factory-assets/connectors/flow/contract/output-fields.d.ts.map +1 -1
  272. package/dist/factory-assets/connectors/flow/contract/schema.d.ts.map +1 -1
  273. package/dist/factory-assets/connectors/flow/contract.js +4 -4
  274. package/dist/factory-assets/connectors/flow/engine/flow-output.d.ts +4 -3
  275. package/dist/factory-assets/connectors/flow/engine/flow-output.d.ts.map +1 -1
  276. package/dist/factory-assets/connectors/flow/engine/output-schema.d.ts +6 -1
  277. package/dist/factory-assets/connectors/flow/engine/output-schema.d.ts.map +1 -1
  278. package/dist/factory-assets/connectors/flow/engine.js +13 -13
  279. package/dist/factory-assets/connectors/flow/inline-sub-flow-host.d.ts.map +1 -1
  280. package/dist/factory-assets/connectors/flow/prompt-fragments.js +3 -3
  281. package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -1
  282. package/dist/factory-assets/connectors/flow/run-flow.js +28 -29
  283. package/dist/factory-assets/connectors/flow.js +26 -27
  284. package/dist/factory-assets/connectors/git/config.d.ts.map +1 -1
  285. package/dist/factory-assets/connectors/git.js +26 -27
  286. package/dist/factory-assets/connectors/gmail.js +26 -27
  287. package/dist/factory-assets/connectors/googledrive.js +26 -27
  288. package/dist/factory-assets/connectors/local.js +26 -27
  289. package/dist/factory-assets/connectors/mattermost.js +26 -27
  290. package/dist/factory-assets/connectors/memory.js +26 -27
  291. package/dist/factory-assets/connectors/minio.js +26 -27
  292. package/dist/factory-assets/connectors/postgres.js +26 -27
  293. package/dist/factory-assets/connectors/s3.js +26 -27
  294. package/dist/factory-assets/connectors/sharepoint.js +26 -27
  295. package/dist/factory-assets/connectors/sqlite.js +26 -27
  296. package/dist/factory-assets/connectors/static-server.js +26 -27
  297. package/dist/factory-assets/connectors/tunnel.js +26 -27
  298. package/dist/factory-assets/connectors/webdav.js +26 -27
  299. package/dist/factory-assets/connectors/xstate-store.js +26 -27
  300. package/dist/factory-assets/connectors/xstate.js +26 -27
  301. package/dist/factory-assets/skills/skaile-author-asset/SKILL.md +10 -7
  302. package/dist/flows-CBYRSAGS.js +26 -0
  303. package/dist/{flows-ENQY2DV7.js.map → flows-CBYRSAGS.js.map} +1 -1
  304. package/dist/{helpers-R44RUTDY.js → helpers-MWZDRBLD.js} +19 -19
  305. package/dist/{helpers-R44RUTDY.js.map → helpers-MWZDRBLD.js.map} +1 -1
  306. package/dist/library/index.js +13 -13
  307. package/dist/library/install.js +3 -3
  308. package/dist/library/src/index.d.ts +5 -3
  309. package/dist/library/src/index.d.ts.map +1 -1
  310. package/dist/library/src/local/library-manager.d.ts +6 -0
  311. package/dist/library/src/local/library-manager.d.ts.map +1 -1
  312. package/dist/library/src/local/local-catalog-source.d.ts +5 -2
  313. package/dist/library/src/local/local-catalog-source.d.ts.map +1 -1
  314. package/dist/library/src/local/scan-authoring-libraries.d.ts +43 -0
  315. package/dist/library/src/local/scan-authoring-libraries.d.ts.map +1 -0
  316. package/dist/library/src/manifest-writer.d.ts +46 -1
  317. package/dist/library/src/manifest-writer.d.ts.map +1 -1
  318. package/dist/library/src/sync/git-driver.d.ts +12 -0
  319. package/dist/library/src/sync/git-driver.d.ts.map +1 -1
  320. package/dist/{library-publish-LFOJJVMK.js → library-publish-PICMDSB2.js} +129 -49
  321. package/dist/library-publish-PICMDSB2.js.map +1 -0
  322. package/dist/open-library-OG457THY.js +40 -0
  323. package/dist/{open-library-4WUMQHES.js.map → open-library-OG457THY.js.map} +1 -1
  324. package/dist/open-registry-ZUZJ7MS7.js +32 -0
  325. package/dist/{open-registry-NVPCQPND.js.map → open-registry-ZUZJ7MS7.js.map} +1 -1
  326. package/dist/paths-FQ64OLJG.js +22 -0
  327. package/dist/{paths-YUCP7K6U.js.map → paths-FQ64OLJG.js.map} +1 -1
  328. package/dist/{plugin-store-66QFBNEO.js → plugin-store-MPAMD5OT.js} +11 -11
  329. package/dist/{plugin-store-66QFBNEO.js.map → plugin-store-MPAMD5OT.js.map} +1 -1
  330. package/dist/project-2GFT5LEZ.js +41 -0
  331. package/dist/{project-VMOHUXBD.js.map → project-2GFT5LEZ.js.map} +1 -1
  332. package/dist/resolver/index.js +10 -10
  333. package/dist/runner/index.js +41 -42
  334. package/dist/runner/src/logging-bootstrap.d.ts +6 -0
  335. package/dist/runner/src/logging-bootstrap.d.ts.map +1 -1
  336. package/dist/runner/src/reconfigure-handler.d.ts +38 -17
  337. package/dist/runner/src/reconfigure-handler.d.ts.map +1 -1
  338. package/dist/runner/src/serve.d.ts.map +1 -1
  339. package/dist/runner/src/session-capability-wiring.d.ts +0 -2
  340. package/dist/runner/src/session-capability-wiring.d.ts.map +1 -1
  341. package/dist/sdk/asset-manager.js +16 -16
  342. package/dist/sdk/bridge.js +17 -18
  343. package/dist/sdk/core.js +9 -9
  344. package/dist/sdk/flow.js +13 -13
  345. package/dist/sdk/index.js +69 -46
  346. package/dist/sdk/index.js.map +1 -1
  347. package/dist/sdk/resolver.js +10 -10
  348. package/dist/sdk/runner.js +41 -42
  349. package/dist/sdk/session.js +2 -2
  350. package/dist/sdk/src/agent-session.d.ts +8 -0
  351. package/dist/sdk/src/agent-session.d.ts.map +1 -1
  352. package/dist/sdk/store.js +2 -1
  353. package/dist/sdk/types.js +1 -1
  354. package/dist/secrets/index.js +2 -2
  355. package/dist/session/index.js +2 -2
  356. package/dist/{setup-PYY23HGZ.js → setup-WHMCSIF2.js} +27 -28
  357. package/dist/setup-WHMCSIF2.js.map +1 -0
  358. package/dist/skills-TVO26Y4V.js +26 -0
  359. package/dist/{skills-CS7NE5TT.js.map → skills-TVO26Y4V.js.map} +1 -1
  360. package/dist/source-LKOFTOEK.js +41 -0
  361. package/dist/{source-JCF6KSQN.js.map → source-LKOFTOEK.js.map} +1 -1
  362. package/dist/{source-manifest-publish-O6P7G2M7.js → source-manifest-publish-L5J3QXER.js} +28 -28
  363. package/dist/{source-manifest-publish-O6P7G2M7.js.map → source-manifest-publish-L5J3QXER.js.map} +1 -1
  364. package/dist/store/index.js +2 -1
  365. package/dist/store/src/store.d.ts +8 -5
  366. package/dist/store/src/store.d.ts.map +1 -1
  367. package/dist/tui/index.js +41 -42
  368. package/dist/tui/index.js.map +1 -1
  369. package/dist/types/index.js +1 -1
  370. package/dist/types/manifests.js +1 -1
  371. package/dist/types/src/ask-slots.d.ts +68 -0
  372. package/dist/types/src/ask-slots.d.ts.map +1 -0
  373. package/dist/types/src/delivery.d.ts.map +1 -1
  374. package/dist/types/src/events.d.ts +29 -1
  375. package/dist/types/src/events.d.ts.map +1 -1
  376. package/dist/types/src/index.d.ts +1 -1
  377. package/dist/types/src/index.d.ts.map +1 -1
  378. package/dist/types/src/manifests/index.d.ts +1 -1
  379. package/dist/types/src/manifests/index.d.ts.map +1 -1
  380. package/dist/types/src/manifests/preset.d.ts +4 -0
  381. package/dist/types/src/manifests/preset.d.ts.map +1 -1
  382. package/dist/types/src/version.d.ts +12 -1
  383. package/dist/types/src/version.d.ts.map +1 -1
  384. package/dist/workspace-plugin/adapters/mcp.js +33 -34
  385. package/dist/workspace-plugin/adapters/omp.js +14 -14
  386. package/dist/workspace-plugin/index.js +2 -2
  387. package/package.json +1 -1
  388. package/dist/asset-feeds-LU7NHOAP.js.map +0 -1
  389. package/dist/chunk-2KOKBTR4.js.map +0 -1
  390. package/dist/chunk-2NYXQYHN.js +0 -22
  391. package/dist/chunk-2NYXQYHN.js.map +0 -1
  392. package/dist/chunk-2W4LBLIN.js.map +0 -1
  393. package/dist/chunk-46OVMT76.js.map +0 -1
  394. package/dist/chunk-5B5IZVEP.js.map +0 -1
  395. package/dist/chunk-65EYRFZJ.js.map +0 -1
  396. package/dist/chunk-7KLC4LZO.js.map +0 -1
  397. package/dist/chunk-AO7VJ6G6.js.map +0 -1
  398. package/dist/chunk-AOAZCSDI.js.map +0 -1
  399. package/dist/chunk-D2V42LUE.js.map +0 -1
  400. package/dist/chunk-DMLDYFDS.js.map +0 -1
  401. package/dist/chunk-EINLFFP6.js +0 -59
  402. package/dist/chunk-EINLFFP6.js.map +0 -1
  403. package/dist/chunk-FRHE7FFB.js.map +0 -1
  404. package/dist/chunk-I4QBZLOR.js.map +0 -1
  405. package/dist/chunk-JMKB7IB4.js.map +0 -1
  406. package/dist/chunk-MFHKHXDE.js.map +0 -1
  407. package/dist/chunk-MX3UQXLU.js.map +0 -1
  408. package/dist/chunk-OKGUDNDT.js.map +0 -1
  409. package/dist/chunk-PA7WLID3.js.map +0 -1
  410. package/dist/chunk-PJS2YWGG.js.map +0 -1
  411. package/dist/chunk-PTO2YDDG.js.map +0 -1
  412. package/dist/chunk-QCI6D7E4.js.map +0 -1
  413. package/dist/chunk-RGXVQZOV.js.map +0 -1
  414. package/dist/chunk-TZCQ7ZWQ.js.map +0 -1
  415. package/dist/chunk-UAP2XHRF.js.map +0 -1
  416. package/dist/chunk-WIHQWVWL.js.map +0 -1
  417. package/dist/chunk-XBSQ4KMC.js.map +0 -1
  418. package/dist/chunk-XOGG7VDZ.js.map +0 -1
  419. package/dist/connectors-HWENZFKW.js +0 -45
  420. package/dist/flows-ENQY2DV7.js +0 -26
  421. package/dist/library-publish-LFOJJVMK.js.map +0 -1
  422. package/dist/open-library-4WUMQHES.js +0 -40
  423. package/dist/open-registry-NVPCQPND.js +0 -32
  424. package/dist/paths-YUCP7K6U.js +0 -22
  425. package/dist/project-VMOHUXBD.js +0 -41
  426. package/dist/setup-PYY23HGZ.js.map +0 -1
  427. package/dist/skills-CS7NE5TT.js +0 -26
  428. package/dist/source-JCF6KSQN.js +0 -41
@@ -1 +1 @@
1
- {"version":3,"sources":["../workspace-plugin/src/tools/skills.ts"],"names":[],"mappings":"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","file":"chunk-KYXOGHY6.js","sourcesContent":["// src/tools/skills.ts\n\nimport type { Dirent } from \"node:fs\";\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { findKindDirs } from \"@skaile/workspaces/core/discovery\";\nimport {\n buildRequiresPreamble,\n parseSkillFrontmatter,\n parseSkillRequirements,\n validateRequirements,\n} from \"@skaile/workspaces/resolver\";\nimport type { ToolResult } from \"../types.js\";\nimport { err, ok, okJson } from \"../types.js\";\nimport { findAiAssetsRoot } from \"../utils/ai-assets.js\";\n\ninterface SkillEntry {\n id: string;\n name: string;\n description: string;\n source?: string;\n version?: string;\n keywords?: string[];\n path: string;\n}\n\nasync function walkForSkillMd(dir: string, acc: SkillEntry[]): Promise<void> {\n let entries: Dirent<string>[];\n try {\n entries = await fs.readdir(dir, { withFileTypes: true });\n } catch {\n return;\n }\n\n // Check if this directory contains a SKILL.md\n const hasSkillMd = entries.some((e) => e.isFile() && e.name === \"SKILL.md\");\n if (hasSkillMd) {\n const skillMdPath = path.join(dir, \"SKILL.md\");\n try {\n const content = await fs.readFile(skillMdPath, \"utf-8\");\n const fm = parseSkillFrontmatter(content);\n const name = typeof fm.name === \"string\" ? fm.name : path.basename(dir);\n const description = typeof fm.description === \"string\" ? fm.description : \"\";\n const source = typeof fm.source === \"string\" ? fm.source : undefined;\n const version = typeof fm.version === \"string\" ? fm.version : undefined;\n const keywords = Array.isArray(fm.keywords) ? (fm.keywords as string[]) : undefined;\n acc.push({\n id: path.basename(dir),\n name,\n description,\n source,\n version,\n keywords,\n path: skillMdPath,\n });\n } catch {\n // skip unreadable files\n }\n return; // don't recurse inside a skill directory\n }\n\n // Recurse into subdirectories\n for (const entry of entries) {\n if (entry.isDirectory()) {\n await walkForSkillMd(path.join(dir, entry.name), acc);\n }\n }\n}\n\nasync function scanSkills(aiAssetsRoot: string): Promise<SkillEntry[]> {\n const acc: SkillEntry[] = [];\n for (const skillsDir of findKindDirs(aiAssetsRoot, \"skills\")) {\n await walkForSkillMd(skillsDir, acc);\n }\n // A `skills/` dir nested inside another is walked twice; keep each SKILL.md once.\n return [...new Map(acc.map((s) => [s.path, s])).values()];\n}\n\n// ── Exported tool functions ────────────────────────────────────────────────────\n\n/**\n * List all skills in the `ai-assets` catalog.\n *\n * Walks every `skills/` directory at any depth under the `ai-assets` root\n * looking for `SKILL.md` files. Returns a JSON array of skill summaries\n * `{ id, name, description, source, version, keywords }`.\n *\n * @param projectDir - Absolute path to the skaile project root.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function skillList(projectDir: string): Promise<ToolResult> {\n try {\n const aiAssetsRoot = await findAiAssetsRoot(projectDir);\n if (!aiAssetsRoot) return okJson([]);\n const skills = await scanSkills(aiAssetsRoot);\n return okJson(\n skills.map((s) => ({\n id: s.id,\n name: s.name,\n description: s.description,\n source: s.source,\n version: s.version,\n keywords: s.keywords,\n })),\n );\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Show the full `SKILL.md` content for a skill.\n *\n * @param projectDir - Absolute path to the skaile project root.\n * @param skillId - Skill ID (directory name) as returned by {@link skillList}.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function skillShow(projectDir: string, skillId: string): Promise<ToolResult> {\n try {\n const aiAssetsRoot = await findAiAssetsRoot(projectDir);\n if (!aiAssetsRoot) return err(`Skill not found: ${skillId}`);\n const skills = await scanSkills(aiAssetsRoot);\n const skill = skills.find((s) => s.id === skillId);\n if (!skill) return err(`Skill not found: ${skillId}`);\n const content = await fs.readFile(skill.path, \"utf-8\");\n return ok(content);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Search skills by name, description, ID, or keywords.\n *\n * Case-insensitive substring match against all text fields in every skill\n * entry. Returns the same summary shape as {@link skillList}.\n *\n * @param projectDir - Absolute path to the skaile project root.\n * @param query - Search string.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function skillSearch(projectDir: string, query: string): Promise<ToolResult> {\n try {\n const aiAssetsRoot = await findAiAssetsRoot(projectDir);\n if (!aiAssetsRoot) return okJson([]);\n const skills = await scanSkills(aiAssetsRoot);\n const q = query.toLowerCase();\n const matched = skills.filter(\n (s) =>\n s.name.toLowerCase().includes(q) ||\n s.description.toLowerCase().includes(q) ||\n s.id.toLowerCase().includes(q) ||\n (s.keywords ?? []).some((k) => k.toLowerCase().includes(q)),\n );\n return okJson(\n matched.map((s) => ({\n id: s.id,\n name: s.name,\n description: s.description,\n source: s.source,\n version: s.version,\n keywords: s.keywords,\n })),\n );\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Validate that all prerequisites declared in a skill's `SKILL.md` are\n * satisfied in `targetDir`.\n *\n * Uses `@skaile/workspaces/resolver` to parse the `REQUIRES` / `READS` / `WRITES`\n * DSL and run the requirement checks against the filesystem. Returns a\n * validation report as JSON.\n *\n * @param projectDir - Absolute path to the skaile project root (for skill lookup).\n * @param skillId - Skill ID as returned by {@link skillList}.\n * @param targetDir - Directory to validate against (typically the user's project).\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function skillCheckRequirements(\n projectDir: string,\n skillId: string,\n targetDir: string,\n): Promise<ToolResult> {\n try {\n const aiAssetsRoot = await findAiAssetsRoot(projectDir);\n if (!aiAssetsRoot) return err(`Skill not found: ${skillId}`);\n const skills = await scanSkills(aiAssetsRoot);\n const skill = skills.find((s) => s.id === skillId);\n if (!skill) return err(`Skill not found: ${skillId}`);\n const content = await fs.readFile(skill.path, \"utf-8\");\n\n const requirements = parseSkillRequirements(content);\n const report = await validateRequirements(skillId, requirements, targetDir);\n return okJson(report);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Get the formatted `REQUIRES`/`INPUT`/`READS`/`WRITES` DSL preamble for a skill.\n *\n * Uses `@skaile/workspaces/resolver` to build the requirements preamble that can be\n * prepended to the skill prompt for injection into the agent's context.\n * Returns `\"(no requirements declared)\"` when the skill has no requirements.\n *\n * @param projectDir - Absolute path to the skaile project root.\n * @param skillId - Skill ID as returned by {@link skillList}.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function skillGetPreamble(projectDir: string, skillId: string): Promise<ToolResult> {\n try {\n const aiAssetsRoot = await findAiAssetsRoot(projectDir);\n if (!aiAssetsRoot) return err(`Skill not found: ${skillId}`);\n const skills = await scanSkills(aiAssetsRoot);\n const skill = skills.find((s) => s.id === skillId);\n if (!skill) return err(`Skill not found: ${skillId}`);\n const content = await fs.readFile(skill.path, \"utf-8\");\n\n const requirements = parseSkillRequirements(content);\n const preamble = buildRequiresPreamble(requirements, skillId);\n return ok(preamble || \"(no requirements declared)\");\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n"]}
1
+ {"version":3,"sources":["../workspace-plugin/src/tools/skills.ts"],"names":[],"mappings":"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","file":"chunk-W5DWWE4Y.js","sourcesContent":["// src/tools/skills.ts\n\nimport type { Dirent } from \"node:fs\";\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { findKindDirs } from \"@skaile/workspaces/core/discovery\";\nimport {\n buildRequiresPreamble,\n parseSkillFrontmatter,\n parseSkillRequirements,\n validateRequirements,\n} from \"@skaile/workspaces/resolver\";\nimport type { ToolResult } from \"../types.js\";\nimport { err, ok, okJson } from \"../types.js\";\nimport { findAiAssetsRoot } from \"../utils/ai-assets.js\";\n\ninterface SkillEntry {\n id: string;\n name: string;\n description: string;\n source?: string;\n version?: string;\n keywords?: string[];\n path: string;\n}\n\nasync function walkForSkillMd(dir: string, acc: SkillEntry[]): Promise<void> {\n let entries: Dirent<string>[];\n try {\n entries = await fs.readdir(dir, { withFileTypes: true });\n } catch {\n return;\n }\n\n // Check if this directory contains a SKILL.md\n const hasSkillMd = entries.some((e) => e.isFile() && e.name === \"SKILL.md\");\n if (hasSkillMd) {\n const skillMdPath = path.join(dir, \"SKILL.md\");\n try {\n const content = await fs.readFile(skillMdPath, \"utf-8\");\n const fm = parseSkillFrontmatter(content);\n const name = typeof fm.name === \"string\" ? fm.name : path.basename(dir);\n const description = typeof fm.description === \"string\" ? fm.description : \"\";\n const source = typeof fm.source === \"string\" ? fm.source : undefined;\n const version = typeof fm.version === \"string\" ? fm.version : undefined;\n const keywords = Array.isArray(fm.keywords) ? (fm.keywords as string[]) : undefined;\n acc.push({\n id: path.basename(dir),\n name,\n description,\n source,\n version,\n keywords,\n path: skillMdPath,\n });\n } catch {\n // skip unreadable files\n }\n return; // don't recurse inside a skill directory\n }\n\n // Recurse into subdirectories\n for (const entry of entries) {\n if (entry.isDirectory()) {\n await walkForSkillMd(path.join(dir, entry.name), acc);\n }\n }\n}\n\nasync function scanSkills(aiAssetsRoot: string): Promise<SkillEntry[]> {\n const acc: SkillEntry[] = [];\n for (const skillsDir of findKindDirs(aiAssetsRoot, \"skills\")) {\n await walkForSkillMd(skillsDir, acc);\n }\n // A `skills/` dir nested inside another is walked twice; keep each SKILL.md once.\n return [...new Map(acc.map((s) => [s.path, s])).values()];\n}\n\n// ── Exported tool functions ────────────────────────────────────────────────────\n\n/**\n * List all skills in the `ai-assets` catalog.\n *\n * Walks every `skills/` directory at any depth under the `ai-assets` root\n * looking for `SKILL.md` files. Returns a JSON array of skill summaries\n * `{ id, name, description, source, version, keywords }`.\n *\n * @param projectDir - Absolute path to the skaile project root.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function skillList(projectDir: string): Promise<ToolResult> {\n try {\n const aiAssetsRoot = await findAiAssetsRoot(projectDir);\n if (!aiAssetsRoot) return okJson([]);\n const skills = await scanSkills(aiAssetsRoot);\n return okJson(\n skills.map((s) => ({\n id: s.id,\n name: s.name,\n description: s.description,\n source: s.source,\n version: s.version,\n keywords: s.keywords,\n })),\n );\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Show the full `SKILL.md` content for a skill.\n *\n * @param projectDir - Absolute path to the skaile project root.\n * @param skillId - Skill ID (directory name) as returned by {@link skillList}.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function skillShow(projectDir: string, skillId: string): Promise<ToolResult> {\n try {\n const aiAssetsRoot = await findAiAssetsRoot(projectDir);\n if (!aiAssetsRoot) return err(`Skill not found: ${skillId}`);\n const skills = await scanSkills(aiAssetsRoot);\n const skill = skills.find((s) => s.id === skillId);\n if (!skill) return err(`Skill not found: ${skillId}`);\n const content = await fs.readFile(skill.path, \"utf-8\");\n return ok(content);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Search skills by name, description, ID, or keywords.\n *\n * Case-insensitive substring match against all text fields in every skill\n * entry. Returns the same summary shape as {@link skillList}.\n *\n * @param projectDir - Absolute path to the skaile project root.\n * @param query - Search string.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function skillSearch(projectDir: string, query: string): Promise<ToolResult> {\n try {\n const aiAssetsRoot = await findAiAssetsRoot(projectDir);\n if (!aiAssetsRoot) return okJson([]);\n const skills = await scanSkills(aiAssetsRoot);\n const q = query.toLowerCase();\n const matched = skills.filter(\n (s) =>\n s.name.toLowerCase().includes(q) ||\n s.description.toLowerCase().includes(q) ||\n s.id.toLowerCase().includes(q) ||\n (s.keywords ?? []).some((k) => k.toLowerCase().includes(q)),\n );\n return okJson(\n matched.map((s) => ({\n id: s.id,\n name: s.name,\n description: s.description,\n source: s.source,\n version: s.version,\n keywords: s.keywords,\n })),\n );\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Validate that all prerequisites declared in a skill's `SKILL.md` are\n * satisfied in `targetDir`.\n *\n * Uses `@skaile/workspaces/resolver` to parse the `REQUIRES` / `READS` / `WRITES`\n * DSL and run the requirement checks against the filesystem. Returns a\n * validation report as JSON.\n *\n * @param projectDir - Absolute path to the skaile project root (for skill lookup).\n * @param skillId - Skill ID as returned by {@link skillList}.\n * @param targetDir - Directory to validate against (typically the user's project).\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function skillCheckRequirements(\n projectDir: string,\n skillId: string,\n targetDir: string,\n): Promise<ToolResult> {\n try {\n const aiAssetsRoot = await findAiAssetsRoot(projectDir);\n if (!aiAssetsRoot) return err(`Skill not found: ${skillId}`);\n const skills = await scanSkills(aiAssetsRoot);\n const skill = skills.find((s) => s.id === skillId);\n if (!skill) return err(`Skill not found: ${skillId}`);\n const content = await fs.readFile(skill.path, \"utf-8\");\n\n const requirements = parseSkillRequirements(content);\n const report = await validateRequirements(skillId, requirements, targetDir);\n return okJson(report);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Get the formatted `REQUIRES`/`INPUT`/`READS`/`WRITES` DSL preamble for a skill.\n *\n * Uses `@skaile/workspaces/resolver` to build the requirements preamble that can be\n * prepended to the skill prompt for injection into the agent's context.\n * Returns `\"(no requirements declared)\"` when the skill has no requirements.\n *\n * @param projectDir - Absolute path to the skaile project root.\n * @param skillId - Skill ID as returned by {@link skillList}.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function skillGetPreamble(projectDir: string, skillId: string): Promise<ToolResult> {\n try {\n const aiAssetsRoot = await findAiAssetsRoot(projectDir);\n if (!aiAssetsRoot) return err(`Skill not found: ${skillId}`);\n const skills = await scanSkills(aiAssetsRoot);\n const skill = skills.find((s) => s.id === skillId);\n if (!skill) return err(`Skill not found: ${skillId}`);\n const content = await fs.readFile(skill.path, \"utf-8\");\n\n const requirements = parseSkillRequirements(content);\n const preamble = buildRequiresPreamble(requirements, skillId);\n return ok(preamble || \"(no requirements declared)\");\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { CONNECTOR_ERROR_KINDS } from './chunk-DMLDYFDS.js';
1
+ import { CONNECTOR_ERROR_KINDS } from './chunk-F3RDEH5U.js';
2
2
 
3
3
  // connectors/src/connect-error-kind.ts
4
4
  var CONNECT_ERROR_KIND_PROPERTY = "skaileConnectErrorKind";
@@ -28,5 +28,5 @@ var ClassifiedConnectError = class extends Error {
28
28
  };
29
29
 
30
30
  export { CONNECT_ERROR_KIND_PROPERTY, ClassifiedConnectError, declaredConnectErrorKind, withConnectErrorKind };
31
- //# sourceMappingURL=chunk-FK6HPLQA.js.map
32
- //# sourceMappingURL=chunk-FK6HPLQA.js.map
31
+ //# sourceMappingURL=chunk-WTQ3TATB.js.map
32
+ //# sourceMappingURL=chunk-WTQ3TATB.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../connectors/src/connect-error-kind.ts"],"names":[],"mappings":";;;AAuBO,IAAM,2BAAA,GAA8B;AAYpC,SAAS,yBAAyB,GAAA,EAA8C;AACrF,EAAA,IAAI,QAAQ,IAAA,IAAQ,OAAO,QAAQ,QAAA,IAAY,EAAE,+BAA+B,GAAA,CAAA,EAAM;AACpF,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,MAAM,KAAA,GAAS,IAAgC,2BAA2B,CAAA;AAC1E,EAAA,OAAQ,qBAAA,CAA6C,QAAA,CAAS,KAAK,CAAA,GAC9D,KAAA,GACD,MAAA;AACN;AAOO,SAAS,oBAAA,CAAwB,KAAQ,IAAA,EAA6B;AAC3E,EAAA,IAAI,QAAQ,IAAA,IAAQ,OAAO,QAAQ,QAAA,IAAY,EAAE,+BAA+B,GAAA,CAAA,EAAM;AACpF,IAAA,IAAI;AACF,MAAC,GAAA,CAAgC,2BAA2B,CAAA,GAAI,IAAA;AAAA,IAClE,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF;AACA,EAAA,OAAO,GAAA;AACT;AAMO,IAAM,sBAAA,GAAN,cAAqC,KAAA,CAAM;AAAA,EAChD,CAAU,2BAA2B;AAAA,EACrC,WAAA,CAAY,SAAiB,IAAA,EAA0B;AACrD,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAA,GAAO,wBAAA;AACZ,IAAA,IAAA,CAAK,2BAA2B,CAAA,GAAI,IAAA;AAAA,EACtC;AACF","file":"chunk-FK6HPLQA.js","sourcesContent":["/**\n * The driver-side contract for classifying a connect failure: how a thrower\n * says which {@link ConnectorErrorKind} its error is. Read by the manager's\n * `classifyConnectError` (`classify-connect-error.ts`) into the `errorKind`\n * field of `connector_status` error events.\n *\n * Depends on nothing but `types`, so the `connectors-shared` subpath can\n * re-export it to out-of-tree drivers.\n *\n * @docLink packages/connectors/concepts#connector-manager\n */\n\nimport { CONNECTOR_ERROR_KINDS, type ConnectorErrorKind } from \"@skaile/workspaces/types\";\n\n/**\n * The property a thrown error carries its kind on.\n *\n * Namespaced because it is read off any thrown object: a bare `errorKind` is\n * a name a library's own error may already use, and a value that happened to\n * read `\"config\"` would silently misroute the failure. A plain string key\n * rather than a symbol, so a driver with no import from this package can still\n * set it: `throw Object.assign(new Error(msg), { skaileConnectErrorKind: \"config\" })`.\n */\nexport const CONNECT_ERROR_KIND_PROPERTY = \"skaileConnectErrorKind\";\n\n/**\n * The shape of an error that declares its kind. For classes that must spell the\n * key out instead of computing it (see the git driver's `TokenMediatorError`):\n * `implements` keeps the literal tied to {@link CONNECT_ERROR_KIND_PROPERTY}.\n */\nexport type DeclaresConnectErrorKind = {\n readonly [CONNECT_ERROR_KIND_PROPERTY]: ConnectorErrorKind;\n};\n\n/** The kind `err` declares for itself, or `undefined` when it declares none (or an unknown one). */\nexport function declaredConnectErrorKind(err: unknown): ConnectorErrorKind | undefined {\n if (err === null || typeof err !== \"object\" || !(CONNECT_ERROR_KIND_PROPERTY in err)) {\n return undefined;\n }\n const value = (err as Record<string, unknown>)[CONNECT_ERROR_KIND_PROPERTY];\n return (CONNECTOR_ERROR_KINDS as readonly unknown[]).includes(value)\n ? (value as ConnectorErrorKind)\n : undefined;\n}\n\n/**\n * Stamp `kind` onto `err` unless it already declares one, and return it for\n * rethrowing. For throw sites that know what a failure means but throw an\n * error they did not construct (a failed `git` child, say).\n */\nexport function withConnectErrorKind<T>(err: T, kind: ConnectorErrorKind): T {\n if (err !== null && typeof err === \"object\" && !(CONNECT_ERROR_KIND_PROPERTY in err)) {\n try {\n (err as Record<string, unknown>)[CONNECT_ERROR_KIND_PROPERTY] = kind;\n } catch {\n // Frozen or sealed: unclassified beats replacing the real error with a TypeError.\n }\n }\n return err;\n}\n\n/**\n * An `Error` carrying an explicit {@link ConnectorErrorKind}, for throw sites\n * that build their own error.\n */\nexport class ClassifiedConnectError extends Error {\n readonly [CONNECT_ERROR_KIND_PROPERTY]: ConnectorErrorKind;\n constructor(message: string, kind: ConnectorErrorKind) {\n super(message);\n this.name = \"ClassifiedConnectError\";\n this[CONNECT_ERROR_KIND_PROPERTY] = kind;\n }\n}\n"]}
1
+ {"version":3,"sources":["../connectors/src/connect-error-kind.ts"],"names":[],"mappings":";;;AAuBO,IAAM,2BAAA,GAA8B;AAYpC,SAAS,yBAAyB,GAAA,EAA8C;AACrF,EAAA,IAAI,QAAQ,IAAA,IAAQ,OAAO,QAAQ,QAAA,IAAY,EAAE,+BAA+B,GAAA,CAAA,EAAM;AACpF,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,MAAM,KAAA,GAAS,IAAgC,2BAA2B,CAAA;AAC1E,EAAA,OAAQ,qBAAA,CAA6C,QAAA,CAAS,KAAK,CAAA,GAC9D,KAAA,GACD,MAAA;AACN;AAOO,SAAS,oBAAA,CAAwB,KAAQ,IAAA,EAA6B;AAC3E,EAAA,IAAI,QAAQ,IAAA,IAAQ,OAAO,QAAQ,QAAA,IAAY,EAAE,+BAA+B,GAAA,CAAA,EAAM;AACpF,IAAA,IAAI;AACF,MAAC,GAAA,CAAgC,2BAA2B,CAAA,GAAI,IAAA;AAAA,IAClE,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF;AACA,EAAA,OAAO,GAAA;AACT;AAMO,IAAM,sBAAA,GAAN,cAAqC,KAAA,CAAM;AAAA,EAChD,CAAU,2BAA2B;AAAA,EACrC,WAAA,CAAY,SAAiB,IAAA,EAA0B;AACrD,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAA,GAAO,wBAAA;AACZ,IAAA,IAAA,CAAK,2BAA2B,CAAA,GAAI,IAAA;AAAA,EACtC;AACF","file":"chunk-WTQ3TATB.js","sourcesContent":["/**\n * The driver-side contract for classifying a connect failure: how a thrower\n * says which {@link ConnectorErrorKind} its error is. Read by the manager's\n * `classifyConnectError` (`classify-connect-error.ts`) into the `errorKind`\n * field of `connector_status` error events.\n *\n * Depends on nothing but `types`, so the `connectors-shared` subpath can\n * re-export it to out-of-tree drivers.\n *\n * @docLink packages/connectors/concepts#connector-manager\n */\n\nimport { CONNECTOR_ERROR_KINDS, type ConnectorErrorKind } from \"@skaile/workspaces/types\";\n\n/**\n * The property a thrown error carries its kind on.\n *\n * Namespaced because it is read off any thrown object: a bare `errorKind` is\n * a name a library's own error may already use, and a value that happened to\n * read `\"config\"` would silently misroute the failure. A plain string key\n * rather than a symbol, so a driver with no import from this package can still\n * set it: `throw Object.assign(new Error(msg), { skaileConnectErrorKind: \"config\" })`.\n */\nexport const CONNECT_ERROR_KIND_PROPERTY = \"skaileConnectErrorKind\";\n\n/**\n * The shape of an error that declares its kind. For classes that must spell the\n * key out instead of computing it (see the git driver's `TokenMediatorError`):\n * `implements` keeps the literal tied to {@link CONNECT_ERROR_KIND_PROPERTY}.\n */\nexport type DeclaresConnectErrorKind = {\n readonly [CONNECT_ERROR_KIND_PROPERTY]: ConnectorErrorKind;\n};\n\n/** The kind `err` declares for itself, or `undefined` when it declares none (or an unknown one). */\nexport function declaredConnectErrorKind(err: unknown): ConnectorErrorKind | undefined {\n if (err === null || typeof err !== \"object\" || !(CONNECT_ERROR_KIND_PROPERTY in err)) {\n return undefined;\n }\n const value = (err as Record<string, unknown>)[CONNECT_ERROR_KIND_PROPERTY];\n return (CONNECTOR_ERROR_KINDS as readonly unknown[]).includes(value)\n ? (value as ConnectorErrorKind)\n : undefined;\n}\n\n/**\n * Stamp `kind` onto `err` unless it already declares one, and return it for\n * rethrowing. For throw sites that know what a failure means but throw an\n * error they did not construct (a failed `git` child, say).\n */\nexport function withConnectErrorKind<T>(err: T, kind: ConnectorErrorKind): T {\n if (err !== null && typeof err === \"object\" && !(CONNECT_ERROR_KIND_PROPERTY in err)) {\n try {\n (err as Record<string, unknown>)[CONNECT_ERROR_KIND_PROPERTY] = kind;\n } catch {\n // Frozen or sealed: unclassified beats replacing the real error with a TypeError.\n }\n }\n return err;\n}\n\n/**\n * An `Error` carrying an explicit {@link ConnectorErrorKind}, for throw sites\n * that build their own error.\n */\nexport class ClassifiedConnectError extends Error {\n readonly [CONNECT_ERROR_KIND_PROPERTY]: ConnectorErrorKind;\n constructor(message: string, kind: ConnectorErrorKind) {\n super(message);\n this.name = \"ClassifiedConnectError\";\n this[CONNECT_ERROR_KIND_PROPERTY] = kind;\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { defaultLibraryDir } from './chunk-TZCQ7ZWQ.js';
2
- import { factoryAssetRoots } from './chunk-BF33SCLY.js';
1
+ import { defaultLibraryDir } from './chunk-36AFURKZ.js';
2
+ import { factoryAssetRoots } from './chunk-GB7WDMH2.js';
3
3
  import fs from 'fs';
4
4
  import path from 'path';
5
5
  import { fileURLToPath } from 'url';
@@ -19,5 +19,5 @@ var MONOREPO_ROOT = findMonorepoRoot(__ownDir);
19
19
  var AI_RESOURCES = factoryAssetRoots()[0] ?? defaultLibraryDir();
20
20
 
21
21
  export { AI_RESOURCES, MONOREPO_ROOT };
22
- //# sourceMappingURL=chunk-OGLDAJFL.js.map
23
- //# sourceMappingURL=chunk-OGLDAJFL.js.map
22
+ //# sourceMappingURL=chunk-Y4N2NUZD.js.map
23
+ //# sourceMappingURL=chunk-Y4N2NUZD.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../cli/src/paths.ts"],"names":[],"mappings":";;;;;;AAeA,IAAM,WAAW,IAAA,CAAK,OAAA,CAAQ,aAAA,CAAc,MAAA,CAAA,IAAA,CAAY,GAAG,CAAC,CAAA;AAW5D,SAAS,iBAAiB,IAAA,EAA6B;AACrD,EAAA,IAAI,GAAA,GAAM,IAAA;AACV,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,EAAA,EAAK;AAC1B,IAAA,IAAI,EAAA,CAAG,WAAW,IAAA,CAAK,IAAA,CAAK,KAAK,YAAY,CAAC,GAAG,OAAO,GAAA;AACxD,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAC/B,IAAA,IAAI,WAAW,GAAA,EAAK;AACpB,IAAA,GAAA,GAAM,MAAA;AAAA,EACR;AACA,EAAA,OAAO,IAAA;AACT;AAYO,IAAM,aAAA,GAA+B,iBAAiB,QAAQ;AAc9D,IAAM,YAAA,GAAuB,iBAAA,EAAkB,CAAE,CAAC,KAAK,iBAAA","file":"chunk-OGLDAJFL.js","sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { defaultLibraryDir, factoryAssetRoots } from \"@skaile/workspaces/core\";\n\n/**\n * The content-root policy lives in `@skaile/workspaces/core` so the flow\n * connector's resolution surfaces can reach it too — `factory-assets → cli`\n * would be a module cycle. Re-exported here because this module is the CLI's\n * documented path surface and every CLI caller imports it from here.\n *\n * @docLink cli/dev-guide#paths\n */\nexport { aiResourceRoots } from \"@skaile/workspaces/core\";\n\nconst __ownDir = path.dirname(fileURLToPath(import.meta.url));\n\n/**\n * Walk up from `from` looking for the monorepo marker (`biome.json`, the\n * repo-root shared tooling config). Returns the matching directory or `null`\n * when none is found within eight levels — the latter is the typical case when\n * `@skaile/workspaces` has been installed via `npm i` without a skaile-dev\n * workspace context. Used only to gate dev-only commands (e.g.\n * `serve --compile-test`); first-party content is located via\n * {@link aiResourceRoots}, not this.\n */\nfunction findMonorepoRoot(from: string): string | null {\n let dir = from;\n for (let i = 0; i < 8; i++) {\n if (fs.existsSync(path.join(dir, \"biome.json\"))) return dir;\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return null;\n}\n\n/**\n * Absolute path to the monorepo root, or `null` when the CLI is running\n * outside the skaile-dev workspace (typical for `npm i -g` installs).\n *\n * Consumers that only make sense inside the workspace (e.g.\n * `skaile serve --compile-test`) MUST check for `null` and report a\n * \"monorepo-only feature\" error before proceeding.\n *\n * @docLink cli/dev-guide#paths\n */\nexport const MONOREPO_ROOT: string | null = findMonorepoRoot(__ownDir);\n\n/**\n * Default content root used by path display and the `validate` command.\n *\n * The primary first-party `factory-assets/` root resolved through the shared\n * `factoryAssetRoots()` helper — the `SKAILE_FACTORY_ASSETS_DIR` override when\n * set, else the in-repo source during dev / bundled `dist/factory-assets/` after\n * `npm i`. Falls back to `$SKAILE_HOME/libraries/` (`~/.skaile/libraries/`) — the user-library directory\n * managed by `skaile library add` — when the package cannot be located.\n * Consumers `fs.existsSync` first and degrade to \"no skills / flows discovered\".\n *\n * @docLink cli/dev-guide#paths\n */\nexport const AI_RESOURCES: string = factoryAssetRoots()[0] ?? defaultLibraryDir();\n"]}
1
+ {"version":3,"sources":["../cli/src/paths.ts"],"names":[],"mappings":";;;;;;AAeA,IAAM,WAAW,IAAA,CAAK,OAAA,CAAQ,aAAA,CAAc,MAAA,CAAA,IAAA,CAAY,GAAG,CAAC,CAAA;AAW5D,SAAS,iBAAiB,IAAA,EAA6B;AACrD,EAAA,IAAI,GAAA,GAAM,IAAA;AACV,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,EAAA,EAAK;AAC1B,IAAA,IAAI,EAAA,CAAG,WAAW,IAAA,CAAK,IAAA,CAAK,KAAK,YAAY,CAAC,GAAG,OAAO,GAAA;AACxD,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAC/B,IAAA,IAAI,WAAW,GAAA,EAAK;AACpB,IAAA,GAAA,GAAM,MAAA;AAAA,EACR;AACA,EAAA,OAAO,IAAA;AACT;AAYO,IAAM,aAAA,GAA+B,iBAAiB,QAAQ;AAc9D,IAAM,YAAA,GAAuB,iBAAA,EAAkB,CAAE,CAAC,KAAK,iBAAA","file":"chunk-Y4N2NUZD.js","sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { defaultLibraryDir, factoryAssetRoots } from \"@skaile/workspaces/core\";\n\n/**\n * The content-root policy lives in `@skaile/workspaces/core` so the flow\n * connector's resolution surfaces can reach it too — `factory-assets → cli`\n * would be a module cycle. Re-exported here because this module is the CLI's\n * documented path surface and every CLI caller imports it from here.\n *\n * @docLink cli/dev-guide#paths\n */\nexport { aiResourceRoots } from \"@skaile/workspaces/core\";\n\nconst __ownDir = path.dirname(fileURLToPath(import.meta.url));\n\n/**\n * Walk up from `from` looking for the monorepo marker (`biome.json`, the\n * repo-root shared tooling config). Returns the matching directory or `null`\n * when none is found within eight levels — the latter is the typical case when\n * `@skaile/workspaces` has been installed via `npm i` without a skaile-dev\n * workspace context. Used only to gate dev-only commands (e.g.\n * `serve --compile-test`); first-party content is located via\n * {@link aiResourceRoots}, not this.\n */\nfunction findMonorepoRoot(from: string): string | null {\n let dir = from;\n for (let i = 0; i < 8; i++) {\n if (fs.existsSync(path.join(dir, \"biome.json\"))) return dir;\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return null;\n}\n\n/**\n * Absolute path to the monorepo root, or `null` when the CLI is running\n * outside the skaile-dev workspace (typical for `npm i -g` installs).\n *\n * Consumers that only make sense inside the workspace (e.g.\n * `skaile serve --compile-test`) MUST check for `null` and report a\n * \"monorepo-only feature\" error before proceeding.\n *\n * @docLink cli/dev-guide#paths\n */\nexport const MONOREPO_ROOT: string | null = findMonorepoRoot(__ownDir);\n\n/**\n * Default content root used by path display and the `validate` command.\n *\n * The primary first-party `factory-assets/` root resolved through the shared\n * `factoryAssetRoots()` helper — the `SKAILE_FACTORY_ASSETS_DIR` override when\n * set, else the in-repo source during dev / bundled `dist/factory-assets/` after\n * `npm i`. Falls back to `$SKAILE_HOME/libraries/` (`~/.skaile/libraries/`) — the user-library directory\n * managed by `skaile library add` — when the package cannot be located.\n * Consumers `fs.existsSync` first and degrade to \"no skills / flows discovered\".\n *\n * @docLink cli/dev-guide#paths\n */\nexport const AI_RESOURCES: string = factoryAssetRoots()[0] ?? defaultLibraryDir();\n"]}
@@ -1,9 +1,9 @@
1
1
  import { AssetKindRegistryFrozenError, AssetKindConflictError, AssetKindPatternConflictError, AssetKindPathAmbiguityError } from './chunk-3TXEJN4W.js';
2
- import { validateSkill, validateAgent, validateConnector, validateMcpServer, validateContract, validatePrompt, validatePersona, validateRuleset, validatePreset } from './chunk-FRHE7FFB.js';
3
- import { sha256Hex, decodeSkaileManifest, SKAILE_MANIFEST_FILENAME, compositeSha256 } from './chunk-7ZHLYXTI.js';
2
+ import { validateSkill, validateAgent, validateConnector, validateMcpServer, validateContract, validatePrompt, validatePersona, validateRuleset, validatePreset } from './chunk-B6GIW55K.js';
3
+ import { sha256Hex, decodeSkaileManifest, SKAILE_MANIFEST_FILENAME, compositeSha256 } from './chunk-BTE2V4IW.js';
4
4
  import { readPluginGroupings } from './chunk-RVRB27AN.js';
5
- import { parseFrontmatter } from './chunk-PA7WLID3.js';
6
- import { isValidAssetName } from './chunk-AO7VJ6G6.js';
5
+ import { parseFrontmatter } from './chunk-GTILM2CI.js';
6
+ import { isValidAssetName } from './chunk-QVNRCDTV.js';
7
7
  import * as fs from 'fs';
8
8
  import * as path from 'path';
9
9
  import * as yaml from 'js-yaml';
@@ -722,6 +722,14 @@ function collectWarnings(config) {
722
722
  function barePublisher(publisher) {
723
723
  return publisher.startsWith("@") ? publisher.slice(1) : publisher;
724
724
  }
725
+ var REQUIRES_ENTRY_RE = /^(?:[a-z-]+:)?@[\w-]+\/[\w.-]+(?:[@#].+)?$/;
726
+ function requiresSyntaxErrors(requires) {
727
+ const errors = [];
728
+ for (const r of requires) {
729
+ if (!REQUIRES_ENTRY_RE.test(r)) errors.push(`invalid requires entry "${r}"`);
730
+ }
731
+ return errors;
732
+ }
725
733
  function atPublisher(publisher) {
726
734
  return publisher.startsWith("@") ? publisher : `@${publisher}`;
727
735
  }
@@ -957,7 +965,7 @@ function processEntry(rootPath, entry, registry) {
957
965
  warning: `Unknown asset kind "${entry.kind}" \u2014 ghost-installing without provider validation`
958
966
  });
959
967
  }
960
- const requiresErrors = validateRequiresSyntax(entry.requires);
968
+ const requiresErrors = requiresSyntaxErrors(entry.requires);
961
969
  if (requiresErrors.length > 0) {
962
970
  errors.push({
963
971
  path: assetRootRelative,
@@ -1086,14 +1094,6 @@ function parseManifest(absPath) {
1086
1094
  return null;
1087
1095
  }
1088
1096
  }
1089
- function validateRequiresSyntax(requires) {
1090
- const errors = [];
1091
- const RE = /^@[\w-]+\/[\w.-]+(?:@.+)?$/;
1092
- for (const r of requires) {
1093
- if (!RE.test(r)) errors.push(`invalid requires entry "${r}"`);
1094
- }
1095
- return errors;
1096
- }
1097
1097
  var SCANNABLE_EXT = /* @__PURE__ */ new Set([".md", ".mdx", ".markdown", ".txt"]);
1098
1098
  function isNonLocal(token) {
1099
1099
  return token.length === 0 || token.startsWith("#") || token.startsWith("//") || /^[a-z][a-z0-9+.-]*:/i.test(token);
@@ -2020,7 +2020,7 @@ async function processManifestEntryTree(entry, blobByPath, fetchBlob, registry)
2020
2020
  warning: `Unknown asset kind "${entry.kind}" \u2014 ghost-installing without provider validation`
2021
2021
  });
2022
2022
  }
2023
- const requiresErrors = validateRequiresSyntax2(entry.requires);
2023
+ const requiresErrors = requiresSyntaxErrors(entry.requires);
2024
2024
  if (requiresErrors.length > 0) {
2025
2025
  errors.push({
2026
2026
  path: assetRootRelative,
@@ -2185,18 +2185,10 @@ function expandRootFilesTree(assetPath, blobByPath) {
2185
2185
  }
2186
2186
  return out.sort();
2187
2187
  }
2188
- function validateRequiresSyntax2(requires) {
2189
- const errors = [];
2190
- const RE = /^@[\w-]+\/[\w.-]+(?:@.+)?$/;
2191
- for (const r of requires) {
2192
- if (!RE.test(r)) errors.push(`invalid requires entry "${r}"`);
2193
- }
2194
- return errors;
2195
- }
2196
2188
 
2197
2189
  // discovery/src/index.ts
2198
2190
  var VERSION = "0.0.0";
2199
2191
 
2200
- export { AGENT_COMPANION_DIRS, AssetKindRegistry, BUILTIN_PROVIDERS, DEFAULT_ATOMIZATION_POLICY, SEMVER_RE, SKILL_COMPANION_DIRS, SourceConfigSchema, VERSION, agentProvider, barePublisher, buildRequiresGraph, closeOverReferences, computeDeterministicHash, computeDeterministicHashDetailed, connectorProvider, contractProvider, createDefaultKindRegistry, createNodeAssetFs, decodeManifestSourceConfig, detectCycles, discoverAssetsInTree, discoverAssetsInTreeEntries, discoverFromManifest, extractPathCandidates, extractRequires, extractSlashCommands, isExcludedDevPath, isManifestMode, lintUncoveredReferences, loadMergedSourceConfig, loadMergedSourceConfigFromFile, loadSourceConfig, manifestToSourceConfig, mcpServerProvider, mergeSourceConfigs, parseManifestFile, parseSourceConfig, personaProvider, presetProvider, promptProvider, readManifestSourceConfig, rulesetProvider, scanAssetReferences, scanSlashCommandNames, sharesItsFolder, skillProvider, validateSourceConfig };
2201
- //# sourceMappingURL=chunk-XOGG7VDZ.js.map
2202
- //# sourceMappingURL=chunk-XOGG7VDZ.js.map
2192
+ export { AGENT_COMPANION_DIRS, AssetKindRegistry, BUILTIN_PROVIDERS, DEFAULT_ATOMIZATION_POLICY, REQUIRES_ENTRY_RE, SEMVER_RE, SKILL_COMPANION_DIRS, SourceConfigSchema, VERSION, agentProvider, barePublisher, buildRequiresGraph, closeOverReferences, computeDeterministicHash, computeDeterministicHashDetailed, connectorProvider, contractProvider, createDefaultKindRegistry, createNodeAssetFs, decodeManifestSourceConfig, detectCycles, discoverAssetsInTree, discoverAssetsInTreeEntries, discoverFromManifest, extractPathCandidates, extractRequires, extractSlashCommands, isExcludedDevPath, isManifestMode, lintUncoveredReferences, loadMergedSourceConfig, loadMergedSourceConfigFromFile, loadSourceConfig, manifestToSourceConfig, mcpServerProvider, mergeSourceConfigs, parseManifestFile, parseSourceConfig, personaProvider, presetProvider, promptProvider, readManifestSourceConfig, requiresSyntaxErrors, rulesetProvider, scanAssetReferences, scanSlashCommandNames, sharesItsFolder, skillProvider, validateSourceConfig };
2193
+ //# sourceMappingURL=chunk-Y7QA2OLD.js.map
2194
+ //# sourceMappingURL=chunk-Y7QA2OLD.js.map