@skaile/workspaces 0.29.0 → 0.30.1

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 (472) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/dist/{asset-feeds-2V7LZIG7.js → asset-feeds-IWOBYROH.js} +14 -13
  3. package/dist/asset-feeds-IWOBYROH.js.map +1 -0
  4. package/dist/asset-manager/index.js +12 -12
  5. package/dist/asset-manager/installer.js +11 -11
  6. package/dist/asset-manager/renderers.js +2 -2
  7. package/dist/asset-manager/src/index.d.ts +27 -0
  8. package/dist/asset-manager/src/index.d.ts.map +1 -1
  9. package/dist/asset-manager/src/install-agent.d.ts.map +1 -1
  10. package/dist/asset-manager/src/installer.d.ts +1 -2
  11. package/dist/asset-manager/src/installer.d.ts.map +1 -1
  12. package/dist/asset-manager/src/renderers.d.ts.map +1 -1
  13. package/dist/bridge/drivers/claude-sdk.js +324 -226
  14. package/dist/bridge/drivers/claude-sdk.js.map +1 -1
  15. package/dist/bridge/drivers/codex.js +3 -3
  16. package/dist/bridge/drivers/codex.js.map +1 -1
  17. package/dist/bridge/drivers/continue.js +4 -4
  18. package/dist/bridge/drivers/echo.js +2 -2
  19. package/dist/bridge/drivers/echo.js.map +1 -1
  20. package/dist/bridge/drivers/gemini.js +5 -5
  21. package/dist/bridge/drivers/goose.js +4 -4
  22. package/dist/bridge/drivers/omp.js +3 -3
  23. package/dist/bridge/drivers/opencode.js +4 -4
  24. package/dist/bridge/drivers/qwen.js +5 -5
  25. package/dist/bridge/index.js +4 -4
  26. package/dist/bridge/src/drivers/claude-sdk.d.ts +64 -0
  27. package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
  28. package/dist/bridge/src/drivers/echo.d.ts +1 -1
  29. package/dist/bridge/src/drivers/echo.d.ts.map +1 -1
  30. package/dist/bridge/src/error-classifier.d.ts.map +1 -1
  31. package/dist/bridge/src/normalizer.d.ts +5 -0
  32. package/dist/bridge/src/normalizer.d.ts.map +1 -1
  33. package/dist/{chunk-LDUNTZB6.js → chunk-26L2B6P6.js} +2 -2
  34. package/dist/{chunk-LDUNTZB6.js.map → chunk-26L2B6P6.js.map} +1 -1
  35. package/dist/{chunk-FWHOU3CX.js → chunk-2VKVWN5E.js} +6 -6
  36. package/dist/{chunk-FWHOU3CX.js.map → chunk-2VKVWN5E.js.map} +1 -1
  37. package/dist/{chunk-2FS4FPZ7.js → chunk-4AGIEU7V.js} +44 -62
  38. package/dist/chunk-4AGIEU7V.js.map +1 -0
  39. package/dist/{chunk-ZONCCO5N.js → chunk-4R6DROGN.js} +30 -32
  40. package/dist/chunk-4R6DROGN.js.map +1 -0
  41. package/dist/{chunk-3QQSSRYN.js → chunk-5DQOZFWJ.js} +416 -345
  42. package/dist/chunk-5DQOZFWJ.js.map +1 -0
  43. package/dist/{chunk-XFQ2OXYR.js → chunk-5MJJYIL4.js} +3 -3
  44. package/dist/{chunk-XFQ2OXYR.js.map → chunk-5MJJYIL4.js.map} +1 -1
  45. package/dist/{chunk-AKSR434V.js → chunk-5XAQDOMU.js} +79 -56
  46. package/dist/chunk-5XAQDOMU.js.map +1 -0
  47. package/dist/{chunk-MBOR7D65.js → chunk-67MFR5LS.js} +3 -3
  48. package/dist/{chunk-MBOR7D65.js.map → chunk-67MFR5LS.js.map} +1 -1
  49. package/dist/{chunk-7GWYRVAX.js → chunk-6LW7Q53Z.js} +162 -165
  50. package/dist/chunk-6LW7Q53Z.js.map +1 -0
  51. package/dist/{chunk-SF4GWVR5.js → chunk-6TCOYFVJ.js} +86 -55
  52. package/dist/chunk-6TCOYFVJ.js.map +1 -0
  53. package/dist/{chunk-QMONOHXT.js → chunk-74UKG2LA.js} +3 -3
  54. package/dist/{chunk-QMONOHXT.js.map → chunk-74UKG2LA.js.map} +1 -1
  55. package/dist/{chunk-JIQLLZ65.js → chunk-7MANNJ3U.js} +534 -235
  56. package/dist/chunk-7MANNJ3U.js.map +1 -0
  57. package/dist/{chunk-7R6W5EQR.js → chunk-ACXLKNIM.js} +2 -2
  58. package/dist/{chunk-7R6W5EQR.js.map → chunk-ACXLKNIM.js.map} +1 -1
  59. package/dist/{chunk-3OKP6F2J.js → chunk-AKYEI3D6.js} +9 -9
  60. package/dist/{chunk-3OKP6F2J.js.map → chunk-AKYEI3D6.js.map} +1 -1
  61. package/dist/{chunk-CMG3GJ6B.js → chunk-DAI754GK.js} +4 -4
  62. package/dist/{chunk-CMG3GJ6B.js.map → chunk-DAI754GK.js.map} +1 -1
  63. package/dist/{chunk-FENG6OO6.js → chunk-FRRTUVUM.js} +4593 -4466
  64. package/dist/chunk-FRRTUVUM.js.map +1 -0
  65. package/dist/{chunk-TV72ZJYN.js → chunk-GXC3TYMQ.js} +60 -47
  66. package/dist/chunk-GXC3TYMQ.js.map +1 -0
  67. package/dist/{chunk-IERB3UXJ.js → chunk-H5YXL4KI.js} +83 -69
  68. package/dist/chunk-H5YXL4KI.js.map +1 -0
  69. package/dist/{chunk-QDJKE557.js → chunk-HRKB2ATT.js} +64 -64
  70. package/dist/chunk-HRKB2ATT.js.map +1 -0
  71. package/dist/{chunk-ZEKWHJBB.js → chunk-IZIFMNTI.js} +3 -3
  72. package/dist/{chunk-ZEKWHJBB.js.map → chunk-IZIFMNTI.js.map} +1 -1
  73. package/dist/{chunk-24UIWON4.js → chunk-JB35MVBN.js} +167 -156
  74. package/dist/chunk-JB35MVBN.js.map +1 -0
  75. package/dist/{chunk-UIZKIUC6.js → chunk-KHZI44SS.js} +3 -3
  76. package/dist/chunk-KHZI44SS.js.map +1 -0
  77. package/dist/{chunk-5YO3H5Q4.js → chunk-KY5NY7LB.js} +3 -3
  78. package/dist/chunk-KY5NY7LB.js.map +1 -0
  79. package/dist/{chunk-MIH45XPY.js → chunk-LA2YSXEE.js} +1974 -1919
  80. package/dist/chunk-LA2YSXEE.js.map +1 -0
  81. package/dist/{chunk-IEJ5IOC3.js → chunk-LFDZYCEO.js} +4 -2
  82. package/dist/chunk-LFDZYCEO.js.map +1 -0
  83. package/dist/{chunk-2NOE4AGD.js → chunk-LIK75OJ5.js} +3 -3
  84. package/dist/{chunk-2NOE4AGD.js.map → chunk-LIK75OJ5.js.map} +1 -1
  85. package/dist/{chunk-PAYAFNXG.js → chunk-NGJ6E344.js} +104 -74
  86. package/dist/chunk-NGJ6E344.js.map +1 -0
  87. package/dist/{chunk-5V5KZQIC.js → chunk-PVMAIVNL.js} +4 -4
  88. package/dist/{chunk-5V5KZQIC.js.map → chunk-PVMAIVNL.js.map} +1 -1
  89. package/dist/{chunk-HK5FRWG6.js → chunk-R6O6YWU7.js} +2 -2
  90. package/dist/{chunk-HK5FRWG6.js.map → chunk-R6O6YWU7.js.map} +1 -1
  91. package/dist/{chunk-PRLD7EXG.js → chunk-SBGHNXJD.js} +2 -2
  92. package/dist/{chunk-PRLD7EXG.js.map → chunk-SBGHNXJD.js.map} +1 -1
  93. package/dist/{chunk-5RBPPBEK.js → chunk-SCJD3FMO.js} +4 -4
  94. package/dist/{chunk-5RBPPBEK.js.map → chunk-SCJD3FMO.js.map} +1 -1
  95. package/dist/{chunk-BZ2JU7IP.js → chunk-TU4VZULO.js} +5 -5
  96. package/dist/{chunk-BZ2JU7IP.js.map → chunk-TU4VZULO.js.map} +1 -1
  97. package/dist/{chunk-CBNMIKUO.js → chunk-VGFYUD3T.js} +158 -108
  98. package/dist/chunk-VGFYUD3T.js.map +1 -0
  99. package/dist/{chunk-Z3XXKR5E.js → chunk-WDMH4UMD.js} +4 -6
  100. package/dist/chunk-WDMH4UMD.js.map +1 -0
  101. package/dist/{chunk-W7W66MDZ.js → chunk-X46FY45B.js} +44 -42
  102. package/dist/chunk-X46FY45B.js.map +1 -0
  103. package/dist/{chunk-JKNWJ64A.js → chunk-XGCXFX7X.js} +2 -2
  104. package/dist/{chunk-JKNWJ64A.js.map → chunk-XGCXFX7X.js.map} +1 -1
  105. package/dist/{chunk-TDZGENVP.js → chunk-XOAF5QAE.js} +2094 -1901
  106. package/dist/chunk-XOAF5QAE.js.map +1 -0
  107. package/dist/{chunk-FQHHCICT.js → chunk-XVDXGQ55.js} +226 -226
  108. package/dist/chunk-XVDXGQ55.js.map +1 -0
  109. package/dist/{chunk-M4KLIEIJ.js → chunk-YBJLYT4S.js} +3 -3
  110. package/dist/chunk-YBJLYT4S.js.map +1 -0
  111. package/dist/{chunk-OKRUTSG7.js → chunk-ZDKJHQY2.js} +2 -2
  112. package/dist/{chunk-OKRUTSG7.js.map → chunk-ZDKJHQY2.js.map} +1 -1
  113. package/dist/{chunk-UBCZVONU.js → chunk-ZME3JDA6.js} +3 -3
  114. package/dist/{chunk-UBCZVONU.js.map → chunk-ZME3JDA6.js.map} +1 -1
  115. package/dist/cli/index.js +2811 -2662
  116. package/dist/cli/index.js.map +1 -1
  117. package/dist/cli/src/asset-feeds.d.ts +0 -9
  118. package/dist/cli/src/asset-feeds.d.ts.map +1 -1
  119. package/dist/cli/src/commands/catalog-cmd.d.ts.map +1 -1
  120. package/dist/cli/src/commands/catalog.d.ts.map +1 -1
  121. package/dist/cli/src/commands/config.d.ts.map +1 -1
  122. package/dist/cli/src/commands/deploy.d.ts.map +1 -1
  123. package/dist/cli/src/commands/integration.d.ts.map +1 -1
  124. package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
  125. package/dist/cli/src/commands/manage.d.ts.map +1 -1
  126. package/dist/cli/src/commands/preset-cmd.d.ts.map +1 -1
  127. package/dist/cli/src/commands/project.d.ts +1 -1
  128. package/dist/cli/src/commands/project.d.ts.map +1 -1
  129. package/dist/cli/src/commands/show.d.ts.map +1 -1
  130. package/dist/cli/src/commands/source.d.ts.map +1 -1
  131. package/dist/cli/src/commands/validate.d.ts.map +1 -1
  132. package/dist/cli/src/ensure-sources.d.ts.map +1 -1
  133. package/dist/cli/src/flow-discovery.d.ts.map +1 -1
  134. package/dist/cli/src/open-registry.d.ts.map +1 -1
  135. package/dist/cli/src/plugin-store/index.d.ts +4 -6
  136. package/dist/cli/src/plugin-store/index.d.ts.map +1 -1
  137. package/dist/cli/src/plugin-store/paths.d.ts +0 -2
  138. package/dist/cli/src/plugin-store/paths.d.ts.map +1 -1
  139. package/dist/cli/src/setup.d.ts.map +1 -1
  140. package/dist/connectors/config.js +9 -9
  141. package/dist/connectors/index.js +12 -12
  142. package/dist/connectors/rclone.js +2 -2
  143. package/dist/connectors/src/connector-prompt.d.ts.map +1 -1
  144. package/dist/connectors/src/connector-registry.d.ts.map +1 -1
  145. package/dist/connectors/src/connector-types.d.ts +1 -1
  146. package/dist/connectors/src/connector-types.d.ts.map +1 -1
  147. package/dist/connectors/src/index.d.ts +5 -5
  148. package/dist/connectors/src/index.d.ts.map +1 -1
  149. package/dist/connectors/src/managed-gitconfig.d.ts.map +1 -1
  150. package/dist/{connectors-PTCSHCHZ.js → connectors-DY7UBBV5.js} +3 -3
  151. package/dist/{connectors-PTCSHCHZ.js.map → connectors-DY7UBBV5.js.map} +1 -1
  152. package/dist/connectors-shared/src/index.d.ts +1 -1
  153. package/dist/connectors-shared/src/index.d.ts.map +1 -1
  154. package/dist/core/index.js +8 -8
  155. package/dist/core/logging.js +1 -1
  156. package/dist/core/manifest.js +2 -2
  157. package/dist/core/models.js +1 -1
  158. package/dist/core/publish-manifest.js +2 -2
  159. package/dist/core/runtime-assets.js +5 -5
  160. package/dist/core/src/lock.d.ts +0 -9
  161. package/dist/core/src/lock.d.ts.map +1 -1
  162. package/dist/core/src/logging/create-logger.d.ts.map +1 -1
  163. package/dist/core/src/logging/index.d.ts +11 -11
  164. package/dist/core/src/logging/index.d.ts.map +1 -1
  165. package/dist/core/src/logging/log-store.d.ts.map +1 -1
  166. package/dist/core/src/logging/sinks/no-op-sink.d.ts.map +1 -1
  167. package/dist/core/src/logging/sinks/sqlite-sink.d.ts.map +1 -1
  168. package/dist/core/src/manifest.d.ts.map +1 -1
  169. package/dist/core/src/models.d.ts +6 -0
  170. package/dist/core/src/models.d.ts.map +1 -1
  171. package/dist/core/src/publish-manifest.d.ts.map +1 -1
  172. package/dist/core/src/repo-manager.d.ts +0 -12
  173. package/dist/core/src/repo-manager.d.ts.map +1 -1
  174. package/dist/core/src/runtime-assets.d.ts.map +1 -1
  175. package/dist/core/src/store.d.ts +1 -1
  176. package/dist/core/src/store.d.ts.map +1 -1
  177. package/dist/core/src/walker.d.ts.map +1 -1
  178. package/dist/core/src/workspace-config.d.ts +0 -27
  179. package/dist/core/src/workspace-config.d.ts.map +1 -1
  180. package/dist/core/store.js +1 -1
  181. package/dist/core/workspace-config.js +4 -4
  182. package/dist/deploy/index.js +8 -8
  183. package/dist/discovery/index.js +6 -6
  184. package/dist/discovery/src/asset-kind-registry.d.ts +1 -1
  185. package/dist/discovery/src/asset-kind-registry.d.ts.map +1 -1
  186. package/dist/discovery/src/builtin-providers.d.ts.map +1 -1
  187. package/dist/discovery/src/discover-manifest.d.ts +1 -1
  188. package/dist/discovery/src/discover-manifest.d.ts.map +1 -1
  189. package/dist/discovery/src/discover.d.ts +30 -3
  190. package/dist/discovery/src/discover.d.ts.map +1 -1
  191. package/dist/discovery/src/domains.d.ts +144 -0
  192. package/dist/discovery/src/domains.d.ts.map +1 -0
  193. package/dist/discovery/src/index.d.ts +9 -7
  194. package/dist/discovery/src/index.d.ts.map +1 -1
  195. package/dist/discovery/src/source-config.d.ts +1 -1
  196. package/dist/discovery/src/source-config.d.ts.map +1 -1
  197. package/dist/discovery/src/tree-entries.d.ts +13 -1
  198. package/dist/discovery/src/tree-entries.d.ts.map +1 -1
  199. package/dist/ensure-sources-6GW6UBXY.js +84 -0
  200. package/dist/ensure-sources-6GW6UBXY.js.map +1 -0
  201. package/dist/factory-assets/connectors/deploy/adapter.d.ts +1 -1
  202. package/dist/factory-assets/connectors/deploy/adapter.d.ts.map +1 -1
  203. package/dist/factory-assets/connectors/deploy.js +12 -12
  204. package/dist/factory-assets/connectors/devserver/adapter.d.ts +1 -1
  205. package/dist/factory-assets/connectors/devserver/adapter.d.ts.map +1 -1
  206. package/dist/factory-assets/connectors/devserver.js +12 -12
  207. package/dist/factory-assets/connectors/flow/adapter.d.ts +16 -2
  208. package/dist/factory-assets/connectors/flow/adapter.d.ts.map +1 -1
  209. package/dist/factory-assets/connectors/flow/adapter.js +12 -12
  210. package/dist/factory-assets/connectors/flow/engine/flow-kind-provider.d.ts.map +1 -1
  211. package/dist/factory-assets/connectors/flow/engine/index.d.ts +3 -3
  212. package/dist/factory-assets/connectors/flow/engine/index.d.ts.map +1 -1
  213. package/dist/factory-assets/connectors/flow/engine.js +9 -9
  214. package/dist/factory-assets/connectors/flow/index.d.ts +1 -1
  215. package/dist/factory-assets/connectors/flow/index.d.ts.map +1 -1
  216. package/dist/factory-assets/connectors/flow/run-flow.js +15 -15
  217. package/dist/factory-assets/connectors/flow.js +12 -12
  218. package/dist/factory-assets/connectors/git/driver.d.ts +32 -0
  219. package/dist/factory-assets/connectors/git/driver.d.ts.map +1 -1
  220. package/dist/factory-assets/connectors/git.js +12 -12
  221. package/dist/factory-assets/connectors/gmail/adapter.d.ts +1 -1
  222. package/dist/factory-assets/connectors/gmail/adapter.d.ts.map +1 -1
  223. package/dist/factory-assets/connectors/gmail.js +12 -12
  224. package/dist/factory-assets/connectors/googledrive.js +12 -12
  225. package/dist/factory-assets/connectors/local/driver.d.ts +1 -2
  226. package/dist/factory-assets/connectors/local/driver.d.ts.map +1 -1
  227. package/dist/factory-assets/connectors/local.js +12 -12
  228. package/dist/factory-assets/connectors/mattermost/adapter.d.ts +1 -1
  229. package/dist/factory-assets/connectors/mattermost/adapter.d.ts.map +1 -1
  230. package/dist/factory-assets/connectors/mattermost.js +12 -12
  231. package/dist/factory-assets/connectors/memory/adapter.d.ts.map +1 -1
  232. package/dist/factory-assets/connectors/memory.js +12 -12
  233. package/dist/factory-assets/connectors/minio/adapter.d.ts +1 -1
  234. package/dist/factory-assets/connectors/minio/adapter.d.ts.map +1 -1
  235. package/dist/factory-assets/connectors/minio.js +12 -12
  236. package/dist/factory-assets/connectors/postgres/adapter.d.ts +6 -1
  237. package/dist/factory-assets/connectors/postgres/adapter.d.ts.map +1 -1
  238. package/dist/factory-assets/connectors/postgres.js +12 -12
  239. package/dist/factory-assets/connectors/s3/driver.d.ts.map +1 -1
  240. package/dist/factory-assets/connectors/s3.js +12 -12
  241. package/dist/factory-assets/connectors/sharepoint.js +12 -12
  242. package/dist/factory-assets/connectors/sqlite/adapter.d.ts +1 -1
  243. package/dist/factory-assets/connectors/sqlite/adapter.d.ts.map +1 -1
  244. package/dist/factory-assets/connectors/sqlite.js +12 -12
  245. package/dist/factory-assets/connectors/static-server/adapter.d.ts +6 -1
  246. package/dist/factory-assets/connectors/static-server/adapter.d.ts.map +1 -1
  247. package/dist/factory-assets/connectors/static-server.js +12 -12
  248. package/dist/factory-assets/connectors/tunnel/adapter.d.ts +1 -1
  249. package/dist/factory-assets/connectors/tunnel/adapter.d.ts.map +1 -1
  250. package/dist/factory-assets/connectors/tunnel.js +12 -12
  251. package/dist/factory-assets/connectors/webdav.js +12 -12
  252. package/dist/factory-assets/connectors/xstate/adapter.d.ts +1 -1
  253. package/dist/factory-assets/connectors/xstate/adapter.d.ts.map +1 -1
  254. package/dist/factory-assets/connectors/xstate-store/adapter.d.ts +7 -0
  255. package/dist/factory-assets/connectors/xstate-store/adapter.d.ts.map +1 -1
  256. package/dist/factory-assets/connectors/xstate-store.js +12 -12
  257. package/dist/factory-assets/connectors/xstate.js +12 -12
  258. package/dist/flows-JXO3KGC2.js +7 -0
  259. package/dist/{flows-L3GHQD7F.js.map → flows-JXO3KGC2.js.map} +1 -1
  260. package/dist/library/index.js +13 -13
  261. package/dist/library/install.js +9 -9
  262. package/dist/library/src/config.d.ts.map +1 -1
  263. package/dist/library/src/index.d.ts +27 -27
  264. package/dist/library/src/index.d.ts.map +1 -1
  265. package/dist/library/src/install/index.d.ts +2 -2
  266. package/dist/library/src/install/index.d.ts.map +1 -1
  267. package/dist/library/src/install/install-from-manifest.d.ts +0 -21
  268. package/dist/library/src/install/install-from-manifest.d.ts.map +1 -1
  269. package/dist/library/src/knowledge/index.d.ts +2 -2
  270. package/dist/library/src/knowledge/index.d.ts.map +1 -1
  271. package/dist/library/src/knowledge/knowledge-kind-provider.d.ts.map +1 -1
  272. package/dist/library/src/local/library.d.ts +2 -2
  273. package/dist/library/src/local/library.d.ts.map +1 -1
  274. package/dist/library/src/local/store-paths.d.ts.map +1 -1
  275. package/dist/library/src/pin-resolver.d.ts.map +1 -1
  276. package/dist/library/src/preset/apply.d.ts +2 -2
  277. package/dist/library/src/preset/apply.d.ts.map +1 -1
  278. package/dist/library/src/preset/index.d.ts +10 -10
  279. package/dist/library/src/preset/index.d.ts.map +1 -1
  280. package/dist/library/src/preset/parse.d.ts.map +1 -1
  281. package/dist/library/src/preset/resolve-item.d.ts +1 -1
  282. package/dist/library/src/preset/resolve-item.d.ts.map +1 -1
  283. package/dist/library/src/preset/upgrade.d.ts +1 -1
  284. package/dist/library/src/preset/upgrade.d.ts.map +1 -1
  285. package/dist/library/src/remote/index.d.ts +5 -5
  286. package/dist/library/src/remote/index.d.ts.map +1 -1
  287. package/dist/library/src/remote/remote-catalog-source.d.ts +1 -1
  288. package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
  289. package/dist/library/src/remote/rest-catalog-source.d.ts +1 -1
  290. package/dist/library/src/remote/rest-catalog-source.d.ts.map +1 -1
  291. package/dist/library/src/sync/driver.d.ts +1 -1
  292. package/dist/library/src/sync/driver.d.ts.map +1 -1
  293. package/dist/library/src/sync/git-driver.d.ts +1 -1
  294. package/dist/library/src/sync/git-driver.d.ts.map +1 -1
  295. package/dist/library/src/sync/local-driver.d.ts +1 -1
  296. package/dist/library/src/sync/local-driver.d.ts.map +1 -1
  297. package/dist/library/src/workspace-config.d.ts +0 -9
  298. package/dist/library/src/workspace-config.d.ts.map +1 -1
  299. package/dist/open-library-SH6NCJM2.js +23 -0
  300. package/dist/{open-library-3VJY74LQ.js.map → open-library-SH6NCJM2.js.map} +1 -1
  301. package/dist/paths-YSXGJ7TO.js +15 -0
  302. package/dist/{paths-CE66L3AL.js.map → paths-YSXGJ7TO.js.map} +1 -1
  303. package/dist/plugin-registry/src/targets.d.ts +2 -3
  304. package/dist/plugin-registry/src/targets.d.ts.map +1 -1
  305. package/dist/{plugin-store-GL5VKYUA.js → plugin-store-2KMDUF7R.js} +11 -14
  306. package/dist/plugin-store-2KMDUF7R.js.map +1 -0
  307. package/dist/plugins/index.js +1 -1
  308. package/dist/plugins/src/asset-kind-registry.d.ts +1 -1
  309. package/dist/plugins/src/asset-kind-registry.d.ts.map +1 -1
  310. package/dist/plugins/src/catalog-source.d.ts +5 -0
  311. package/dist/plugins/src/catalog-source.d.ts.map +1 -1
  312. package/dist/plugins/src/index.d.ts +5 -5
  313. package/dist/plugins/src/index.d.ts.map +1 -1
  314. package/dist/{provider-GAWKFQ3T.js → provider-ZPT443IX.js} +18 -16
  315. package/dist/provider-ZPT443IX.js.map +1 -0
  316. package/dist/resolver/index.js +1 -1
  317. package/dist/resolver/src/preamble.d.ts.map +1 -1
  318. package/dist/runner/index.js +17 -17
  319. package/dist/runner/src/builtin-capabilities.d.ts +12 -0
  320. package/dist/runner/src/builtin-capabilities.d.ts.map +1 -1
  321. package/dist/runner/src/capability-registry.d.ts.map +1 -1
  322. package/dist/runner/src/compaction/index.d.ts +0 -4
  323. package/dist/runner/src/compaction/index.d.ts.map +1 -1
  324. package/dist/runner/src/compaction/orchestrator.d.ts +23 -2
  325. package/dist/runner/src/compaction/orchestrator.d.ts.map +1 -1
  326. package/dist/runner/src/composition/compile.d.ts.map +1 -1
  327. package/dist/runner/src/composition/index.d.ts +4 -4
  328. package/dist/runner/src/composition/index.d.ts.map +1 -1
  329. package/dist/runner/src/composition/resolve.d.ts.map +1 -1
  330. package/dist/runner/src/composition/types.d.ts +2 -2
  331. package/dist/runner/src/composition/types.d.ts.map +1 -1
  332. package/dist/runner/src/config.d.ts +2 -2
  333. package/dist/runner/src/config.d.ts.map +1 -1
  334. package/dist/runner/src/define-capability.d.ts +1 -1
  335. package/dist/runner/src/define-capability.d.ts.map +1 -1
  336. package/dist/runner/src/external-mcp.d.ts.map +1 -1
  337. package/dist/runner/src/index.d.ts +9 -9
  338. package/dist/runner/src/index.d.ts.map +1 -1
  339. package/dist/runner/src/logging-bootstrap.d.ts +1 -1
  340. package/dist/runner/src/logging-bootstrap.d.ts.map +1 -1
  341. package/dist/runner/src/manifest.d.ts.map +1 -1
  342. package/dist/runner/src/resource-handler.d.ts.map +1 -1
  343. package/dist/runner/src/resources.d.ts.map +1 -1
  344. package/dist/runner/src/runner-capabilities.d.ts +25 -0
  345. package/dist/runner/src/runner-capabilities.d.ts.map +1 -1
  346. package/dist/runner/src/serve.d.ts.map +1 -1
  347. package/dist/runner/src/session-builder.d.ts.map +1 -1
  348. package/dist/sdk/asset-manager.js +12 -12
  349. package/dist/sdk/bridge.js +4 -4
  350. package/dist/sdk/core.js +8 -8
  351. package/dist/sdk/flow.js +9 -9
  352. package/dist/sdk/index.js +92 -76
  353. package/dist/sdk/index.js.map +1 -1
  354. package/dist/sdk/resolver.js +1 -1
  355. package/dist/sdk/runner.js +17 -17
  356. package/dist/sdk/session.js +1 -1
  357. package/dist/sdk/src/agent-session.d.ts +8 -0
  358. package/dist/sdk/src/agent-session.d.ts.map +1 -1
  359. package/dist/sdk/src/factory.d.ts.map +1 -1
  360. package/dist/sdk/src/index.d.ts +2 -2
  361. package/dist/sdk/src/index.d.ts.map +1 -1
  362. package/dist/sdk/store.js +1 -1
  363. package/dist/sdk/telemetry.js +1 -1
  364. package/dist/secrets/index.js +2 -2
  365. package/dist/secrets/src/index.d.ts +8 -8
  366. package/dist/secrets/src/index.d.ts.map +1 -1
  367. package/dist/secrets/src/lifecycle.d.ts +1 -2
  368. package/dist/secrets/src/lifecycle.d.ts.map +1 -1
  369. package/dist/secrets/src/providers/env.d.ts +1 -1
  370. package/dist/secrets/src/providers/env.d.ts.map +1 -1
  371. package/dist/secrets/src/providers/local.d.ts +1 -1
  372. package/dist/secrets/src/providers/local.d.ts.map +1 -1
  373. package/dist/secrets/src/router.d.ts +1 -1
  374. package/dist/secrets/src/router.d.ts.map +1 -1
  375. package/dist/session/index.js +1 -1
  376. package/dist/session/src/mentions.d.ts.map +1 -1
  377. package/dist/{sessions-2IUX4P3P.js → sessions-DICDEONJ.js} +3 -3
  378. package/dist/{sessions-2IUX4P3P.js.map → sessions-DICDEONJ.js.map} +1 -1
  379. package/dist/{setup-4YMN2BDU.js → setup-6MQ6QWML.js} +198 -175
  380. package/dist/setup-6MQ6QWML.js.map +1 -0
  381. package/dist/skills-BMI6H7HI.js +7 -0
  382. package/dist/{skills-6HJ3WINN.js.map → skills-BMI6H7HI.js.map} +1 -1
  383. package/dist/store/index.js +1 -1
  384. package/dist/store/src/index.d.ts +1 -1
  385. package/dist/store/src/index.d.ts.map +1 -1
  386. package/dist/store/src/resource-client.d.ts +1 -1
  387. package/dist/store/src/resource-client.d.ts.map +1 -1
  388. package/dist/store/src/vue.d.ts.map +1 -1
  389. package/dist/store/vue.js.map +1 -1
  390. package/dist/store-client-LDYF4TK4.js +15 -0
  391. package/dist/{store-client-BCP5LCAZ.js.map → store-client-LDYF4TK4.js.map} +1 -1
  392. package/dist/telemetry/index.js +1 -1
  393. package/dist/telemetry/src/context.d.ts.map +1 -1
  394. package/dist/telemetry/src/index.d.ts +3 -3
  395. package/dist/telemetry/src/index.d.ts.map +1 -1
  396. package/dist/telemetry/src/otel/gen-ai.d.ts +1 -1
  397. package/dist/telemetry/src/otel/gen-ai.d.ts.map +1 -1
  398. package/dist/telemetry/src/otel/provider.d.ts.map +1 -1
  399. package/dist/transport/src/index.d.ts +1 -1
  400. package/dist/transport/src/index.d.ts.map +1 -1
  401. package/dist/tui/index.js +251 -218
  402. package/dist/tui/index.js.map +1 -1
  403. package/dist/tui/src/index.d.ts +2 -2
  404. package/dist/tui/src/index.d.ts.map +1 -1
  405. package/dist/tui/src/repl-renderer.d.ts.map +1 -1
  406. package/dist/tui/src/repl-session.d.ts +1 -1
  407. package/dist/tui/src/repl-session.d.ts.map +1 -1
  408. package/dist/tui/src/repl.d.ts.map +1 -1
  409. package/dist/types/manifests.js +1 -1
  410. package/dist/types/src/envelope.d.ts +1 -1
  411. package/dist/types/src/envelope.d.ts.map +1 -1
  412. package/dist/types/src/manifests/agent.d.ts.map +1 -1
  413. package/dist/types/src/manifests/connector.d.ts.map +1 -1
  414. package/dist/types/src/manifests/contract.d.ts.map +1 -1
  415. package/dist/types/src/manifests/index.d.ts +16 -16
  416. package/dist/types/src/manifests/index.d.ts.map +1 -1
  417. package/dist/types/src/manifests/mcp-server.d.ts.map +1 -1
  418. package/dist/types/src/manifests/mount.d.ts.map +1 -1
  419. package/dist/types/src/manifests/persona.d.ts.map +1 -1
  420. package/dist/types/src/manifests/preset.d.ts +0 -18
  421. package/dist/types/src/manifests/preset.d.ts.map +1 -1
  422. package/dist/types/src/manifests/prompt.d.ts.map +1 -1
  423. package/dist/types/src/manifests/ruleset.d.ts.map +1 -1
  424. package/dist/types/src/manifests/skill.d.ts.map +1 -1
  425. package/dist/validator-VF5M764T.js +5 -0
  426. package/dist/{validator-47SQUW3J.js.map → validator-VF5M764T.js.map} +1 -1
  427. package/dist/workspace-plugin/adapters/mcp.js +6 -6
  428. package/dist/workspace-plugin/adapters/omp.js +76 -69
  429. package/dist/workspace-plugin/adapters/omp.js.map +1 -1
  430. package/dist/workspace-plugin/index.js +2 -2
  431. package/dist/workspace-plugin/src/adapters/omp.d.ts.map +1 -1
  432. package/dist/workspace-plugin/src/tools/connectors.d.ts.map +1 -1
  433. package/dist/workspace-plugin/src/tools/flows.d.ts.map +1 -1
  434. package/dist/workspace-plugin/src/tools/sessions.d.ts.map +1 -1
  435. package/dist/workspace-plugin/src/tools/skills.d.ts.map +1 -1
  436. package/dist/workspace-plugin/src/tools/validator.d.ts.map +1 -1
  437. package/package.json +1 -2
  438. package/dist/asset-feeds-2V7LZIG7.js.map +0 -1
  439. package/dist/chunk-24UIWON4.js.map +0 -1
  440. package/dist/chunk-2FS4FPZ7.js.map +0 -1
  441. package/dist/chunk-3QQSSRYN.js.map +0 -1
  442. package/dist/chunk-5YO3H5Q4.js.map +0 -1
  443. package/dist/chunk-7GWYRVAX.js.map +0 -1
  444. package/dist/chunk-AKSR434V.js.map +0 -1
  445. package/dist/chunk-CBNMIKUO.js.map +0 -1
  446. package/dist/chunk-FENG6OO6.js.map +0 -1
  447. package/dist/chunk-FQHHCICT.js.map +0 -1
  448. package/dist/chunk-IEJ5IOC3.js.map +0 -1
  449. package/dist/chunk-IERB3UXJ.js.map +0 -1
  450. package/dist/chunk-JIQLLZ65.js.map +0 -1
  451. package/dist/chunk-M4KLIEIJ.js.map +0 -1
  452. package/dist/chunk-MIH45XPY.js.map +0 -1
  453. package/dist/chunk-PAYAFNXG.js.map +0 -1
  454. package/dist/chunk-QDJKE557.js.map +0 -1
  455. package/dist/chunk-SF4GWVR5.js.map +0 -1
  456. package/dist/chunk-TDZGENVP.js.map +0 -1
  457. package/dist/chunk-TV72ZJYN.js.map +0 -1
  458. package/dist/chunk-UIZKIUC6.js.map +0 -1
  459. package/dist/chunk-W7W66MDZ.js.map +0 -1
  460. package/dist/chunk-Z3XXKR5E.js.map +0 -1
  461. package/dist/chunk-ZONCCO5N.js.map +0 -1
  462. package/dist/ensure-sources-BNSRO5G7.js +0 -74
  463. package/dist/ensure-sources-BNSRO5G7.js.map +0 -1
  464. package/dist/flows-L3GHQD7F.js +0 -7
  465. package/dist/open-library-3VJY74LQ.js +0 -23
  466. package/dist/paths-CE66L3AL.js +0 -15
  467. package/dist/plugin-store-GL5VKYUA.js.map +0 -1
  468. package/dist/provider-GAWKFQ3T.js.map +0 -1
  469. package/dist/setup-4YMN2BDU.js.map +0 -1
  470. package/dist/skills-6HJ3WINN.js +0 -7
  471. package/dist/store-client-BCP5LCAZ.js +0 -15
  472. package/dist/validator-47SQUW3J.js +0 -5
@@ -1,13 +1,13 @@
1
- import { AssetKindRegistryFrozenError, AssetKindConflictError, AssetKindPatternConflictError, AssetKindPathAmbiguityError } from './chunk-OKRUTSG7.js';
2
- import { decodeSkaileManifest, SKAILE_MANIFEST_FILENAME } from './chunk-IERB3UXJ.js';
3
- import { parseFrontmatter } from './chunk-2FS4FPZ7.js';
4
- import { isValidAssetName } from './chunk-IEJ5IOC3.js';
5
- import { validatePersona, validateRuleset, validateSkill, validateAgent, validateConnector, validateMcpServer, validateContract, validatePrompt, validatePreset } from './chunk-QDJKE557.js';
1
+ import { AssetKindRegistryFrozenError, AssetKindConflictError, AssetKindPatternConflictError, AssetKindPathAmbiguityError } from './chunk-ZDKJHQY2.js';
2
+ import { decodeSkaileManifest, SKAILE_MANIFEST_FILENAME } from './chunk-H5YXL4KI.js';
3
+ import { parseFrontmatter } from './chunk-4AGIEU7V.js';
4
+ import { isValidAssetName } from './chunk-LFDZYCEO.js';
5
+ import { validatePersona, validateRuleset, validateSkill, validateAgent, validateConnector, validateMcpServer, validateContract, validatePrompt, validatePreset } from './chunk-HRKB2ATT.js';
6
6
  import * as fs from 'fs';
7
7
  import * as path from 'path';
8
- import * as z from 'zod';
9
8
  import * as yaml from 'js-yaml';
10
9
  import * as crypto from 'crypto';
10
+ import * as z from 'zod';
11
11
 
12
12
  // discovery/src/asset-kind-registry.ts
13
13
  var AssetKindRegistry = class {
@@ -466,6 +466,44 @@ var BUILTIN_PROVIDERS = [
466
466
  // Composition entity (discoverable, not in AssetKind enum)
467
467
  presetProvider
468
468
  ];
469
+ function computeDeterministicHash(assetRoot, files) {
470
+ const hash = crypto.createHash("sha256");
471
+ const sorted = [...files].sort();
472
+ for (const file of sorted) {
473
+ const fullPath = path.join(assetRoot, file);
474
+ try {
475
+ hash.update(file);
476
+ hash.update("\0");
477
+ const content = fs.readFileSync(fullPath);
478
+ hash.update(content);
479
+ hash.update("\0");
480
+ } catch {
481
+ }
482
+ }
483
+ return hash.digest("hex");
484
+ }
485
+ function computeDeterministicHashDetailed(assetRoot, files) {
486
+ const hash = crypto.createHash("sha256");
487
+ const sorted = [...files].sort();
488
+ const present = [];
489
+ const missing = [];
490
+ for (const file of sorted) {
491
+ const fullPath = path.join(assetRoot, file);
492
+ let content = null;
493
+ try {
494
+ content = fs.readFileSync(fullPath);
495
+ } catch {
496
+ missing.push(file);
497
+ continue;
498
+ }
499
+ hash.update(file);
500
+ hash.update("\0");
501
+ hash.update(content);
502
+ hash.update("\0");
503
+ present.push(file);
504
+ }
505
+ return { sha256: hash.digest("hex"), present, missing };
506
+ }
469
507
  var SEMVER_RE = /^\d+\.\d+\.\d+(?:-[a-zA-Z0-9.-]+)?(?:\+[a-zA-Z0-9.-]+)?$/;
470
508
  var PublisherOverrideSchema = z.object({
471
509
  /** Relative path within the repo (trailing slash convention). */
@@ -755,44 +793,8 @@ function loadSourceConfigFromDir(dir) {
755
793
  };
756
794
  }
757
795
  }
758
- function computeDeterministicHash(assetRoot, files) {
759
- const hash = crypto.createHash("sha256");
760
- const sorted = [...files].sort();
761
- for (const file of sorted) {
762
- const fullPath = path.join(assetRoot, file);
763
- try {
764
- hash.update(file);
765
- hash.update("\0");
766
- const content = fs.readFileSync(fullPath);
767
- hash.update(content);
768
- hash.update("\0");
769
- } catch {
770
- }
771
- }
772
- return hash.digest("hex");
773
- }
774
- function computeDeterministicHashDetailed(assetRoot, files) {
775
- const hash = crypto.createHash("sha256");
776
- const sorted = [...files].sort();
777
- const present = [];
778
- const missing = [];
779
- for (const file of sorted) {
780
- const fullPath = path.join(assetRoot, file);
781
- let content = null;
782
- try {
783
- content = fs.readFileSync(fullPath);
784
- } catch {
785
- missing.push(file);
786
- continue;
787
- }
788
- hash.update(file);
789
- hash.update("\0");
790
- hash.update(content);
791
- hash.update("\0");
792
- present.push(file);
793
- }
794
- return { sha256: hash.digest("hex"), present, missing };
795
- }
796
+
797
+ // discovery/src/discover-manifest.ts
796
798
  function discoverFromManifest(rootPath, sourceConfig, registry, includeDev = false) {
797
799
  const assets = [];
798
800
  const errors = [];
@@ -995,6 +997,179 @@ function validateRequiresSyntax(requires) {
995
997
  return errors;
996
998
  }
997
999
 
1000
+ // discovery/src/domains.ts
1001
+ var DOMAIN_RELATIONS = /* @__PURE__ */ new Set([
1002
+ "additions",
1003
+ "alternatives",
1004
+ "sequence"
1005
+ ]);
1006
+ var DOMAIN_SLUG_RE = /^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;
1007
+ var DOMAIN_SLUG_MAX = 39;
1008
+ var DOMAIN_MD_FILENAME = "DOMAIN.md";
1009
+ function isDomainMdPath(relativePath) {
1010
+ return relativePath === DOMAIN_MD_FILENAME || relativePath.endsWith(`/${DOMAIN_MD_FILENAME}`);
1011
+ }
1012
+ function posixDirname(p) {
1013
+ const i = p.lastIndexOf("/");
1014
+ return i === -1 ? "" : p.slice(0, i);
1015
+ }
1016
+ function normalizeMembers(raw) {
1017
+ if (!Array.isArray(raw)) return void 0;
1018
+ const out = [];
1019
+ for (const m of raw) {
1020
+ if (typeof m === "string" && m.length > 0) {
1021
+ out.push({ ref: m });
1022
+ } else if (m && typeof m === "object" && typeof m.ref === "string") {
1023
+ const obj = m;
1024
+ const member = { ref: obj.ref };
1025
+ if (typeof obj.order === "number") member.order = obj.order;
1026
+ if (obj.recommended === true) member.recommended = true;
1027
+ out.push(member);
1028
+ }
1029
+ }
1030
+ return out.length > 0 ? out : void 0;
1031
+ }
1032
+ function parseDomainMd(domainMdPath, frontmatter) {
1033
+ const slug = typeof frontmatter.slug === "string" ? frontmatter.slug : "";
1034
+ const title = typeof frontmatter.title === "string" && frontmatter.title.length > 0 ? frontmatter.title : slug;
1035
+ const description = typeof frontmatter.description === "string" ? frontmatter.description.trim() : "";
1036
+ const relation = typeof frontmatter.relation === "string" ? frontmatter.relation : "additions";
1037
+ const order = typeof frontmatter.order === "number" ? frontmatter.order : void 0;
1038
+ const members = normalizeMembers(frontmatter.members);
1039
+ return {
1040
+ domainRoot: posixDirname(domainMdPath),
1041
+ slug,
1042
+ title,
1043
+ description,
1044
+ relation,
1045
+ ...order !== void 0 ? { order } : {},
1046
+ ...members ? { members } : {}
1047
+ };
1048
+ }
1049
+ function claims(root, target) {
1050
+ if (root === "") return true;
1051
+ return target === root || target.startsWith(`${root}/`);
1052
+ }
1053
+ function validateDomains(domains) {
1054
+ const errors = [];
1055
+ for (const d of domains) {
1056
+ if (!d.slug || !DOMAIN_SLUG_RE.test(d.slug) || d.slug.length > DOMAIN_SLUG_MAX) {
1057
+ errors.push({ code: "InvalidSlug", root: d.domainRoot, value: d.slug });
1058
+ }
1059
+ if (!DOMAIN_RELATIONS.has(d.relation)) {
1060
+ errors.push({ code: "InvalidRelation", root: d.domainRoot, value: d.relation });
1061
+ }
1062
+ }
1063
+ const bySlug = /* @__PURE__ */ new Map();
1064
+ for (const d of domains) {
1065
+ if (!d.slug) continue;
1066
+ const roots2 = bySlug.get(d.slug) ?? [];
1067
+ roots2.push(d.domainRoot);
1068
+ bySlug.set(d.slug, roots2);
1069
+ }
1070
+ for (const [slug, roots2] of bySlug) {
1071
+ if (roots2.length > 1) errors.push({ code: "DuplicateDomainSlug", slug, roots: roots2.sort() });
1072
+ }
1073
+ const roots = domains.map((d) => d.domainRoot).sort();
1074
+ for (let i = 0; i < roots.length; i++) {
1075
+ for (let j = i + 1; j < roots.length; j++) {
1076
+ const a = roots[i];
1077
+ const b = roots[j];
1078
+ if (a === b) continue;
1079
+ if (claims(a, b)) errors.push({ code: "DomainNesting", outer: a, inner: b });
1080
+ else if (claims(b, a)) errors.push({ code: "DomainNesting", outer: b, inner: a });
1081
+ }
1082
+ }
1083
+ return errors;
1084
+ }
1085
+ function assignDomain(relativePath, domains) {
1086
+ let best;
1087
+ for (const d of domains) {
1088
+ if (!d.slug) continue;
1089
+ if (!claims(d.domainRoot, relativePath)) continue;
1090
+ if (!best || d.domainRoot.length > best.domainRoot.length) best = d;
1091
+ }
1092
+ return best ? best.slug : null;
1093
+ }
1094
+ function buildDomainIndex(assets, domains) {
1095
+ const index = {};
1096
+ const unclaimed = [];
1097
+ const bySlug = /* @__PURE__ */ new Map();
1098
+ for (const d of domains) bySlug.set(d.slug, d);
1099
+ const refsBySlug = /* @__PURE__ */ new Map();
1100
+ for (const asset of assets) {
1101
+ const slug = assignDomain(asset.relativePath, domains);
1102
+ if (slug === null) {
1103
+ unclaimed.push(asset.ref);
1104
+ continue;
1105
+ }
1106
+ const list = refsBySlug.get(slug) ?? [];
1107
+ list.push(asset.ref);
1108
+ refsBySlug.set(slug, list);
1109
+ }
1110
+ for (const [slug, refs] of refsBySlug) {
1111
+ const d = bySlug.get(slug);
1112
+ const memberOrder = /* @__PURE__ */ new Map();
1113
+ const recommended = /* @__PURE__ */ new Set();
1114
+ for (const m of d.members ?? []) {
1115
+ if (m.order !== void 0) memberOrder.set(m.ref, m.order);
1116
+ if (m.recommended) recommended.add(m.ref);
1117
+ }
1118
+ const ordered = refs.map((ref, i) => ({ ref, i, order: memberOrder.get(ref) })).sort((a, b) => {
1119
+ if (a.order !== void 0 && b.order !== void 0) return a.order - b.order || a.i - b.i;
1120
+ if (a.order !== void 0) return -1;
1121
+ if (b.order !== void 0) return 1;
1122
+ return a.i - b.i;
1123
+ }).map((x) => x.ref);
1124
+ index[slug] = {
1125
+ slug,
1126
+ title: d.title,
1127
+ description: d.description,
1128
+ relation: d.relation,
1129
+ ...d.order !== void 0 ? { order: d.order } : {},
1130
+ members: ordered,
1131
+ recommended: ordered.filter((ref) => recommended.has(ref))
1132
+ };
1133
+ }
1134
+ return { index, unclaimed };
1135
+ }
1136
+ function describeDomainError(e) {
1137
+ switch (e.code) {
1138
+ case "DomainNesting":
1139
+ return {
1140
+ path: `${e.inner}/${DOMAIN_MD_FILENAME}`,
1141
+ error: `DomainNesting: domain at '${e.inner}' is nested inside domain at '${e.outer || "<repo root>"}'`
1142
+ };
1143
+ case "DuplicateDomainSlug":
1144
+ return {
1145
+ path: `${e.roots[0] ?? ""}/${DOMAIN_MD_FILENAME}`,
1146
+ error: `DuplicateDomainSlug: slug '${e.slug}' declared by ${e.roots.join(", ")}`
1147
+ };
1148
+ case "InvalidRelation":
1149
+ return {
1150
+ path: `${e.root}/${DOMAIN_MD_FILENAME}`,
1151
+ error: `InvalidRelation: '${e.value}' (expected additions|alternatives|sequence)`
1152
+ };
1153
+ case "InvalidSlug":
1154
+ return {
1155
+ path: `${e.root}/${DOMAIN_MD_FILENAME}`,
1156
+ error: `InvalidSlug: '${e.value}' (expected lowercase a-z0-9 with single hyphens, \u226439 chars)`
1157
+ };
1158
+ }
1159
+ }
1160
+ function applyDomains(assets, domains) {
1161
+ const errors = validateDomains(domains).map(describeDomainError);
1162
+ for (const a of assets) {
1163
+ const slug = assignDomain(a.relativePath, domains);
1164
+ if (slug) a.domainSlug = slug;
1165
+ }
1166
+ const { index } = buildDomainIndex(assets, domains);
1167
+ const ordered = Object.values(index).sort(
1168
+ (a, b) => (a.order ?? Number.POSITIVE_INFINITY) - (b.order ?? Number.POSITIVE_INFINITY) || (a.slug < b.slug ? -1 : a.slug > b.slug ? 1 : 0)
1169
+ );
1170
+ return { domains: ordered, errors };
1171
+ }
1172
+
998
1173
  // discovery/src/discover.ts
999
1174
  function createDefaultRegistry() {
1000
1175
  const registry = new AssetKindRegistry();
@@ -1004,29 +1179,16 @@ function createDefaultRegistry() {
1004
1179
  return registry;
1005
1180
  }
1006
1181
  function discoverAssetsInTree(rootPath, optionsOrSourceConfig) {
1007
- let sourceConfig;
1008
- let registry;
1009
- let sidecarPath;
1010
- let includeDev = false;
1011
- if (optionsOrSourceConfig && ("registry" in optionsOrSourceConfig || "sourceConfig" in optionsOrSourceConfig || "sidecarPath" in optionsOrSourceConfig || "includeDev" in optionsOrSourceConfig)) {
1012
- sourceConfig = optionsOrSourceConfig.sourceConfig;
1013
- registry = optionsOrSourceConfig.registry;
1014
- sidecarPath = optionsOrSourceConfig.sidecarPath;
1015
- includeDev = optionsOrSourceConfig.includeDev ?? false;
1016
- } else {
1017
- sourceConfig = optionsOrSourceConfig;
1018
- }
1019
- if (!registry) {
1020
- registry = createDefaultRegistry();
1021
- }
1022
- if (!sourceConfig && sidecarPath) {
1023
- const merged = loadMergedSourceConfig(rootPath, sidecarPath);
1024
- if (merged.ok) {
1025
- sourceConfig = merged.config;
1026
- }
1027
- }
1182
+ const { sourceConfig, registry, includeDev, sidecarPath, domainFiles } = normalizeDiscoveryArgs(
1183
+ rootPath,
1184
+ optionsOrSourceConfig
1185
+ );
1186
+ const domainMds = domainFiles ? domainFiles.map((f) => parseDomainMd(f.path, parseDomainFrontmatter(f.content))) : collectDomainMds(sidecarPath ?? rootPath);
1028
1187
  if (sourceConfig && isManifestMode(sourceConfig)) {
1029
- return discoverFromManifest(rootPath, sourceConfig, registry, includeDev);
1188
+ return finalizeDomains(
1189
+ discoverFromManifest(rootPath, sourceConfig, registry, includeDev),
1190
+ domainMds
1191
+ );
1030
1192
  }
1031
1193
  const assets = [];
1032
1194
  const errors = [];
@@ -1050,45 +1212,104 @@ function discoverAssetsInTree(rootPath, optionsOrSourceConfig) {
1050
1212
  const dedupKey = `${dir}:${kind}`;
1051
1213
  if (seen.has(dedupKey)) continue;
1052
1214
  seen.add(dedupKey);
1215
+ processDiscoveredEntry(
1216
+ { absPath, relativePath, kind },
1217
+ { registry, sourceConfig },
1218
+ { assets, errors, allEdges }
1219
+ );
1220
+ }
1221
+ const graph = buildRequiresGraph(allEdges);
1222
+ return finalizeDomains({ assets, graph, errors }, domainMds);
1223
+ }
1224
+ function parseDomainFrontmatter(content) {
1225
+ const { data } = parseFrontmatter(content);
1226
+ return data && typeof data === "object" ? data : {};
1227
+ }
1228
+ function collectDomainMds(dir) {
1229
+ const out = [];
1230
+ for (const { absPath, relativePath } of walkTree(dir)) {
1231
+ if (!isDomainMdPath(relativePath)) continue;
1053
1232
  try {
1054
- const manifest = parseManifest2(absPath);
1055
- if (!manifest) {
1056
- errors.push({ path: relativePath, error: "Failed to parse manifest" });
1057
- continue;
1058
- }
1059
- const publisher = resolvePublisher(relativePath, sourceConfig);
1060
- const name = deriveName(relativePath, kind, manifest);
1061
- const version = coerceVersion(manifest.version);
1062
- const ref = `${publisher}/${name}@${version}`;
1063
- const fileFilter = registry.defaultFileFilter(kind, absPath) ?? {
1064
- assetRoot: path.dirname(absPath),
1065
- files: [path.basename(absPath)]
1066
- };
1067
- const sha256 = computeDeterministicHash(fileFilter.assetRoot, fileFilter.files);
1068
- const requires = registry.extractRequires(kind, ref, manifest);
1069
- allEdges.push(...requires);
1070
- assets.push({
1071
- ref,
1072
- kind,
1073
- publisher,
1074
- name,
1075
- version,
1076
- manifest,
1077
- manifestPath: absPath,
1078
- relativePath,
1079
- fileFilter,
1080
- sha256,
1081
- requires
1082
- });
1083
- } catch (err) {
1084
- errors.push({
1085
- path: relativePath,
1086
- error: err instanceof Error ? err.message : String(err)
1087
- });
1233
+ out.push(
1234
+ parseDomainMd(relativePath, parseDomainFrontmatter(fs.readFileSync(absPath, "utf-8")))
1235
+ );
1236
+ } catch {
1088
1237
  }
1089
1238
  }
1090
- const graph = buildRequiresGraph(allEdges);
1091
- return { assets, graph, errors };
1239
+ return out;
1240
+ }
1241
+ function finalizeDomains(result, domainMds) {
1242
+ if (domainMds.length === 0) return result;
1243
+ const { domains, errors } = applyDomains(result.assets, domainMds);
1244
+ result.errors.push(...errors);
1245
+ if (domains.length > 0) result.domains = domains;
1246
+ return result;
1247
+ }
1248
+ function normalizeDiscoveryArgs(rootPath, optionsOrSourceConfig) {
1249
+ let sourceConfig;
1250
+ let registry;
1251
+ let sidecarPath;
1252
+ let includeDev = false;
1253
+ let domainFiles;
1254
+ if (optionsOrSourceConfig && ("registry" in optionsOrSourceConfig || "sourceConfig" in optionsOrSourceConfig || "sidecarPath" in optionsOrSourceConfig || "domainFiles" in optionsOrSourceConfig || "includeDev" in optionsOrSourceConfig)) {
1255
+ sourceConfig = optionsOrSourceConfig.sourceConfig;
1256
+ registry = optionsOrSourceConfig.registry;
1257
+ sidecarPath = optionsOrSourceConfig.sidecarPath;
1258
+ includeDev = optionsOrSourceConfig.includeDev ?? false;
1259
+ domainFiles = optionsOrSourceConfig.domainFiles;
1260
+ } else {
1261
+ sourceConfig = optionsOrSourceConfig;
1262
+ }
1263
+ if (!registry) {
1264
+ registry = createDefaultRegistry();
1265
+ }
1266
+ if (!sourceConfig && sidecarPath) {
1267
+ const merged = loadMergedSourceConfig(rootPath, sidecarPath);
1268
+ if (merged.ok) {
1269
+ sourceConfig = merged.config;
1270
+ }
1271
+ }
1272
+ return { sourceConfig, registry, includeDev, sidecarPath, domainFiles };
1273
+ }
1274
+ function processDiscoveredEntry(entry, ctx, acc) {
1275
+ const { absPath, relativePath, kind } = entry;
1276
+ const { registry, sourceConfig } = ctx;
1277
+ try {
1278
+ const manifest = parseManifest2(absPath);
1279
+ if (!manifest) {
1280
+ acc.errors.push({ path: relativePath, error: "Failed to parse manifest" });
1281
+ return;
1282
+ }
1283
+ const publisher = resolvePublisher(relativePath, sourceConfig);
1284
+ const name = deriveName(relativePath, kind, manifest);
1285
+ const version = coerceVersion(manifest.version);
1286
+ const ref = `${publisher}/${name}@${version}`;
1287
+ const fileFilter = registry.defaultFileFilter(kind, absPath) ?? {
1288
+ assetRoot: path.dirname(absPath),
1289
+ files: [path.basename(absPath)]
1290
+ };
1291
+ const sha256 = computeDeterministicHash(fileFilter.assetRoot, fileFilter.files);
1292
+ const requires = registry.extractRequires(kind, ref, manifest);
1293
+ acc.allEdges.push(...requires);
1294
+ acc.assets.push({
1295
+ ref,
1296
+ kind,
1297
+ publisher,
1298
+ name,
1299
+ version,
1300
+ manifest,
1301
+ manifestPath: absPath,
1302
+ relativePath,
1303
+ fileFilter,
1304
+ sha256,
1305
+ requires
1306
+ });
1307
+ } catch (err) {
1308
+ acc.errors.push({
1309
+ path: relativePath,
1310
+ error: err instanceof Error ? err.message : String(err)
1311
+ });
1312
+ }
1092
1313
  }
1093
1314
  function* walkTree(rootDir) {
1094
1315
  function* walk(dir, relDir) {
@@ -1194,13 +1415,17 @@ async function discoverAssetsInTreeEntries(entries, options) {
1194
1415
  options.fetchBlob
1195
1416
  );
1196
1417
  const resolvedSourceConfig = options.sidecarSourceConfig ? mergeSourceConfigs(baseSourceConfig, options.sidecarSourceConfig) : baseSourceConfig;
1418
+ const domainMds = options.domainFiles ? options.domainFiles.map((f) => parseDomainMd(f.path, parseDomainFrontmatter2(f.content))) : await collectDomainMdsFromTree(blobByPath, options.fetchBlob);
1197
1419
  if (resolvedSourceConfig && isManifestMode(resolvedSourceConfig)) {
1198
- return discoverFromManifestTree(
1199
- resolvedSourceConfig,
1200
- blobByPath,
1201
- options.fetchBlob,
1202
- registry,
1203
- includeDev
1420
+ return finalizeDomains2(
1421
+ await discoverFromManifestTree(
1422
+ resolvedSourceConfig,
1423
+ blobByPath,
1424
+ options.fetchBlob,
1425
+ registry,
1426
+ includeDev
1427
+ ),
1428
+ domainMds
1204
1429
  );
1205
1430
  }
1206
1431
  const devPaths = resolvedSourceConfig?.dev_paths ?? [];
@@ -1210,86 +1435,130 @@ async function discoverAssetsInTreeEntries(entries, options) {
1210
1435
  const allEdges = [];
1211
1436
  const seen = /* @__PURE__ */ new Set();
1212
1437
  for (const relativePath of sortedBlobPaths) {
1213
- if (relativePath.startsWith(".git/") || relativePath.startsWith("node_modules/") || relativePath.startsWith(".skaile/") || relativePath.includes("/.git/") || relativePath.includes("/node_modules/") || relativePath.includes("/.skaile/")) {
1214
- continue;
1215
- }
1216
- if (!includeDev && isExcludedDevPath(relativePath, devPaths)) continue;
1217
- let kind;
1218
- try {
1219
- kind = registry.resolveKind(relativePath);
1220
- } catch (err) {
1221
- errors.push({
1222
- path: relativePath,
1223
- error: err instanceof Error ? err.message : String(err)
1224
- });
1225
- continue;
1226
- }
1438
+ if (shouldSkipBlobPath(relativePath, includeDev, devPaths)) continue;
1439
+ const kind = resolveKindForPath(relativePath, registry, errors);
1227
1440
  if (!kind) continue;
1228
- const dir = posixDirname(relativePath);
1441
+ const dir = posixDirname2(relativePath);
1229
1442
  const dedupKey = `${dir}:${kind}`;
1230
1443
  if (seen.has(dedupKey)) continue;
1231
1444
  seen.add(dedupKey);
1232
- const manifestEntry = blobByPath.get(relativePath);
1233
- if (!manifestEntry) {
1234
- errors.push({ path: relativePath, error: "Manifest blob disappeared from tree index" });
1235
- continue;
1236
- }
1237
- let manifestBytes;
1238
- try {
1239
- manifestBytes = await fetchAsBuffer(options.fetchBlob, manifestEntry.sha);
1240
- } catch (err) {
1241
- errors.push({
1242
- path: relativePath,
1243
- error: `Failed to fetch manifest blob: ${err instanceof Error ? err.message : String(err)}`
1244
- });
1245
- continue;
1246
- }
1247
- if (!manifestBytes) {
1248
- errors.push({ path: relativePath, error: "Failed to fetch manifest blob" });
1249
- continue;
1250
- }
1251
- const manifestText = manifestBytes.toString("utf-8");
1252
- const manifest = parseManifestText(relativePath, manifestText);
1253
- if (!manifest) {
1254
- errors.push({ path: relativePath, error: "Failed to parse manifest" });
1255
- continue;
1256
- }
1257
- const publisher = resolvePublisher2(relativePath, resolvedSourceConfig);
1258
- const name = deriveName2(relativePath, kind, manifest);
1259
- const version = coerceVersion2(manifest.version);
1260
- const ref = `${publisher}/${name}@${version}`;
1261
- const fileFilter = computeFileFilter(kind, relativePath, blobByPath);
1262
- let sha256;
1445
+ const result = await buildAssetFromBlob(
1446
+ relativePath,
1447
+ kind,
1448
+ blobByPath,
1449
+ options.fetchBlob,
1450
+ resolvedSourceConfig,
1451
+ registry,
1452
+ errors
1453
+ );
1454
+ if (!result) continue;
1455
+ allEdges.push(...result.requires);
1456
+ assets.push(result);
1457
+ }
1458
+ const graph = buildRequiresGraph(allEdges);
1459
+ return finalizeDomains2({ assets, graph, errors }, domainMds);
1460
+ }
1461
+ function parseDomainFrontmatter2(content) {
1462
+ const { data } = parseFrontmatter(content);
1463
+ return data && typeof data === "object" ? data : {};
1464
+ }
1465
+ async function collectDomainMdsFromTree(blobByPath, fetchBlob) {
1466
+ const out = [];
1467
+ for (const [p, entry] of blobByPath) {
1468
+ if (!isDomainMdPath(p)) continue;
1469
+ let bytes;
1263
1470
  try {
1264
- sha256 = await computeDeterministicHashFromTree(fileFilter, blobByPath, options.fetchBlob);
1265
- } catch (err) {
1266
- errors.push({
1267
- path: relativePath,
1268
- error: `Failed to compute hash: ${err instanceof Error ? err.message : String(err)}`
1269
- });
1270
- continue;
1471
+ bytes = await fetchAsBuffer(fetchBlob, entry.sha);
1472
+ } catch {
1473
+ bytes = null;
1271
1474
  }
1272
- const requires = registry.extractRequires(kind, ref, manifest);
1273
- allEdges.push(...requires);
1274
- assets.push({
1275
- ref,
1276
- kind,
1277
- publisher,
1278
- name,
1279
- version,
1280
- manifest,
1281
- // The tree-entries variant has no on-disk path — surface the
1282
- // repo-relative path here so downstream consumers can build a
1283
- // Manifest URL (raw.githubusercontent.com link).
1284
- manifestPath: relativePath,
1285
- relativePath,
1286
- fileFilter,
1287
- sha256,
1288
- requires
1475
+ if (bytes) out.push(parseDomainMd(p, parseDomainFrontmatter2(bytes.toString("utf-8"))));
1476
+ }
1477
+ return out;
1478
+ }
1479
+ function finalizeDomains2(result, domainMds) {
1480
+ if (domainMds.length === 0) return result;
1481
+ const { domains, errors } = applyDomains(result.assets, domainMds);
1482
+ result.errors.push(...errors);
1483
+ if (domains.length > 0) result.domains = domains;
1484
+ return result;
1485
+ }
1486
+ function shouldSkipBlobPath(relativePath, includeDev, devPaths) {
1487
+ if (relativePath.startsWith(".git/") || relativePath.startsWith("node_modules/") || relativePath.startsWith(".skaile/") || relativePath.includes("/.git/") || relativePath.includes("/node_modules/") || relativePath.includes("/.skaile/")) {
1488
+ return true;
1489
+ }
1490
+ if (!includeDev && isExcludedDevPath(relativePath, devPaths)) return true;
1491
+ return false;
1492
+ }
1493
+ function resolveKindForPath(relativePath, registry, errors) {
1494
+ try {
1495
+ return registry.resolveKind(relativePath);
1496
+ } catch (err) {
1497
+ errors.push({
1498
+ path: relativePath,
1499
+ error: err instanceof Error ? err.message : String(err)
1289
1500
  });
1501
+ return void 0;
1290
1502
  }
1291
- const graph = buildRequiresGraph(allEdges);
1292
- return { assets, graph, errors };
1503
+ }
1504
+ async function buildAssetFromBlob(relativePath, kind, blobByPath, fetchBlob, resolvedSourceConfig, registry, errors) {
1505
+ const manifestEntry = blobByPath.get(relativePath);
1506
+ if (!manifestEntry) {
1507
+ errors.push({ path: relativePath, error: "Manifest blob disappeared from tree index" });
1508
+ return null;
1509
+ }
1510
+ let manifestBytes;
1511
+ try {
1512
+ manifestBytes = await fetchAsBuffer(fetchBlob, manifestEntry.sha);
1513
+ } catch (err) {
1514
+ errors.push({
1515
+ path: relativePath,
1516
+ error: `Failed to fetch manifest blob: ${err instanceof Error ? err.message : String(err)}`
1517
+ });
1518
+ return null;
1519
+ }
1520
+ if (!manifestBytes) {
1521
+ errors.push({ path: relativePath, error: "Failed to fetch manifest blob" });
1522
+ return null;
1523
+ }
1524
+ const manifestText = manifestBytes.toString("utf-8");
1525
+ const manifest = parseManifestText(relativePath, manifestText);
1526
+ if (!manifest) {
1527
+ errors.push({ path: relativePath, error: "Failed to parse manifest" });
1528
+ return null;
1529
+ }
1530
+ const publisher = resolvePublisher2(relativePath, resolvedSourceConfig);
1531
+ const name = deriveName2(relativePath, kind, manifest);
1532
+ const version = coerceVersion2(manifest.version);
1533
+ const ref = `${publisher}/${name}@${version}`;
1534
+ const fileFilter = computeFileFilter(kind, relativePath, blobByPath);
1535
+ let sha256;
1536
+ try {
1537
+ sha256 = await computeDeterministicHashFromTree(fileFilter, blobByPath, fetchBlob);
1538
+ } catch (err) {
1539
+ errors.push({
1540
+ path: relativePath,
1541
+ error: `Failed to compute hash: ${err instanceof Error ? err.message : String(err)}`
1542
+ });
1543
+ return null;
1544
+ }
1545
+ const requires = registry.extractRequires(kind, ref, manifest);
1546
+ return {
1547
+ ref,
1548
+ kind,
1549
+ publisher,
1550
+ name,
1551
+ version,
1552
+ manifest,
1553
+ // The tree-entries variant has no on-disk path — surface the
1554
+ // repo-relative path here so downstream consumers can build a
1555
+ // Manifest URL (raw.githubusercontent.com link).
1556
+ manifestPath: relativePath,
1557
+ relativePath,
1558
+ fileFilter,
1559
+ sha256,
1560
+ requires
1561
+ };
1293
1562
  }
1294
1563
  function parseManifestText(relativePath, text) {
1295
1564
  try {
@@ -1359,7 +1628,7 @@ function deriveName2(relativePath, kind, manifest) {
1359
1628
  return filename.replace(/\.(md|yaml|json)$/, "");
1360
1629
  }
1361
1630
  function computeFileFilter(kind, manifestPath, blobByPath) {
1362
- const dir = posixDirname(manifestPath);
1631
+ const dir = posixDirname2(manifestPath);
1363
1632
  const manifestName = posixBasename(manifestPath);
1364
1633
  switch (kind) {
1365
1634
  case "skill":
@@ -1443,7 +1712,7 @@ async function computeDeterministicHashFromTree(fileFilter, blobByPath, fetchBlo
1443
1712
  }
1444
1713
  return hash.digest("hex");
1445
1714
  }
1446
- function posixDirname(p) {
1715
+ function posixDirname2(p) {
1447
1716
  const i = p.lastIndexOf("/");
1448
1717
  return i === -1 ? "" : p.slice(0, i);
1449
1718
  }
@@ -1508,6 +1777,72 @@ async function discoverFromManifestTree(sourceConfig, blobByPath, fetchBlob, reg
1508
1777
  }
1509
1778
  async function processManifestEntryTree(entry, blobByPath, fetchBlob, registry) {
1510
1779
  const errors = [];
1780
+ const assetRootRelative = entry.path;
1781
+ const files = resolveEntryFilesTree(entry, blobByPath, errors);
1782
+ if (!files) return { asset: null, errors };
1783
+ const manifestFileRel = pickManifestFileTree(entry.path, files, entry.kind, registry);
1784
+ const manifestFull = joinPosix(entry.path, manifestFileRel);
1785
+ const manifest = await fetchAndParseManifestTree(
1786
+ manifestFull,
1787
+ manifestFileRel,
1788
+ assetRootRelative,
1789
+ blobByPath,
1790
+ fetchBlob,
1791
+ errors
1792
+ );
1793
+ if (!manifest) return { asset: null, errors };
1794
+ if (!registry.getProvider(entry.kind)) {
1795
+ errors.push({
1796
+ path: assetRootRelative,
1797
+ error: `Unknown asset kind "${entry.kind}" \u2014 ghost-installing without provider validation`
1798
+ });
1799
+ }
1800
+ const requiresErrors = validateRequiresSyntax2(entry.requires);
1801
+ if (requiresErrors.length > 0) {
1802
+ errors.push({
1803
+ path: assetRootRelative,
1804
+ error: `ManifestRequiresError: ${requiresErrors.join("; ")}`
1805
+ });
1806
+ return { asset: null, errors };
1807
+ }
1808
+ const computedHash = await computeAndVerifyHashTree(
1809
+ entry,
1810
+ files,
1811
+ assetRootRelative,
1812
+ blobByPath,
1813
+ fetchBlob,
1814
+ errors
1815
+ );
1816
+ if (computedHash === null) return { asset: null, errors };
1817
+ const ref = `${entry.publisher}/${entry.name}@${entry.version}`;
1818
+ const requires = entry.requires.map((to) => ({
1819
+ from: ref,
1820
+ to,
1821
+ field: "assets[].requires"
1822
+ }));
1823
+ const mergedManifest = {
1824
+ ...entry.metadata ?? {},
1825
+ ...manifest
1826
+ };
1827
+ const asset = {
1828
+ ref,
1829
+ kind: entry.kind,
1830
+ publisher: entry.publisher,
1831
+ name: entry.name,
1832
+ version: entry.version,
1833
+ manifest: mergedManifest,
1834
+ manifestPath: manifestFull,
1835
+ relativePath: manifestFull,
1836
+ fileFilter: {
1837
+ assetRoot: entry.path,
1838
+ files: [...files].sort()
1839
+ },
1840
+ sha256: computedHash,
1841
+ requires
1842
+ };
1843
+ return { asset, errors };
1844
+ }
1845
+ function resolveEntryFilesTree(entry, blobByPath, errors) {
1511
1846
  const assetRootRelative = entry.path;
1512
1847
  const files = entry.files ?? expandRootFilesTree(entry.path, blobByPath);
1513
1848
  if (entry.files === void 0 && files.length === 0) {
@@ -1515,7 +1850,7 @@ async function processManifestEntryTree(entry, blobByPath, fetchBlob, registry)
1515
1850
  path: assetRootRelative,
1516
1851
  error: `ManifestFileMissing: root "${entry.root ?? entry.path}" contains no files`
1517
1852
  });
1518
- return { asset: null, errors };
1853
+ return null;
1519
1854
  }
1520
1855
  const missing = [];
1521
1856
  for (const file of files) {
@@ -1527,10 +1862,11 @@ async function processManifestEntryTree(entry, blobByPath, fetchBlob, registry)
1527
1862
  path: assetRootRelative,
1528
1863
  error: `ManifestFileMissing: ${missing.join(", ")}`
1529
1864
  });
1530
- return { asset: null, errors };
1865
+ return null;
1531
1866
  }
1532
- const manifestFileRel = pickManifestFileTree(entry.path, files, entry.kind, registry);
1533
- const manifestFull = joinPosix(entry.path, manifestFileRel);
1867
+ return files;
1868
+ }
1869
+ async function fetchAndParseManifestTree(manifestFull, manifestFileRel, assetRootRelative, blobByPath, fetchBlob, errors) {
1534
1870
  const manifestEntry = blobByPath.get(manifestFull);
1535
1871
  let manifestBytes;
1536
1872
  try {
@@ -1540,14 +1876,14 @@ async function processManifestEntryTree(entry, blobByPath, fetchBlob, registry)
1540
1876
  path: assetRootRelative,
1541
1877
  error: `ManifestSchemaError: failed to fetch manifest blob: ${err instanceof Error ? err.message : String(err)}`
1542
1878
  });
1543
- return { asset: null, errors };
1879
+ return null;
1544
1880
  }
1545
1881
  if (!manifestBytes) {
1546
1882
  errors.push({
1547
1883
  path: assetRootRelative,
1548
1884
  error: `ManifestSchemaError: failed to fetch manifest blob`
1549
1885
  });
1550
- return { asset: null, errors };
1886
+ return null;
1551
1887
  }
1552
1888
  const manifest = parseManifestText(manifestFull, manifestBytes.toString("utf-8"));
1553
1889
  if (!manifest) {
@@ -1555,22 +1891,11 @@ async function processManifestEntryTree(entry, blobByPath, fetchBlob, registry)
1555
1891
  path: assetRootRelative,
1556
1892
  error: `ManifestSchemaError: failed to parse manifest file ${manifestFileRel}`
1557
1893
  });
1558
- return { asset: null, errors };
1559
- }
1560
- if (!registry.getProvider(entry.kind)) {
1561
- errors.push({
1562
- path: assetRootRelative,
1563
- error: `Unknown asset kind "${entry.kind}" \u2014 ghost-installing without provider validation`
1564
- });
1565
- }
1566
- const requiresErrors = validateRequiresSyntax2(entry.requires);
1567
- if (requiresErrors.length > 0) {
1568
- errors.push({
1569
- path: assetRootRelative,
1570
- error: `ManifestRequiresError: ${requiresErrors.join("; ")}`
1571
- });
1572
- return { asset: null, errors };
1894
+ return null;
1573
1895
  }
1896
+ return manifest;
1897
+ }
1898
+ async function computeAndVerifyHashTree(entry, files, assetRootRelative, blobByPath, fetchBlob, errors) {
1574
1899
  let computedHash;
1575
1900
  try {
1576
1901
  computedHash = await computeManifestHashTree(entry.path, files, blobByPath, fetchBlob);
@@ -1579,14 +1904,14 @@ async function processManifestEntryTree(entry, blobByPath, fetchBlob, registry)
1579
1904
  path: assetRootRelative,
1580
1905
  error: `Failed to compute hash: ${err instanceof Error ? err.message : String(err)}`
1581
1906
  });
1582
- return { asset: null, errors };
1907
+ return null;
1583
1908
  }
1584
1909
  if (entry.sha256 && entry.sha256 !== computedHash) {
1585
1910
  errors.push({
1586
1911
  path: assetRootRelative,
1587
1912
  error: `ManifestHashMismatch: declared ${entry.sha256}, computed ${computedHash}`
1588
1913
  });
1589
- return { asset: null, errors };
1914
+ return null;
1590
1915
  }
1591
1916
  if (!entry.sha256) {
1592
1917
  errors.push({
@@ -1594,33 +1919,7 @@ async function processManifestEntryTree(entry, blobByPath, fetchBlob, registry)
1594
1919
  error: `Missing sha256 \u2014 computed ${computedHash}. Re-run \`skaile source build-manifest --write\` to pin it.`
1595
1920
  });
1596
1921
  }
1597
- const ref = `${entry.publisher}/${entry.name}@${entry.version}`;
1598
- const requires = entry.requires.map((to) => ({
1599
- from: ref,
1600
- to,
1601
- field: "assets[].requires"
1602
- }));
1603
- const mergedManifest = {
1604
- ...entry.metadata ?? {},
1605
- ...manifest
1606
- };
1607
- const asset = {
1608
- ref,
1609
- kind: entry.kind,
1610
- publisher: entry.publisher,
1611
- name: entry.name,
1612
- version: entry.version,
1613
- manifest: mergedManifest,
1614
- manifestPath: manifestFull,
1615
- relativePath: manifestFull,
1616
- fileFilter: {
1617
- assetRoot: entry.path,
1618
- files: [...files].sort()
1619
- },
1620
- sha256: computedHash,
1621
- requires
1622
- };
1623
- return { asset, errors };
1922
+ return computedHash;
1624
1923
  }
1625
1924
  var MANIFEST_FILENAMES2 = /* @__PURE__ */ new Set([
1626
1925
  "SKILL.md",
@@ -1687,6 +1986,6 @@ function validateRequiresSyntax2(requires) {
1687
1986
  // discovery/src/index.ts
1688
1987
  var VERSION = "0.0.0";
1689
1988
 
1690
- export { AssetKindRegistry, BUILTIN_PROVIDERS, SEMVER_RE, SourceConfigSchema, VERSION, agentProvider, buildRequiresGraph, computeDeterministicHash, computeDeterministicHashDetailed, connectorProvider, contractProvider, createDefaultRegistry, decodeManifestSourceConfig, detectCycles, discoverAssetsInTree, discoverAssetsInTreeEntries, discoverFromManifest, extractRequires, isExcludedDevPath, isManifestMode, loadMergedSourceConfig, loadSourceConfig, manifestToSourceConfig, mcpServerProvider, mergeSourceConfigs, parseSourceConfig, personaProvider, presetProvider, promptProvider, readManifestSourceConfig, rulesetProvider, skillProvider, validateSourceConfig };
1691
- //# sourceMappingURL=chunk-JIQLLZ65.js.map
1692
- //# sourceMappingURL=chunk-JIQLLZ65.js.map
1989
+ export { AssetKindRegistry, BUILTIN_PROVIDERS, DOMAIN_MD_FILENAME, SEMVER_RE, SourceConfigSchema, VERSION, agentProvider, assignDomain, buildDomainIndex, buildRequiresGraph, computeDeterministicHash, computeDeterministicHashDetailed, connectorProvider, contractProvider, createDefaultRegistry, decodeManifestSourceConfig, detectCycles, discoverAssetsInTree, discoverAssetsInTreeEntries, discoverFromManifest, extractRequires, isDomainMdPath, isExcludedDevPath, isManifestMode, loadMergedSourceConfig, loadSourceConfig, manifestToSourceConfig, mcpServerProvider, mergeSourceConfigs, parseDomainMd, parseSourceConfig, personaProvider, presetProvider, promptProvider, readManifestSourceConfig, rulesetProvider, skillProvider, validateDomains, validateSourceConfig };
1990
+ //# sourceMappingURL=chunk-7MANNJ3U.js.map
1991
+ //# sourceMappingURL=chunk-7MANNJ3U.js.map