@skaile/workspaces 5.8.0 → 5.10.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 (348) hide show
  1. package/CHANGELOG.md +102 -0
  2. package/dist/app-sdk/index.js +1 -1
  3. package/dist/{asset-feeds-EYRZR4K5.js → asset-feeds-ELEBTNUS.js} +18 -18
  4. package/dist/{asset-feeds-EYRZR4K5.js.map → asset-feeds-ELEBTNUS.js.map} +1 -1
  5. package/dist/asset-manager/catalog-deployer.js +8 -8
  6. package/dist/asset-manager/index.js +14 -14
  7. package/dist/asset-manager/installer.js +10 -10
  8. package/dist/asset-manager/renderers.js +9 -9
  9. package/dist/asset-manager/src/index.d.ts +300 -36
  10. package/dist/asset-manager/src/index.d.ts.map +1 -1
  11. package/dist/asset-manager/src/install-agent.d.ts +3 -1
  12. package/dist/asset-manager/src/install-agent.d.ts.map +1 -1
  13. package/dist/asset-manager/src/install-instances.d.ts +31 -1
  14. package/dist/asset-manager/src/install-instances.d.ts.map +1 -1
  15. package/dist/asset-manager/src/installer.d.ts +20 -0
  16. package/dist/asset-manager/src/installer.d.ts.map +1 -1
  17. package/dist/asset-manager/src/renderers.d.ts +4 -5
  18. package/dist/asset-manager/src/renderers.d.ts.map +1 -1
  19. package/dist/bridge/drivers/claude-sdk.js +170 -17
  20. package/dist/bridge/drivers/claude-sdk.js.map +1 -1
  21. package/dist/bridge/drivers/codex.js +13 -11
  22. package/dist/bridge/drivers/codex.js.map +1 -1
  23. package/dist/bridge/drivers/continue.js +10 -10
  24. package/dist/bridge/drivers/echo.js +4 -4
  25. package/dist/bridge/drivers/gemini.js +7 -7
  26. package/dist/bridge/drivers/goose.js +10 -10
  27. package/dist/bridge/drivers/omp.js +7 -5
  28. package/dist/bridge/drivers/omp.js.map +1 -1
  29. package/dist/bridge/drivers/opencode.js +10 -10
  30. package/dist/bridge/drivers/qwen.js +7 -7
  31. package/dist/bridge/index.js +14 -14
  32. package/dist/bridge/src/codex/managed-driver.d.ts.map +1 -1
  33. package/dist/bridge/src/drivers/claude-sdk.d.ts +31 -1
  34. package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
  35. package/dist/bridge/src/drivers/claude-tool-allowlist.d.ts +43 -0
  36. package/dist/bridge/src/drivers/claude-tool-allowlist.d.ts.map +1 -0
  37. package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
  38. package/dist/bridge/src/types.d.ts +20 -1
  39. package/dist/bridge/src/types.d.ts.map +1 -1
  40. package/dist/{chunk-36AFURKZ.js → chunk-2FMEGSBN.js} +38 -11
  41. package/dist/chunk-2FMEGSBN.js.map +1 -0
  42. package/dist/{chunk-GCICGXDD.js → chunk-2H73V6XR.js} +3 -3
  43. package/dist/{chunk-GCICGXDD.js.map → chunk-2H73V6XR.js.map} +1 -1
  44. package/dist/{chunk-H7QUDDKH.js → chunk-2JMLDZLP.js} +1069 -182
  45. package/dist/chunk-2JMLDZLP.js.map +1 -0
  46. package/dist/{chunk-B6GIW55K.js → chunk-32XKCNCL.js} +6 -3
  47. package/dist/chunk-32XKCNCL.js.map +1 -0
  48. package/dist/{chunk-4MQS7CAF.js → chunk-3BEY4WK3.js} +371 -175
  49. package/dist/chunk-3BEY4WK3.js.map +1 -0
  50. package/dist/{chunk-SH5D7U7N.js → chunk-3KHYGOEY.js} +3 -3
  51. package/dist/{chunk-SH5D7U7N.js.map → chunk-3KHYGOEY.js.map} +1 -1
  52. package/dist/{chunk-CGT45WN7.js → chunk-3MKPZZRE.js} +3 -3
  53. package/dist/{chunk-CGT45WN7.js.map → chunk-3MKPZZRE.js.map} +1 -1
  54. package/dist/{chunk-QVNRCDTV.js → chunk-4OV5DSBB.js} +4 -4
  55. package/dist/chunk-4OV5DSBB.js.map +1 -0
  56. package/dist/{chunk-GXXFLBUQ.js → chunk-4P3KTUZH.js} +33 -33
  57. package/dist/chunk-4P3KTUZH.js.map +1 -0
  58. package/dist/{chunk-I6NLLJHZ.js → chunk-5QI2JYJC.js} +2 -2
  59. package/dist/{chunk-I6NLLJHZ.js.map → chunk-5QI2JYJC.js.map} +1 -1
  60. package/dist/{chunk-EF7NPDDU.js → chunk-6HHE63CO.js} +31 -17
  61. package/dist/chunk-6HHE63CO.js.map +1 -0
  62. package/dist/{chunk-FTJJO3EM.js → chunk-7CR6HT2X.js} +10 -10
  63. package/dist/{chunk-FTJJO3EM.js.map → chunk-7CR6HT2X.js.map} +1 -1
  64. package/dist/{chunk-FZNG4V4J.js → chunk-7I5VRVDP.js} +3 -3
  65. package/dist/{chunk-FZNG4V4J.js.map → chunk-7I5VRVDP.js.map} +1 -1
  66. package/dist/{chunk-HG34RNTK.js → chunk-CLTHEKHR.js} +10 -9
  67. package/dist/chunk-CLTHEKHR.js.map +1 -0
  68. package/dist/{chunk-UMVKJM4Q.js → chunk-DALV4HHP.js} +18 -3
  69. package/dist/chunk-DALV4HHP.js.map +1 -0
  70. package/dist/{chunk-F3RDEH5U.js → chunk-F4NJDSR7.js} +6 -5
  71. package/dist/chunk-F4NJDSR7.js.map +1 -0
  72. package/dist/{chunk-LSXHED6I.js → chunk-FRPBSUFH.js} +6 -6
  73. package/dist/{chunk-LSXHED6I.js.map → chunk-FRPBSUFH.js.map} +1 -1
  74. package/dist/{chunk-W5DWWE4Y.js → chunk-G54USEUP.js} +4 -4
  75. package/dist/{chunk-W5DWWE4Y.js.map → chunk-G54USEUP.js.map} +1 -1
  76. package/dist/{chunk-Y7QA2OLD.js → chunk-GEWAIQZ5.js} +24 -20
  77. package/dist/chunk-GEWAIQZ5.js.map +1 -0
  78. package/dist/{chunk-GB7WDMH2.js → chunk-GFCXNFTW.js} +4 -4
  79. package/dist/{chunk-GB7WDMH2.js.map → chunk-GFCXNFTW.js.map} +1 -1
  80. package/dist/{chunk-AWQYXZVG.js → chunk-HJ5MCB3L.js} +28 -4
  81. package/dist/chunk-HJ5MCB3L.js.map +1 -0
  82. package/dist/{chunk-2LWYNQK7.js → chunk-HOHUEKES.js} +3 -3
  83. package/dist/{chunk-2LWYNQK7.js.map → chunk-HOHUEKES.js.map} +1 -1
  84. package/dist/{chunk-ZKSJMZKD.js → chunk-IJHH4DSW.js} +8 -8
  85. package/dist/{chunk-ZKSJMZKD.js.map → chunk-IJHH4DSW.js.map} +1 -1
  86. package/dist/{chunk-BTE2V4IW.js → chunk-IXWODEED.js} +40 -7
  87. package/dist/chunk-IXWODEED.js.map +1 -0
  88. package/dist/{chunk-OFBIWVCR.js → chunk-JFXQEVLF.js} +3 -3
  89. package/dist/{chunk-OFBIWVCR.js.map → chunk-JFXQEVLF.js.map} +1 -1
  90. package/dist/{chunk-JAKOMFC6.js → chunk-JZCSNEHK.js} +77 -31
  91. package/dist/chunk-JZCSNEHK.js.map +1 -0
  92. package/dist/{chunk-CKQEIY43.js → chunk-MVQ3Q2HM.js} +4 -4
  93. package/dist/{chunk-CKQEIY43.js.map → chunk-MVQ3Q2HM.js.map} +1 -1
  94. package/dist/{chunk-LEMHVDET.js → chunk-NRDSGLCQ.js} +188 -33
  95. package/dist/chunk-NRDSGLCQ.js.map +1 -0
  96. package/dist/{chunk-V2DXZYBB.js → chunk-NWDSLXOX.js} +3 -3
  97. package/dist/{chunk-V2DXZYBB.js.map → chunk-NWDSLXOX.js.map} +1 -1
  98. package/dist/{chunk-6GRX5L6A.js → chunk-OBVJ7RPW.js} +4 -4
  99. package/dist/{chunk-6GRX5L6A.js.map → chunk-OBVJ7RPW.js.map} +1 -1
  100. package/dist/{chunk-PTSGWKHR.js → chunk-OOWHXOK6.js} +4 -4
  101. package/dist/{chunk-PTSGWKHR.js.map → chunk-OOWHXOK6.js.map} +1 -1
  102. package/dist/{chunk-YSHVQGUS.js → chunk-PE36IF2D.js} +119 -30
  103. package/dist/chunk-PE36IF2D.js.map +1 -0
  104. package/dist/{chunk-S53LOR7B.js → chunk-QG3HOJEK.js} +3 -3
  105. package/dist/{chunk-S53LOR7B.js.map → chunk-QG3HOJEK.js.map} +1 -1
  106. package/dist/{chunk-2FRUUDZY.js → chunk-SBFW3CJH.js} +5 -5
  107. package/dist/{chunk-2FRUUDZY.js.map → chunk-SBFW3CJH.js.map} +1 -1
  108. package/dist/{chunk-UAROCOXF.js → chunk-SX5U422E.js} +3 -3
  109. package/dist/{chunk-UAROCOXF.js.map → chunk-SX5U422E.js.map} +1 -1
  110. package/dist/{chunk-QOP6KDFR.js → chunk-TH4CTXHX.js} +6 -6
  111. package/dist/{chunk-QOP6KDFR.js.map → chunk-TH4CTXHX.js.map} +1 -1
  112. package/dist/{chunk-F2EKONM7.js → chunk-TRSQP3JD.js} +3 -3
  113. package/dist/{chunk-F2EKONM7.js.map → chunk-TRSQP3JD.js.map} +1 -1
  114. package/dist/{chunk-FVJK4QWM.js → chunk-V5TZH4GF.js} +4 -4
  115. package/dist/{chunk-FVJK4QWM.js.map → chunk-V5TZH4GF.js.map} +1 -1
  116. package/dist/{chunk-HYDRDNKN.js → chunk-V7PQZOBR.js} +5 -5
  117. package/dist/{chunk-HYDRDNKN.js.map → chunk-V7PQZOBR.js.map} +1 -1
  118. package/dist/{chunk-IONAUNWB.js → chunk-VLXDXRRX.js} +3 -3
  119. package/dist/{chunk-IONAUNWB.js.map → chunk-VLXDXRRX.js.map} +1 -1
  120. package/dist/{chunk-CIFS5K6T.js → chunk-VMKMFS2Q.js} +28 -7
  121. package/dist/chunk-VMKMFS2Q.js.map +1 -0
  122. package/dist/{chunk-Y4N2NUZD.js → chunk-WBYDAL6X.js} +4 -4
  123. package/dist/{chunk-Y4N2NUZD.js.map → chunk-WBYDAL6X.js.map} +1 -1
  124. package/dist/{chunk-WTQ3TATB.js → chunk-X4BAYGMT.js} +3 -3
  125. package/dist/{chunk-WTQ3TATB.js.map → chunk-X4BAYGMT.js.map} +1 -1
  126. package/dist/{chunk-NPLPCRW5.js → chunk-XCNK4UE5.js} +5 -5
  127. package/dist/{chunk-NPLPCRW5.js.map → chunk-XCNK4UE5.js.map} +1 -1
  128. package/dist/{chunk-OJ4N4T4H.js → chunk-XDVR7QIT.js} +20 -6
  129. package/dist/chunk-XDVR7QIT.js.map +1 -0
  130. package/dist/{chunk-GTILM2CI.js → chunk-Y34MSWEZ.js} +43 -12
  131. package/dist/chunk-Y34MSWEZ.js.map +1 -0
  132. package/dist/{chunk-4PTSR4UU.js → chunk-Y63UQZ7P.js} +3 -3
  133. package/dist/{chunk-4PTSR4UU.js.map → chunk-Y63UQZ7P.js.map} +1 -1
  134. package/dist/chunk-YBQONMH2.js +465 -0
  135. package/dist/chunk-YBQONMH2.js.map +1 -0
  136. package/dist/{chunk-P23M65LB.js → chunk-Z2K6BGUR.js} +71 -24
  137. package/dist/chunk-Z2K6BGUR.js.map +1 -0
  138. package/dist/{chunk-BJNUNQAW.js → chunk-ZGQTS3Y4.js} +3 -3
  139. package/dist/{chunk-BJNUNQAW.js.map → chunk-ZGQTS3Y4.js.map} +1 -1
  140. package/dist/cli/index.js +913 -720
  141. package/dist/cli/index.js.map +1 -1
  142. package/dist/cli/src/commands/asset-cmd.d.ts.map +1 -1
  143. package/dist/cli/src/commands/catalog.d.ts +8 -5
  144. package/dist/cli/src/commands/catalog.d.ts.map +1 -1
  145. package/dist/cli/src/commands/diff.d.ts +3 -1
  146. package/dist/cli/src/commands/diff.d.ts.map +1 -1
  147. package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
  148. package/dist/cli/src/commands/library-index.d.ts +34 -2
  149. package/dist/cli/src/commands/library-index.d.ts.map +1 -1
  150. package/dist/cli/src/commands/library-publish.d.ts.map +1 -1
  151. package/dist/cli/src/commands/manage.d.ts +6 -5
  152. package/dist/cli/src/commands/manage.d.ts.map +1 -1
  153. package/dist/cli/src/commands/migrate-assets.d.ts.map +1 -1
  154. package/dist/cli/src/commands/outdated.d.ts +7 -5
  155. package/dist/cli/src/commands/outdated.d.ts.map +1 -1
  156. package/dist/cli/src/commands/project.d.ts +11 -8
  157. package/dist/cli/src/commands/project.d.ts.map +1 -1
  158. package/dist/cli/src/commands/source.d.ts +30 -1
  159. package/dist/cli/src/commands/source.d.ts.map +1 -1
  160. package/dist/cli/src/commands/update.d.ts.map +1 -1
  161. package/dist/cli/src/commands/validate.d.ts.map +1 -1
  162. package/dist/cli/src/commands/why.d.ts.map +1 -1
  163. package/dist/cli/src/skill-checks.d.ts +47 -2
  164. package/dist/cli/src/skill-checks.d.ts.map +1 -1
  165. package/dist/client/index.js +1 -1
  166. package/dist/client/src/client.d.ts +10 -3
  167. package/dist/client/src/client.d.ts.map +1 -1
  168. package/dist/connectors/config.js +5 -5
  169. package/dist/connectors/index.js +18 -18
  170. package/dist/{connectors-O6Y6VESP.js → connectors-OXP2JBGI.js} +21 -21
  171. package/dist/{connectors-O6Y6VESP.js.map → connectors-OXP2JBGI.js.map} +1 -1
  172. package/dist/connectors-shared/index.js +2 -2
  173. package/dist/core/index.js +7 -7
  174. package/dist/core/logging.js +1 -1
  175. package/dist/core/manifest.js +2 -2
  176. package/dist/core/models.js +1 -1
  177. package/dist/core/publish-manifest.js +2 -2
  178. package/dist/core/ref.js +1 -1
  179. package/dist/core/runtime-assets.js +5 -5
  180. package/dist/core/src/index.d.ts +2 -1
  181. package/dist/core/src/index.d.ts.map +1 -1
  182. package/dist/core/src/lock.d.ts +5 -2
  183. package/dist/core/src/lock.d.ts.map +1 -1
  184. package/dist/core/src/logging/sinks/sqlite-runtime.d.ts.map +1 -1
  185. package/dist/core/src/manifest.d.ts.map +1 -1
  186. package/dist/core/src/models.d.ts +21 -5
  187. package/dist/core/src/models.d.ts.map +1 -1
  188. package/dist/core/src/publish-manifest.d.ts +19 -3
  189. package/dist/core/src/publish-manifest.d.ts.map +1 -1
  190. package/dist/core/src/repo-manager.d.ts.map +1 -1
  191. package/dist/core/src/requirements.d.ts +26 -0
  192. package/dist/core/src/requirements.d.ts.map +1 -0
  193. package/dist/core/src/walker.d.ts.map +1 -1
  194. package/dist/core/src/workspace-config.d.ts +18 -0
  195. package/dist/core/src/workspace-config.d.ts.map +1 -1
  196. package/dist/core/src/workspace-yaml-editor.d.ts +4 -1
  197. package/dist/core/src/workspace-yaml-editor.d.ts.map +1 -1
  198. package/dist/core/workspace-config.js +4 -4
  199. package/dist/deploy/index.js +7 -7
  200. package/dist/discovery/index.js +5 -5
  201. package/dist/discovery/src/builtin-providers.d.ts.map +1 -1
  202. package/dist/discovery/src/discover-manifest.d.ts.map +1 -1
  203. package/dist/discovery/src/discover.d.ts.map +1 -1
  204. package/dist/discovery/src/source-config.d.ts.map +1 -1
  205. package/dist/discovery/src/tree-entries.d.ts.map +1 -1
  206. package/dist/{ensure-sources-SKLNM4UZ.js → ensure-sources-5ISVIA4T.js} +17 -17
  207. package/dist/{ensure-sources-SKLNM4UZ.js.map → ensure-sources-5ISVIA4T.js.map} +1 -1
  208. package/dist/factory-assets/connectors/box.js +18 -18
  209. package/dist/factory-assets/connectors/deploy.js +18 -18
  210. package/dist/factory-assets/connectors/devserver.js +18 -18
  211. package/dist/factory-assets/connectors/flow/adapter.js +18 -18
  212. package/dist/factory-assets/connectors/flow/engine.js +8 -8
  213. package/dist/factory-assets/connectors/flow/run-flow.js +20 -20
  214. package/dist/factory-assets/connectors/flow.js +18 -18
  215. package/dist/factory-assets/connectors/git.js +18 -18
  216. package/dist/factory-assets/connectors/gmail.js +18 -18
  217. package/dist/factory-assets/connectors/googledrive.js +18 -18
  218. package/dist/factory-assets/connectors/local.js +18 -18
  219. package/dist/factory-assets/connectors/mattermost.js +18 -18
  220. package/dist/factory-assets/connectors/memory.js +18 -18
  221. package/dist/factory-assets/connectors/minio.js +18 -18
  222. package/dist/factory-assets/connectors/postgres.js +18 -18
  223. package/dist/factory-assets/connectors/s3.js +18 -18
  224. package/dist/factory-assets/connectors/sharepoint.js +18 -18
  225. package/dist/factory-assets/connectors/sqlite.js +18 -18
  226. package/dist/factory-assets/connectors/static-server.js +18 -18
  227. package/dist/factory-assets/connectors/tunnel.js +18 -18
  228. package/dist/factory-assets/connectors/webdav.js +18 -18
  229. package/dist/factory-assets/connectors/xstate-store.js +18 -18
  230. package/dist/factory-assets/connectors/xstate.js +18 -18
  231. package/dist/factory-assets/skills/authoring-skaile-manifests/SKILL.md +9 -3
  232. package/dist/{flows-CBYRSAGS.js → flows-HMSE76PO.js} +12 -12
  233. package/dist/{flows-CBYRSAGS.js.map → flows-HMSE76PO.js.map} +1 -1
  234. package/dist/{helpers-MWZDRBLD.js → helpers-X6URBGSF.js} +17 -17
  235. package/dist/{helpers-MWZDRBLD.js.map → helpers-X6URBGSF.js.map} +1 -1
  236. package/dist/library/index.js +11 -11
  237. package/dist/library/install.js +3 -3
  238. package/dist/library/src/index.d.ts +2 -1
  239. package/dist/library/src/index.d.ts.map +1 -1
  240. package/dist/library/src/local/library-dir.d.ts +42 -0
  241. package/dist/library/src/local/library-dir.d.ts.map +1 -0
  242. package/dist/library/src/local/library-manager.d.ts +10 -1
  243. package/dist/library/src/local/library-manager.d.ts.map +1 -1
  244. package/dist/library/src/local/library.d.ts +2 -2
  245. package/dist/library/src/local/library.d.ts.map +1 -1
  246. package/dist/library/src/local/local-catalog-source.d.ts +9 -0
  247. package/dist/library/src/local/local-catalog-source.d.ts.map +1 -1
  248. package/dist/library/src/manifest-writer.d.ts +55 -4
  249. package/dist/library/src/manifest-writer.d.ts.map +1 -1
  250. package/dist/library/src/remote/cache.d.ts +18 -1
  251. package/dist/library/src/remote/cache.d.ts.map +1 -1
  252. package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
  253. package/dist/library/src/remote/rest-catalog-source.d.ts.map +1 -1
  254. package/dist/library/src/sync/git-driver.d.ts +5 -6
  255. package/dist/library/src/sync/git-driver.d.ts.map +1 -1
  256. package/dist/{library-publish-PICMDSB2.js → library-publish-OS3JDW4S.js} +123 -41
  257. package/dist/library-publish-OS3JDW4S.js.map +1 -0
  258. package/dist/open-library-4QSUORI6.js +40 -0
  259. package/dist/{open-library-OG457THY.js.map → open-library-4QSUORI6.js.map} +1 -1
  260. package/dist/open-registry-VCKS3MP5.js +32 -0
  261. package/dist/{open-registry-ZUZJ7MS7.js.map → open-registry-VCKS3MP5.js.map} +1 -1
  262. package/dist/paths-BVO56A25.js +22 -0
  263. package/dist/{paths-FQ64OLJG.js.map → paths-BVO56A25.js.map} +1 -1
  264. package/dist/{plugin-store-MPAMD5OT.js → plugin-store-X7GPWGBG.js} +9 -9
  265. package/dist/{plugin-store-MPAMD5OT.js.map → plugin-store-X7GPWGBG.js.map} +1 -1
  266. package/dist/{project-2GFT5LEZ.js → project-PAXP46RD.js} +20 -20
  267. package/dist/{project-2GFT5LEZ.js.map → project-PAXP46RD.js.map} +1 -1
  268. package/dist/resolver/index.js +8 -8
  269. package/dist/runner/index.js +32 -32
  270. package/dist/runner/src/agent.d.ts.map +1 -1
  271. package/dist/runner/src/context-usage/compose.d.ts.map +1 -1
  272. package/dist/runner/src/platform-blocks.d.ts +55 -0
  273. package/dist/runner/src/platform-blocks.d.ts.map +1 -0
  274. package/dist/runner/src/serve.d.ts.map +1 -1
  275. package/dist/runner/src/session-builder.d.ts.map +1 -1
  276. package/dist/sdk/asset-manager.js +14 -14
  277. package/dist/sdk/bridge.js +14 -14
  278. package/dist/sdk/client.js +1 -1
  279. package/dist/sdk/core.js +7 -7
  280. package/dist/sdk/flow.js +8 -8
  281. package/dist/sdk/index.js +33 -33
  282. package/dist/sdk/resolver.js +8 -8
  283. package/dist/sdk/runner.js +32 -32
  284. package/dist/sdk/session.js +2 -2
  285. package/dist/sdk/types.js +1 -1
  286. package/dist/session/index.js +2 -2
  287. package/dist/session/src/dispatcher.d.ts +25 -4
  288. package/dist/session/src/dispatcher.d.ts.map +1 -1
  289. package/dist/session/src/index.d.ts +1 -1
  290. package/dist/session/src/index.d.ts.map +1 -1
  291. package/dist/{setup-WHMCSIF2.js → setup-BV55VHWC.js} +24 -24
  292. package/dist/{setup-WHMCSIF2.js.map → setup-BV55VHWC.js.map} +1 -1
  293. package/dist/{skills-TVO26Y4V.js → skills-EDFUCJPX.js} +13 -13
  294. package/dist/{skills-TVO26Y4V.js.map → skills-EDFUCJPX.js.map} +1 -1
  295. package/dist/source-E4VAT5RZ.js +41 -0
  296. package/dist/{source-LKOFTOEK.js.map → source-E4VAT5RZ.js.map} +1 -1
  297. package/dist/{source-manifest-publish-L5J3QXER.js → source-manifest-publish-CLEE6TNH.js} +23 -23
  298. package/dist/{source-manifest-publish-L5J3QXER.js.map → source-manifest-publish-CLEE6TNH.js.map} +1 -1
  299. package/dist/tui/index.js +32 -32
  300. package/dist/types/index.js +1 -1
  301. package/dist/types/manifests.js +1 -1
  302. package/dist/types/src/events.d.ts +1 -1
  303. package/dist/types/src/events.d.ts.map +1 -1
  304. package/dist/types/src/index.d.ts +2 -2
  305. package/dist/types/src/index.d.ts.map +1 -1
  306. package/dist/types/src/manifests/agent.d.ts +2 -0
  307. package/dist/types/src/manifests/agent.d.ts.map +1 -1
  308. package/dist/types/src/manifests/contract.d.ts +2 -0
  309. package/dist/types/src/manifests/contract.d.ts.map +1 -1
  310. package/dist/types/src/manifests/index.d.ts +3 -3
  311. package/dist/types/src/manifests/index.d.ts.map +1 -1
  312. package/dist/types/src/manifests/prompt.d.ts +2 -0
  313. package/dist/types/src/manifests/prompt.d.ts.map +1 -1
  314. package/dist/types/src/protocol.d.ts +43 -1
  315. package/dist/types/src/protocol.d.ts.map +1 -1
  316. package/dist/types/src/version.d.ts +17 -1
  317. package/dist/types/src/version.d.ts.map +1 -1
  318. package/dist/workspace-plugin/adapters/mcp.js +25 -25
  319. package/dist/workspace-plugin/adapters/omp.js +14 -14
  320. package/dist/workspace-plugin/index.js +2 -2
  321. package/package.json +1 -1
  322. package/dist/chunk-36AFURKZ.js.map +0 -1
  323. package/dist/chunk-4MQS7CAF.js.map +0 -1
  324. package/dist/chunk-AWQYXZVG.js.map +0 -1
  325. package/dist/chunk-B6GIW55K.js.map +0 -1
  326. package/dist/chunk-BTE2V4IW.js.map +0 -1
  327. package/dist/chunk-CIFS5K6T.js.map +0 -1
  328. package/dist/chunk-EF7NPDDU.js.map +0 -1
  329. package/dist/chunk-F3RDEH5U.js.map +0 -1
  330. package/dist/chunk-GTILM2CI.js.map +0 -1
  331. package/dist/chunk-GXXFLBUQ.js.map +0 -1
  332. package/dist/chunk-H7QUDDKH.js.map +0 -1
  333. package/dist/chunk-HG34RNTK.js.map +0 -1
  334. package/dist/chunk-JAKOMFC6.js.map +0 -1
  335. package/dist/chunk-LEMHVDET.js.map +0 -1
  336. package/dist/chunk-OJ4N4T4H.js.map +0 -1
  337. package/dist/chunk-P23M65LB.js.map +0 -1
  338. package/dist/chunk-QVNRCDTV.js.map +0 -1
  339. package/dist/chunk-UMVKJM4Q.js.map +0 -1
  340. package/dist/chunk-Y7QA2OLD.js.map +0 -1
  341. package/dist/chunk-YSHVQGUS.js.map +0 -1
  342. package/dist/chunk-ZAOGFXDO.js +0 -112
  343. package/dist/chunk-ZAOGFXDO.js.map +0 -1
  344. package/dist/library-publish-PICMDSB2.js.map +0 -1
  345. package/dist/open-library-OG457THY.js +0 -40
  346. package/dist/open-registry-ZUZJ7MS7.js +0 -32
  347. package/dist/paths-FQ64OLJG.js +0 -22
  348. package/dist/source-LKOFTOEK.js +0 -41
@@ -1,6 +1,6 @@
1
- import { findAiAssetsRoot } from './chunk-4PTSR4UU.js';
1
+ import { findAiAssetsRoot } from './chunk-Y63UQZ7P.js';
2
2
  import { okJson, err, ok } from './chunk-X5YPJV4N.js';
3
- import { parseSkillRequirements, validateRequirements, buildRequiresPreamble, parseSkillFrontmatter } from './chunk-CGT45WN7.js';
3
+ import { parseSkillRequirements, validateRequirements, buildRequiresPreamble, parseSkillFrontmatter } from './chunk-3MKPZZRE.js';
4
4
  import { findKindDirs } from './chunk-A2ULN3KX.js';
5
5
  import fs from 'fs/promises';
6
6
  import path from 'path';
@@ -136,5 +136,5 @@ async function skillGetPreamble(projectDir, skillId) {
136
136
  }
137
137
 
138
138
  export { skillCheckRequirements, skillGetPreamble, skillList, skillSearch, skillShow };
139
- //# sourceMappingURL=chunk-W5DWWE4Y.js.map
140
- //# sourceMappingURL=chunk-W5DWWE4Y.js.map
139
+ //# sourceMappingURL=chunk-G54USEUP.js.map
140
+ //# sourceMappingURL=chunk-G54USEUP.js.map
@@ -1 +1 @@
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
+ {"version":3,"sources":["../workspace-plugin/src/tools/skills.ts"],"names":[],"mappings":"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","file":"chunk-G54USEUP.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,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-B6GIW55K.js';
3
- import { sha256Hex, decodeSkaileManifest, SKAILE_MANIFEST_FILENAME, compositeSha256 } from './chunk-BTE2V4IW.js';
2
+ import { validateSkill, validateAgent, validateConnector, validateMcpServer, validateContract, validatePrompt, validatePersona, validateRuleset, validatePreset } from './chunk-32XKCNCL.js';
3
+ import { sha256Hex, decodeSkaileManifest, SKAILE_MANIFEST_FILENAME, isNonAssetPath, isNonAssetFile, compositeSha256, isNonAssetDir } from './chunk-IXWODEED.js';
4
4
  import { readPluginGroupings } from './chunk-RVRB27AN.js';
5
- import { parseFrontmatter } from './chunk-GTILM2CI.js';
6
- import { isValidAssetName } from './chunk-QVNRCDTV.js';
5
+ import { parseFrontmatter } from './chunk-Y34MSWEZ.js';
6
+ import { isValidPublisher, PUBLISHER_HINT, isValidAssetName } from './chunk-4OV5DSBB.js';
7
7
  import * as fs from 'fs';
8
8
  import * as path from 'path';
9
9
  import * as yaml from 'js-yaml';
@@ -320,8 +320,8 @@ function collectDirRecursive(baseDir, relativeDir) {
320
320
  for (const entry of fs.readdirSync(full, { withFileTypes: true })) {
321
321
  const rel = path.posix.join(relativeDir, entry.name);
322
322
  if (entry.isDirectory()) {
323
- results.push(...collectDirRecursive(baseDir, rel));
324
- } else if (entry.isFile()) {
323
+ if (!isNonAssetDir(entry.name)) results.push(...collectDirRecursive(baseDir, rel));
324
+ } else if (entry.isFile() && !isNonAssetFile(entry.name)) {
325
325
  results.push(rel);
326
326
  }
327
327
  }
@@ -376,7 +376,7 @@ function contractFilter(manifestPath) {
376
376
  const files = [manifestName];
377
377
  try {
378
378
  for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
379
- if (entry.isFile() && entry.name !== manifestName) {
379
+ if (entry.isFile() && entry.name !== manifestName && !isNonAssetFile(entry.name)) {
380
380
  files.push(entry.name);
381
381
  }
382
382
  }
@@ -726,7 +726,14 @@ var REQUIRES_ENTRY_RE = /^(?:[a-z-]+:)?@[\w-]+\/[\w.-]+(?:[@#].+)?$/;
726
726
  function requiresSyntaxErrors(requires) {
727
727
  const errors = [];
728
728
  for (const r of requires) {
729
- if (!REQUIRES_ENTRY_RE.test(r)) errors.push(`invalid requires entry "${r}"`);
729
+ if (!REQUIRES_ENTRY_RE.test(r)) {
730
+ errors.push(`invalid requires entry "${r}"`);
731
+ continue;
732
+ }
733
+ const publisher = /@([^/]+)\//.exec(r)?.[1] ?? "";
734
+ if (!isValidPublisher(publisher)) {
735
+ errors.push(`invalid requires entry "${r}": publisher "${publisher}" \u2014 ${PUBLISHER_HINT}`);
736
+ }
730
737
  }
731
738
  return errors;
732
739
  }
@@ -1077,9 +1084,9 @@ function expandRootFiles(assetRoot) {
1077
1084
  for (const e of entries.sort((a, b) => a.name < b.name ? -1 : 1)) {
1078
1085
  const rel = relDir ? `${relDir}/${e.name}` : e.name;
1079
1086
  if (e.isDirectory()) {
1080
- if (e.name === ".git" || e.name === "node_modules" || e.name === ".skaile") continue;
1087
+ if (isNonAssetDir(e.name)) continue;
1081
1088
  walk(path.join(absDir, e.name), rel);
1082
- } else if (e.isFile()) {
1089
+ } else if (e.isFile() && !isNonAssetFile(e.name)) {
1083
1090
  out.push(rel);
1084
1091
  }
1085
1092
  }
@@ -1492,9 +1499,9 @@ function* walkTree(rootDir) {
1492
1499
  const full = path.join(dir, e.name);
1493
1500
  const rel = relDir ? `${relDir}/${e.name}` : e.name;
1494
1501
  if (e.isDirectory()) {
1495
- if (e.name === ".git" || e.name === "node_modules" || e.name === ".skaile") continue;
1502
+ if (isNonAssetDir(e.name)) continue;
1496
1503
  yield* walk(full, rel);
1497
- } else if (e.isFile()) {
1504
+ } else if (e.isFile() && !isNonAssetFile(e.name)) {
1498
1505
  yield { absPath: full, relativePath: rel };
1499
1506
  }
1500
1507
  }
@@ -1616,9 +1623,7 @@ async function discoverAssetsInTreeEntries(entries, options) {
1616
1623
  return { assets, graph, errors, warnings };
1617
1624
  }
1618
1625
  function shouldSkipBlobPath(relativePath, includeDev, devPaths) {
1619
- if (relativePath.startsWith(".git/") || relativePath.startsWith("node_modules/") || relativePath.startsWith(".skaile/") || relativePath.includes("/.git/") || relativePath.includes("/node_modules/") || relativePath.includes("/.skaile/")) {
1620
- return true;
1621
- }
1626
+ if (isNonAssetPath(relativePath)) return true;
1622
1627
  if (!includeDev && isExcludedDevPath(relativePath, devPaths)) return true;
1623
1628
  return false;
1624
1629
  }
@@ -1883,6 +1888,7 @@ function collectFullDirFilesTree(assetRoot, blobByPath, registry) {
1883
1888
  for (const full of blobByPath.keys()) {
1884
1889
  if (assetRoot !== "" && !full.startsWith(prefix)) continue;
1885
1890
  const rel = assetRoot === "" ? full : full.slice(assetRoot.length + 1);
1891
+ if (isNonAssetPath(rel)) continue;
1886
1892
  all.push(rel);
1887
1893
  if (rel.includes("/")) {
1888
1894
  let kind;
@@ -2178,9 +2184,7 @@ function expandRootFilesTree(assetPath, blobByPath) {
2178
2184
  for (const blobPath of blobByPath.keys()) {
2179
2185
  if (!isInDir(blobPath, root)) continue;
2180
2186
  const rel = root === "" ? blobPath : blobPath.slice(root.length + 1);
2181
- if (rel.startsWith(".git/") || rel.startsWith("node_modules/") || rel.startsWith(".skaile/") || rel.includes("/.git/") || rel.includes("/node_modules/") || rel.includes("/.skaile/")) {
2182
- continue;
2183
- }
2187
+ if (isNonAssetPath(rel)) continue;
2184
2188
  out.push(rel);
2185
2189
  }
2186
2190
  return out.sort();
@@ -2190,5 +2194,5 @@ function expandRootFilesTree(assetPath, blobByPath) {
2190
2194
  var VERSION = "0.0.0";
2191
2195
 
2192
2196
  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
2197
+ //# sourceMappingURL=chunk-GEWAIQZ5.js.map
2198
+ //# sourceMappingURL=chunk-GEWAIQZ5.js.map