@skaile/workspaces 0.22.0-beta.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 (260) hide show
  1. package/CHANGELOG.md +136 -0
  2. package/dist/{asset-feeds-PJDJ3QYI.js → asset-feeds-QXCSAJRN.js} +9 -9
  3. package/dist/{asset-feeds-PJDJ3QYI.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 +7 -7
  10. package/dist/asset-manager/installer.d.ts +2 -0
  11. package/dist/asset-manager/installer.js +6 -6
  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 +8 -8
  19. package/dist/base-assets/connectors/devserver.d.ts +2 -0
  20. package/dist/base-assets/connectors/devserver.js +8 -8
  21. package/dist/base-assets/connectors/flow/adapter.js +8 -8
  22. package/dist/base-assets/connectors/flow/engine.d.ts +2 -0
  23. package/dist/base-assets/connectors/flow/run-flow.js +9 -9
  24. package/dist/base-assets/connectors/flow.d.ts +2 -0
  25. package/dist/base-assets/connectors/flow.js +8 -8
  26. package/dist/base-assets/connectors/git.d.ts +2 -0
  27. package/dist/base-assets/connectors/git.js +8 -8
  28. package/dist/base-assets/connectors/gmail.d.ts +2 -0
  29. package/dist/base-assets/connectors/gmail.js +8 -8
  30. package/dist/base-assets/connectors/googledrive.d.ts +2 -0
  31. package/dist/base-assets/connectors/googledrive.js +8 -8
  32. package/dist/base-assets/connectors/local.d.ts +2 -0
  33. package/dist/base-assets/connectors/local.js +8 -8
  34. package/dist/base-assets/connectors/mattermost.d.ts +2 -0
  35. package/dist/base-assets/connectors/mattermost.js +8 -8
  36. package/dist/base-assets/connectors/memory.d.ts +2 -0
  37. package/dist/base-assets/connectors/memory.js +8 -8
  38. package/dist/base-assets/connectors/minio.d.ts +2 -0
  39. package/dist/base-assets/connectors/minio.js +8 -8
  40. package/dist/base-assets/connectors/postgres.d.ts +2 -0
  41. package/dist/base-assets/connectors/postgres.js +8 -8
  42. package/dist/base-assets/connectors/s3.d.ts +2 -0
  43. package/dist/base-assets/connectors/s3.js +8 -8
  44. package/dist/base-assets/connectors/sharepoint.d.ts +2 -0
  45. package/dist/base-assets/connectors/sharepoint.js +8 -8
  46. package/dist/base-assets/connectors/sqlite.d.ts +2 -0
  47. package/dist/base-assets/connectors/sqlite.js +8 -8
  48. package/dist/base-assets/connectors/static-server.d.ts +2 -0
  49. package/dist/base-assets/connectors/static-server.js +8 -8
  50. package/dist/base-assets/connectors/tunnel.d.ts +2 -0
  51. package/dist/base-assets/connectors/tunnel.js +8 -8
  52. package/dist/base-assets/connectors/webdav.d.ts +2 -0
  53. package/dist/base-assets/connectors/webdav.js +8 -8
  54. package/dist/base-assets/connectors/xstate-store.d.ts +2 -0
  55. package/dist/base-assets/connectors/xstate-store.js +8 -8
  56. package/dist/base-assets/connectors/xstate.d.ts +2 -0
  57. package/dist/base-assets/connectors/xstate.js +8 -8
  58. package/dist/bridge/drivers/claude-sdk.d.ts +2 -0
  59. package/dist/bridge/drivers/claude-sdk.js +2 -2
  60. package/dist/bridge/drivers/codex.d.ts +2 -0
  61. package/dist/bridge/drivers/codex.js +2 -2
  62. package/dist/bridge/drivers/echo.d.ts +2 -0
  63. package/dist/bridge/drivers/echo.js +2 -2
  64. package/dist/bridge/drivers/omp.d.ts +2 -0
  65. package/dist/bridge/drivers/omp.js +2 -2
  66. package/dist/bridge/index.d.ts +2 -0
  67. package/dist/bridge/index.js +3 -3
  68. package/dist/bridge/src/registry.d.ts +4 -2
  69. package/dist/bridge/src/registry.d.ts.map +1 -1
  70. package/dist/{chunk-UZVHJ7LX.js → chunk-3ECS5PFD.js} +4 -4
  71. package/dist/{chunk-UZVHJ7LX.js.map → chunk-3ECS5PFD.js.map} +1 -1
  72. package/dist/{chunk-WIR34WMU.js → chunk-4AZKT2BU.js} +13 -13
  73. package/dist/chunk-4AZKT2BU.js.map +1 -0
  74. package/dist/{chunk-UZRY5UI2.js → chunk-6E6PKKAD.js} +68 -3
  75. package/dist/chunk-6E6PKKAD.js.map +1 -0
  76. package/dist/{chunk-IGQEXBBG.js → chunk-6VTG73UY.js} +13 -9
  77. package/dist/chunk-6VTG73UY.js.map +1 -0
  78. package/dist/{chunk-GKM6MDUC.js → chunk-APAOQLPT.js} +3 -3
  79. package/dist/{chunk-GKM6MDUC.js.map → chunk-APAOQLPT.js.map} +1 -1
  80. package/dist/{chunk-SL6JVGRD.js → chunk-D7K72XEY.js} +3 -3
  81. package/dist/{chunk-SL6JVGRD.js.map → chunk-D7K72XEY.js.map} +1 -1
  82. package/dist/{chunk-CSDQBWE6.js → chunk-DKGDOALM.js} +5 -5
  83. package/dist/{chunk-CSDQBWE6.js.map → chunk-DKGDOALM.js.map} +1 -1
  84. package/dist/{chunk-TTY56FQQ.js → chunk-GFNW72LW.js} +17 -5
  85. package/dist/chunk-GFNW72LW.js.map +1 -0
  86. package/dist/{chunk-X5Y4EGZB.js → chunk-I3UEM3FX.js} +36 -8
  87. package/dist/chunk-I3UEM3FX.js.map +1 -0
  88. package/dist/{chunk-TKOLD2O7.js → chunk-J3VKAEQP.js} +497 -143
  89. package/dist/chunk-J3VKAEQP.js.map +1 -0
  90. package/dist/{chunk-KA46DUM4.js → chunk-JHF66MCK.js} +49 -3
  91. package/dist/chunk-JHF66MCK.js.map +1 -0
  92. package/dist/{chunk-G6GKWGOW.js → chunk-LT4DLEYE.js} +6 -6
  93. package/dist/chunk-LT4DLEYE.js.map +1 -0
  94. package/dist/{chunk-XHFMUGDD.js → chunk-M5TE6YI5.js} +3 -3
  95. package/dist/{chunk-XHFMUGDD.js.map → chunk-M5TE6YI5.js.map} +1 -1
  96. package/dist/{chunk-J2FCO6TM.js → chunk-NJLHHZIW.js} +2 -2
  97. package/dist/{chunk-J2FCO6TM.js.map → chunk-NJLHHZIW.js.map} +1 -1
  98. package/dist/{chunk-MO4JPTRD.js → chunk-PTIHB2TV.js} +5 -5
  99. package/dist/{chunk-MO4JPTRD.js.map → chunk-PTIHB2TV.js.map} +1 -1
  100. package/dist/{chunk-RENHNO4J.js → chunk-UMOENHVH.js} +206 -137
  101. package/dist/chunk-UMOENHVH.js.map +1 -0
  102. package/dist/{chunk-NGC7ZQI4.js → chunk-V3QMSM5I.js} +38 -43
  103. package/dist/chunk-V3QMSM5I.js.map +1 -0
  104. package/dist/{chunk-2DNSSQ22.js → chunk-VCYXVP2S.js} +263 -177
  105. package/dist/chunk-VCYXVP2S.js.map +1 -0
  106. package/dist/{chunk-F3MGZ5E6.js → chunk-XIHFJVOD.js} +3 -3
  107. package/dist/{chunk-F3MGZ5E6.js.map → chunk-XIHFJVOD.js.map} +1 -1
  108. package/dist/cli/index.d.ts +2 -0
  109. package/dist/cli/index.js +102 -100
  110. package/dist/cli/index.js.map +1 -1
  111. package/dist/cli/src/commands/deploy.d.ts.map +1 -1
  112. package/dist/cli/src/commands/manage.d.ts +1 -1
  113. package/dist/cli/src/commands/project.d.ts.map +1 -1
  114. package/dist/cli/src/commands/source.d.ts.map +1 -1
  115. package/dist/cli/src/commands/update.d.ts.map +1 -1
  116. package/dist/cli/src/ensure-sources.d.ts.map +1 -1
  117. package/dist/client/index.d.ts +2 -0
  118. package/dist/connectors/config.d.ts +2 -0
  119. package/dist/connectors/config.js +6 -6
  120. package/dist/connectors/index.d.ts +2 -0
  121. package/dist/connectors/index.js +8 -8
  122. package/dist/connectors/rclone-config.d.ts +2 -0
  123. package/dist/connectors/rclone.d.ts +2 -0
  124. package/dist/connectors-shared/index.d.ts +2 -0
  125. package/dist/core/discovery.d.ts +2 -0
  126. package/dist/core/driver-targets.d.ts +2 -0
  127. package/dist/core/framework.d.ts +2 -0
  128. package/dist/core/index.d.ts +2 -0
  129. package/dist/core/index.js +5 -5
  130. package/dist/core/logging.d.ts +2 -0
  131. package/dist/core/manifest.d.ts +2 -0
  132. package/dist/core/manifest.js +2 -2
  133. package/dist/core/models.d.ts +2 -0
  134. package/dist/core/models.js +1 -1
  135. package/dist/core/runtime-assets.d.ts +2 -0
  136. package/dist/core/runtime-assets.js +4 -4
  137. package/dist/core/src/index.d.ts +7 -5
  138. package/dist/core/src/index.d.ts.map +1 -1
  139. package/dist/core/src/lock.d.ts +47 -26
  140. package/dist/core/src/lock.d.ts.map +1 -1
  141. package/dist/core/src/models.d.ts +53 -47
  142. package/dist/core/src/models.d.ts.map +1 -1
  143. package/dist/core/src/repo-manager.d.ts +62 -34
  144. package/dist/core/src/repo-manager.d.ts.map +1 -1
  145. package/dist/core/src/runtime-assets.d.ts.map +1 -1
  146. package/dist/core/src/walker.d.ts +52 -0
  147. package/dist/core/src/walker.d.ts.map +1 -0
  148. package/dist/core/src/workspace-config.d.ts +160 -45
  149. package/dist/core/src/workspace-config.d.ts.map +1 -1
  150. package/dist/core/src/workspace-yaml-editor.d.ts +33 -16
  151. package/dist/core/src/workspace-yaml-editor.d.ts.map +1 -1
  152. package/dist/core/store.d.ts +2 -0
  153. package/dist/core/workspace-config.d.ts +2 -0
  154. package/dist/core/workspace-config.js +3 -3
  155. package/dist/deploy/index.d.ts +2 -0
  156. package/dist/deploy/index.js +34 -15
  157. package/dist/deploy/index.js.map +1 -1
  158. package/dist/deploy/src/targets/container-runtime.d.ts +1 -0
  159. package/dist/deploy/src/targets/container-runtime.d.ts.map +1 -1
  160. package/dist/deploy/src/targets/docker.d.ts +1 -0
  161. package/dist/deploy/src/targets/docker.d.ts.map +1 -1
  162. package/dist/deploy/src/targets/local.d.ts.map +1 -1
  163. package/dist/deploy/src/targets/podman.d.ts +1 -0
  164. package/dist/deploy/src/targets/podman.d.ts.map +1 -1
  165. package/dist/discovery/index.d.ts +2 -0
  166. package/dist/discovery/index.js +3 -3
  167. package/dist/discovery/src/source-config.d.ts +2 -2
  168. package/dist/{ensure-sources-COGVKY44.js → ensure-sources-SL2S4UEX.js} +20 -16
  169. package/dist/ensure-sources-SL2S4UEX.js.map +1 -0
  170. package/dist/library/index.d.ts +2 -0
  171. package/dist/library/index.js +4 -4
  172. package/dist/library/src/remote/remote-catalog-source.d.ts +17 -0
  173. package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
  174. package/dist/open-library-M4DB3D3J.js +13 -0
  175. package/dist/{open-library-DWAQFUSQ.js.map → open-library-M4DB3D3J.js.map} +1 -1
  176. package/dist/plugin-registry/index.d.ts +2 -0
  177. package/dist/plugin-registry/index.js +1 -1
  178. package/dist/plugin-registry/src/deploy-handle.d.ts +17 -1
  179. package/dist/plugin-registry/src/deploy-handle.d.ts.map +1 -1
  180. package/dist/plugin-registry/src/deploy-helpers.d.ts +69 -0
  181. package/dist/plugin-registry/src/deploy-helpers.d.ts.map +1 -0
  182. package/dist/plugin-registry/src/index.d.ts +6 -4
  183. package/dist/plugin-registry/src/index.d.ts.map +1 -1
  184. package/dist/plugin-registry/src/internal.d.ts.map +1 -1
  185. package/dist/plugin-registry/src/registry.d.ts +1 -0
  186. package/dist/plugin-registry/src/registry.d.ts.map +1 -1
  187. package/dist/plugin-registry/src/targets.d.ts +4 -0
  188. package/dist/plugin-registry/src/targets.d.ts.map +1 -1
  189. package/dist/{plugin-store-6OENKNFW.js → plugin-store-AJ3FGXIC.js} +8 -8
  190. package/dist/{plugin-store-6OENKNFW.js.map → plugin-store-AJ3FGXIC.js.map} +1 -1
  191. package/dist/plugins/index.d.ts +2 -0
  192. package/dist/resolver/index.d.ts +2 -0
  193. package/dist/runner/index.d.ts +2 -0
  194. package/dist/runner/index.js +13 -13
  195. package/dist/runner/prompt-assembly.d.ts +2 -0
  196. package/dist/runner/src/resources.d.ts.map +1 -1
  197. package/dist/runner/src/serve.d.ts.map +1 -1
  198. package/dist/sdk/asset-manager.d.ts +2 -0
  199. package/dist/sdk/asset-manager.js +7 -7
  200. package/dist/sdk/bridge.d.ts +2 -0
  201. package/dist/sdk/bridge.js +3 -3
  202. package/dist/sdk/client.d.ts +2 -0
  203. package/dist/sdk/core.d.ts +2 -0
  204. package/dist/sdk/core.js +5 -5
  205. package/dist/sdk/flow.d.ts +2 -0
  206. package/dist/sdk/index.d.ts +2 -0
  207. package/dist/sdk/index.js +49 -16
  208. package/dist/sdk/index.js.map +1 -1
  209. package/dist/sdk/resolver.d.ts +2 -0
  210. package/dist/sdk/runner.d.ts +2 -0
  211. package/dist/sdk/runner.js +13 -13
  212. package/dist/sdk/session.d.ts +2 -0
  213. package/dist/sdk/src/local-runtime.d.ts +8 -0
  214. package/dist/sdk/src/local-runtime.d.ts.map +1 -1
  215. package/dist/sdk/src/transport.d.ts +7 -1
  216. package/dist/sdk/src/transport.d.ts.map +1 -1
  217. package/dist/sdk/store.d.ts +2 -0
  218. package/dist/sdk/telemetry.d.ts +2 -0
  219. package/dist/sdk/transport/ws/client.d.ts +2 -0
  220. package/dist/sdk/transport/ws/server.d.ts +2 -0
  221. package/dist/sdk/transport/ws.d.ts +2 -0
  222. package/dist/sdk/transport.d.ts +2 -0
  223. package/dist/sdk/types.d.ts +2 -0
  224. package/dist/secrets/index.d.ts +2 -0
  225. package/dist/session/index.d.ts +2 -0
  226. package/dist/{setup-ACMP3QZC.js → setup-GBSQX7JF.js} +10 -10
  227. package/dist/{setup-ACMP3QZC.js.map → setup-GBSQX7JF.js.map} +1 -1
  228. package/dist/store/index.d.ts +2 -0
  229. package/dist/store/react.d.ts +2 -0
  230. package/dist/store/vue.d.ts +2 -0
  231. package/dist/store-client-5WBRUC5U.js +14 -0
  232. package/dist/{store-client-ZSLNOOQG.js.map → store-client-5WBRUC5U.js.map} +1 -1
  233. package/dist/telemetry/index.d.ts +2 -0
  234. package/dist/transport/index.d.ts +2 -0
  235. package/dist/transport/ws/client.d.ts +2 -0
  236. package/dist/transport/ws/server.d.ts +2 -0
  237. package/dist/transport/ws.d.ts +2 -0
  238. package/dist/tui/index.d.ts +2 -0
  239. package/dist/tui/index.js +13 -13
  240. package/dist/types/index.d.ts +2 -0
  241. package/dist/types/manifests.d.ts +2 -0
  242. package/dist/workspace-plugin/adapters/mcp.d.ts +2 -0
  243. package/dist/workspace-plugin/adapters/omp.d.ts +2 -0
  244. package/dist/workspace-plugin/index.d.ts +2 -0
  245. package/dist/workspace-plugin/index.js +1 -1
  246. package/package.json +4 -2
  247. package/dist/chunk-2DNSSQ22.js.map +0 -1
  248. package/dist/chunk-G6GKWGOW.js.map +0 -1
  249. package/dist/chunk-IGQEXBBG.js.map +0 -1
  250. package/dist/chunk-KA46DUM4.js.map +0 -1
  251. package/dist/chunk-NGC7ZQI4.js.map +0 -1
  252. package/dist/chunk-RENHNO4J.js.map +0 -1
  253. package/dist/chunk-TKOLD2O7.js.map +0 -1
  254. package/dist/chunk-TTY56FQQ.js.map +0 -1
  255. package/dist/chunk-UZRY5UI2.js.map +0 -1
  256. package/dist/chunk-WIR34WMU.js.map +0 -1
  257. package/dist/chunk-X5Y4EGZB.js.map +0 -1
  258. package/dist/ensure-sources-COGVKY44.js.map +0 -1
  259. package/dist/open-library-DWAQFUSQ.js +0 -13
  260. package/dist/store-client-ZSLNOOQG.js +0 -14
package/dist/cli/index.js CHANGED
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
- import { AI_RESOURCES } from '../chunk-2M3XTMOL.js';
3
- import { openCatalogSource, openLibrary, createFullRegistry, openLibraryManager } from '../chunk-UZVHJ7LX.js';
2
+ import { openCatalogSource, openLibrary, createFullRegistry, openLibraryManager } from '../chunk-3ECS5PFD.js';
4
3
  import { logErr, S, logOk, colorRef, logInfo, logWarn, kindColorPad, kindColor, formatRelativeTime } from '../chunk-4NDWKA64.js';
5
- import { getStoreConfig, storeFetch, saveStoreTokens, clearStoreTokens, isStoreAuthenticated } from '../chunk-F3MGZ5E6.js';
4
+ import { getStoreConfig, storeFetch, saveStoreTokens, clearStoreTokens, isStoreAuthenticated } from '../chunk-XIHFJVOD.js';
5
+ import { AI_RESOURCES } from '../chunk-2M3XTMOL.js';
6
6
  import { LocalSecretsProvider } from '../chunk-JDX54X4Y.js';
7
- import { resolveLibraryDir, LocalCatalogSource, skaileHomeDir } from '../chunk-KA46DUM4.js';
7
+ import { resolveLibraryDir, LocalCatalogSource, skaileHomeDir } from '../chunk-JHF66MCK.js';
8
8
  import '../chunk-R7FOF242.js';
9
- import '../chunk-SL6JVGRD.js';
9
+ import '../chunk-D7K72XEY.js';
10
10
  import '../chunk-OKRUTSG7.js';
11
- import { runFlow, resumeFlow } from '../chunk-CSDQBWE6.js';
11
+ import { runFlow, resumeFlow } from '../chunk-DKGDOALM.js';
12
12
  import '../chunk-GCJXPUHG.js';
13
13
  import { validateFlowVersions, parseSkillFrontmatter } from '../chunk-IPUYL6TD.js';
14
- import { runAgentChat, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, compileComposition, MarkdownStreamer, resolveMixin } from '../chunk-NGC7ZQI4.js';
15
- import { buildClaudePluginFiles } from '../chunk-J2FCO6TM.js';
14
+ import { runAgentChat, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, compileComposition, MarkdownStreamer, resolveMixin } from '../chunk-V3QMSM5I.js';
15
+ import { buildClaudePluginFiles } from '../chunk-NJLHHZIW.js';
16
16
  import '../chunk-X5YPJV4N.js';
17
17
  import '../chunk-O7SG5PC2.js';
18
18
  import '../chunk-W2O5LWYU.js';
@@ -20,28 +20,29 @@ import '../chunk-7PTP3SQJ.js';
20
20
  import '../chunk-PBWMV5GM.js';
21
21
  import '../chunk-W3UDISS2.js';
22
22
  import '../chunk-TDSRLMDB.js';
23
- import '../chunk-XHFMUGDD.js';
23
+ import '../chunk-M5TE6YI5.js';
24
24
  import '../chunk-DQWREFRQ.js';
25
25
  import '../chunk-KOVLSBXK.js';
26
26
  import '../chunk-RRVQAE5D.js';
27
- import '../chunk-IGQEXBBG.js';
28
- import '../chunk-G6GKWGOW.js';
29
- import '../chunk-GKM6MDUC.js';
27
+ import '../chunk-6VTG73UY.js';
28
+ import '../chunk-LV2HPH3C.js';
29
+ import '../chunk-LT4DLEYE.js';
30
+ import '../chunk-APAOQLPT.js';
30
31
  import '../chunk-6MB7CRME.js';
31
32
  import '../chunk-QAVZOJCV.js';
32
- import '../chunk-UZRY5UI2.js';
33
+ import '../chunk-6E6PKKAD.js';
33
34
  import { loadAllFlows } from '../chunk-ICS76R4T.js';
34
35
  import '../chunk-GZWJGNNN.js';
35
36
  import '../chunk-FVTV7M76.js';
36
- import { AssetManager } from '../chunk-2DNSSQ22.js';
37
- import '../chunk-MO4JPTRD.js';
38
- import { readLock, resolveSettings, globalSettingsPath, projectSettingsPath, loadSettings, saveSettings, portableSpawn, portableSpawnSync, WorkspaceYamlEditor } from '../chunk-RENHNO4J.js';
37
+ import { AssetManager } from '../chunk-VCYXVP2S.js';
38
+ import '../chunk-PTIHB2TV.js';
39
+ import { readLock, resolveSettings, globalSettingsPath, projectSettingsPath, loadSettings, saveSettings, portableSpawn, portableSpawnSync, WorkspaceYamlEditor } from '../chunk-UMOENHVH.js';
39
40
  import { DRIVER_DEFAULTS } from '../chunk-K5GBV4SA.js';
40
41
  import '../chunk-KLNL7QHN.js';
41
- import '../chunk-TTY56FQQ.js';
42
- import { resolveSkWorkspaceConfig, resolveAgentDir, findWorkspaceRoot, workspaceConfigFilename } from '../chunk-TKOLD2O7.js';
43
- import '../chunk-WIR34WMU.js';
44
- import { ASSET_KINDS } from '../chunk-X5Y4EGZB.js';
42
+ import '../chunk-GFNW72LW.js';
43
+ import { resolveSkWorkspaceConfig, resolveAgentDir, findWorkspaceRoot, workspaceConfigFilename } from '../chunk-J3VKAEQP.js';
44
+ import '../chunk-4AZKT2BU.js';
45
+ import { ASSET_KINDS } from '../chunk-I3UEM3FX.js';
45
46
  import '../chunk-JKNWJ64A.js';
46
47
  import { SUPPORTED_DRIVER_TARGETS } from '../chunk-O4JH3KUE.js';
47
48
  import { openSqlite } from '../chunk-24UIWON4.js';
@@ -50,7 +51,6 @@ import '../chunk-UQ6LFBPZ.js';
50
51
  import '../chunk-6FNCZYJY.js';
51
52
  import '../chunk-NELZIQ2E.js';
52
53
  import '../chunk-CGYEHQOX.js';
53
- import '../chunk-LV2HPH3C.js';
54
54
  import '../chunk-NSBPE2FW.js';
55
55
  import * as fs10 from 'fs';
56
56
  import fs10__default, { readFileSync, existsSync, writeFileSync, rmSync, statSync } from 'fs';
@@ -309,7 +309,7 @@ function makeSearchCommand() {
309
309
  }
310
310
  if (showStore) {
311
311
  try {
312
- const { getStoreConfig: getStoreConfig2, storeFetch: storeFetch2 } = await import('../store-client-ZSLNOOQG.js');
312
+ const { getStoreConfig: getStoreConfig2, storeFetch: storeFetch2 } = await import('../store-client-5WBRUC5U.js');
313
313
  const config = getStoreConfig2();
314
314
  const params = {};
315
315
  if (query) params.q = query;
@@ -336,7 +336,7 @@ function makeSearchCommand() {
336
336
  });
337
337
  }
338
338
  function makeAddCommand() {
339
- return new Command("add").description("Add to skaile.yaml + deploy").argument("<ref>", "Asset reference (kind:name[@repo])").option("--project-dir <path>", "Project directory", process.cwd()).option("--global", "Deploy to global dir (~/.claude)").option("--target <agent>", "Driver target", "claude-code").action((ref, opts) => {
339
+ return new Command("add").description("Add to skaile.yaml + deploy").argument("<ref>", "Asset reference (kind:name[@repo])").option("--project-dir <path>", "Project directory", process.cwd()).option("--global", "Deploy to global dir (~/.claude)").option("--target <agent>", "Driver target", "claude-code").action(async (ref, opts) => {
340
340
  const am2 = new AssetManager({
341
341
  projectDir: path14__default.resolve(opts.projectDir),
342
342
  global: opts.global,
@@ -345,7 +345,7 @@ function makeAddCommand() {
345
345
  const spinner5 = p5.spinner();
346
346
  spinner5.start(`Adding ${ref}`);
347
347
  try {
348
- const added = am2.add(ref);
348
+ const added = await am2.add(ref);
349
349
  spinner5.stop("Done");
350
350
  if (added.length === 0) logInfo("Nothing added (already up to date or not found).");
351
351
  else for (const a of added) logOk(a);
@@ -411,7 +411,7 @@ function makeInfoCommand() {
411
411
  console.log(` kind: ${kindColor(entry.kind)}`);
412
412
  if (entry.version) console.log(` version: ${entry.version}`);
413
413
  if (entry.description) console.log(` description: ${entry.description}`);
414
- if (entry.repository) console.log(` repository: ${S.dim(entry.repository)}`);
414
+ if (entry.publisher) console.log(` repository: ${S.dim(entry.publisher)}`);
415
415
  console.log(` source: ${S.dim(entry.source)}`);
416
416
  if (entry.requires.length) {
417
417
  console.log(` requires:`);
@@ -471,7 +471,7 @@ function makeCatalogCommand() {
471
471
  const cfg = resolveConfig({ projectDir });
472
472
  const baseUrl = opts.url ?? cfg.catalog.url;
473
473
  if (isLocalCatalogUrl(baseUrl)) {
474
- const { resolveCatalogSource } = await import('../open-library-DWAQFUSQ.js');
474
+ const { resolveCatalogSource } = await import('../open-library-M4DB3D3J.js');
475
475
  let resolved;
476
476
  try {
477
477
  resolved = await resolveCatalogSource({ projectDir: opts.projectDir });
@@ -1432,7 +1432,7 @@ async function ensureTargetsRegistered(projectDir) {
1432
1432
  const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
1433
1433
  const config = resolveSkWorkspaceConfig2(projectDir);
1434
1434
  if (config.plugins && config.plugins.length > 0) {
1435
- const { ensurePluginsLoaded } = await import('../plugin-store-6OENKNFW.js');
1435
+ const { ensurePluginsLoaded } = await import('../plugin-store-AJ3FGXIC.js');
1436
1436
  const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
1437
1437
  for (const f of result.failed) logWarn(f.error);
1438
1438
  }
@@ -1443,9 +1443,10 @@ async function runUp(opts) {
1443
1443
  const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
1444
1444
  const { resolveDeployTarget, pluginRegistry } = await import('../plugin-registry/index.js');
1445
1445
  const config = resolveSkWorkspaceConfig2(projectDir);
1446
+ const overrideConfig = opts.target === config.deploy?.target ? config.deploy?.config : void 0;
1446
1447
  const resolution = await resolveDeployTarget(
1447
1448
  { deploy: config.deploy },
1448
- opts.target ? { target: opts.target, config: config.deploy?.config ?? {}, reason: "cli --target" } : void 0,
1449
+ opts.target ? { target: opts.target, config: overrideConfig, reason: "cli --target" } : void 0,
1449
1450
  pluginRegistry
1450
1451
  );
1451
1452
  const { ctx, controller } = await buildDeployContext(projectDir);
@@ -1493,8 +1494,15 @@ async function restoreFromHandle(projectDir) {
1493
1494
  logErr(`unknown deploy target "${stored.targetId}" \u2014 is its plugin installed?`);
1494
1495
  return null;
1495
1496
  }
1497
+ const parsed = target.payloadSchema.safeParse(stored.payload);
1498
+ if (!parsed.success) {
1499
+ logErr(
1500
+ `deploy handle for "${stored.targetId}" is malformed: ${parsed.error.message}. Remove ${S.cmd(".skaile/deploy/handle.json")} to reset.`
1501
+ );
1502
+ return null;
1503
+ }
1496
1504
  const { ctx } = await buildDeployContext(projectDir);
1497
- const handle = await target.restore(stored.payload, ctx);
1505
+ const handle = await target.restore(parsed.data, ctx);
1498
1506
  return { target, handle, ctx };
1499
1507
  }
1500
1508
  async function runDown(opts) {
@@ -2207,7 +2215,7 @@ function buildVisibleRows(rows, collapsedSources, collapsedDomains) {
2207
2215
  if (collapsedSources.has(row.source)) return false;
2208
2216
  return !hasCollapsedAncestor(row.source, row.domain, collapsedDomains, true);
2209
2217
  }
2210
- const source = row.entry?.repository || "other";
2218
+ const source = row.entry?.publisher || "other";
2211
2219
  const domain = row.entry?.domain || "other";
2212
2220
  if (collapsedSources.has(source)) return false;
2213
2221
  return !hasCollapsedAncestor(source, domain, collapsedDomains, false);
@@ -2242,7 +2250,7 @@ function isAsset(r) {
2242
2250
  return r.type === "asset";
2243
2251
  }
2244
2252
  function inSource(r, source) {
2245
- return (r.entry?.repository || "other") === source;
2253
+ return (r.entry?.publisher || "other") === source;
2246
2254
  }
2247
2255
  function inDomain(r, source, domain) {
2248
2256
  if (!inSource(r, source)) return false;
@@ -2300,7 +2308,7 @@ function actOnHeader(row, action3) {
2300
2308
  return false;
2301
2309
  }
2302
2310
  async function loadAssets() {
2303
- const { gatherAssetFeeds } = await import('../asset-feeds-PJDJ3QYI.js');
2311
+ const { gatherAssetFeeds } = await import('../asset-feeds-QXCSAJRN.js');
2304
2312
  const { entries, notes } = await gatherAssetFeeds(am, am.projectDir);
2305
2313
  if (notes.length > 0) {
2306
2314
  state.message = notes.map((n) => `[${n.feed}] ${n.message}`).join(" \u2022 ");
@@ -2308,7 +2316,7 @@ async function loadAssets() {
2308
2316
  const installed = new Set(am.listDeployed().map((e) => `${e.kind}:${e.name}`));
2309
2317
  const bySource = /* @__PURE__ */ new Map();
2310
2318
  for (const e of entries) {
2311
- const source = e.repository || "other";
2319
+ const source = e.publisher || "other";
2312
2320
  const domain = e.domain || "other";
2313
2321
  if (!bySource.has(source)) bySource.set(source, /* @__PURE__ */ new Map());
2314
2322
  const domainMap = bySource.get(source);
@@ -2357,7 +2365,7 @@ async function loadAssets() {
2357
2365
  async function loadSourcesAndLibraries() {
2358
2366
  try {
2359
2367
  const [{ openLibraryManager: openLibraryManager2 }, { skaileHomeDir: skaileHomeDir2 }] = await Promise.all([
2360
- import('../open-library-DWAQFUSQ.js'),
2368
+ import('../open-library-M4DB3D3J.js'),
2361
2369
  import('../library/index.js')
2362
2370
  ]);
2363
2371
  const { manager, library, close } = await openLibraryManager2();
@@ -2654,7 +2662,7 @@ async function showInfo() {
2654
2662
  console.log(` ${S.rule(50)}`);
2655
2663
  if (e.version) console.log(` version: ${e.version}`);
2656
2664
  if (e.description) console.log(` description: ${e.description}`);
2657
- if (e.repository) console.log(` source: ${pc5.dim(e.repository)}`);
2665
+ if (e.publisher) console.log(` source: ${pc5.dim(e.publisher)}`);
2658
2666
  console.log(` manifest: ${pc5.dim(e.source)}`);
2659
2667
  console.log(` installed: ${row.installed ? pc5.green("yes") : pc5.red("no")}`);
2660
2668
  if (e.requires.length) {
@@ -2955,7 +2963,7 @@ function makeNpxCommand() {
2955
2963
  const am2 = new AssetManager({ projectDir, global: opts.global, driverTarget: opts.target });
2956
2964
  spinner5.start(`Installing ${skillRef}`);
2957
2965
  try {
2958
- const added = am2.add(skillRef);
2966
+ const added = await am2.add(skillRef);
2959
2967
  spinner5.stop("Done");
2960
2968
  if (added.length === 0) {
2961
2969
  logInfo(`${opts.skill} already deployed or not found in source.`);
@@ -3620,7 +3628,7 @@ function makeOutdatedCommand() {
3620
3628
  console.log(` ${S.rule(nameW + 40)}`);
3621
3629
  for (const e of filtered) {
3622
3630
  console.log(
3623
- ` ${kindColorPad(e.kind)} ${e.name.padEnd(nameW)} ${S.dim(e.repository)} ${pc5.yellow(`${e.behind} commit(s) behind`)}`
3631
+ ` ${kindColorPad(e.kind)} ${e.name.padEnd(nameW)} ${S.dim(e.publisher)} ${pc5.yellow(`${e.behind} commit(s) behind`)}`
3624
3632
  );
3625
3633
  }
3626
3634
  console.log();
@@ -3683,7 +3691,7 @@ function action2(fn) {
3683
3691
  };
3684
3692
  }
3685
3693
  async function reconcileAndReport(projectDir, plugins) {
3686
- const { reconcilePlugins } = await import('../plugin-store-6OENKNFW.js');
3694
+ const { reconcilePlugins } = await import('../plugin-store-AJ3FGXIC.js');
3687
3695
  if (plugins.length === 0) {
3688
3696
  logInfo("No plugins declared \u2014 nothing to reconcile.");
3689
3697
  return;
@@ -3699,7 +3707,7 @@ async function reconcileAndReport(projectDir, plugins) {
3699
3707
  async function runInstall2(spec, opts) {
3700
3708
  const projectDir = path14__default.resolve(opts.projectDir);
3701
3709
  const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
3702
- const { specName } = await import('../plugin-store-6OENKNFW.js');
3710
+ const { specName } = await import('../plugin-store-AJ3FGXIC.js');
3703
3711
  const yamlPath = path14__default.join(projectDir, "skaile.yaml");
3704
3712
  const editor = WorkspaceYamlEditor2.load(yamlPath);
3705
3713
  const replaced = editor.addPlugin(spec, specName);
@@ -3711,7 +3719,7 @@ async function runInstall2(spec, opts) {
3711
3719
  async function runRemove(name, opts) {
3712
3720
  const projectDir = path14__default.resolve(opts.projectDir);
3713
3721
  const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
3714
- const { specName } = await import('../plugin-store-6OENKNFW.js');
3722
+ const { specName } = await import('../plugin-store-AJ3FGXIC.js');
3715
3723
  const yamlPath = path14__default.join(projectDir, "skaile.yaml");
3716
3724
  const editor = WorkspaceYamlEditor2.load(yamlPath);
3717
3725
  const removed = editor.removePlugin(name, specName);
@@ -3739,7 +3747,7 @@ async function runList(opts) {
3739
3747
  const registry = createPluginRegistry();
3740
3748
  if (declared.length > 0) {
3741
3749
  try {
3742
- const { loadPlugins } = await import('../plugin-store-6OENKNFW.js');
3750
+ const { loadPlugins } = await import('../plugin-store-AJ3FGXIC.js');
3743
3751
  const result = await loadPlugins(projectDir, declared, registry);
3744
3752
  for (const f of result.failed) logWarn(f.error);
3745
3753
  } catch (err) {
@@ -3942,7 +3950,7 @@ function makeInstallCommand() {
3942
3950
  const spinner6 = p5.spinner();
3943
3951
  spinner6.start(`Installing ${ref}`);
3944
3952
  try {
3945
- const { openCatalogSource: openCatalogSource2, openLibrary: openLibrary2 } = await import('../open-library-DWAQFUSQ.js');
3953
+ const { openCatalogSource: openCatalogSource2, openLibrary: openLibrary2 } = await import('../open-library-M4DB3D3J.js');
3946
3954
  const catalog = await openCatalogSource2({ projectDir: path14__default.resolve(opts.projectDir) });
3947
3955
  if (!supportsInstallManifest(catalog)) {
3948
3956
  throw new Error(
@@ -3974,7 +3982,7 @@ function makeInstallCommand() {
3974
3982
  }
3975
3983
  const projectDir = path14__default.resolve(opts.projectDir);
3976
3984
  try {
3977
- const { ensureSourcesCloned } = await import('../ensure-sources-COGVKY44.js');
3985
+ const { ensureSourcesCloned } = await import('../ensure-sources-SL2S4UEX.js');
3978
3986
  const hydrate = ensureSourcesCloned(projectDir, { quiet: true });
3979
3987
  if (hydrate.cloned.length > 0) {
3980
3988
  logOk(`Cloned source(s): ${hydrate.cloned.join(", ")}`);
@@ -4008,13 +4016,6 @@ function makeInstallCommand() {
4008
4016
  if (result.missing.length > 0) {
4009
4017
  for (const m of result.missing) logErr(`Missing: ${m}`);
4010
4018
  }
4011
- if (result.collisions.length > 0) {
4012
- for (const c of result.collisions) {
4013
- logWarn(
4014
- `${c.key} resolved from ${S.bold(c.resolvedFrom)}, also found in: ${c.shadowedIn.join(", ")}. Use @repo qualifier to pin.`
4015
- );
4016
- }
4017
- }
4018
4019
  if (result.lockWritten) {
4019
4020
  logInfo(`Lock file written: ${S.dim("skaile.lock.yaml")}`);
4020
4021
  }
@@ -4439,7 +4440,7 @@ async function ensurePluginsLoadedForServe(projectDir) {
4439
4440
  const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
4440
4441
  const config = resolveSkWorkspaceConfig2(projectDir);
4441
4442
  if (!config.plugins || config.plugins.length === 0) return;
4442
- const { ensurePluginsLoaded } = await import('../plugin-store-6OENKNFW.js');
4443
+ const { ensurePluginsLoaded } = await import('../plugin-store-AJ3FGXIC.js');
4443
4444
  const { pluginRegistry } = await import('../plugin-registry/index.js');
4444
4445
  const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
4445
4446
  if (result.loaded.length > 0) {
@@ -5315,13 +5316,14 @@ function readProjectSources(yamlPath) {
5315
5316
  }
5316
5317
  }
5317
5318
  function ensureClone(entry, opts = {}) {
5318
- const dest = sourceClonePath(entry.name);
5319
+ const slug = deriveSlug(entry.url);
5320
+ const dest = sourceClonePath(slug);
5319
5321
  if (existsSync(dest)) {
5320
5322
  if (!opts.force) return false;
5321
5323
  rmSync(dest, { recursive: true, force: true });
5322
5324
  }
5323
5325
  const args = ["clone", entry.url, dest];
5324
- if (entry.branch) args.splice(1, 0, "--branch", entry.branch);
5326
+ if (entry.pin) args.splice(1, 0, "--branch", entry.pin);
5325
5327
  const clone = spawnSync("git", args, { stdio: "inherit" });
5326
5328
  if (clone.status !== 0) {
5327
5329
  logErr(`git clone failed for ${entry.url}`);
@@ -5332,13 +5334,14 @@ function ensureClone(entry, opts = {}) {
5332
5334
  async function refreshManifestCache(entry, includeDev = false) {
5333
5335
  const { manager, library, close } = await openLibraryManager();
5334
5336
  try {
5335
- const dest = sourceClonePath(entry.name);
5336
- const existing = (await manager.listLibraries()).find((l) => l.name === entry.name);
5337
+ const slug = deriveSlug(entry.url);
5338
+ const dest = sourceClonePath(slug);
5339
+ const existing = (await manager.listLibraries()).find((l) => l.name === slug);
5337
5340
  const lib = existing ?? await manager.addLibrary({
5338
- name: entry.name,
5341
+ name: slug,
5339
5342
  path: dest,
5340
5343
  backend: "git",
5341
- backendConfig: { url: entry.url, branch: entry.branch ?? "main", authHint: "ssh" },
5344
+ backendConfig: { url: entry.url, branch: entry.pin ?? "main", authHint: "ssh" },
5342
5345
  ownership: "reader"
5343
5346
  });
5344
5347
  const catalog = new LocalCatalogSource(library, lib.id, dest, createFullRegistry());
@@ -5368,20 +5371,19 @@ function makeSourceCommand() {
5368
5371
  const cmd = new Command("source").description(
5369
5372
  "Manage github sources for the current project (recorded in skaile.yaml)"
5370
5373
  );
5371
- cmd.command("add <git-url>").description("Clone a github repo and register it in this project's skaile.yaml").option("--name <slug>", "Override the derived slug").option("--branch <branch>", "Branch to track (default: main)").option("--force", "Remove an existing clone and re-clone", false).option("--dev", "Also index dev-only assets under the source's dev_paths", false).action(
5374
+ cmd.command("add <git-url>").description("Clone a github repo and register it in this project's skaile.yaml").option("--name <slug>", "[deprecated] no-op \u2014 the source entry stores only the URL").option("--pin <ref>", "Pin a branch, tag, or 40-char SHA").option("--branch <branch>", "[deprecated] alias for --pin").option("--force", "Remove an existing clone and re-clone", false).option("--dev", "Also index dev-only assets under the source's dev_paths", false).action(
5372
5375
  async (url, opts) => {
5373
5376
  const yamlPath = requireProjectYamlPath();
5374
- const slug = opts.name ?? deriveSlug(url);
5375
- const entry = { name: slug, url };
5376
- if (opts.branch) entry.branch = opts.branch;
5377
- const editor = WorkspaceYamlEditor.load(yamlPath);
5378
- const existing = editor.getSources().find((s) => s.name === slug);
5379
- if (existing && existing.url !== url) {
5380
- logErr(
5381
- `A source named "${slug}" already exists in ${yamlPath} with a different url (${existing.url}). Pass --name to use a different slug.`
5377
+ if (opts.name) {
5378
+ logWarn(
5379
+ "the --name flag is deprecated; the source entry now stores only the URL (the cache slug is derived from it)."
5382
5380
  );
5383
- process.exit(1);
5384
5381
  }
5382
+ const pin = opts.pin ?? opts.branch;
5383
+ const slug = deriveSlug(url);
5384
+ const entry = { url };
5385
+ if (pin) entry.pin = pin;
5386
+ const editor = WorkspaceYamlEditor.load(yamlPath);
5385
5387
  editor.setSource(entry);
5386
5388
  editor.save();
5387
5389
  const dest = sourceClonePath(slug);
@@ -5411,69 +5413,77 @@ function makeSourceCommand() {
5411
5413
  console.log();
5412
5414
  console.log(S.heading(" Sources"));
5413
5415
  for (const s of sources) {
5414
- const cached = existsSync(sourceClonePath(s.name)) ? "" : S.warn(" (not cached)");
5415
- console.log(` ${S.cmd(s.name.padEnd(24))} ${S.dim(s.url)}${cached}`);
5416
+ const slug = deriveSlug(s.url);
5417
+ const cached = existsSync(sourceClonePath(slug)) ? "" : S.warn(" (not cached)");
5418
+ console.log(` ${S.cmd(slug.padEnd(24))} ${S.dim(s.url)}${cached}`);
5416
5419
  }
5417
5420
  console.log(`
5418
5421
  ${S.dim(`${sources.length} source(s)`)}
5419
5422
  `);
5420
5423
  });
5421
- cmd.command("show <name>").description("Show details for a source").action(async (name) => {
5424
+ cmd.command("show <name-or-url>").description("Show details for a source (matched by URL or derived slug)").action(async (key) => {
5422
5425
  const yamlPath = requireProjectYamlPath();
5423
- const entry = readProjectSources(yamlPath).find((s) => s.name === name);
5426
+ const entry = readProjectSources(yamlPath).find(
5427
+ (s) => s.url === key || deriveSlug(s.url) === key
5428
+ );
5424
5429
  if (!entry) {
5425
- logErr(`No source named "${name}" in ${yamlPath}.`);
5430
+ logErr(`No source matching "${key}" in ${yamlPath}.`);
5426
5431
  process.exit(1);
5427
5432
  }
5433
+ const slug = deriveSlug(entry.url);
5428
5434
  console.log(
5429
5435
  JSON.stringify(
5430
5436
  {
5431
5437
  ...entry,
5432
- clonePath: sourceClonePath(entry.name),
5433
- cached: existsSync(sourceClonePath(entry.name))
5438
+ slug,
5439
+ clonePath: sourceClonePath(slug),
5440
+ cached: existsSync(sourceClonePath(slug))
5434
5441
  },
5435
5442
  null,
5436
5443
  2
5437
5444
  )
5438
5445
  );
5439
5446
  });
5440
- cmd.command("remove <name>").description("Remove a source from this project's skaile.yaml").option("--purge", "Also delete the cached clone from ~/.skaile/sources/", false).action(async (name, opts) => {
5447
+ cmd.command("remove <name-or-url>").description("Remove a source from this project's skaile.yaml (matched by URL or slug)").option("--purge", "Also delete the cached clone from ~/.skaile/sources/", false).action(async (key, opts) => {
5441
5448
  const yamlPath = requireProjectYamlPath();
5442
5449
  const editor = WorkspaceYamlEditor.load(yamlPath);
5443
- const removed = editor.removeSource(name);
5444
- if (!removed) {
5445
- logErr(`No source named "${name}" in ${yamlPath}.`);
5450
+ const match = editor.getSources().find((s) => s.url === key || deriveSlug(s.url) === key);
5451
+ if (!match) {
5452
+ logErr(`No source matching "${key}" in ${yamlPath}.`);
5446
5453
  process.exit(1);
5447
5454
  }
5455
+ const slug = deriveSlug(match.url);
5456
+ editor.removeSource(match.url);
5448
5457
  editor.save();
5449
- await dropManifestCache(name, opts.purge);
5458
+ await dropManifestCache(slug, opts.purge);
5450
5459
  logOk(
5451
- opts.purge ? `Removed source "${name}" and purged its clone.` : `Removed source "${name}" from skaile.yaml (clone left in ~/.skaile/sources/).`
5460
+ opts.purge ? `Removed source "${slug}" and purged its clone.` : `Removed source "${slug}" from skaile.yaml (clone left in ~/.skaile/sources/).`
5452
5461
  );
5453
5462
  });
5454
- cmd.command("sync [name]").description("Pull upstream changes and refresh the manifest cache").option("--dev", "Also index dev-only assets under each source's dev_paths", false).action(async (name, opts) => {
5463
+ cmd.command("sync [name]").description("Pull upstream changes and refresh the manifest cache").option("--dev", "Also index dev-only assets under each source's dev_paths", false).action(async (key, opts) => {
5455
5464
  const yamlPath = requireProjectYamlPath();
5456
5465
  const all = readProjectSources(yamlPath);
5457
- const targets = name ? all.filter((s) => s.name === name) : all;
5466
+ const targets = key ? all.filter((s) => s.url === key || deriveSlug(s.url) === key) : all;
5458
5467
  if (targets.length === 0) {
5459
- logInfo(name ? `No source named "${name}".` : "No sources in skaile.yaml.");
5468
+ logInfo(key ? `No source matching "${key}".` : "No sources in skaile.yaml.");
5460
5469
  return;
5461
5470
  }
5462
5471
  for (const entry of targets) {
5463
- const dest = sourceClonePath(entry.name);
5472
+ const slug = deriveSlug(entry.url);
5473
+ const dest = sourceClonePath(slug);
5464
5474
  if (!existsSync(dest)) {
5465
5475
  ensureClone(entry);
5466
- logOk(`${entry.name}: cloned to ${dest}.`);
5476
+ logOk(`${slug}: cloned to ${dest}.`);
5467
5477
  } else {
5468
5478
  const pull = spawnSync("git", ["pull", "--ff-only"], { cwd: dest, stdio: "inherit" });
5469
5479
  if (pull.status !== 0) {
5470
- logWarn(`${entry.name}: git pull failed, skipping manifest refresh.`);
5480
+ logWarn(`${slug}: git pull failed, skipping manifest refresh.`);
5471
5481
  continue;
5472
5482
  }
5473
5483
  }
5474
5484
  const result = await refreshManifestCache(entry, opts.dev);
5475
- logOk(`${entry.name}: indexed ${result.assetsUpdated} of ${result.assetsFound} asset(s).`);
5476
- for (const err of result.errors) logWarn(`${entry.name}: ${err}`);
5485
+ logOk(`${slug}: indexed ${result.assetsUpdated} of ${result.assetsFound} asset(s).`);
5486
+ for (const err of result.errors) logWarn(`${slug}: ${err}`);
5477
5487
  }
5478
5488
  });
5479
5489
  cmd.command("patch <ref>").description("Extract an asset for editing against the source").action((_ref) => {
@@ -5696,13 +5706,6 @@ function makeUpdateCommand() {
5696
5706
  } else {
5697
5707
  logInfo("Nothing to update.");
5698
5708
  }
5699
- if (result.collisions.length > 0) {
5700
- for (const c of result.collisions) {
5701
- logWarn(
5702
- `${c.key} resolved from ${S.heading(c.resolvedFrom)}, also found in: ${c.shadowedIn.join(", ")}`
5703
- );
5704
- }
5705
- }
5706
5709
  }
5707
5710
  );
5708
5711
  }
@@ -6284,8 +6287,7 @@ program.command("init [project-dir]").description("Initialize a project director
6284
6287
  driver: "claude-sdk",
6285
6288
  max_turns: 200
6286
6289
  }
6287
- },
6288
- ai_resources: []
6290
+ }
6289
6291
  })
6290
6292
  );
6291
6293
  created.push("skaile.yaml");
@@ -6305,7 +6307,7 @@ program.command("init [project-dir]").description("Initialize a project director
6305
6307
  const append = entries.filter((e) => !have.has(e));
6306
6308
  if (append.length > 0) {
6307
6309
  const prefix = existing && !existing.endsWith("\n") ? "\n" : "";
6308
- writeFileSync2(gitignorePath, existing + prefix + `${append.join("\n")}
6310
+ writeFileSync2(gitignorePath, `${existing + prefix}${append.join("\n")}
6309
6311
  `);
6310
6312
  if (!existing) created.push(".gitignore");
6311
6313
  }
@@ -6336,7 +6338,7 @@ program.command("init [project-dir]").description("Initialize a project director
6336
6338
  );
6337
6339
  }
6338
6340
  try {
6339
- const { ensureSourcesCloned } = await import('../ensure-sources-COGVKY44.js');
6341
+ const { ensureSourcesCloned } = await import('../ensure-sources-SL2S4UEX.js');
6340
6342
  const hydrate = ensureSourcesCloned(resolved, { quiet: true });
6341
6343
  for (const n of hydrate.cloned) created.push(`~/.skaile/sources/${n}/`);
6342
6344
  if (hydrate.failed.length > 0) {
@@ -6362,7 +6364,7 @@ program.command("init [project-dir]").description("Initialize a project director
6362
6364
  console.log();
6363
6365
  });
6364
6366
  program.command("setup").description("Interactive provider setup wizard").action(async () => {
6365
- const { cmdSetup } = await import('../setup-ACMP3QZC.js');
6367
+ const { cmdSetup } = await import('../setup-GBSQX7JF.js');
6366
6368
  await cmdSetup([], { projectDir: process.cwd() });
6367
6369
  });
6368
6370
  program.addCommand(makeInstallCommand());