@skaile/workspaces 4.37.0 → 4.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/dist/app-sdk/index.js +1 -1
  3. package/dist/{asset-feeds-KTRFFJYM.js → asset-feeds-KXL45ALC.js} +16 -16
  4. package/dist/asset-feeds-KXL45ALC.js.map +1 -0
  5. package/dist/asset-manager/catalog-deployer.js +9 -8
  6. package/dist/asset-manager/index.js +15 -14
  7. package/dist/asset-manager/installer.js +11 -10
  8. package/dist/asset-manager/renderers.js +2 -2
  9. package/dist/asset-manager/src/index.d.ts +77 -18
  10. package/dist/asset-manager/src/index.d.ts.map +1 -1
  11. package/dist/asset-manager/src/installer.d.ts +11 -1
  12. package/dist/asset-manager/src/installer.d.ts.map +1 -1
  13. package/dist/bridge/drivers/claude-sdk.js +14 -13
  14. package/dist/bridge/drivers/claude-sdk.js.map +1 -1
  15. package/dist/bridge/drivers/codex.js +11 -10
  16. package/dist/bridge/drivers/codex.js.map +1 -1
  17. package/dist/bridge/drivers/continue.js +12 -11
  18. package/dist/bridge/drivers/continue.js.map +1 -1
  19. package/dist/bridge/drivers/echo.js +3 -3
  20. package/dist/bridge/drivers/gemini.js +6 -6
  21. package/dist/bridge/drivers/goose.js +12 -11
  22. package/dist/bridge/drivers/goose.js.map +1 -1
  23. package/dist/bridge/drivers/omp.js +4 -4
  24. package/dist/bridge/drivers/opencode.js +12 -11
  25. package/dist/bridge/drivers/opencode.js.map +1 -1
  26. package/dist/bridge/drivers/qwen.js +6 -6
  27. package/dist/bridge/index.js +15 -14
  28. package/dist/{chunk-SGMCSVTO.js → chunk-252TK4RU.js} +8 -8
  29. package/dist/{chunk-SGMCSVTO.js.map → chunk-252TK4RU.js.map} +1 -1
  30. package/dist/{chunk-VOEBLPXO.js → chunk-2EL2PBRC.js} +3 -3
  31. package/dist/{chunk-VOEBLPXO.js.map → chunk-2EL2PBRC.js.map} +1 -1
  32. package/dist/{chunk-VRFKCF3R.js → chunk-36ML6SFP.js} +4 -4
  33. package/dist/{chunk-VRFKCF3R.js.map → chunk-36ML6SFP.js.map} +1 -1
  34. package/dist/{chunk-YU433JEL.js → chunk-3C3ODIDE.js} +6 -6
  35. package/dist/{chunk-YU433JEL.js.map → chunk-3C3ODIDE.js.map} +1 -1
  36. package/dist/{chunk-2D3C4AJP.js → chunk-5CYEWBPB.js} +11 -4
  37. package/dist/chunk-5CYEWBPB.js.map +1 -0
  38. package/dist/{chunk-SQ7IN7KR.js → chunk-5K2VT6E2.js} +3 -3
  39. package/dist/{chunk-SQ7IN7KR.js.map → chunk-5K2VT6E2.js.map} +1 -1
  40. package/dist/{chunk-U4CNCL7Q.js → chunk-5LF27VUB.js} +12 -12
  41. package/dist/{chunk-U4CNCL7Q.js.map → chunk-5LF27VUB.js.map} +1 -1
  42. package/dist/{chunk-NTASYPDN.js → chunk-5NYBY6ZE.js} +3 -3
  43. package/dist/{chunk-NTASYPDN.js.map → chunk-5NYBY6ZE.js.map} +1 -1
  44. package/dist/{chunk-WTBXGJCD.js → chunk-5RWL4L3X.js} +10 -10
  45. package/dist/{chunk-WTBXGJCD.js.map → chunk-5RWL4L3X.js.map} +1 -1
  46. package/dist/{chunk-FLGLODDF.js → chunk-7RC37XFW.js} +3 -3
  47. package/dist/{chunk-FLGLODDF.js.map → chunk-7RC37XFW.js.map} +1 -1
  48. package/dist/{chunk-OPBGV4DX.js → chunk-7SAWDPUT.js} +3 -3
  49. package/dist/{chunk-OPBGV4DX.js.map → chunk-7SAWDPUT.js.map} +1 -1
  50. package/dist/{chunk-GEEW6SY2.js → chunk-A5EDMBFG.js} +2 -2
  51. package/dist/{chunk-GEEW6SY2.js.map → chunk-A5EDMBFG.js.map} +1 -1
  52. package/dist/{chunk-QABZZROM.js → chunk-ARUJBGAH.js} +3 -3
  53. package/dist/{chunk-QABZZROM.js.map → chunk-ARUJBGAH.js.map} +1 -1
  54. package/dist/{chunk-6BEGKO2Q.js → chunk-B4IAZTZZ.js} +4 -3
  55. package/dist/chunk-B4IAZTZZ.js.map +1 -0
  56. package/dist/{chunk-FZFCOQTI.js → chunk-BCUVRJXV.js} +3 -3
  57. package/dist/{chunk-FZFCOQTI.js.map → chunk-BCUVRJXV.js.map} +1 -1
  58. package/dist/{chunk-UTZEHXYT.js → chunk-C75VKXAM.js} +3 -3
  59. package/dist/{chunk-UTZEHXYT.js.map → chunk-C75VKXAM.js.map} +1 -1
  60. package/dist/{chunk-5JAO4MXA.js → chunk-DOVURNRK.js} +3 -3
  61. package/dist/{chunk-5JAO4MXA.js.map → chunk-DOVURNRK.js.map} +1 -1
  62. package/dist/{chunk-P4VHQA4N.js → chunk-DSB6X25D.js} +3 -3
  63. package/dist/{chunk-P4VHQA4N.js.map → chunk-DSB6X25D.js.map} +1 -1
  64. package/dist/{chunk-OEBAXTQ4.js → chunk-EOKAFBJ7.js} +3 -3
  65. package/dist/{chunk-OEBAXTQ4.js.map → chunk-EOKAFBJ7.js.map} +1 -1
  66. package/dist/{chunk-ENXE4BKS.js → chunk-FTPKMJFD.js} +2 -2
  67. package/dist/{chunk-ENXE4BKS.js.map → chunk-FTPKMJFD.js.map} +1 -1
  68. package/dist/{chunk-MDBAEEY5.js → chunk-H7N6RWNF.js} +159 -7
  69. package/dist/chunk-H7N6RWNF.js.map +1 -0
  70. package/dist/{chunk-V2OQ3BI6.js → chunk-IDEA6CYI.js} +6 -5
  71. package/dist/chunk-IDEA6CYI.js.map +1 -0
  72. package/dist/{chunk-QKXDRBLL.js → chunk-JEPSP6XK.js} +11 -80
  73. package/dist/chunk-JEPSP6XK.js.map +1 -0
  74. package/dist/{chunk-KIFJWSNC.js → chunk-KAJH3XPW.js} +7 -3
  75. package/dist/chunk-KAJH3XPW.js.map +1 -0
  76. package/dist/{chunk-2QYQOJ2F.js → chunk-KC3OF6B2.js} +3 -3
  77. package/dist/{chunk-2QYQOJ2F.js.map → chunk-KC3OF6B2.js.map} +1 -1
  78. package/dist/{chunk-5SGS5SN2.js → chunk-M7GPCWEV.js} +4 -4
  79. package/dist/{chunk-5SGS5SN2.js.map → chunk-M7GPCWEV.js.map} +1 -1
  80. package/dist/{chunk-L7R52OOV.js → chunk-NLKIW2VI.js} +3 -3
  81. package/dist/{chunk-L7R52OOV.js.map → chunk-NLKIW2VI.js.map} +1 -1
  82. package/dist/{chunk-DFZDL62S.js → chunk-OLMNDIAU.js} +14 -9
  83. package/dist/chunk-OLMNDIAU.js.map +1 -0
  84. package/dist/{chunk-3SUWLY3H.js → chunk-OQRB7JUS.js} +3 -3
  85. package/dist/{chunk-3SUWLY3H.js.map → chunk-OQRB7JUS.js.map} +1 -1
  86. package/dist/{chunk-USJWXEXS.js → chunk-P7BU6DAC.js} +235 -48
  87. package/dist/chunk-P7BU6DAC.js.map +1 -0
  88. package/dist/{chunk-MRS5YHPI.js → chunk-QBQITQAM.js} +3 -3
  89. package/dist/{chunk-MRS5YHPI.js.map → chunk-QBQITQAM.js.map} +1 -1
  90. package/dist/{chunk-KN5Y5BXK.js → chunk-QVLQGXT6.js} +5 -5
  91. package/dist/{chunk-KN5Y5BXK.js.map → chunk-QVLQGXT6.js.map} +1 -1
  92. package/dist/{chunk-RZXP5ZER.js → chunk-RDYI4MML.js} +3 -3
  93. package/dist/{chunk-RZXP5ZER.js.map → chunk-RDYI4MML.js.map} +1 -1
  94. package/dist/{chunk-SOFPA4S4.js → chunk-SM6EUQMY.js} +8 -8
  95. package/dist/{chunk-SOFPA4S4.js.map → chunk-SM6EUQMY.js.map} +1 -1
  96. package/dist/chunk-SSCPTAFJ.js +29 -0
  97. package/dist/chunk-SSCPTAFJ.js.map +1 -0
  98. package/dist/chunk-TLKM4M47.js +78 -0
  99. package/dist/chunk-TLKM4M47.js.map +1 -0
  100. package/dist/{chunk-NFECHLV6.js → chunk-TNWXGHLD.js} +3 -3
  101. package/dist/{chunk-NFECHLV6.js.map → chunk-TNWXGHLD.js.map} +1 -1
  102. package/dist/{chunk-R2SYODNK.js → chunk-TQ6XNACF.js} +274 -67
  103. package/dist/chunk-TQ6XNACF.js.map +1 -0
  104. package/dist/{chunk-WQULDAH2.js → chunk-TSVRKUGV.js} +2 -2
  105. package/dist/{chunk-WQULDAH2.js.map → chunk-TSVRKUGV.js.map} +1 -1
  106. package/dist/{chunk-H3KXUUYQ.js → chunk-VDBP6Y5M.js} +4 -4
  107. package/dist/{chunk-H3KXUUYQ.js.map → chunk-VDBP6Y5M.js.map} +1 -1
  108. package/dist/{chunk-XN7DAZB7.js → chunk-VJNTB4DN.js} +5 -5
  109. package/dist/chunk-VJNTB4DN.js.map +1 -0
  110. package/dist/{chunk-7YCPY6NC.js → chunk-VXPFSZDT.js} +6 -6
  111. package/dist/{chunk-7YCPY6NC.js.map → chunk-VXPFSZDT.js.map} +1 -1
  112. package/dist/{chunk-UFBURH6K.js → chunk-WCWFS36P.js} +4 -4
  113. package/dist/{chunk-UFBURH6K.js.map → chunk-WCWFS36P.js.map} +1 -1
  114. package/dist/{chunk-A5RRXBLI.js → chunk-X4DKUGV4.js} +5 -5
  115. package/dist/{chunk-A5RRXBLI.js.map → chunk-X4DKUGV4.js.map} +1 -1
  116. package/dist/{chunk-BSIHJZKN.js → chunk-XU7JET5Z.js} +107 -26
  117. package/dist/chunk-XU7JET5Z.js.map +1 -0
  118. package/dist/{chunk-VCLN2IUM.js → chunk-YCMZHL4T.js} +31 -27
  119. package/dist/chunk-YCMZHL4T.js.map +1 -0
  120. package/dist/{chunk-S63H4HDH.js → chunk-YQEF36D5.js} +4 -4
  121. package/dist/{chunk-S63H4HDH.js.map → chunk-YQEF36D5.js.map} +1 -1
  122. package/dist/{chunk-FJYOQMXT.js → chunk-YV3YI3TA.js} +32 -16
  123. package/dist/chunk-YV3YI3TA.js.map +1 -0
  124. package/dist/cli/index.js +755 -533
  125. package/dist/cli/index.js.map +1 -1
  126. package/dist/cli/src/asset-feeds.d.ts.map +1 -1
  127. package/dist/cli/src/commands/asset-cmd.d.ts.map +1 -1
  128. package/dist/cli/src/commands/cache.d.ts.map +1 -1
  129. package/dist/cli/src/commands/catalog.d.ts +28 -3
  130. package/dist/cli/src/commands/catalog.d.ts.map +1 -1
  131. package/dist/cli/src/commands/complete-resolvers.d.ts +1 -7
  132. package/dist/cli/src/commands/complete-resolvers.d.ts.map +1 -1
  133. package/dist/cli/src/commands/complete.d.ts.map +1 -1
  134. package/dist/cli/src/commands/diff.d.ts +3 -1
  135. package/dist/cli/src/commands/diff.d.ts.map +1 -1
  136. package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
  137. package/dist/cli/src/commands/library-index.d.ts +8 -0
  138. package/dist/cli/src/commands/library-index.d.ts.map +1 -1
  139. package/dist/cli/src/commands/library-publish.d.ts +7 -2
  140. package/dist/cli/src/commands/library-publish.d.ts.map +1 -1
  141. package/dist/cli/src/commands/manage.d.ts.map +1 -1
  142. package/dist/cli/src/commands/outdated.d.ts +12 -2
  143. package/dist/cli/src/commands/outdated.d.ts.map +1 -1
  144. package/dist/cli/src/commands/project.d.ts +2 -2
  145. package/dist/cli/src/commands/publish-core.d.ts +21 -0
  146. package/dist/cli/src/commands/publish-core.d.ts.map +1 -1
  147. package/dist/cli/src/commands/skailify-lib.d.ts +18 -1
  148. package/dist/cli/src/commands/skailify-lib.d.ts.map +1 -1
  149. package/dist/cli/src/commands/source-manifest-publish.d.ts.map +1 -1
  150. package/dist/cli/src/commands/store.d.ts.map +1 -1
  151. package/dist/cli/src/commands/update.d.ts.map +1 -1
  152. package/dist/cli/src/commands/validate.d.ts.map +1 -1
  153. package/dist/cli/src/paths.d.ts +1 -1
  154. package/dist/cli/src/paths.d.ts.map +1 -1
  155. package/dist/cli/src/store-auth.d.ts.map +1 -1
  156. package/dist/connectors/config.js +6 -5
  157. package/dist/connectors/index.js +19 -18
  158. package/dist/connectors-shared/index.js +2 -2
  159. package/dist/core/index.js +8 -7
  160. package/dist/core/manifest.js +2 -2
  161. package/dist/core/models.js +1 -1
  162. package/dist/core/publish-manifest.js +2 -2
  163. package/dist/core/ref.js +1 -1
  164. package/dist/core/runtime-assets.js +6 -5
  165. package/dist/core/src/asset-roots.d.ts +2 -12
  166. package/dist/core/src/asset-roots.d.ts.map +1 -1
  167. package/dist/core/src/cache-paths.d.ts +7 -3
  168. package/dist/core/src/cache-paths.d.ts.map +1 -1
  169. package/dist/core/src/index.d.ts +3 -3
  170. package/dist/core/src/index.d.ts.map +1 -1
  171. package/dist/core/src/lock.d.ts +27 -4
  172. package/dist/core/src/lock.d.ts.map +1 -1
  173. package/dist/core/src/models.d.ts +26 -6
  174. package/dist/core/src/models.d.ts.map +1 -1
  175. package/dist/core/src/repo-manager.d.ts.map +1 -1
  176. package/dist/core/src/settings.d.ts +2 -1
  177. package/dist/core/src/settings.d.ts.map +1 -1
  178. package/dist/core/src/store.d.ts.map +1 -1
  179. package/dist/core/src/workspace-config.d.ts.map +1 -1
  180. package/dist/core/store.js +2 -1
  181. package/dist/core/workspace-config.js +5 -4
  182. package/dist/deploy/index.js +8 -7
  183. package/dist/deploy/index.js.map +1 -1
  184. package/dist/discovery/index.js +5 -5
  185. package/dist/discovery/src/domains.d.ts +6 -1
  186. package/dist/discovery/src/domains.d.ts.map +1 -1
  187. package/dist/discovery/src/index.d.ts +1 -1
  188. package/dist/discovery/src/index.d.ts.map +1 -1
  189. package/dist/{ensure-sources-IGU65O72.js → ensure-sources-J5CDTQ36.js} +18 -17
  190. package/dist/ensure-sources-J5CDTQ36.js.map +1 -0
  191. package/dist/factory-assets/connectors/box.js +19 -18
  192. package/dist/factory-assets/connectors/deploy.js +19 -18
  193. package/dist/factory-assets/connectors/devserver.js +19 -18
  194. package/dist/factory-assets/connectors/flow/adapter.js +19 -18
  195. package/dist/factory-assets/connectors/flow/engine.js +9 -8
  196. package/dist/factory-assets/connectors/flow/run-flow.js +21 -20
  197. package/dist/factory-assets/connectors/flow.js +19 -18
  198. package/dist/factory-assets/connectors/git.js +19 -18
  199. package/dist/factory-assets/connectors/gmail.js +19 -18
  200. package/dist/factory-assets/connectors/googledrive.js +19 -18
  201. package/dist/factory-assets/connectors/local.js +19 -18
  202. package/dist/factory-assets/connectors/mattermost.js +19 -18
  203. package/dist/factory-assets/connectors/memory.js +19 -18
  204. package/dist/factory-assets/connectors/minio.js +19 -18
  205. package/dist/factory-assets/connectors/postgres.js +19 -18
  206. package/dist/factory-assets/connectors/s3.js +19 -18
  207. package/dist/factory-assets/connectors/sharepoint.js +19 -18
  208. package/dist/factory-assets/connectors/sqlite.js +19 -18
  209. package/dist/factory-assets/connectors/static-server.js +19 -18
  210. package/dist/factory-assets/connectors/tunnel.js +19 -18
  211. package/dist/factory-assets/connectors/webdav.js +19 -18
  212. package/dist/factory-assets/connectors/xstate-store.js +19 -18
  213. package/dist/factory-assets/connectors/xstate.js +19 -18
  214. package/dist/flows-PX53XFV7.js +25 -0
  215. package/dist/{flows-6MDMBQUZ.js.map → flows-PX53XFV7.js.map} +1 -1
  216. package/dist/{helpers-IELIL4YR.js → helpers-EP6H3O3S.js} +18 -17
  217. package/dist/{helpers-IELIL4YR.js.map → helpers-EP6H3O3S.js.map} +1 -1
  218. package/dist/library/index.js +12 -11
  219. package/dist/library/install.js +2 -2
  220. package/dist/library/src/config.d.ts +11 -9
  221. package/dist/library/src/config.d.ts.map +1 -1
  222. package/dist/library/src/index.d.ts +2 -2
  223. package/dist/library/src/index.d.ts.map +1 -1
  224. package/dist/library/src/local/db.d.ts.map +1 -1
  225. package/dist/library/src/local/library-manager.d.ts +7 -0
  226. package/dist/library/src/local/library-manager.d.ts.map +1 -1
  227. package/dist/library/src/local/library.d.ts +5 -4
  228. package/dist/library/src/local/library.d.ts.map +1 -1
  229. package/dist/library/src/local/schema.d.ts +2 -0
  230. package/dist/library/src/local/schema.d.ts.map +1 -1
  231. package/dist/library/src/local/sidecar-paths.d.ts.map +1 -1
  232. package/dist/library/src/local/store-paths.d.ts.map +1 -1
  233. package/dist/library/src/remote/cache.d.ts.map +1 -1
  234. package/dist/library/src/sync/git-driver.d.ts +34 -0
  235. package/dist/library/src/sync/git-driver.d.ts.map +1 -1
  236. package/dist/{library-publish-YKBYHZ43.js → library-publish-KKT73FJK.js} +95 -41
  237. package/dist/library-publish-KKT73FJK.js.map +1 -0
  238. package/dist/open-library-R62UBL6E.js +38 -0
  239. package/dist/{open-library-ULRYWTEA.js.map → open-library-R62UBL6E.js.map} +1 -1
  240. package/dist/paths-W4LDORQQ.js +21 -0
  241. package/dist/{paths-4MTICP3T.js.map → paths-W4LDORQQ.js.map} +1 -1
  242. package/dist/{plugin-store-GQ4WQZJ2.js → plugin-store-D45CREMJ.js} +10 -9
  243. package/dist/plugin-store-D45CREMJ.js.map +1 -0
  244. package/dist/project-GCW5DFAB.js +34 -0
  245. package/dist/{project-VKYNDEB6.js.map → project-GCW5DFAB.js.map} +1 -1
  246. package/dist/resolver/index.js +9 -8
  247. package/dist/runner/index.js +28 -27
  248. package/dist/runner/src/composition/bootstrap.d.ts +1 -1
  249. package/dist/runner/src/composition/bootstrap.d.ts.map +1 -1
  250. package/dist/runner/src/resource-handler.d.ts +32 -3
  251. package/dist/runner/src/resource-handler.d.ts.map +1 -1
  252. package/dist/runner/src/runtime-session-emit.d.ts +2 -1
  253. package/dist/runner/src/runtime-session-emit.d.ts.map +1 -1
  254. package/dist/runner/src/serve.d.ts.map +1 -1
  255. package/dist/sdk/asset-manager.js +15 -14
  256. package/dist/sdk/bridge.js +15 -14
  257. package/dist/sdk/core.js +8 -7
  258. package/dist/sdk/flow.js +9 -8
  259. package/dist/sdk/index.js +28 -27
  260. package/dist/sdk/index.js.map +1 -1
  261. package/dist/sdk/resolver.js +9 -8
  262. package/dist/sdk/runner.js +28 -27
  263. package/dist/sdk/session.js +2 -2
  264. package/dist/sdk/types.js +1 -1
  265. package/dist/secrets/index.js +2 -1
  266. package/dist/secrets/src/providers/local.d.ts.map +1 -1
  267. package/dist/session/index.js +2 -2
  268. package/dist/{setup-INJFK3VJ.js → setup-Q3LXY5AE.js} +25 -24
  269. package/dist/setup-Q3LXY5AE.js.map +1 -0
  270. package/dist/skills-R3RPIPWP.js +25 -0
  271. package/dist/{skills-JHUY4DFE.js.map → skills-R3RPIPWP.js.map} +1 -1
  272. package/dist/{source-IZXICUBU.js → source-CFQESKJU.js} +21 -20
  273. package/dist/{source-IZXICUBU.js.map → source-CFQESKJU.js.map} +1 -1
  274. package/dist/{source-manifest-publish-4JHOT4PA.js → source-manifest-publish-3TCBA2RV.js} +24 -25
  275. package/dist/source-manifest-publish-3TCBA2RV.js.map +1 -0
  276. package/dist/tui/index.js +28 -27
  277. package/dist/tui/index.js.map +1 -1
  278. package/dist/types/index.js +1 -1
  279. package/dist/types/manifests.js +1 -1
  280. package/dist/types/src/events.d.ts +73 -4
  281. package/dist/types/src/events.d.ts.map +1 -1
  282. package/dist/types/src/index.d.ts +2 -2
  283. package/dist/types/src/index.d.ts.map +1 -1
  284. package/dist/types/src/manifests/index.d.ts +1 -1
  285. package/dist/types/src/manifests/index.d.ts.map +1 -1
  286. package/dist/types/src/manifests/skill.d.ts +10 -0
  287. package/dist/types/src/manifests/skill.d.ts.map +1 -1
  288. package/dist/types/src/protocol.d.ts +3 -3
  289. package/dist/types/src/protocol.d.ts.map +1 -1
  290. package/dist/types/src/version.d.ts +27 -1
  291. package/dist/types/src/version.d.ts.map +1 -1
  292. package/dist/workspace-plugin/adapters/mcp.js +15 -14
  293. package/dist/workspace-plugin/adapters/omp.js +7 -7
  294. package/dist/workspace-plugin/index.js +1 -1
  295. package/package.json +1 -1
  296. package/dist/asset-feeds-KTRFFJYM.js.map +0 -1
  297. package/dist/chunk-2D3C4AJP.js.map +0 -1
  298. package/dist/chunk-6BEGKO2Q.js.map +0 -1
  299. package/dist/chunk-BSIHJZKN.js.map +0 -1
  300. package/dist/chunk-DFZDL62S.js.map +0 -1
  301. package/dist/chunk-FJYOQMXT.js.map +0 -1
  302. package/dist/chunk-KIFJWSNC.js.map +0 -1
  303. package/dist/chunk-MDBAEEY5.js.map +0 -1
  304. package/dist/chunk-MIRWAK5C.js +0 -158
  305. package/dist/chunk-MIRWAK5C.js.map +0 -1
  306. package/dist/chunk-QKXDRBLL.js.map +0 -1
  307. package/dist/chunk-R2SYODNK.js.map +0 -1
  308. package/dist/chunk-USJWXEXS.js.map +0 -1
  309. package/dist/chunk-V2OQ3BI6.js.map +0 -1
  310. package/dist/chunk-VCLN2IUM.js.map +0 -1
  311. package/dist/chunk-XN7DAZB7.js.map +0 -1
  312. package/dist/ensure-sources-IGU65O72.js.map +0 -1
  313. package/dist/flows-6MDMBQUZ.js +0 -24
  314. package/dist/library-publish-YKBYHZ43.js.map +0 -1
  315. package/dist/open-library-ULRYWTEA.js +0 -37
  316. package/dist/paths-4MTICP3T.js +0 -20
  317. package/dist/plugin-store-GQ4WQZJ2.js.map +0 -1
  318. package/dist/project-VKYNDEB6.js +0 -33
  319. package/dist/setup-INJFK3VJ.js.map +0 -1
  320. package/dist/skills-JHUY4DFE.js +0 -24
  321. package/dist/source-manifest-publish-4JHOT4PA.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../workspace-plugin/src/adapters/mcp.ts"],"names":["z"],"mappings":"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","file":"chunk-A5RRXBLI.js","sourcesContent":["// Static namespace import so bun --compile bundles zod into the binary.\n// Dynamic import(\"zod\") via a string variable evades bun's static analysis\n// and fails at runtime inside /$bunfs/. The unwrap (zNS.z ?? zNS.default\n// ?? zNS) handles both bun's native ESM and vitest's CJS-interop resolver,\n// which return the zod namespace at different keys.\nimport * as zNS from \"zod\";\nimport { withActivityLabelDefs } from \"@skaile/workspaces/types\";\nimport type { WorkspacePlugin } from \"../plugin.js\";\nimport {\n connectorDescribe,\n connectorExec,\n connectorList,\n connectorLoadSkill,\n connectorRead,\n connectorSearch,\n connectorWrite,\n mountList,\n mountRead,\n mountStatus,\n mountSync,\n} from \"../tools/connectors.js\";\nimport {\n flowFindFlowForSession,\n flowGetSession,\n flowList,\n flowListSessions,\n flowShow,\n} from \"../tools/flows.js\";\nimport { sessionGet, sessionList } from \"../tools/sessions.js\";\nimport {\n skillCheckRequirements,\n skillGetPreamble,\n skillList,\n skillListDomains,\n skillSearch,\n skillShow,\n} from \"../tools/skills.js\";\nimport {\n workspaceInfo,\n workspaceReload,\n workspaceTestSecret,\n workspaceValidate,\n} from \"../tools/validator.js\";\n\nconst zStatic: any = (zNS as any).z ?? (zNS as any).default ?? zNS;\n\n/**\n * One workspace plugin tool — name, description, a zod raw-shape input schema,\n * and an async handler returning a `ToolResult`.\n *\n * Carries **zero MCP/SDK dependency**: the same definitions feed both the\n * in-process Claude Agent SDK server ({@link buildWorkspaceMcpServer}) and the\n * raw stdio MCP server ({@link buildWorkspaceMcpStdioServer}).\n */\nexport interface WorkspaceToolDef {\n name: string;\n description: string;\n inputSchema: Record<string, unknown>;\n handler: (args: any) => Promise<unknown>;\n}\n\n/**\n * Build the 28 workspace plugin tool definitions.\n *\n * Tool groups:\n * - 4 mount tools (`mount_list`, `mount_sync`, `mount_status`, `mount_read`)\n * - 5 flow tools (`flow_list`, `flow_show`, `flow_list_sessions`, `flow_get_session`, `flow_find_flow_for_session`)\n * - 6 skill tools (`skill_list`, `skill_list_domains`, `skill_show`, `skill_search`, `skill_check_requirements`, `skill_get_preamble`)\n * - 2 session tools (`session_list`, `session_get`)\n * - 7 connector tools (`connector_list`, `connector_read`, `connector_write`, `connector_search`, `connector_exec`, `connector_load_skill`, `connector_describe`)\n * - 4 workspace tools (`workspace_validate`, `workspace_info`, `workspace_test_secret`, `workspace_reload`)\n *\n * @param plugin - A booted `WorkspacePlugin` instance.\n * @returns The 28 tool definitions, free of any MCP/SDK coupling.\n *\n * @docLink packages/workspace-plugin/concepts#adapters\n */\nexport function buildWorkspaceToolDefs(plugin: WorkspacePlugin): WorkspaceToolDef[] {\n const z: any = zStatic;\n\n const driver = plugin.driver ?? \"omp\";\n const p = plugin.projectDir;\n\n return [\n // Mount tools\n {\n name: \"mount_list\",\n description: \"List all mounts declared in skaile.yaml with their mount status.\",\n inputSchema: {},\n handler: async () => mountList(plugin.connectorManager),\n },\n {\n name: \"mount_sync\",\n description: \"Sync a mount — pull latest from remote (git, S3, WebDAV).\",\n inputSchema: { mount_id: z.string().describe(\"Mount ID from mount_list\") },\n handler: async ({ mount_id }: { mount_id: string }) =>\n mountSync(plugin.connectorManager, mount_id),\n },\n {\n name: \"mount_status\",\n description: \"Get the mount status and last sync time for a mount.\",\n inputSchema: { mount_id: z.string() },\n handler: async ({ mount_id }: { mount_id: string }) =>\n mountStatus(plugin.connectorManager, mount_id),\n },\n {\n name: \"mount_read\",\n description: \"Read a file from a mounted mount by path.\",\n inputSchema: {\n mount_id: z.string(),\n path: z.string().describe(\"Relative path within the mount\"),\n },\n handler: async ({ mount_id, path }: { mount_id: string; path: string }) =>\n mountRead(plugin.connectorManager, mount_id, path),\n },\n // Flow tools\n {\n name: \"flow_list\",\n description: \"List all available flow definitions from ai-assets.\",\n inputSchema: {},\n handler: async () => flowList(p),\n },\n {\n name: \"flow_show\",\n description: \"Show full flow definition (nodes + edges) for a flow ID.\",\n inputSchema: { flow_id: z.string().describe(\"Flow ID from flow_list\") },\n handler: async ({ flow_id }: { flow_id: string }) => flowShow(p, flow_id),\n },\n {\n name: \"flow_list_sessions\",\n description: \"List past and active flow run sessions for this workspace.\",\n inputSchema: {},\n handler: async () => flowListSessions(p),\n },\n {\n name: \"flow_get_session\",\n description: \"Get driver metadata for a specific flow run session.\",\n inputSchema: { run_id: z.string().describe(\"Run ID from flow_list_sessions\") },\n handler: async ({ run_id }: { run_id: string }) => flowGetSession(p, run_id),\n },\n {\n name: \"flow_find_flow_for_session\",\n description: \"Resolve and return the flow definition used in a past session.\",\n inputSchema: { run_id: z.string() },\n handler: async ({ run_id }: { run_id: string }) => flowFindFlowForSession(p, run_id),\n },\n // Skill tools\n {\n name: \"skill_list\",\n description: \"List all skills in the ai-assets catalog, optionally filtered by domain.\",\n inputSchema: { domain: z.string().optional().describe(\"Domain name filter\") },\n handler: async ({ domain }: { domain?: string }) => skillList(p, domain),\n },\n {\n name: \"skill_list_domains\",\n description: \"List all skill domains (top-level ai-assets directories with skills).\",\n inputSchema: {},\n handler: async () => skillListDomains(p),\n },\n {\n name: \"skill_show\",\n description: \"Show the full SKILL.md content for a skill ID.\",\n inputSchema: { skill_id: z.string().describe(\"Skill ID from skill_list\") },\n handler: async ({ skill_id }: { skill_id: string }) => skillShow(p, skill_id),\n },\n {\n name: \"skill_search\",\n description: \"Search skills by name, description, or keywords.\",\n inputSchema: { query: z.string() },\n handler: async ({ query }: { query: string }) => skillSearch(p, query),\n },\n {\n name: \"skill_check_requirements\",\n description: \"Validate that all skill prerequisites are met in the target directory.\",\n inputSchema: {\n skill_id: z.string(),\n target_dir: z\n .string()\n .optional()\n .describe(\"Directory to check against (default: projectDir)\"),\n },\n handler: async ({ skill_id, target_dir }: { skill_id: string; target_dir?: string }) =>\n skillCheckRequirements(p, skill_id, target_dir ?? p),\n },\n {\n name: \"skill_get_preamble\",\n description: \"Get the REQUIRES/INPUT/READS/WRITES DSL preamble for a skill.\",\n inputSchema: { skill_id: z.string() },\n handler: async ({ skill_id }: { skill_id: string }) => skillGetPreamble(p, skill_id),\n },\n // Session tools\n {\n name: \"session_list\",\n description: \"List all past agent run sessions for this workspace, sorted newest first.\",\n inputSchema: {},\n handler: async () => sessionList(p),\n },\n {\n name: \"session_get\",\n description: \"Get full metadata for a specific session by run ID.\",\n inputSchema: { run_id: z.string() },\n handler: async ({ run_id }: { run_id: string }) => sessionGet(p, run_id),\n },\n // Connector tools\n {\n name: \"connector_list\",\n description:\n \"List connectors declared in skaile.yaml as {connected, failed}. `failed` holds connectors that did not connect this session, with the failure reason — their mount paths are dead directories, not synced workspaces.\",\n inputSchema: {},\n handler: async () => connectorList(plugin.connectorManager),\n },\n {\n name: \"connector_read\",\n description: \"Read content from a connector by path.\",\n inputSchema: {\n connector_id: z.string().describe(\"Connector ID from connector_list\"),\n path: z.string().describe(\"Path within the connector\"),\n },\n handler: async ({ connector_id, path }: { connector_id: string; path: string }) =>\n connectorRead(plugin.connectorManager, connector_id, path),\n },\n {\n name: \"connector_write\",\n description: \"Write content to a connector by path.\",\n inputSchema: {\n connector_id: z.string(),\n path: z.string(),\n content: z.string().describe(\"Content to write\"),\n },\n handler: async ({\n connector_id,\n path,\n content,\n }: {\n connector_id: string;\n path: string;\n content: string;\n }) => connectorWrite(plugin.connectorManager, connector_id, path, content),\n },\n {\n name: \"connector_search\",\n description: \"Search within a connector by query string.\",\n inputSchema: {\n connector_id: z.string(),\n query: z.string().describe(\"Search query\"),\n },\n handler: async ({ connector_id, query }: { connector_id: string; query: string }) =>\n connectorSearch(plugin.connectorManager, connector_id, query),\n },\n {\n name: \"connector_exec\",\n description: \"Execute a custom operation on a connector.\",\n inputSchema: {\n connector_id: z.string(),\n operation: z.string().describe(\"Operation name from connector_describe\"),\n args: z.record(z.string(), z.unknown()).describe(\"Operation arguments\"),\n },\n handler: async ({\n connector_id,\n operation,\n args,\n }: {\n connector_id: string;\n operation: string;\n args: Record<string, unknown>;\n }) => connectorExec(plugin.connectorManager, connector_id, operation, args),\n },\n {\n name: \"connector_load_skill\",\n description: \"Load the rendered skill body for a connector (operations + usage).\",\n inputSchema: {\n connector_id: z.string(),\n },\n handler: async ({ connector_id }: { connector_id: string }) =>\n connectorLoadSkill(plugin.connectorManager, connector_id),\n },\n {\n name: \"connector_describe\",\n description: \"Describe a connector's capabilities via its RuntimeSkillDescriptor.\",\n inputSchema: {\n connector_id: z.string(),\n },\n handler: async ({ connector_id }: { connector_id: string }) =>\n connectorDescribe(plugin.connectorManager, connector_id),\n },\n // Validator tools\n {\n name: \"workspace_validate\",\n description: \"Run a full health check: connectors, mounts, secrets, driver binary.\",\n inputSchema: {},\n handler: async () => workspaceValidate(plugin, driver),\n },\n {\n name: \"workspace_info\",\n description: \"Show workspace configuration: driver, model, provider, resource counts.\",\n inputSchema: {},\n handler: async () => workspaceInfo(plugin, driver, plugin.model),\n },\n {\n name: \"workspace_test_secret\",\n description: \"Test resolution of one secret reference (env:VAR, forge:key).\",\n inputSchema: { ref: z.string().describe(\"Secret ref e.g. env:ANTHROPIC_API_KEY\") },\n handler: async ({ ref }: { ref: string }) => workspaceTestSecret(ref),\n },\n {\n name: \"workspace_reload\",\n description: \"Re-read skaile.yaml and re-sync the plugin state.\",\n inputSchema: {},\n handler: async () => workspaceReload(plugin),\n },\n ];\n}\n\n/**\n * Build the **in-process** workspace MCP server via the Claude Agent SDK's\n * `createSdkMcpServer`. This shape is what the runner embeds into a Claude\n * Agent SDK `query()` call — the runner *is* the Claude Agent SDK host.\n *\n * Returns `null` when `@anthropic-ai/claude-agent-sdk` is not installed\n * (graceful degradation for non-Claude-Code environments).\n *\n * For the standalone `skaile mcp-server` stdio subprocess use\n * {@link buildWorkspaceMcpStdioServer} / {@link runMcpServerStdio} instead —\n * those carry no Claude Agent SDK dependency.\n *\n * @param plugin - A booted `WorkspacePlugin` instance.\n * @returns The SDK MCP server object or `null` if the SDK is unavailable.\n *\n * @docLink packages/workspace-plugin/concepts#adapters\n */\nexport async function buildWorkspaceMcpServer(plugin: WorkspacePlugin): Promise<unknown | null> {\n let sdk: any;\n try {\n sdk = await import(\"@anthropic-ai/claude-agent-sdk\");\n } catch {\n return null;\n }\n return sdk.createSdkMcpServer({\n name: \"skaile-workspace\",\n tools: withActivityLabelDefs(buildWorkspaceToolDefs(plugin), zStatic),\n });\n}\n\n/**\n * Build a **raw stdio** workspace MCP server on `@modelcontextprotocol/sdk` —\n * no Claude Agent SDK. This is the correct shape for the `skaile mcp-server`\n * stdio subprocess that MCP-client agents (Claude Code, Codex, …) spawn.\n * Runs on plain Node.\n *\n * The returned server is not yet connected — call `.connect(transport)` (or\n * use {@link runMcpServerStdio}).\n *\n * @param plugin - A booted `WorkspacePlugin` instance.\n * @returns A `McpServer` with all 28 workspace tools registered.\n *\n * @docLink packages/workspace-plugin/concepts#adapters\n */\nexport async function buildWorkspaceMcpStdioServer(plugin: WorkspacePlugin): Promise<any> {\n const { McpServer } = await import(\"@modelcontextprotocol/sdk/server/mcp.js\" as string);\n const server = new McpServer({ name: \"skaile-workspace\", version: \"1.0.0\" });\n for (const def of buildWorkspaceToolDefs(plugin)) {\n server.registerTool(\n def.name,\n { description: def.description, inputSchema: def.inputSchema },\n def.handler,\n );\n }\n return server;\n}\n\n/**\n * Start the workspace MCP server over stdio transport.\n *\n * Builds the raw `@modelcontextprotocol/sdk` server via\n * {@link buildWorkspaceMcpStdioServer} and connects a `StdioServerTransport`.\n * No `@anthropic-ai/claude-agent-sdk` dependency anywhere on this path.\n *\n * @param plugin - A booted `WorkspacePlugin` instance.\n *\n * @docLink packages/workspace-plugin/concepts#adapters\n */\nexport async function runMcpServerStdio(plugin: WorkspacePlugin): Promise<void> {\n const server = await buildWorkspaceMcpStdioServer(plugin);\n const { StdioServerTransport } = await import(\n \"@modelcontextprotocol/sdk/server/stdio.js\" as string\n );\n await server.connect(new StdioServerTransport());\n}\n"]}
1
+ {"version":3,"sources":["../workspace-plugin/src/adapters/mcp.ts"],"names":["z"],"mappings":"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","file":"chunk-X4DKUGV4.js","sourcesContent":["// Static namespace import so bun --compile bundles zod into the binary.\n// Dynamic import(\"zod\") via a string variable evades bun's static analysis\n// and fails at runtime inside /$bunfs/. The unwrap (zNS.z ?? zNS.default\n// ?? zNS) handles both bun's native ESM and vitest's CJS-interop resolver,\n// which return the zod namespace at different keys.\nimport * as zNS from \"zod\";\nimport { withActivityLabelDefs } from \"@skaile/workspaces/types\";\nimport type { WorkspacePlugin } from \"../plugin.js\";\nimport {\n connectorDescribe,\n connectorExec,\n connectorList,\n connectorLoadSkill,\n connectorRead,\n connectorSearch,\n connectorWrite,\n mountList,\n mountRead,\n mountStatus,\n mountSync,\n} from \"../tools/connectors.js\";\nimport {\n flowFindFlowForSession,\n flowGetSession,\n flowList,\n flowListSessions,\n flowShow,\n} from \"../tools/flows.js\";\nimport { sessionGet, sessionList } from \"../tools/sessions.js\";\nimport {\n skillCheckRequirements,\n skillGetPreamble,\n skillList,\n skillListDomains,\n skillSearch,\n skillShow,\n} from \"../tools/skills.js\";\nimport {\n workspaceInfo,\n workspaceReload,\n workspaceTestSecret,\n workspaceValidate,\n} from \"../tools/validator.js\";\n\nconst zStatic: any = (zNS as any).z ?? (zNS as any).default ?? zNS;\n\n/**\n * One workspace plugin tool — name, description, a zod raw-shape input schema,\n * and an async handler returning a `ToolResult`.\n *\n * Carries **zero MCP/SDK dependency**: the same definitions feed both the\n * in-process Claude Agent SDK server ({@link buildWorkspaceMcpServer}) and the\n * raw stdio MCP server ({@link buildWorkspaceMcpStdioServer}).\n */\nexport interface WorkspaceToolDef {\n name: string;\n description: string;\n inputSchema: Record<string, unknown>;\n handler: (args: any) => Promise<unknown>;\n}\n\n/**\n * Build the 28 workspace plugin tool definitions.\n *\n * Tool groups:\n * - 4 mount tools (`mount_list`, `mount_sync`, `mount_status`, `mount_read`)\n * - 5 flow tools (`flow_list`, `flow_show`, `flow_list_sessions`, `flow_get_session`, `flow_find_flow_for_session`)\n * - 6 skill tools (`skill_list`, `skill_list_domains`, `skill_show`, `skill_search`, `skill_check_requirements`, `skill_get_preamble`)\n * - 2 session tools (`session_list`, `session_get`)\n * - 7 connector tools (`connector_list`, `connector_read`, `connector_write`, `connector_search`, `connector_exec`, `connector_load_skill`, `connector_describe`)\n * - 4 workspace tools (`workspace_validate`, `workspace_info`, `workspace_test_secret`, `workspace_reload`)\n *\n * @param plugin - A booted `WorkspacePlugin` instance.\n * @returns The 28 tool definitions, free of any MCP/SDK coupling.\n *\n * @docLink packages/workspace-plugin/concepts#adapters\n */\nexport function buildWorkspaceToolDefs(plugin: WorkspacePlugin): WorkspaceToolDef[] {\n const z: any = zStatic;\n\n const driver = plugin.driver ?? \"omp\";\n const p = plugin.projectDir;\n\n return [\n // Mount tools\n {\n name: \"mount_list\",\n description: \"List all mounts declared in skaile.yaml with their mount status.\",\n inputSchema: {},\n handler: async () => mountList(plugin.connectorManager),\n },\n {\n name: \"mount_sync\",\n description: \"Sync a mount — pull latest from remote (git, S3, WebDAV).\",\n inputSchema: { mount_id: z.string().describe(\"Mount ID from mount_list\") },\n handler: async ({ mount_id }: { mount_id: string }) =>\n mountSync(plugin.connectorManager, mount_id),\n },\n {\n name: \"mount_status\",\n description: \"Get the mount status and last sync time for a mount.\",\n inputSchema: { mount_id: z.string() },\n handler: async ({ mount_id }: { mount_id: string }) =>\n mountStatus(plugin.connectorManager, mount_id),\n },\n {\n name: \"mount_read\",\n description: \"Read a file from a mounted mount by path.\",\n inputSchema: {\n mount_id: z.string(),\n path: z.string().describe(\"Relative path within the mount\"),\n },\n handler: async ({ mount_id, path }: { mount_id: string; path: string }) =>\n mountRead(plugin.connectorManager, mount_id, path),\n },\n // Flow tools\n {\n name: \"flow_list\",\n description: \"List all available flow definitions from ai-assets.\",\n inputSchema: {},\n handler: async () => flowList(p),\n },\n {\n name: \"flow_show\",\n description: \"Show full flow definition (nodes + edges) for a flow ID.\",\n inputSchema: { flow_id: z.string().describe(\"Flow ID from flow_list\") },\n handler: async ({ flow_id }: { flow_id: string }) => flowShow(p, flow_id),\n },\n {\n name: \"flow_list_sessions\",\n description: \"List past and active flow run sessions for this workspace.\",\n inputSchema: {},\n handler: async () => flowListSessions(p),\n },\n {\n name: \"flow_get_session\",\n description: \"Get driver metadata for a specific flow run session.\",\n inputSchema: { run_id: z.string().describe(\"Run ID from flow_list_sessions\") },\n handler: async ({ run_id }: { run_id: string }) => flowGetSession(p, run_id),\n },\n {\n name: \"flow_find_flow_for_session\",\n description: \"Resolve and return the flow definition used in a past session.\",\n inputSchema: { run_id: z.string() },\n handler: async ({ run_id }: { run_id: string }) => flowFindFlowForSession(p, run_id),\n },\n // Skill tools\n {\n name: \"skill_list\",\n description: \"List all skills in the ai-assets catalog, optionally filtered by domain.\",\n inputSchema: { domain: z.string().optional().describe(\"Domain name filter\") },\n handler: async ({ domain }: { domain?: string }) => skillList(p, domain),\n },\n {\n name: \"skill_list_domains\",\n description: \"List all skill domains (top-level ai-assets directories with skills).\",\n inputSchema: {},\n handler: async () => skillListDomains(p),\n },\n {\n name: \"skill_show\",\n description: \"Show the full SKILL.md content for a skill ID.\",\n inputSchema: { skill_id: z.string().describe(\"Skill ID from skill_list\") },\n handler: async ({ skill_id }: { skill_id: string }) => skillShow(p, skill_id),\n },\n {\n name: \"skill_search\",\n description: \"Search skills by name, description, or keywords.\",\n inputSchema: { query: z.string() },\n handler: async ({ query }: { query: string }) => skillSearch(p, query),\n },\n {\n name: \"skill_check_requirements\",\n description: \"Validate that all skill prerequisites are met in the target directory.\",\n inputSchema: {\n skill_id: z.string(),\n target_dir: z\n .string()\n .optional()\n .describe(\"Directory to check against (default: projectDir)\"),\n },\n handler: async ({ skill_id, target_dir }: { skill_id: string; target_dir?: string }) =>\n skillCheckRequirements(p, skill_id, target_dir ?? p),\n },\n {\n name: \"skill_get_preamble\",\n description: \"Get the REQUIRES/INPUT/READS/WRITES DSL preamble for a skill.\",\n inputSchema: { skill_id: z.string() },\n handler: async ({ skill_id }: { skill_id: string }) => skillGetPreamble(p, skill_id),\n },\n // Session tools\n {\n name: \"session_list\",\n description: \"List all past agent run sessions for this workspace, sorted newest first.\",\n inputSchema: {},\n handler: async () => sessionList(p),\n },\n {\n name: \"session_get\",\n description: \"Get full metadata for a specific session by run ID.\",\n inputSchema: { run_id: z.string() },\n handler: async ({ run_id }: { run_id: string }) => sessionGet(p, run_id),\n },\n // Connector tools\n {\n name: \"connector_list\",\n description:\n \"List connectors declared in skaile.yaml as {connected, failed}. `failed` holds connectors that did not connect this session, with the failure reason — their mount paths are dead directories, not synced workspaces.\",\n inputSchema: {},\n handler: async () => connectorList(plugin.connectorManager),\n },\n {\n name: \"connector_read\",\n description: \"Read content from a connector by path.\",\n inputSchema: {\n connector_id: z.string().describe(\"Connector ID from connector_list\"),\n path: z.string().describe(\"Path within the connector\"),\n },\n handler: async ({ connector_id, path }: { connector_id: string; path: string }) =>\n connectorRead(plugin.connectorManager, connector_id, path),\n },\n {\n name: \"connector_write\",\n description: \"Write content to a connector by path.\",\n inputSchema: {\n connector_id: z.string(),\n path: z.string(),\n content: z.string().describe(\"Content to write\"),\n },\n handler: async ({\n connector_id,\n path,\n content,\n }: {\n connector_id: string;\n path: string;\n content: string;\n }) => connectorWrite(plugin.connectorManager, connector_id, path, content),\n },\n {\n name: \"connector_search\",\n description: \"Search within a connector by query string.\",\n inputSchema: {\n connector_id: z.string(),\n query: z.string().describe(\"Search query\"),\n },\n handler: async ({ connector_id, query }: { connector_id: string; query: string }) =>\n connectorSearch(plugin.connectorManager, connector_id, query),\n },\n {\n name: \"connector_exec\",\n description: \"Execute a custom operation on a connector.\",\n inputSchema: {\n connector_id: z.string(),\n operation: z.string().describe(\"Operation name from connector_describe\"),\n args: z.record(z.string(), z.unknown()).describe(\"Operation arguments\"),\n },\n handler: async ({\n connector_id,\n operation,\n args,\n }: {\n connector_id: string;\n operation: string;\n args: Record<string, unknown>;\n }) => connectorExec(plugin.connectorManager, connector_id, operation, args),\n },\n {\n name: \"connector_load_skill\",\n description: \"Load the rendered skill body for a connector (operations + usage).\",\n inputSchema: {\n connector_id: z.string(),\n },\n handler: async ({ connector_id }: { connector_id: string }) =>\n connectorLoadSkill(plugin.connectorManager, connector_id),\n },\n {\n name: \"connector_describe\",\n description: \"Describe a connector's capabilities via its RuntimeSkillDescriptor.\",\n inputSchema: {\n connector_id: z.string(),\n },\n handler: async ({ connector_id }: { connector_id: string }) =>\n connectorDescribe(plugin.connectorManager, connector_id),\n },\n // Validator tools\n {\n name: \"workspace_validate\",\n description: \"Run a full health check: connectors, mounts, secrets, driver binary.\",\n inputSchema: {},\n handler: async () => workspaceValidate(plugin, driver),\n },\n {\n name: \"workspace_info\",\n description: \"Show workspace configuration: driver, model, provider, resource counts.\",\n inputSchema: {},\n handler: async () => workspaceInfo(plugin, driver, plugin.model),\n },\n {\n name: \"workspace_test_secret\",\n description: \"Test resolution of one secret reference (env:VAR, forge:key).\",\n inputSchema: { ref: z.string().describe(\"Secret ref e.g. env:ANTHROPIC_API_KEY\") },\n handler: async ({ ref }: { ref: string }) => workspaceTestSecret(ref),\n },\n {\n name: \"workspace_reload\",\n description: \"Re-read skaile.yaml and re-sync the plugin state.\",\n inputSchema: {},\n handler: async () => workspaceReload(plugin),\n },\n ];\n}\n\n/**\n * Build the **in-process** workspace MCP server via the Claude Agent SDK's\n * `createSdkMcpServer`. This shape is what the runner embeds into a Claude\n * Agent SDK `query()` call — the runner *is* the Claude Agent SDK host.\n *\n * Returns `null` when `@anthropic-ai/claude-agent-sdk` is not installed\n * (graceful degradation for non-Claude-Code environments).\n *\n * For the standalone `skaile mcp-server` stdio subprocess use\n * {@link buildWorkspaceMcpStdioServer} / {@link runMcpServerStdio} instead —\n * those carry no Claude Agent SDK dependency.\n *\n * @param plugin - A booted `WorkspacePlugin` instance.\n * @returns The SDK MCP server object or `null` if the SDK is unavailable.\n *\n * @docLink packages/workspace-plugin/concepts#adapters\n */\nexport async function buildWorkspaceMcpServer(plugin: WorkspacePlugin): Promise<unknown | null> {\n let sdk: any;\n try {\n sdk = await import(\"@anthropic-ai/claude-agent-sdk\");\n } catch {\n return null;\n }\n return sdk.createSdkMcpServer({\n name: \"skaile-workspace\",\n tools: withActivityLabelDefs(buildWorkspaceToolDefs(plugin), zStatic),\n });\n}\n\n/**\n * Build a **raw stdio** workspace MCP server on `@modelcontextprotocol/sdk` —\n * no Claude Agent SDK. This is the correct shape for the `skaile mcp-server`\n * stdio subprocess that MCP-client agents (Claude Code, Codex, …) spawn.\n * Runs on plain Node.\n *\n * The returned server is not yet connected — call `.connect(transport)` (or\n * use {@link runMcpServerStdio}).\n *\n * @param plugin - A booted `WorkspacePlugin` instance.\n * @returns A `McpServer` with all 28 workspace tools registered.\n *\n * @docLink packages/workspace-plugin/concepts#adapters\n */\nexport async function buildWorkspaceMcpStdioServer(plugin: WorkspacePlugin): Promise<any> {\n const { McpServer } = await import(\"@modelcontextprotocol/sdk/server/mcp.js\" as string);\n const server = new McpServer({ name: \"skaile-workspace\", version: \"1.0.0\" });\n for (const def of buildWorkspaceToolDefs(plugin)) {\n server.registerTool(\n def.name,\n { description: def.description, inputSchema: def.inputSchema },\n def.handler,\n );\n }\n return server;\n}\n\n/**\n * Start the workspace MCP server over stdio transport.\n *\n * Builds the raw `@modelcontextprotocol/sdk` server via\n * {@link buildWorkspaceMcpStdioServer} and connects a `StdioServerTransport`.\n * No `@anthropic-ai/claude-agent-sdk` dependency anywhere on this path.\n *\n * @param plugin - A booted `WorkspacePlugin` instance.\n *\n * @docLink packages/workspace-plugin/concepts#adapters\n */\nexport async function runMcpServerStdio(plugin: WorkspacePlugin): Promise<void> {\n const server = await buildWorkspaceMcpStdioServer(plugin);\n const { StdioServerTransport } = await import(\n \"@modelcontextprotocol/sdk/server/stdio.js\" as string\n );\n await server.connect(new StdioServerTransport());\n}\n"]}
@@ -1,13 +1,14 @@
1
- import { readManifestSourceConfig, discoverAssetsInTree, isManifestMode } from './chunk-DFZDL62S.js';
2
- import { installFromManifest } from './chunk-VOEBLPXO.js';
3
- import { defaultLibraryDir, resolveLibraryDir, skaileHomeDir } from './chunk-FJYOQMXT.js';
4
- import { mergeLegacyEntriesInto, getGlobalCacheDir, resolveSourcePublisher, migrateLegacyDir, globalCacheRoot } from './chunk-QKXDRBLL.js';
5
- import { encodeSkaileManifest } from './chunk-P4VHQA4N.js';
6
- import { parseAssetRef } from './chunk-GEEW6SY2.js';
7
- import { PresetManifestSchema } from './chunk-2D3C4AJP.js';
1
+ import { readManifestSourceConfig, discoverAssetsInTree, isManifestMode } from './chunk-OLMNDIAU.js';
2
+ import { installFromManifest } from './chunk-2EL2PBRC.js';
3
+ import { defaultLibraryDir, resolveLibraryDir } from './chunk-YV3YI3TA.js';
4
+ import { getGlobalCacheDir, resolveSourcePublisher } from './chunk-JEPSP6XK.js';
5
+ import { globalSkaileDir, mergeLegacyEntriesInto, migrateLegacyDir, globalCacheRoot } from './chunk-TLKM4M47.js';
6
+ import { encodeSkaileManifest } from './chunk-DSB6X25D.js';
7
+ import { parseAssetRef } from './chunk-A5EDMBFG.js';
8
+ import { PresetManifestSchema } from './chunk-5CYEWBPB.js';
8
9
  import { __export } from './chunk-NSBPE2FW.js';
9
10
  import * as fs10 from 'fs';
10
- import * as os from 'os';
11
+ import { existsSync, mkdirSync } from 'fs';
11
12
  import * as path5 from 'path';
12
13
  import { stringify, parse, parseDocument } from 'yaml';
13
14
  import * as z3 from 'zod';
@@ -102,7 +103,7 @@ var CatalogConfigSchema = z3.object({
102
103
  framing: z3.enum(["trpc", "rest"]).optional()
103
104
  });
104
105
  var LibraryConfigSchema = z3.object({
105
- /** Library storage directory. Default: ~/.skaile/libraries */
106
+ /** Library storage directory. Default: $SKAILE_HOME/libraries (~/.skaile/libraries) */
106
107
  dir: z3.string().optional(),
107
108
  /** Default pin policy for new instances/assignments. */
108
109
  pin_policy: z3.enum(PIN_POLICIES).optional()
@@ -112,7 +113,7 @@ var SkaileConfigSchema = z3.object({
112
113
  library: LibraryConfigSchema.optional()
113
114
  });
114
115
  function defaultIndexPath() {
115
- return path5.join(skaileHomeDir(), "index.db");
116
+ return path5.join(globalSkaileDir(), "index.db");
116
117
  }
117
118
  function resolveIndexPath() {
118
119
  if (process.env.SKAILE_INDEX_PATH) return process.env.SKAILE_INDEX_PATH;
@@ -126,7 +127,7 @@ function getConfigDefaults() {
126
127
  }
127
128
  var CONFIG_FILENAME = "config.yaml";
128
129
  function userConfigPath() {
129
- return path5.join(os.homedir(), ".skaile", CONFIG_FILENAME);
130
+ return path5.join(globalSkaileDir(), CONFIG_FILENAME);
130
131
  }
131
132
  function projectConfigPath(projectDir) {
132
133
  return path5.join(projectDir, ".skaile", CONFIG_FILENAME);
@@ -324,12 +325,11 @@ var assignments = sqliteTable("assignments", {
324
325
  pinPolicy: text("pin_policy").notNull(),
325
326
  assignedAt: text("assigned_at").notNull()
326
327
  });
327
- var SKAILE_HOME_ENV = "SKAILE_HOME";
328
328
  function isClone(dir) {
329
329
  return fs10.existsSync(path5.join(dir, ".git"));
330
330
  }
331
331
  function getSidecarRoot() {
332
- const home = process.env[SKAILE_HOME_ENV] ?? path5.join(os.homedir(), ".skaile");
332
+ const home = globalSkaileDir();
333
333
  const sidecars = path5.join(home, "sidecars");
334
334
  const legacy = path5.join(home, "sources");
335
335
  mergeLegacyEntriesInto(getGlobalCacheDir(), legacy, isClone);
@@ -375,8 +375,7 @@ function slugify(input) {
375
375
 
376
376
  // library/src/local/store-paths.ts
377
377
  function getStoreRoot() {
378
- const home = process.env.SKAILE_HOME ?? path5.join(os.homedir(), ".skaile");
379
- return path5.join(home, "store");
378
+ return path5.join(globalSkaileDir(), "store");
380
379
  }
381
380
  function getStoreManifestsDir() {
382
381
  return path5.join(getStoreRoot(), "manifests");
@@ -674,10 +673,20 @@ async function healStaleAssetDefinitionsFk(client) {
674
673
  await client.execute("PRAGMA foreign_keys = ON");
675
674
  }
676
675
  }
676
+ var ORPHAN_PURGE_VERSION = 1;
677
+ async function purgeOrphanedAssetDefinitions(client) {
678
+ const rs = await client.execute("PRAGMA user_version");
679
+ const current = Number(rs.rows[0]?.user_version ?? 0);
680
+ if (current >= ORPHAN_PURGE_VERSION) return;
681
+ await client.execute(
682
+ "DELETE FROM asset_definitions WHERE library_id IS NULL OR library_id NOT IN (SELECT id FROM libraries)"
683
+ );
684
+ await client.execute(`PRAGMA user_version = ${ORPHAN_PURGE_VERSION}`);
685
+ }
677
686
  function assertNoLegacyLibDb(newDbPath) {
678
687
  if (fs10.existsSync(newDbPath)) return;
679
688
  const parent = path5.dirname(newDbPath);
680
- const skaileHome = path5.join(os.homedir(), ".skaile");
689
+ const skaileHome = globalSkaileDir();
681
690
  const defaultIndexPath2 = path5.join(skaileHome, "index.db");
682
691
  const candidates = [];
683
692
  if (path5.basename(newDbPath) === "index.db") {
@@ -725,6 +734,7 @@ async function createLibraryDb(dbPath) {
725
734
  }
726
735
  }
727
736
  await healStaleAssetDefinitionsFk(client);
737
+ await purgeOrphanedAssetDefinitions(client);
728
738
  if (await librariesPresent(client)) {
729
739
  const storeRows = await client.execute({
730
740
  sql: "SELECT id, name FROM libraries WHERE backend = ?",
@@ -928,6 +938,7 @@ var LocalIndex = class {
928
938
  const db = await this.ensureDb();
929
939
  const existing = await db.select().from(libraries).where(eq(libraries.id, id)).get();
930
940
  if (!existing) throw new SourceNotFoundError(id);
941
+ await db.delete(assetDefinitions).where(eq(assetDefinitions.libraryId, id)).run();
931
942
  await db.delete(libraries).where(eq(libraries.id, id)).run();
932
943
  }
933
944
  async syncSource(id) {
@@ -1246,6 +1257,58 @@ var UserLibraryNotFoundError = class extends LibrarySyncError {
1246
1257
  function git(cwd, args) {
1247
1258
  return spawnSync("git", args, { cwd, encoding: "utf-8" });
1248
1259
  }
1260
+ function isGitRepo(libPath) {
1261
+ return existsSync(path5.join(libPath, ".git"));
1262
+ }
1263
+ function spawnGit(cwd, args, action) {
1264
+ const r = git(cwd, args);
1265
+ if (r.status !== 0) {
1266
+ const detail = (r.stderr ?? "").trim() || (r.stdout ?? "").trim() || r.error?.message;
1267
+ throw new LibrarySyncError(`git ${action} failed: ${detail}`, "remote_error");
1268
+ }
1269
+ }
1270
+ function setOriginUrl(libPath, url) {
1271
+ const hasOrigin = git(libPath, ["remote", "get-url", "origin"]).status === 0;
1272
+ spawnGit(libPath, ["remote", hasOrigin ? "set-url" : "add", "--", "origin", url], "remote");
1273
+ }
1274
+ function ensureGitRepo(libPath, url, branch) {
1275
+ if (!isGitRepo(libPath)) {
1276
+ mkdirSync(libPath, { recursive: true });
1277
+ spawnGit(libPath, ["init", "-b", branch], "init");
1278
+ }
1279
+ setOriginUrl(libPath, url);
1280
+ }
1281
+ function cloneOrInitGitRepo(libPath, url, branch) {
1282
+ mkdirSync(libPath, { recursive: true });
1283
+ const clone = spawnSync("git", ["clone", "--", url, libPath], {
1284
+ encoding: "utf-8",
1285
+ env: { ...process.env, GIT_TERMINAL_PROMPT: "0" }
1286
+ });
1287
+ if (clone.status !== 0) {
1288
+ ensureGitRepo(libPath, url, branch);
1289
+ const stderr = clone.stderr.trim();
1290
+ const expected = /already exists and is not an empty directory/.test(stderr);
1291
+ return expected ? { branch, cloned: false } : { branch, cloned: false, reason: stderr };
1292
+ }
1293
+ if (git(libPath, ["rev-parse", "--verify", "--quiet", "HEAD"]).status !== 0) {
1294
+ spawnGit(libPath, ["symbolic-ref", "HEAD", `refs/heads/${branch}`], "symbolic-ref");
1295
+ return { branch, cloned: true };
1296
+ }
1297
+ return {
1298
+ branch: git(libPath, ["symbolic-ref", "--short", "HEAD"]).stdout.trim() || branch,
1299
+ cloned: true
1300
+ };
1301
+ }
1302
+ function countCommits(cwd, range) {
1303
+ const r = git(cwd, ["rev-list", "--count", range]);
1304
+ if (r.status !== 0) return void 0;
1305
+ const n = Number.parseInt(r.stdout.trim(), 10);
1306
+ return Number.isNaN(n) ? void 0 : n;
1307
+ }
1308
+ function headCommit(cwd) {
1309
+ const r = git(cwd, ["rev-parse", "--verify", "--quiet", "HEAD"]);
1310
+ return r.status === 0 ? r.stdout.trim() : void 0;
1311
+ }
1249
1312
  function ok(r, action) {
1250
1313
  if (r.status !== 0) {
1251
1314
  throw new LibrarySyncError(
@@ -1306,14 +1369,18 @@ var GitSyncDriver = class {
1306
1369
  const cfg = gitCfg(lib);
1307
1370
  const args = ["pull", "--ff-only", "origin", cfg.branch];
1308
1371
  if (opts?.rebase) args.splice(1, 1, "--rebase");
1372
+ const before = headCommit(lib.path);
1309
1373
  const r = git(lib.path, args);
1310
1374
  if (r.status !== 0) {
1375
+ if (/couldn't find remote ref/i.test(r.stderr)) return { applied: 0, conflicts: [] };
1311
1376
  if (/non-fast-forward|diverged|conflict/i.test(r.stderr)) {
1312
1377
  return { applied: 0, conflicts: [{ path: "(branch)", reason: r.stderr.trim() }] };
1313
1378
  }
1314
1379
  throw new LibrarySyncError(`git pull failed: ${r.stderr.trim()}`, "remote_error");
1315
1380
  }
1316
- return { applied: 1, conflicts: [] };
1381
+ const upstream = `refs/remotes/origin/${cfg.branch}`;
1382
+ const applied = (before ? countCommits(lib.path, `${before}..${upstream}`) : countCommits(lib.path, upstream)) ?? 0;
1383
+ return { applied, conflicts: [] };
1317
1384
  }
1318
1385
  async push(lib, opts) {
1319
1386
  if (lib.ownership !== "owner") {
@@ -1325,8 +1392,10 @@ var GitSyncDriver = class {
1325
1392
  const cfg = gitCfg(lib);
1326
1393
  const args = ["push", "origin", cfg.branch];
1327
1394
  if (opts?.force) args.push("--force-with-lease");
1395
+ const local = `refs/heads/${cfg.branch}`;
1396
+ const pushed = countCommits(lib.path, `refs/remotes/origin/${cfg.branch}..${local}`) ?? countCommits(lib.path, local) ?? 0;
1328
1397
  ok(git(lib.path, args), "push");
1329
- return { pushed: 1 };
1398
+ return { pushed };
1330
1399
  }
1331
1400
  async propose(lib, opts) {
1332
1401
  if (lib.ownership !== "contributor") {
@@ -1507,6 +1576,19 @@ var LibraryManager = class {
1507
1576
  await db.update(libraries).set(updates).where(eq(libraries.id, lib.id)).run();
1508
1577
  return this.requireLibrary(lib.id);
1509
1578
  }
1579
+ /**
1580
+ * The library commands act on when none is named: the default-marked one, else
1581
+ * the only owner/contributor library (a reader library cannot be authored into,
1582
+ * so it never counts). `null` when neither exists — none registered, or several
1583
+ * writable ones and no default to choose between them.
1584
+ */
1585
+ async findDefaultLibrary() {
1586
+ const all = await this.listLibraries();
1587
+ const def = all.find((l) => l.isDefault);
1588
+ if (def) return def;
1589
+ const writable = all.filter((l) => l.ownership !== "reader");
1590
+ return writable.length === 1 ? writable[0] : null;
1591
+ }
1510
1592
  async setDefault(nameOrId) {
1511
1593
  const lib = await this.requireLibrary(nameOrId);
1512
1594
  const db = await this.lib.dbHandle();
@@ -1516,8 +1598,7 @@ var LibraryManager = class {
1516
1598
  }
1517
1599
  async removeLibrary(nameOrId, opts = {}) {
1518
1600
  const lib = await this.requireLibrary(nameOrId);
1519
- const db = await this.lib.dbHandle();
1520
- await db.delete(libraries).where(eq(libraries.id, lib.id)).run();
1601
+ await this.lib.removeSource(lib.id);
1521
1602
  if (opts.purge && fs10.existsSync(lib.path)) {
1522
1603
  fs10.rmSync(lib.path, { recursive: true, force: true });
1523
1604
  }
@@ -2103,8 +2184,8 @@ function resolveTemplate(template, context) {
2103
2184
  });
2104
2185
  return { value: result, hasSecret: false };
2105
2186
  }
2106
- function setNestedValue(obj, path13, value) {
2107
- const parts = path13.split(".");
2187
+ function setNestedValue(obj, path14, value) {
2188
+ const parts = path14.split(".");
2108
2189
  let current = obj;
2109
2190
  for (let i = 0; i < parts.length - 1; i++) {
2110
2191
  const key = parts[i];
@@ -2707,7 +2788,7 @@ function deepEqual(a, b) {
2707
2788
  return JSON.stringify(a) === JSON.stringify(b);
2708
2789
  }
2709
2790
  function defaultCatalogCacheDir() {
2710
- const home = process.env.SKAILE_HOME ?? path5.join(os.homedir(), ".skaile");
2791
+ const home = globalSkaileDir();
2711
2792
  return migrateLegacyDir(
2712
2793
  path5.join(globalCacheRoot(), "catalog"),
2713
2794
  path5.join(home, "catalog-cache")
@@ -3898,6 +3979,6 @@ function detectWorkspaceVersion(dir, filename = "skaile.yaml") {
3898
3979
  return raw.version === 2 ? 2 : 1;
3899
3980
  }
3900
3981
 
3901
- export { AssignmentNotFoundError, CatalogCache, CatalogConfigSchema, CatalogHttpError, DuplicateAssignmentError, DuplicateLibraryNameError, GitSyncDriver, InstanceHasConsumersError, InstanceNotFoundError, InterpolationError, KNOWN_ASSET_KINDS, KnowledgeManifestSchema, LIBRARY_BACKENDS, LIBRARY_OWNERSHIPS, LIBRARY_STRUCTURES, LOCAL_CATALOG_URL, LibraryConfigSchema, LibraryError, LibraryInstanceRefSchema, LibraryManager, LibrarySectionSchema, LibrarySyncError, LocalCatalogSource, LocalIndex, LocalSyncDriver, LockAssignmentSchema, LockFileSchema, OfflineError, OperationNotPermittedError, PIN_POLICIES, PinPolicySchema, PresetAppliedSchema, PresetExpandedSchema, RemoteCatalogSource, RequiresEdgeSchema, RestCatalogSource, SidecarGit, SkaileConfigSchema, SourceNotFoundError, TarballHashMismatchError, UserLibraryNotFoundError, WorkspaceConfigV2Schema, applyNonStructuralUpgrade, applyPreset, applyPresetFromData, classifyRef, createEmptyLockFile, deriveSlug, detectChanges, detectNestedPresetRefs, detectWorkspaceVersion, evaluateUpgrade, extractLibraryInstanceId, extractReferencedKeys, filterKey, getConfigDefaults, getDefaultValue, getSidecarRoot, getStoreManifestsDir, getStoreRoot, hasInterpolationTokens, interpolate, isLocalCatalogUrl, isSecretPlaceholder, knowledgeKindProvider, listSidecarSlugsOnDisk, loadLockFile, loadWorkspaceV2, migrateSidecarsToStoreIfNeeded, migrateWorkspaceConfig, parsePreset, parsePresetYaml, parseWorkspaceV2, projectConfigPath, queryInstancePickerChoices, resolveAllItems, resolveConfig, resolveIndexPath, resolveItem, resolvePin, resolveSidecarPaths, saveConfig, saveLockFile, saveWorkspaceV2, sha256Hex, storeSecrets, trpcGetUrl, userConfigPath, validateAllPlaceholders, validateKnowledge, validateNestingDepth, validatePlaceholder, writeCuratedManifest, writeManifestIfMissing };
3902
- //# sourceMappingURL=chunk-BSIHJZKN.js.map
3903
- //# sourceMappingURL=chunk-BSIHJZKN.js.map
3982
+ export { AssignmentNotFoundError, CatalogCache, CatalogConfigSchema, CatalogHttpError, DuplicateAssignmentError, DuplicateLibraryNameError, GitSyncDriver, InstanceHasConsumersError, InstanceNotFoundError, InterpolationError, KNOWN_ASSET_KINDS, KnowledgeManifestSchema, LIBRARY_BACKENDS, LIBRARY_OWNERSHIPS, LIBRARY_STRUCTURES, LOCAL_CATALOG_URL, LibraryConfigSchema, LibraryError, LibraryInstanceRefSchema, LibraryManager, LibrarySectionSchema, LibrarySyncError, LocalCatalogSource, LocalIndex, LocalSyncDriver, LockAssignmentSchema, LockFileSchema, OfflineError, OperationNotPermittedError, PIN_POLICIES, PinPolicySchema, PresetAppliedSchema, PresetExpandedSchema, RemoteCatalogSource, RequiresEdgeSchema, RestCatalogSource, SidecarGit, SkaileConfigSchema, SourceNotFoundError, TarballHashMismatchError, UserLibraryNotFoundError, WorkspaceConfigV2Schema, applyNonStructuralUpgrade, applyPreset, applyPresetFromData, classifyRef, cloneOrInitGitRepo, createEmptyLockFile, deriveSlug, detectChanges, detectNestedPresetRefs, detectWorkspaceVersion, ensureGitRepo, evaluateUpgrade, extractLibraryInstanceId, extractReferencedKeys, filterKey, getConfigDefaults, getDefaultValue, getSidecarRoot, getStoreManifestsDir, getStoreRoot, hasInterpolationTokens, interpolate, isGitRepo, isLocalCatalogUrl, isSecretPlaceholder, knowledgeKindProvider, listSidecarSlugsOnDisk, loadLockFile, loadWorkspaceV2, migrateSidecarsToStoreIfNeeded, migrateWorkspaceConfig, parsePreset, parsePresetYaml, parseWorkspaceV2, projectConfigPath, queryInstancePickerChoices, resolveAllItems, resolveConfig, resolveIndexPath, resolveItem, resolvePin, resolveSidecarPaths, saveConfig, saveLockFile, saveWorkspaceV2, setOriginUrl, sha256Hex, storeSecrets, trpcGetUrl, userConfigPath, validateAllPlaceholders, validateKnowledge, validateNestingDepth, validatePlaceholder, writeCuratedManifest, writeManifestIfMissing };
3983
+ //# sourceMappingURL=chunk-XU7JET5Z.js.map
3984
+ //# sourceMappingURL=chunk-XU7JET5Z.js.map