@skaile/workspaces 0.21.0 → 0.22.0-beta.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 (333) hide show
  1. package/CHANGELOG.md +176 -0
  2. package/dist/{asset-feeds-CI76R7FI.js → asset-feeds-QXCSAJRN.js} +11 -11
  3. package/dist/{asset-feeds-CI76R7FI.js.map → asset-feeds-QXCSAJRN.js.map} +1 -1
  4. package/dist/asset-manager/catalog-deployer.d.ts +2 -0
  5. package/dist/asset-manager/contrib.d.ts +2 -0
  6. package/dist/asset-manager/fragments.d.ts +2 -0
  7. package/dist/asset-manager/history.d.ts +2 -0
  8. package/dist/asset-manager/index.d.ts +2 -0
  9. package/dist/asset-manager/index.js +9 -9
  10. package/dist/asset-manager/installer.d.ts +2 -0
  11. package/dist/asset-manager/installer.js +8 -8
  12. package/dist/asset-manager/renderers.d.ts +2 -0
  13. package/dist/asset-manager/src/index.d.ts +18 -7
  14. package/dist/asset-manager/src/index.d.ts.map +1 -1
  15. package/dist/asset-manager/src/installer.d.ts +3 -3
  16. package/dist/asset-manager/src/installer.d.ts.map +1 -1
  17. package/dist/base-assets/connectors/deploy.d.ts +2 -0
  18. package/dist/base-assets/connectors/deploy.js +10 -9
  19. package/dist/base-assets/connectors/devserver.d.ts +2 -0
  20. package/dist/base-assets/connectors/devserver.js +10 -9
  21. package/dist/base-assets/connectors/flow/adapter.js +10 -9
  22. package/dist/base-assets/connectors/flow/engine.d.ts +2 -0
  23. package/dist/base-assets/connectors/flow/run-flow.js +11 -10
  24. package/dist/base-assets/connectors/flow.d.ts +2 -0
  25. package/dist/base-assets/connectors/flow.js +10 -9
  26. package/dist/base-assets/connectors/git.d.ts +2 -0
  27. package/dist/base-assets/connectors/git.js +10 -9
  28. package/dist/base-assets/connectors/gmail.d.ts +2 -0
  29. package/dist/base-assets/connectors/gmail.js +10 -9
  30. package/dist/base-assets/connectors/googledrive.d.ts +2 -0
  31. package/dist/base-assets/connectors/googledrive.js +10 -9
  32. package/dist/base-assets/connectors/local.d.ts +2 -0
  33. package/dist/base-assets/connectors/local.js +10 -9
  34. package/dist/base-assets/connectors/mattermost.d.ts +2 -0
  35. package/dist/base-assets/connectors/mattermost.js +10 -9
  36. package/dist/base-assets/connectors/memory.d.ts +2 -0
  37. package/dist/base-assets/connectors/memory.js +10 -9
  38. package/dist/base-assets/connectors/minio.d.ts +2 -0
  39. package/dist/base-assets/connectors/minio.js +10 -9
  40. package/dist/base-assets/connectors/postgres.d.ts +2 -0
  41. package/dist/base-assets/connectors/postgres.js +10 -9
  42. package/dist/base-assets/connectors/s3.d.ts +2 -0
  43. package/dist/base-assets/connectors/s3.js +10 -9
  44. package/dist/base-assets/connectors/sharepoint.d.ts +2 -0
  45. package/dist/base-assets/connectors/sharepoint.js +10 -9
  46. package/dist/base-assets/connectors/sqlite.d.ts +2 -0
  47. package/dist/base-assets/connectors/sqlite.js +10 -9
  48. package/dist/base-assets/connectors/static-server.d.ts +2 -0
  49. package/dist/base-assets/connectors/static-server.js +10 -9
  50. package/dist/base-assets/connectors/tunnel.d.ts +2 -0
  51. package/dist/base-assets/connectors/tunnel.js +10 -9
  52. package/dist/base-assets/connectors/webdav.d.ts +2 -0
  53. package/dist/base-assets/connectors/webdav.js +10 -9
  54. package/dist/base-assets/connectors/xstate-store.d.ts +2 -0
  55. package/dist/base-assets/connectors/xstate-store.js +10 -9
  56. package/dist/base-assets/connectors/xstate.d.ts +2 -0
  57. package/dist/base-assets/connectors/xstate.js +10 -9
  58. package/dist/bridge/drivers/claude-sdk.d.ts +2 -0
  59. package/dist/bridge/drivers/claude-sdk.js +13 -3
  60. package/dist/bridge/drivers/claude-sdk.js.map +1 -1
  61. package/dist/bridge/drivers/codex.d.ts +2 -0
  62. package/dist/bridge/drivers/codex.js +13 -3
  63. package/dist/bridge/drivers/codex.js.map +1 -1
  64. package/dist/bridge/drivers/echo.d.ts +2 -0
  65. package/dist/bridge/drivers/echo.js +13 -4
  66. package/dist/bridge/drivers/echo.js.map +1 -1
  67. package/dist/bridge/drivers/omp.d.ts +2 -0
  68. package/dist/bridge/drivers/omp.js +13 -3
  69. package/dist/bridge/drivers/omp.js.map +1 -1
  70. package/dist/bridge/index.d.ts +2 -0
  71. package/dist/bridge/index.js +3 -2
  72. package/dist/bridge/src/drivers/claude-sdk.d.ts +7 -0
  73. package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
  74. package/dist/bridge/src/drivers/codex.d.ts +7 -0
  75. package/dist/bridge/src/drivers/codex.d.ts.map +1 -1
  76. package/dist/bridge/src/drivers/echo.d.ts +6 -0
  77. package/dist/bridge/src/drivers/echo.d.ts.map +1 -1
  78. package/dist/bridge/src/drivers/omp.d.ts +6 -0
  79. package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
  80. package/dist/bridge/src/registry.d.ts +34 -34
  81. package/dist/bridge/src/registry.d.ts.map +1 -1
  82. package/dist/{chunk-ZWIG55ZX.js → chunk-2XY6732A.js} +3 -3
  83. package/dist/{chunk-ZWIG55ZX.js.map → chunk-2XY6732A.js.map} +1 -1
  84. package/dist/{chunk-NCUTHLRV.js → chunk-3ECS5PFD.js} +4 -4
  85. package/dist/{chunk-NCUTHLRV.js.map → chunk-3ECS5PFD.js.map} +1 -1
  86. package/dist/{chunk-FRPKLIEZ.js → chunk-4AZKT2BU.js} +13 -13
  87. package/dist/chunk-4AZKT2BU.js.map +1 -0
  88. package/dist/chunk-6E6PKKAD.js +161 -0
  89. package/dist/chunk-6E6PKKAD.js.map +1 -0
  90. package/dist/{chunk-4ACWI5YT.js → chunk-6VTG73UY.js} +48 -36
  91. package/dist/chunk-6VTG73UY.js.map +1 -0
  92. package/dist/{chunk-H45ANMIU.js → chunk-APAOQLPT.js} +3 -3
  93. package/dist/{chunk-H45ANMIU.js.map → chunk-APAOQLPT.js.map} +1 -1
  94. package/dist/{chunk-4S4TZDCD.js → chunk-D7K72XEY.js} +3 -3
  95. package/dist/{chunk-4S4TZDCD.js.map → chunk-D7K72XEY.js.map} +1 -1
  96. package/dist/{chunk-2WVQMRIE.js → chunk-DKGDOALM.js} +5 -5
  97. package/dist/{chunk-2WVQMRIE.js.map → chunk-DKGDOALM.js.map} +1 -1
  98. package/dist/{chunk-DFUXWNTS.js → chunk-GFNW72LW.js} +17 -5
  99. package/dist/chunk-GFNW72LW.js.map +1 -0
  100. package/dist/{chunk-37JKX6D7.js → chunk-I3UEM3FX.js} +36 -8
  101. package/dist/chunk-I3UEM3FX.js.map +1 -0
  102. package/dist/{chunk-5QNQLSBW.js → chunk-J3VKAEQP.js} +514 -143
  103. package/dist/chunk-J3VKAEQP.js.map +1 -0
  104. package/dist/{chunk-BSY56QS7.js → chunk-JHF66MCK.js} +49 -3
  105. package/dist/chunk-JHF66MCK.js.map +1 -0
  106. package/dist/{chunk-XAVM2BAJ.js → chunk-LT4DLEYE.js} +114 -619
  107. package/dist/chunk-LT4DLEYE.js.map +1 -0
  108. package/dist/{chunk-S2OVTCAL.js → chunk-M5TE6YI5.js} +3 -3
  109. package/dist/{chunk-S2OVTCAL.js.map → chunk-M5TE6YI5.js.map} +1 -1
  110. package/dist/{chunk-RDH4SSMH.js → chunk-NJLHHZIW.js} +2 -2
  111. package/dist/{chunk-RDH4SSMH.js.map → chunk-NJLHHZIW.js.map} +1 -1
  112. package/dist/{chunk-XGWGLIHZ.js → chunk-PTIHB2TV.js} +5 -5
  113. package/dist/{chunk-XGWGLIHZ.js.map → chunk-PTIHB2TV.js.map} +1 -1
  114. package/dist/{chunk-W5DFC35Z.js → chunk-UMOENHVH.js} +279 -133
  115. package/dist/chunk-UMOENHVH.js.map +1 -0
  116. package/dist/{chunk-G4BR355S.js → chunk-V3QMSM5I.js} +38 -43
  117. package/dist/chunk-V3QMSM5I.js.map +1 -0
  118. package/dist/{chunk-DEQ3OOTU.js → chunk-VCYXVP2S.js} +263 -177
  119. package/dist/chunk-VCYXVP2S.js.map +1 -0
  120. package/dist/{chunk-KFDTS7RX.js → chunk-XIHFJVOD.js} +3 -3
  121. package/dist/{chunk-KFDTS7RX.js.map → chunk-XIHFJVOD.js.map} +1 -1
  122. package/dist/cli/index.d.ts +2 -0
  123. package/dist/cli/index.js +762 -472
  124. package/dist/cli/index.js.map +1 -1
  125. package/dist/cli/src/commands/deploy.d.ts +24 -0
  126. package/dist/cli/src/commands/deploy.d.ts.map +1 -0
  127. package/dist/cli/src/commands/integration.d.ts +19 -0
  128. package/dist/cli/src/commands/integration.d.ts.map +1 -0
  129. package/dist/cli/src/commands/manage.d.ts +1 -1
  130. package/dist/cli/src/commands/plugin-registry-cmd.d.ts +22 -0
  131. package/dist/cli/src/commands/plugin-registry-cmd.d.ts.map +1 -0
  132. package/dist/cli/src/commands/project.d.ts.map +1 -1
  133. package/dist/cli/src/commands/serve.d.ts.map +1 -1
  134. package/dist/cli/src/commands/source.d.ts.map +1 -1
  135. package/dist/cli/src/commands/update.d.ts.map +1 -1
  136. package/dist/cli/src/ensure-sources.d.ts.map +1 -1
  137. package/dist/cli/src/plugin-store/index.d.ts +37 -0
  138. package/dist/cli/src/plugin-store/index.d.ts.map +1 -0
  139. package/dist/cli/src/plugin-store/load.d.ts +35 -0
  140. package/dist/cli/src/plugin-store/load.d.ts.map +1 -0
  141. package/dist/cli/src/plugin-store/paths.d.ts +23 -0
  142. package/dist/cli/src/plugin-store/paths.d.ts.map +1 -0
  143. package/dist/cli/src/plugin-store/reconcile.d.ts +50 -0
  144. package/dist/cli/src/plugin-store/reconcile.d.ts.map +1 -0
  145. package/dist/cli/src/plugin-store/spec.d.ts +25 -0
  146. package/dist/cli/src/plugin-store/spec.d.ts.map +1 -0
  147. package/dist/client/index.d.ts +2 -0
  148. package/dist/connectors/config.d.ts +2 -0
  149. package/dist/connectors/config.js +8 -8
  150. package/dist/connectors/index.d.ts +2 -0
  151. package/dist/connectors/index.js +10 -9
  152. package/dist/connectors/rclone-config.d.ts +2 -0
  153. package/dist/connectors/rclone.d.ts +2 -0
  154. package/dist/connectors/src/connector-manager.d.ts.map +1 -1
  155. package/dist/connectors/src/connector-registry.d.ts +42 -22
  156. package/dist/connectors/src/connector-registry.d.ts.map +1 -1
  157. package/dist/connectors/src/index.d.ts +2 -3
  158. package/dist/connectors/src/index.d.ts.map +1 -1
  159. package/dist/connectors-shared/index.d.ts +2 -0
  160. package/dist/connectors-shared/index.js +8 -0
  161. package/dist/connectors-shared/index.js.map +1 -0
  162. package/dist/connectors-shared/src/index.d.ts +11 -0
  163. package/dist/connectors-shared/src/index.d.ts.map +1 -0
  164. package/dist/connectors-shared/src/schemas.d.ts +10 -0
  165. package/dist/connectors-shared/src/schemas.d.ts.map +1 -0
  166. package/dist/connectors-shared/src/types.d.ts +11 -0
  167. package/dist/connectors-shared/src/types.d.ts.map +1 -0
  168. package/dist/core/discovery.d.ts +2 -0
  169. package/dist/core/driver-targets.d.ts +2 -0
  170. package/dist/core/framework.d.ts +2 -0
  171. package/dist/core/index.d.ts +2 -0
  172. package/dist/core/index.js +7 -7
  173. package/dist/core/logging.d.ts +2 -0
  174. package/dist/core/manifest.d.ts +2 -0
  175. package/dist/core/manifest.js +2 -2
  176. package/dist/core/models.d.ts +2 -0
  177. package/dist/core/models.js +1 -1
  178. package/dist/core/runtime-assets.d.ts +2 -0
  179. package/dist/core/runtime-assets.js +4 -4
  180. package/dist/core/src/index.d.ts +8 -6
  181. package/dist/core/src/index.d.ts.map +1 -1
  182. package/dist/core/src/lock.d.ts +64 -24
  183. package/dist/core/src/lock.d.ts.map +1 -1
  184. package/dist/core/src/models.d.ts +66 -47
  185. package/dist/core/src/models.d.ts.map +1 -1
  186. package/dist/core/src/repo-manager.d.ts +62 -34
  187. package/dist/core/src/repo-manager.d.ts.map +1 -1
  188. package/dist/core/src/runtime-assets.d.ts.map +1 -1
  189. package/dist/core/src/walker.d.ts +52 -0
  190. package/dist/core/src/walker.d.ts.map +1 -0
  191. package/dist/core/src/workspace-config.d.ts +174 -45
  192. package/dist/core/src/workspace-config.d.ts.map +1 -1
  193. package/dist/core/src/workspace-yaml-editor.d.ts +53 -16
  194. package/dist/core/src/workspace-yaml-editor.d.ts.map +1 -1
  195. package/dist/core/store.d.ts +2 -0
  196. package/dist/core/workspace-config.d.ts +2 -0
  197. package/dist/core/workspace-config.js +3 -3
  198. package/dist/deploy/index.d.ts +2 -0
  199. package/dist/deploy/index.js +473 -0
  200. package/dist/deploy/index.js.map +1 -0
  201. package/dist/deploy/src/handle-store.d.ts +22 -0
  202. package/dist/deploy/src/handle-store.d.ts.map +1 -0
  203. package/dist/deploy/src/index.d.ts +21 -0
  204. package/dist/deploy/src/index.d.ts.map +1 -0
  205. package/dist/deploy/src/targets/container-runtime.d.ts +39 -0
  206. package/dist/deploy/src/targets/container-runtime.d.ts.map +1 -0
  207. package/dist/deploy/src/targets/docker.d.ts +19 -0
  208. package/dist/deploy/src/targets/docker.d.ts.map +1 -0
  209. package/dist/deploy/src/targets/local.d.ts +30 -0
  210. package/dist/deploy/src/targets/local.d.ts.map +1 -0
  211. package/dist/deploy/src/targets/podman.d.ts +19 -0
  212. package/dist/deploy/src/targets/podman.d.ts.map +1 -0
  213. package/dist/deploy/src/targets/port.d.ts +10 -0
  214. package/dist/deploy/src/targets/port.d.ts.map +1 -0
  215. package/dist/deploy/src/targets/stream-lines.d.ts +44 -0
  216. package/dist/deploy/src/targets/stream-lines.d.ts.map +1 -0
  217. package/dist/discovery/index.d.ts +2 -0
  218. package/dist/discovery/index.js +3 -3
  219. package/dist/discovery/src/source-config.d.ts +2 -2
  220. package/dist/{ensure-sources-IDVQ77NJ.js → ensure-sources-SL2S4UEX.js} +22 -18
  221. package/dist/ensure-sources-SL2S4UEX.js.map +1 -0
  222. package/dist/{flows-6BNO4GKK.js → flows-DYFTPCPM.js} +4 -4
  223. package/dist/{flows-6BNO4GKK.js.map → flows-DYFTPCPM.js.map} +1 -1
  224. package/dist/library/index.d.ts +2 -0
  225. package/dist/library/index.js +4 -4
  226. package/dist/library/src/remote/remote-catalog-source.d.ts +17 -0
  227. package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
  228. package/dist/open-library-M4DB3D3J.js +13 -0
  229. package/dist/{open-library-IOYWFK7M.js.map → open-library-M4DB3D3J.js.map} +1 -1
  230. package/dist/plugin-registry/index.d.ts +2 -0
  231. package/dist/plugin-registry/index.js +4 -0
  232. package/dist/plugin-registry/index.js.map +1 -0
  233. package/dist/plugin-registry/src/context.d.ts +29 -0
  234. package/dist/plugin-registry/src/context.d.ts.map +1 -0
  235. package/dist/plugin-registry/src/deploy-handle.d.ts +76 -0
  236. package/dist/plugin-registry/src/deploy-handle.d.ts.map +1 -0
  237. package/dist/plugin-registry/src/deploy-helpers.d.ts +69 -0
  238. package/dist/plugin-registry/src/deploy-helpers.d.ts.map +1 -0
  239. package/dist/plugin-registry/src/errors.d.ts +23 -0
  240. package/dist/plugin-registry/src/errors.d.ts.map +1 -0
  241. package/dist/plugin-registry/src/index.d.ts +18 -0
  242. package/dist/plugin-registry/src/index.d.ts.map +1 -0
  243. package/dist/plugin-registry/src/internal.d.ts +13 -0
  244. package/dist/plugin-registry/src/internal.d.ts.map +1 -0
  245. package/dist/plugin-registry/src/registry.d.ts +26 -0
  246. package/dist/plugin-registry/src/registry.d.ts.map +1 -0
  247. package/dist/plugin-registry/src/targets.d.ts +46 -0
  248. package/dist/plugin-registry/src/targets.d.ts.map +1 -0
  249. package/dist/plugin-store-AJ3FGXIC.js +144 -0
  250. package/dist/plugin-store-AJ3FGXIC.js.map +1 -0
  251. package/dist/plugins/index.d.ts +2 -0
  252. package/dist/resolver/index.d.ts +2 -0
  253. package/dist/runner/index.d.ts +2 -0
  254. package/dist/runner/index.js +15 -14
  255. package/dist/runner/prompt-assembly.d.ts +2 -0
  256. package/dist/runner/src/resources.d.ts.map +1 -1
  257. package/dist/runner/src/serve.d.ts.map +1 -1
  258. package/dist/sdk/asset-manager.d.ts +2 -0
  259. package/dist/sdk/asset-manager.js +9 -9
  260. package/dist/sdk/bridge.d.ts +2 -0
  261. package/dist/sdk/bridge.js +3 -2
  262. package/dist/sdk/client.d.ts +2 -0
  263. package/dist/sdk/core.d.ts +2 -0
  264. package/dist/sdk/core.js +7 -7
  265. package/dist/sdk/flow.d.ts +2 -0
  266. package/dist/sdk/index.d.ts +2 -0
  267. package/dist/sdk/index.js +51 -17
  268. package/dist/sdk/index.js.map +1 -1
  269. package/dist/sdk/resolver.d.ts +2 -0
  270. package/dist/sdk/runner.d.ts +2 -0
  271. package/dist/sdk/runner.js +15 -14
  272. package/dist/sdk/session.d.ts +2 -0
  273. package/dist/sdk/src/local-runtime.d.ts +8 -0
  274. package/dist/sdk/src/local-runtime.d.ts.map +1 -1
  275. package/dist/sdk/src/transport.d.ts +7 -1
  276. package/dist/sdk/src/transport.d.ts.map +1 -1
  277. package/dist/sdk/store.d.ts +2 -0
  278. package/dist/sdk/telemetry.d.ts +2 -0
  279. package/dist/sdk/transport/ws/client.d.ts +2 -0
  280. package/dist/sdk/transport/ws/server.d.ts +2 -0
  281. package/dist/sdk/transport/ws.d.ts +2 -0
  282. package/dist/sdk/transport.d.ts +2 -0
  283. package/dist/sdk/types.d.ts +2 -0
  284. package/dist/secrets/index.d.ts +2 -0
  285. package/dist/session/index.d.ts +2 -0
  286. package/dist/{setup-AIOLUTKV.js → setup-GBSQX7JF.js} +12 -11
  287. package/dist/setup-GBSQX7JF.js.map +1 -0
  288. package/dist/store/index.d.ts +2 -0
  289. package/dist/store/react.d.ts +2 -0
  290. package/dist/store/vue.d.ts +2 -0
  291. package/dist/store-client-5WBRUC5U.js +14 -0
  292. package/dist/{store-client-CYEH2GKC.js.map → store-client-5WBRUC5U.js.map} +1 -1
  293. package/dist/telemetry/index.d.ts +2 -0
  294. package/dist/transport/index.d.ts +2 -0
  295. package/dist/transport/ws/client.d.ts +2 -0
  296. package/dist/transport/ws/server.d.ts +2 -0
  297. package/dist/transport/ws.d.ts +2 -0
  298. package/dist/tui/index.d.ts +2 -0
  299. package/dist/tui/index.js +15 -14
  300. package/dist/tui/index.js.map +1 -1
  301. package/dist/types/index.d.ts +2 -0
  302. package/dist/types/manifests.d.ts +2 -0
  303. package/dist/workspace-plugin/adapters/mcp.d.ts +2 -0
  304. package/dist/workspace-plugin/adapters/mcp.js +2 -2
  305. package/dist/workspace-plugin/adapters/omp.d.ts +2 -0
  306. package/dist/workspace-plugin/adapters/omp.js +3 -3
  307. package/dist/workspace-plugin/index.d.ts +2 -0
  308. package/dist/workspace-plugin/index.js +1 -1
  309. package/package.json +23 -24
  310. package/dist/base-assets/connectors/redis/adapter.d.ts +0 -39
  311. package/dist/base-assets/connectors/redis/adapter.d.ts.map +0 -1
  312. package/dist/base-assets/connectors/redis.js +0 -20
  313. package/dist/base-assets/connectors/redis.js.map +0 -1
  314. package/dist/base-assets/connectors/yjs/adapter.d.ts +0 -50
  315. package/dist/base-assets/connectors/yjs/adapter.d.ts.map +0 -1
  316. package/dist/base-assets/connectors/yjs.js +0 -20
  317. package/dist/base-assets/connectors/yjs.js.map +0 -1
  318. package/dist/chunk-37JKX6D7.js.map +0 -1
  319. package/dist/chunk-4ACWI5YT.js.map +0 -1
  320. package/dist/chunk-5QNQLSBW.js.map +0 -1
  321. package/dist/chunk-BSY56QS7.js.map +0 -1
  322. package/dist/chunk-DEQ3OOTU.js.map +0 -1
  323. package/dist/chunk-DFUXWNTS.js.map +0 -1
  324. package/dist/chunk-FRPKLIEZ.js.map +0 -1
  325. package/dist/chunk-G4BR355S.js.map +0 -1
  326. package/dist/chunk-W5DFC35Z.js.map +0 -1
  327. package/dist/chunk-XAVM2BAJ.js.map +0 -1
  328. package/dist/cli/src/commands/plugin.d.ts +0 -14
  329. package/dist/cli/src/commands/plugin.d.ts.map +0 -1
  330. package/dist/ensure-sources-IDVQ77NJ.js.map +0 -1
  331. package/dist/open-library-IOYWFK7M.js +0 -13
  332. package/dist/setup-AIOLUTKV.js.map +0 -1
  333. package/dist/store-client-CYEH2GKC.js +0 -14
@@ -1,17 +1,32 @@
1
- import { removeAsset, deployAll, createScaffold } from './chunk-XGWGLIHZ.js';
2
- import { readLock, buildLockFile, writeLock, verifyLock, extractForPatch, generatePatch, savePatch, applyPatch } from './chunk-W5DFC35Z.js';
1
+ import { removeAsset, deployAll, createScaffold } from './chunk-PTIHB2TV.js';
2
+ import { writeLock, buildLockFile, readLock, verifyLock, extractForPatch, generatePatch, savePatch, applyPatch } from './chunk-UMOENHVH.js';
3
+ import { resolveRuntimeAssets } from './chunk-GFNW72LW.js';
4
+ import { resolveSkWorkspaceConfig, getRepoCommit, ensureRepo, buildProvenanceIndex, resolveAll, scanRepo, checkRepoStatus, resolveAsset, readLinks, getGlobalCacheDir } from './chunk-J3VKAEQP.js';
5
+ import { parseAssetRef } from './chunk-I3UEM3FX.js';
3
6
  import { deployedBase, isDeployed, deployedDir } from './chunk-JKNWJ64A.js';
4
- import { resolveRuntimeAssets } from './chunk-DFUXWNTS.js';
5
- import { resolveSkWorkspaceConfig, ensureRepo, resolveAll, resolveAsset, scanRepo, checkRepoStatus, readLinks, getGlobalCacheDir } from './chunk-5QNQLSBW.js';
6
- import { parseAssetRef } from './chunk-37JKX6D7.js';
7
7
  import { appendHistory, getRecentHistory, clearHistory } from './chunk-KTBKW2FI.js';
8
8
  import { commitChanges } from './chunk-UQ6LFBPZ.js';
9
9
  import { spawnSync } from 'child_process';
10
- import { existsSync, readFileSync, readdirSync, rmSync, lstatSync, unlinkSync, writeFileSync } from 'fs';
10
+ import { existsSync, readdirSync, rmSync, lstatSync, unlinkSync, readFileSync, writeFileSync } from 'fs';
11
11
  import { homedir } from 'os';
12
12
  import { resolve, join, dirname } from 'path';
13
13
  import { parse, stringify } from 'yaml';
14
14
 
15
+ function sourceSlug(url) {
16
+ return url.replace(/\.git$/, "").split(/[/:]/).pop() ?? "source";
17
+ }
18
+ function parseCanonicalLockKey(key) {
19
+ const slash = key.indexOf("/");
20
+ const colon = key.indexOf(":", slash + 1);
21
+ const at = key.lastIndexOf("@");
22
+ if (slash === -1 || colon === -1 || at === -1 || at < colon) return {};
23
+ return {
24
+ publisher: key.slice(0, slash),
25
+ kind: key.slice(slash + 1, colon),
26
+ name: key.slice(colon + 1, at),
27
+ version: key.slice(at + 1)
28
+ };
29
+ }
15
30
  var AssetManager = class {
16
31
  /** Resolved absolute path to the workspace root. */
17
32
  projectDir;
@@ -37,44 +52,85 @@ var AssetManager = class {
37
52
  return { driverTarget: this.driverTarget, global: this.global, cwd: this.projectDir };
38
53
  }
39
54
  loadConfig() {
40
- const configPath = join(this.projectDir, "skaile.yaml");
41
- let raw = {};
42
- if (existsSync(configPath)) {
43
- try {
44
- raw = parse(readFileSync(configPath, "utf8")) ?? {};
45
- } catch {
46
- }
47
- }
48
55
  const config = resolveSkWorkspaceConfig(this.projectDir);
56
+ const sources = config.sources ?? [];
57
+ const stores = config.stores ?? [];
58
+ const dependencies = config.dependencies ?? [];
59
+ const overrides = config.overrides ?? [];
60
+ const patches = config.patches ?? {};
61
+ const skaileHome = process.env.SKAILE_HOME ?? join(homedir(), ".skaile");
62
+ const sourcesDir = join(skaileHome, "sources");
49
63
  const repositories = {};
50
- let dependencies = raw.dependencies ?? [];
51
- const patches = raw.patches ?? {};
52
- const aiResources = raw.ai_resources ?? config.ai_resources;
53
- if (aiResources?.length) {
54
- for (const entry of aiResources) {
55
- if (repositories[entry.name]) continue;
56
- const isUrl = /^(https?:|git@|git:)/.test(entry.path);
57
- repositories[entry.name] = isUrl ? { url: entry.path, branch: entry.branch } : { path: entry.path, branch: entry.branch };
58
- if (entry.dependencies) {
59
- dependencies = [...dependencies, ...entry.dependencies];
60
- }
64
+ for (const s of sources) {
65
+ const slug = sourceSlug(s.url);
66
+ if (repositories[slug]) continue;
67
+ repositories[slug] = { path: join(sourcesDir, slug), url: s.url, branch: s.pin };
68
+ }
69
+ return { repositories, sources, stores, dependencies, overrides, patches, config };
70
+ }
71
+ /** Build provenance-index clones from the resolved source declarations. */
72
+ buildClones(repositories) {
73
+ const clones = [];
74
+ for (const [slug, decl] of Object.entries(repositories)) {
75
+ const localPath = this.resolveRepoDir(decl, slug);
76
+ if (!localPath || !existsSync(localPath)) continue;
77
+ const commit = getRepoCommit(localPath) ?? "0".repeat(40);
78
+ clones.push({
79
+ localPath,
80
+ sourceUrl: decl.url ?? localPath,
81
+ commit,
82
+ tag: decl.branch
83
+ });
84
+ }
85
+ return clones;
86
+ }
87
+ /**
88
+ * Bridge a resolved {@link ProvenanceCandidate} to a {@link CatalogEntry} for
89
+ * the deploy pipeline. `source` is the absolute path to the asset's primary
90
+ * manifest (or its directory) inside the clone; `publisher` is set to the
91
+ * clone slug so `deployAll`'s repositories lookup resolves local-vs-remote.
92
+ */
93
+ candidateToCatalogEntry(c, repositories) {
94
+ let slug;
95
+ let cloneDir;
96
+ for (const [s, decl] of Object.entries(repositories)) {
97
+ if (decl.url === c.sourceUrl) {
98
+ slug = s;
99
+ cloneDir = this.resolveRepoDir(decl, s) ?? void 0;
100
+ break;
61
101
  }
62
102
  }
63
- const sourcesRaw = raw.sources ?? config.sources ?? [];
64
- if (sourcesRaw.length > 0) {
65
- const skaileHome = process.env.SKAILE_HOME ?? join(homedir(), ".skaile");
66
- const sourcesDir = join(skaileHome, "sources");
67
- for (const entry of sourcesRaw) {
68
- if (!entry?.name || !entry.url) continue;
69
- if (repositories[entry.name]) continue;
70
- repositories[entry.name] = {
71
- path: join(sourcesDir, entry.name),
72
- url: entry.url,
73
- branch: entry.branch
74
- };
103
+ if (!cloneDir) {
104
+ const first = Object.entries(repositories)[0];
105
+ if (first) {
106
+ slug = first[0];
107
+ cloneDir = this.resolveRepoDir(first[1], first[0]) ?? void 0;
75
108
  }
76
109
  }
77
- return { repositories, dependencies, patches, config };
110
+ if (!cloneDir || !slug) return null;
111
+ const MD_BY_KIND = {
112
+ skill: "SKILL.md",
113
+ agent: "AGENT.md",
114
+ bundle: "BUNDLE.md",
115
+ "mcp-server": "MCP.md",
116
+ connector: "CONNECTOR.md",
117
+ prompt: "PROMPT.md",
118
+ contract: "CONTRACT.md"
119
+ };
120
+ const mdName = MD_BY_KIND[c.kind];
121
+ const mdRel = c.files.find((f) => mdName ? f.path.endsWith(mdName) : false)?.path;
122
+ const source = mdRel ? join(cloneDir, mdRel) : cloneDir;
123
+ return {
124
+ name: c.name,
125
+ kind: c.kind,
126
+ description: "",
127
+ source,
128
+ publisher: slug,
129
+ version: c.version,
130
+ requires: [],
131
+ dependencies: [],
132
+ metadata: c.metadata
133
+ };
78
134
  }
79
135
  // ── Install / resolve ──────────────────────────────────────────────────
80
136
  /**
@@ -89,50 +145,46 @@ var AssetManager = class {
89
145
  * @returns {@link InstallResult} summarising what was deployed, what was missing, and any collisions.
90
146
  */
91
147
  async install(opts) {
92
- const { repositories, dependencies, patches } = this.loadConfig();
148
+ const { repositories, stores, dependencies, overrides, patches } = this.loadConfig();
93
149
  if (opts?.locked) {
94
150
  return this.installLocked(repositories, patches);
95
151
  }
96
152
  for (const [name, decl] of Object.entries(repositories)) {
97
153
  try {
98
154
  ensureRepo(decl, name, this.reposDir, { projectDir: this.projectDir });
99
- } catch (err) {
100
- return {
101
- deployed: [],
102
- removed: [],
103
- missing: [`repo:${name}`],
104
- lockWritten: false,
105
- collisions: []
106
- };
155
+ } catch {
156
+ return { deployed: [], removed: [], missing: [`source:${name}`], lockWritten: false };
107
157
  }
108
158
  }
109
- const { resolved, missing, resolvedBy, collisions } = resolveAll(
110
- dependencies,
111
- repositories,
112
- this.reposDir,
113
- { projectDir: this.projectDir }
159
+ const provenanceIndex = buildProvenanceIndex(this.buildClones(repositories), {
160
+ projectDir: this.projectDir
161
+ });
162
+ const { resolved, missing, overridesApplied } = await resolveAll(dependencies, {
163
+ provenanceIndex,
164
+ overrides,
165
+ stores,
166
+ storeFetcher: this.buildStoreFetcher(stores),
167
+ projectDir: this.projectDir
168
+ });
169
+ const oldLock = this.tryReadLock();
170
+ const resolvedRefs = new Set(
171
+ resolved.map((c) => `${c.publisher}/${c.kind}:${c.name}@${c.version}`)
114
172
  );
115
- const oldLock = readLock(this.lockPath);
116
- const resolvedRefs = new Set(resolved.map((e) => `${e.kind}:${e.name}`));
117
173
  const removed = [];
118
174
  if (oldLock) {
119
175
  for (const ref of Object.keys(oldLock.assets)) {
120
176
  if (!resolvedRefs.has(ref)) {
121
- const [kind, name] = ref.split(":");
122
- removeAsset(kind, name, this.deployOpts);
123
- removed.push(ref);
177
+ const { kind, name } = parseCanonicalLockKey(ref);
178
+ if (kind && name) {
179
+ removeAsset(kind, name, this.deployOpts);
180
+ removed.push(ref);
181
+ }
124
182
  }
125
183
  }
126
184
  }
127
- const deployed = deployAll(resolved, repositories, patches, this.deployOpts);
128
- const lockData = buildLockFile(
129
- repositories,
130
- resolved,
131
- resolvedBy,
132
- this.reposDir,
133
- this.projectDir
134
- );
135
- writeLock(this.lockPath, lockData);
185
+ const entries = resolved.map((c) => this.candidateToCatalogEntry(c, repositories)).filter((e) => e !== null);
186
+ const deployed = deployAll(entries, repositories, patches, this.deployOpts);
187
+ writeLock(this.lockPath, buildLockFile(resolved, overridesApplied));
136
188
  for (const ref of deployed) {
137
189
  appendHistory(this.projectDir, {
138
190
  ref,
@@ -150,14 +202,41 @@ var AssetManager = class {
150
202
  });
151
203
  }
152
204
  const { npmInstalled, npmFailed } = await this.installRuntimeAssetDeps();
205
+ return { deployed, removed, missing, lockWritten: true, npmInstalled, npmFailed };
206
+ }
207
+ /** Read the lock, returning null on a legacy v1 lock instead of throwing. */
208
+ tryReadLock() {
209
+ try {
210
+ return readLock(this.lockPath);
211
+ } catch {
212
+ return null;
213
+ }
214
+ }
215
+ /** Build a store fetcher from the configured stores, or undefined when none. */
216
+ buildStoreFetcher(stores) {
217
+ if (stores.length === 0) return void 0;
153
218
  return {
154
- deployed,
155
- removed,
156
- missing,
157
- lockWritten: true,
158
- collisions,
159
- npmInstalled,
160
- npmFailed
219
+ getInstallManifest: async (storeUrl, ref) => {
220
+ const { RemoteCatalogSource, CatalogHttpError } = await import('./library/index.js');
221
+ const src = new RemoteCatalogSource({ baseUrl: storeUrl });
222
+ try {
223
+ const m = await src.getInstallManifest(ref);
224
+ return {
225
+ sourceUrl: m.source.url,
226
+ commit: m.source.commitSha,
227
+ sha256: m.sha256,
228
+ files: m.files
229
+ };
230
+ } catch (err) {
231
+ if (err instanceof CatalogHttpError && err.status === 404) return null;
232
+ throw err;
233
+ }
234
+ },
235
+ getCanonicalDigest: async (storeUrl, ref) => {
236
+ const { RemoteCatalogSource } = await import('./library/index.js');
237
+ const src = new RemoteCatalogSource({ baseUrl: storeUrl });
238
+ return src.getCanonicalDigest(ref);
239
+ }
161
240
  };
162
241
  }
163
242
  /**
@@ -192,19 +271,22 @@ var AssetManager = class {
192
271
  return { npmInstalled, npmFailed };
193
272
  }
194
273
  installLocked(repositories, patches) {
195
- const lock = readLock(this.lockPath);
274
+ const lock = this.tryReadLock();
196
275
  if (!lock) {
197
276
  throw new Error("No lock file found. Run `skaile install` first.");
198
277
  }
199
- for (const [name, lockRepo] of Object.entries(lock.repositories)) {
200
- const decl = repositories[name] ?? {
201
- url: lockRepo.url,
202
- path: lockRepo.path,
203
- branch: lockRepo.branch
204
- };
205
- ensureRepo(decl, name, this.reposDir, { projectDir: this.projectDir });
278
+ const declBySlug = new Map(Object.entries(repositories));
279
+ for (const src of lock.sources) {
280
+ const slug = sourceSlug(src.url);
281
+ const decl = declBySlug.get(slug) ?? { url: src.url };
282
+ ensureRepo(decl, slug, this.reposDir, { projectDir: this.projectDir, pin: src.commit });
206
283
  }
207
- const verification = verifyLock(lock, this.reposDir);
284
+ const resolveCloneDir = (sourceUrl) => {
285
+ const slug = sourceSlug(sourceUrl);
286
+ const decl = declBySlug.get(slug) ?? { url: sourceUrl };
287
+ return this.resolveRepoDir(decl, slug);
288
+ };
289
+ const verification = verifyLock(lock, resolveCloneDir);
208
290
  if (!verification.ok) {
209
291
  const issues = [
210
292
  ...verification.drifted.map((r) => `drifted: ${r}`),
@@ -215,27 +297,25 @@ var AssetManager = class {
215
297
  }
216
298
  const resolved = [];
217
299
  for (const [ref, entry] of Object.entries(lock.assets)) {
218
- const [kind, name] = ref.split(":");
219
- const repoDecl = repositories[entry.repository];
220
- let repoDir;
221
- if (repoDecl?.path) {
222
- repoDir = resolve(this.projectDir, repoDecl.path);
223
- } else {
224
- repoDir = join(this.reposDir, entry.repository);
225
- }
300
+ const { publisher, kind, name } = parseCanonicalLockKey(ref);
301
+ if (!publisher || !kind || !name) continue;
302
+ const slug = sourceSlug(entry.source.url);
303
+ const cloneDir = resolveCloneDir(entry.source.url) ?? join(this.reposDir, slug);
304
+ const mdRel = entry.files.find((f) => /\.(md|yaml)$/i.test(f.path))?.path ?? entry.files[0]?.path ?? "";
226
305
  resolved.push({
227
306
  name,
228
307
  kind,
229
308
  description: "",
230
- source: join(repoDir, entry.source),
231
- repository: entry.repository,
232
- version: entry.version,
309
+ source: mdRel ? join(cloneDir, mdRel) : cloneDir,
310
+ publisher: slug,
311
+ version: entry.source.commit,
233
312
  requires: [],
234
313
  dependencies: []
235
314
  });
315
+ if (!repositories[slug]) repositories[slug] = { url: entry.source.url, path: cloneDir };
236
316
  }
237
317
  const deployed = deployAll(resolved, repositories, patches, this.deployOpts);
238
- return { deployed, removed: [], missing: [], lockWritten: false, collisions: [] };
318
+ return { deployed, removed: [], missing: [], lockWritten: false };
239
319
  }
240
320
  /**
241
321
  * Add a single asset (and its transitive dependencies) to the workspace.
@@ -247,21 +327,31 @@ var AssetManager = class {
247
327
  * @returns Array of asset refs that were deployed in this call.
248
328
  * @throws When the asset cannot be found in any configured repository.
249
329
  */
250
- add(ref) {
251
- const { repositories, patches } = this.loadConfig();
252
- const parsed = parseAssetRef(ref);
330
+ async add(ref) {
331
+ const { repositories, stores, overrides, patches } = this.loadConfig();
332
+ parseAssetRef(ref);
253
333
  for (const [name, decl] of Object.entries(repositories)) {
254
334
  try {
255
335
  ensureRepo(decl, name, this.reposDir, { projectDir: this.projectDir });
256
336
  } catch {
257
337
  }
258
338
  }
259
- const entry = resolveAsset(parsed, repositories, this.reposDir);
260
- if (!entry) throw new Error(`Asset not found: ${ref}`);
261
- const { resolved, missing } = resolveAll([ref], repositories, this.reposDir);
262
- const deployed = deployAll(resolved, repositories, patches, this.deployOpts);
263
- const depRef = `${parsed.kind}:${parsed.name}`;
264
- this.addDependencyToConfig(depRef);
339
+ const provenanceIndex = buildProvenanceIndex(this.buildClones(repositories), {
340
+ projectDir: this.projectDir
341
+ });
342
+ const { resolved, missing } = await resolveAll([ref], {
343
+ provenanceIndex,
344
+ overrides,
345
+ stores,
346
+ storeFetcher: this.buildStoreFetcher(stores),
347
+ projectDir: this.projectDir
348
+ });
349
+ if (resolved.length === 0) {
350
+ throw new Error(`Asset not found: ${ref}${missing.length ? ` (missing: ${missing.join(", ")})` : ""}`);
351
+ }
352
+ const entries = resolved.map((c) => this.candidateToCatalogEntry(c, repositories)).filter((e) => e !== null);
353
+ const deployed = deployAll(entries, repositories, patches, this.deployOpts);
354
+ this.addDependencyToConfig(ref);
265
355
  for (const d of deployed) {
266
356
  appendHistory(this.projectDir, {
267
357
  ref: d,
@@ -332,7 +422,7 @@ var AssetManager = class {
332
422
  for (const [name, decl] of Object.entries(repositories)) {
333
423
  const repoDir = this.resolveRepoDir(decl, name);
334
424
  if (!repoDir) continue;
335
- if (parsed.repository && parsed.repository !== name) continue;
425
+ if (parsed.publisher && parsed.publisher !== name) continue;
336
426
  const entries = scanRepo(repoDir, name);
337
427
  const match = entries.find((e) => e.kind === parsed.kind && e.name === parsed.name);
338
428
  if (match) return match;
@@ -393,7 +483,7 @@ var AssetManager = class {
393
483
  */
394
484
  overview() {
395
485
  const { repositories } = this.loadConfig();
396
- const lock = readLock(this.lockPath);
486
+ const lock = this.tryReadLock();
397
487
  const deployed = this.listDeployed();
398
488
  const repoStatuses = /* @__PURE__ */ new Map();
399
489
  for (const [name, decl] of Object.entries(repositories)) {
@@ -406,23 +496,34 @@ var AssetManager = class {
406
496
  error: status.error
407
497
  });
408
498
  }
499
+ const lockByKindName = /* @__PURE__ */ new Map();
500
+ for (const [key] of Object.entries(lock?.assets ?? {})) {
501
+ const parsed = parseCanonicalLockKey(key);
502
+ if (parsed.kind && parsed.name && parsed.publisher && parsed.version) {
503
+ lockByKindName.set(`${parsed.kind}:${parsed.name}`, {
504
+ publisher: parsed.publisher,
505
+ version: parsed.version,
506
+ url: lock.assets[key].source.url
507
+ });
508
+ }
509
+ }
409
510
  const entries = [];
410
511
  for (const d of deployed) {
411
- const lockKey = `${d.kind}:${d.name}`;
412
- const lockEntry = lock?.assets[lockKey];
413
- const domain = lockEntry?.domain ?? "unknown";
414
- const repository = lockEntry?.repository ?? "";
512
+ const lockEntry = lockByKindName.get(`${d.kind}:${d.name}`);
513
+ const publisher = lockEntry?.publisher ?? "";
415
514
  const version = lockEntry?.version ?? "";
515
+ const slug = lockEntry ? sourceSlug(lockEntry.url) : "";
416
516
  let syncStatus = "unknown";
417
- if (repository) {
418
- const repoStatus = repoStatuses.get(repository);
517
+ if (slug) {
518
+ const repoStatus = repoStatuses.get(slug);
419
519
  if (!repoStatus) syncStatus = "unknown";
420
520
  else if (repoStatus.kind === "local") syncStatus = "local";
421
521
  else if (repoStatus.error) syncStatus = "error";
422
522
  else if (repoStatus.upToDate) syncStatus = "synced";
423
523
  else syncStatus = "outdated";
424
524
  }
425
- entries.push({ kind: d.kind, name: d.name, domain, repository, version, syncStatus });
525
+ const domain = publisher || "unknown";
526
+ entries.push({ kind: d.kind, name: d.name, domain, publisher, version, syncStatus });
426
527
  }
427
528
  const byDomain = /* @__PURE__ */ new Map();
428
529
  for (const e of entries) {
@@ -452,22 +553,11 @@ var AssetManager = class {
452
553
  * Returns a single node with `ref === "(no lock file)"` when no lock exists.
453
554
  */
454
555
  tree() {
455
- const lock = readLock(this.lockPath);
556
+ const lock = this.tryReadLock();
456
557
  if (!lock) return { ref: "(no lock file)", children: [] };
457
- const byParent = /* @__PURE__ */ new Map();
458
- for (const [ref, entry] of Object.entries(lock.assets)) {
459
- const parent = entry.resolved_by;
460
- if (!byParent.has(parent)) byParent.set(parent, []);
461
- byParent.get(parent).push(ref);
462
- }
463
- function buildNode(ref) {
464
- const children = (byParent.get(ref) ?? []).map(buildNode);
465
- return { ref, children };
466
- }
467
- const directChildren = byParent.get("direct") ?? [];
468
558
  return {
469
559
  ref: "project",
470
- children: directChildren.map(buildNode)
560
+ children: Object.keys(lock.assets).map((ref) => ({ ref, children: [] }))
471
561
  };
472
562
  }
473
563
  /**
@@ -478,22 +568,10 @@ var AssetManager = class {
478
568
  * the asset is not in the lock file.
479
569
  */
480
570
  why(ref) {
481
- const lock = readLock(this.lockPath);
571
+ const lock = this.tryReadLock();
482
572
  if (!lock) return [];
483
573
  if (!lock.assets[ref]) return [];
484
- const chain = [];
485
- let current = ref;
486
- const seen = /* @__PURE__ */ new Set();
487
- while (current && current !== "direct") {
488
- if (seen.has(current)) break;
489
- seen.add(current);
490
- chain.push(current);
491
- const entry = lock.assets[current];
492
- if (!entry) break;
493
- current = entry.resolved_by;
494
- }
495
- if (current === "direct") chain.push("direct (skaile.yaml)");
496
- return chain;
574
+ return [ref, "direct (skaile.yaml)"];
497
575
  }
498
576
  /**
499
577
  * List installed assets whose source repository is behind the remote.
@@ -505,27 +583,26 @@ var AssetManager = class {
505
583
  */
506
584
  outdated() {
507
585
  const { repositories } = this.loadConfig();
508
- const lock = readLock(this.lockPath);
586
+ const lock = this.tryReadLock();
509
587
  if (!lock) return [];
510
588
  const result = [];
511
- for (const [name, lockRepo] of Object.entries(lock.repositories)) {
512
- if (!lockRepo.commit || lockRepo.path) continue;
513
- const decl = repositories[name];
514
- if (!decl) continue;
515
- const status = checkRepoStatus(decl, name, this.reposDir);
516
- if (status.behind > 0) {
517
- for (const [ref, entry] of Object.entries(lock.assets)) {
518
- if (entry.repository === name) {
519
- const [kind, assetName] = ref.split(":");
520
- result.push({
521
- kind,
522
- name: assetName,
523
- repository: name,
524
- currentVersion: entry.version,
525
- behind: status.behind
526
- });
527
- }
528
- }
589
+ for (const src of lock.sources) {
590
+ const slug = sourceSlug(src.url);
591
+ const decl = repositories[slug];
592
+ if (!decl || decl.path) continue;
593
+ const status = checkRepoStatus(decl, slug, this.reposDir);
594
+ if (status.behind <= 0) continue;
595
+ for (const [ref, entry] of Object.entries(lock.assets)) {
596
+ if (entry.source.url !== src.url) continue;
597
+ const { publisher, kind, name, version } = parseCanonicalLockKey(ref);
598
+ if (!kind || !name) continue;
599
+ result.push({
600
+ kind,
601
+ name,
602
+ publisher: publisher ?? slug,
603
+ currentVersion: version ?? "",
604
+ behind: status.behind
605
+ });
529
606
  }
530
607
  }
531
608
  return result;
@@ -561,22 +638,25 @@ var AssetManager = class {
561
638
  *
562
639
  * @returns The written {@link LockFile} data.
563
640
  */
564
- lock() {
565
- const { repositories, dependencies } = this.loadConfig();
641
+ async lock() {
642
+ const { repositories, stores, dependencies, overrides } = this.loadConfig();
566
643
  for (const [name, decl] of Object.entries(repositories)) {
567
644
  try {
568
645
  ensureRepo(decl, name, this.reposDir, { projectDir: this.projectDir });
569
646
  } catch {
570
647
  }
571
648
  }
572
- const { resolved, resolvedBy } = resolveAll(dependencies, repositories, this.reposDir);
573
- const lockData = buildLockFile(
574
- repositories,
575
- resolved,
576
- resolvedBy,
577
- this.reposDir,
578
- this.projectDir
579
- );
649
+ const provenanceIndex = buildProvenanceIndex(this.buildClones(repositories), {
650
+ projectDir: this.projectDir
651
+ });
652
+ const { resolved, overridesApplied } = await resolveAll(dependencies, {
653
+ provenanceIndex,
654
+ overrides,
655
+ stores,
656
+ storeFetcher: this.buildStoreFetcher(stores),
657
+ projectDir: this.projectDir
658
+ });
659
+ const lockData = buildLockFile(resolved, overridesApplied);
580
660
  writeLock(this.lockPath, lockData);
581
661
  return lockData;
582
662
  }
@@ -633,11 +713,11 @@ var AssetManager = class {
633
713
  patchSubmit(ref) {
634
714
  const parsed = parseAssetRef(ref);
635
715
  const entry = this.info(ref);
636
- if (!entry?.repository) throw new Error(`Asset not found or no repository: ${ref}`);
716
+ if (!entry?.publisher) throw new Error(`Asset not found or no publisher: ${ref}`);
637
717
  const { repositories } = this.loadConfig();
638
- const decl = repositories[entry.repository];
639
- if (!decl?.url) throw new Error("Can only submit patches for remote repositories.");
640
- const repoDir = join(this.reposDir, entry.repository);
718
+ const decl = repositories[entry.publisher];
719
+ if (!decl?.url) throw new Error("Can only submit patches for remote sources.");
720
+ const repoDir = join(this.reposDir, entry.publisher);
641
721
  const branchName = `patch/${parsed.kind}-${parsed.name}`;
642
722
  const patchFile = join(this.patchDir, `${parsed.kind}-${parsed.name}.patch`);
643
723
  if (!existsSync(patchFile)) throw new Error("No patch file. Run `skaile patch-commit` first.");
@@ -749,12 +829,13 @@ var AssetManager = class {
749
829
  * and `unmanaged` (deployed assets not in the lock file).
750
830
  */
751
831
  clean(opts) {
752
- const lock = readLock(this.lockPath);
832
+ const lock = this.tryReadLock();
753
833
  const removed = [];
754
834
  const skipped = [];
755
835
  if (lock) {
756
836
  for (const ref of Object.keys(lock.assets)) {
757
- const [kind, name] = ref.split(":");
837
+ const { kind, name } = parseCanonicalLockKey(ref);
838
+ if (!kind || !name) continue;
758
839
  const dest = deployedDir(
759
840
  kind,
760
841
  name,
@@ -772,7 +853,12 @@ var AssetManager = class {
772
853
  }
773
854
  }
774
855
  }
775
- const lockRefs = lock ? new Set(Object.keys(lock.assets)) : /* @__PURE__ */ new Set();
856
+ const lockRefs = lock ? new Set(
857
+ Object.keys(lock.assets).map((r) => {
858
+ const p = parseCanonicalLockKey(r);
859
+ return p.kind && p.name ? `${p.kind}:${p.name}` : r;
860
+ })
861
+ ) : /* @__PURE__ */ new Set();
776
862
  const unmanaged = [];
777
863
  const allDeployed = this.listDeployed();
778
864
  for (const d of allDeployed) {
@@ -846,5 +932,5 @@ var AssetManager = class {
846
932
  };
847
933
 
848
934
  export { AssetManager };
849
- //# sourceMappingURL=chunk-DEQ3OOTU.js.map
850
- //# sourceMappingURL=chunk-DEQ3OOTU.js.map
935
+ //# sourceMappingURL=chunk-VCYXVP2S.js.map
936
+ //# sourceMappingURL=chunk-VCYXVP2S.js.map