@skaile/workspaces 5.6.1 → 5.7.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 (260) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/README.md +4 -2
  3. package/dist/{asset-feeds-LU7NHOAP.js → asset-feeds-K36CR52Q.js} +17 -17
  4. package/dist/{asset-feeds-LU7NHOAP.js.map → asset-feeds-K36CR52Q.js.map} +1 -1
  5. package/dist/asset-manager/catalog-deployer.js +9 -9
  6. package/dist/asset-manager/index.js +14 -14
  7. package/dist/asset-manager/installer.js +10 -10
  8. package/dist/asset-manager/renderers.js +9 -9
  9. package/dist/asset-manager/src/index.d.ts +106 -16
  10. package/dist/asset-manager/src/index.d.ts.map +1 -1
  11. package/dist/asset-manager/src/installer.d.ts +4 -1
  12. package/dist/asset-manager/src/installer.d.ts.map +1 -1
  13. package/dist/bridge/drivers/claude-sdk.js +11 -11
  14. package/dist/bridge/drivers/codex.js +10 -10
  15. package/dist/bridge/drivers/continue.js +12 -12
  16. package/dist/bridge/drivers/echo.js +1 -1
  17. package/dist/bridge/drivers/gemini.js +5 -5
  18. package/dist/bridge/drivers/goose.js +12 -12
  19. package/dist/bridge/drivers/omp.js +2 -2
  20. package/dist/bridge/drivers/opencode.js +12 -12
  21. package/dist/bridge/drivers/qwen.js +5 -5
  22. package/dist/bridge/index.js +12 -12
  23. package/dist/{chunk-VX3INFBA.js → chunk-34C42MJX.js} +3 -3
  24. package/dist/{chunk-VX3INFBA.js.map → chunk-34C42MJX.js.map} +1 -1
  25. package/dist/{chunk-QD772CGQ.js → chunk-53MSCGR2.js} +5 -5
  26. package/dist/{chunk-QD772CGQ.js.map → chunk-53MSCGR2.js.map} +1 -1
  27. package/dist/chunk-6C654TFI.js +84 -0
  28. package/dist/chunk-6C654TFI.js.map +1 -0
  29. package/dist/{chunk-6NPINANG.js → chunk-6UFFKMVC.js} +5 -5
  30. package/dist/{chunk-6NPINANG.js.map → chunk-6UFFKMVC.js.map} +1 -1
  31. package/dist/{chunk-XOGG7VDZ.js → chunk-6VRJH4MR.js} +16 -24
  32. package/dist/chunk-6VRJH4MR.js.map +1 -0
  33. package/dist/{chunk-2KOKBTR4.js → chunk-74EEFB52.js} +15 -8
  34. package/dist/chunk-74EEFB52.js.map +1 -0
  35. package/dist/{chunk-OGLDAJFL.js → chunk-7FJQT3GT.js} +4 -4
  36. package/dist/{chunk-OGLDAJFL.js.map → chunk-7FJQT3GT.js.map} +1 -1
  37. package/dist/{chunk-VKSXST23.js → chunk-AVCUPPG6.js} +3 -3
  38. package/dist/{chunk-VKSXST23.js.map → chunk-AVCUPPG6.js.map} +1 -1
  39. package/dist/{chunk-5B5IZVEP.js → chunk-BTK7ECLH.js} +2 -2
  40. package/dist/{chunk-5B5IZVEP.js.map → chunk-BTK7ECLH.js.map} +1 -1
  41. package/dist/{chunk-GP6ZL7PE.js → chunk-BWZF2ZIF.js} +3 -3
  42. package/dist/{chunk-GP6ZL7PE.js.map → chunk-BWZF2ZIF.js.map} +1 -1
  43. package/dist/{chunk-PJS2YWGG.js → chunk-CWM3MYGX.js} +6 -6
  44. package/dist/{chunk-PJS2YWGG.js.map → chunk-CWM3MYGX.js.map} +1 -1
  45. package/dist/{chunk-PTO2YDDG.js → chunk-D5HOETOB.js} +410 -96
  46. package/dist/chunk-D5HOETOB.js.map +1 -0
  47. package/dist/{chunk-MX3UQXLU.js → chunk-DFFD4BFG.js} +96 -20
  48. package/dist/chunk-DFFD4BFG.js.map +1 -0
  49. package/dist/{chunk-KXTO7HON.js → chunk-EAZECHPM.js} +3 -3
  50. package/dist/{chunk-KXTO7HON.js.map → chunk-EAZECHPM.js.map} +1 -1
  51. package/dist/{chunk-ZBBM6O6P.js → chunk-EB4XN3KE.js} +3 -3
  52. package/dist/{chunk-ZBBM6O6P.js.map → chunk-EB4XN3KE.js.map} +1 -1
  53. package/dist/{chunk-WIHQWVWL.js → chunk-EU3Q5AQ4.js} +26 -18
  54. package/dist/chunk-EU3Q5AQ4.js.map +1 -0
  55. package/dist/{chunk-BTISGSK4.js → chunk-FAP63KV7.js} +4 -4
  56. package/dist/{chunk-BTISGSK4.js.map → chunk-FAP63KV7.js.map} +1 -1
  57. package/dist/{chunk-46OVMT76.js → chunk-G67BOI2J.js} +3 -3
  58. package/dist/{chunk-46OVMT76.js.map → chunk-G67BOI2J.js.map} +1 -1
  59. package/dist/{chunk-I4QBZLOR.js → chunk-GIC3G5YG.js} +6 -6
  60. package/dist/{chunk-I4QBZLOR.js.map → chunk-GIC3G5YG.js.map} +1 -1
  61. package/dist/{chunk-27HS2DHB.js → chunk-GWXFSLBK.js} +3 -3
  62. package/dist/{chunk-27HS2DHB.js.map → chunk-GWXFSLBK.js.map} +1 -1
  63. package/dist/{chunk-VSQFGU5D.js → chunk-ILFGVSTJ.js} +3 -3
  64. package/dist/{chunk-VSQFGU5D.js.map → chunk-ILFGVSTJ.js.map} +1 -1
  65. package/dist/{chunk-KYXOGHY6.js → chunk-IUUYRXT6.js} +4 -4
  66. package/dist/{chunk-KYXOGHY6.js.map → chunk-IUUYRXT6.js.map} +1 -1
  67. package/dist/{chunk-D2V42LUE.js → chunk-IZLQ4GDO.js} +63 -44
  68. package/dist/chunk-IZLQ4GDO.js.map +1 -0
  69. package/dist/{chunk-LLKKLKZJ.js → chunk-JLSCA5T5.js} +3 -3
  70. package/dist/{chunk-LLKKLKZJ.js.map → chunk-JLSCA5T5.js.map} +1 -1
  71. package/dist/{chunk-SX4UIDKT.js → chunk-KM7XWC4Y.js} +3 -3
  72. package/dist/{chunk-SX4UIDKT.js.map → chunk-KM7XWC4Y.js.map} +1 -1
  73. package/dist/{chunk-KUFNKVBM.js → chunk-KNWCFEWU.js} +3 -3
  74. package/dist/{chunk-KUFNKVBM.js.map → chunk-KNWCFEWU.js.map} +1 -1
  75. package/dist/{chunk-MFHKHXDE.js → chunk-L5VSIPQD.js} +5 -5
  76. package/dist/chunk-L5VSIPQD.js.map +1 -0
  77. package/dist/{chunk-AOAZCSDI.js → chunk-LBQ4BBX4.js} +3 -3
  78. package/dist/{chunk-AOAZCSDI.js.map → chunk-LBQ4BBX4.js.map} +1 -1
  79. package/dist/{chunk-2W4LBLIN.js → chunk-LCU5U5IW.js} +6 -6
  80. package/dist/{chunk-2W4LBLIN.js.map → chunk-LCU5U5IW.js.map} +1 -1
  81. package/dist/{chunk-65EYRFZJ.js → chunk-LXY4BUA3.js} +5 -5
  82. package/dist/{chunk-65EYRFZJ.js.map → chunk-LXY4BUA3.js.map} +1 -1
  83. package/dist/{chunk-7KLC4LZO.js → chunk-MKLBK7HI.js} +8 -8
  84. package/dist/{chunk-7KLC4LZO.js.map → chunk-MKLBK7HI.js.map} +1 -1
  85. package/dist/{chunk-4GNJELPH.js → chunk-N6FBTXQ5.js} +2 -2
  86. package/dist/{chunk-4GNJELPH.js.map → chunk-N6FBTXQ5.js.map} +1 -1
  87. package/dist/{chunk-2XFUXGV6.js → chunk-NWQB7UTY.js} +3 -3
  88. package/dist/{chunk-2XFUXGV6.js.map → chunk-NWQB7UTY.js.map} +1 -1
  89. package/dist/{chunk-SDFROXSA.js → chunk-O4Z7MAW7.js} +3 -3
  90. package/dist/{chunk-SDFROXSA.js.map → chunk-O4Z7MAW7.js.map} +1 -1
  91. package/dist/{chunk-AO7VJ6G6.js → chunk-O7VPNKYN.js} +8 -3
  92. package/dist/chunk-O7VPNKYN.js.map +1 -0
  93. package/dist/{chunk-TZCQ7ZWQ.js → chunk-OOLT6HGP.js} +10 -11
  94. package/dist/chunk-OOLT6HGP.js.map +1 -0
  95. package/dist/{chunk-2GRB5ITE.js → chunk-PSA6ONFB.js} +4 -4
  96. package/dist/{chunk-2GRB5ITE.js.map → chunk-PSA6ONFB.js.map} +1 -1
  97. package/dist/{chunk-45VFGT7A.js → chunk-RNPHRRLG.js} +3 -3
  98. package/dist/{chunk-45VFGT7A.js.map → chunk-RNPHRRLG.js.map} +1 -1
  99. package/dist/{chunk-7ZHLYXTI.js → chunk-RVIZQ5XD.js} +3 -3
  100. package/dist/{chunk-7ZHLYXTI.js.map → chunk-RVIZQ5XD.js.map} +1 -1
  101. package/dist/{chunk-BF33SCLY.js → chunk-SWO25LTO.js} +4 -4
  102. package/dist/{chunk-BF33SCLY.js.map → chunk-SWO25LTO.js.map} +1 -1
  103. package/dist/{chunk-UAP2XHRF.js → chunk-SZWRPEF7.js} +8 -8
  104. package/dist/{chunk-UAP2XHRF.js.map → chunk-SZWRPEF7.js.map} +1 -1
  105. package/dist/{chunk-VJENKWXF.js → chunk-THEJJBOU.js} +3 -3
  106. package/dist/{chunk-VJENKWXF.js.map → chunk-THEJJBOU.js.map} +1 -1
  107. package/dist/{chunk-PA7WLID3.js → chunk-TTPSDC2G.js} +33 -3
  108. package/dist/chunk-TTPSDC2G.js.map +1 -0
  109. package/dist/{chunk-VBBBZDI7.js → chunk-UX3K4RKE.js} +3 -3
  110. package/dist/{chunk-VBBBZDI7.js.map → chunk-UX3K4RKE.js.map} +1 -1
  111. package/dist/{chunk-RGXVQZOV.js → chunk-VOOI7B2L.js} +23 -21
  112. package/dist/chunk-VOOI7B2L.js.map +1 -0
  113. package/dist/{chunk-OLLAQLFJ.js → chunk-WIEC3ZE4.js} +5 -5
  114. package/dist/{chunk-OLLAQLFJ.js.map → chunk-WIEC3ZE4.js.map} +1 -1
  115. package/dist/cli/index.js +901 -589
  116. package/dist/cli/index.js.map +1 -1
  117. package/dist/cli/src/commands/asset-cmd.d.ts.map +1 -1
  118. package/dist/cli/src/commands/catalog.d.ts +12 -3
  119. package/dist/cli/src/commands/catalog.d.ts.map +1 -1
  120. package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
  121. package/dist/cli/src/commands/library-index.d.ts +41 -4
  122. package/dist/cli/src/commands/library-index.d.ts.map +1 -1
  123. package/dist/cli/src/commands/library-publish.d.ts +9 -0
  124. package/dist/cli/src/commands/library-publish.d.ts.map +1 -1
  125. package/dist/cli/src/commands/manage.d.ts +8 -2
  126. package/dist/cli/src/commands/manage.d.ts.map +1 -1
  127. package/dist/cli/src/commands/outdated.d.ts +3 -2
  128. package/dist/cli/src/commands/outdated.d.ts.map +1 -1
  129. package/dist/cli/src/commands/project.d.ts +13 -4
  130. package/dist/cli/src/commands/project.d.ts.map +1 -1
  131. package/dist/cli/src/commands/source.d.ts +4 -3
  132. package/dist/cli/src/commands/source.d.ts.map +1 -1
  133. package/dist/cli/src/commands/update.d.ts +1 -1
  134. package/dist/cli/src/commands/update.d.ts.map +1 -1
  135. package/dist/cli/src/commands/validate.d.ts.map +1 -1
  136. package/dist/cli/src/skill-checks.d.ts +21 -10
  137. package/dist/cli/src/skill-checks.d.ts.map +1 -1
  138. package/dist/connectors/config.js +6 -6
  139. package/dist/connectors/index.js +15 -15
  140. package/dist/{connectors-HWENZFKW.js → connectors-SSOTIDHT.js} +18 -18
  141. package/dist/{connectors-HWENZFKW.js.map → connectors-SSOTIDHT.js.map} +1 -1
  142. package/dist/core/index.js +8 -8
  143. package/dist/core/manifest.js +2 -2
  144. package/dist/core/models.js +1 -1
  145. package/dist/core/publish-manifest.js +2 -2
  146. package/dist/core/ref.js +1 -1
  147. package/dist/core/runtime-assets.js +6 -6
  148. package/dist/core/src/cache-paths.d.ts.map +1 -1
  149. package/dist/core/src/index.d.ts +1 -1
  150. package/dist/core/src/index.d.ts.map +1 -1
  151. package/dist/core/src/lock.d.ts +3 -3
  152. package/dist/core/src/lock.d.ts.map +1 -1
  153. package/dist/core/src/manifest.d.ts +6 -1
  154. package/dist/core/src/manifest.d.ts.map +1 -1
  155. package/dist/core/src/models.d.ts +8 -0
  156. package/dist/core/src/models.d.ts.map +1 -1
  157. package/dist/core/store.js +2 -2
  158. package/dist/core/workspace-config.js +5 -5
  159. package/dist/deploy/index.js +8 -8
  160. package/dist/discovery/index.js +4 -4
  161. package/dist/discovery/src/index.d.ts +1 -1
  162. package/dist/discovery/src/index.d.ts.map +1 -1
  163. package/dist/discovery/src/source-config.d.ts +12 -0
  164. package/dist/discovery/src/source-config.d.ts.map +1 -1
  165. package/dist/discovery/src/tree-entries.d.ts.map +1 -1
  166. package/dist/{ensure-sources-DSTSXJWK.js → ensure-sources-277VI7R3.js} +17 -17
  167. package/dist/{ensure-sources-DSTSXJWK.js.map → ensure-sources-277VI7R3.js.map} +1 -1
  168. package/dist/factory-assets/connectors/box.js +15 -15
  169. package/dist/factory-assets/connectors/deploy.js +15 -15
  170. package/dist/factory-assets/connectors/devserver.js +15 -15
  171. package/dist/factory-assets/connectors/flow/adapter.js +15 -15
  172. package/dist/factory-assets/connectors/flow/engine.js +9 -9
  173. package/dist/factory-assets/connectors/flow/run-flow.js +17 -17
  174. package/dist/factory-assets/connectors/flow.js +15 -15
  175. package/dist/factory-assets/connectors/git.js +15 -15
  176. package/dist/factory-assets/connectors/gmail.js +15 -15
  177. package/dist/factory-assets/connectors/googledrive.js +15 -15
  178. package/dist/factory-assets/connectors/local.js +15 -15
  179. package/dist/factory-assets/connectors/mattermost.js +15 -15
  180. package/dist/factory-assets/connectors/memory.js +15 -15
  181. package/dist/factory-assets/connectors/minio.js +15 -15
  182. package/dist/factory-assets/connectors/postgres.js +15 -15
  183. package/dist/factory-assets/connectors/s3.js +15 -15
  184. package/dist/factory-assets/connectors/sharepoint.js +15 -15
  185. package/dist/factory-assets/connectors/sqlite.js +15 -15
  186. package/dist/factory-assets/connectors/static-server.js +15 -15
  187. package/dist/factory-assets/connectors/tunnel.js +15 -15
  188. package/dist/factory-assets/connectors/webdav.js +15 -15
  189. package/dist/factory-assets/connectors/xstate-store.js +15 -15
  190. package/dist/factory-assets/connectors/xstate.js +15 -15
  191. package/dist/{flows-ENQY2DV7.js → flows-J2UEU2QM.js} +13 -13
  192. package/dist/{flows-ENQY2DV7.js.map → flows-J2UEU2QM.js.map} +1 -1
  193. package/dist/{helpers-R44RUTDY.js → helpers-KC5O7CML.js} +17 -17
  194. package/dist/{helpers-R44RUTDY.js.map → helpers-KC5O7CML.js.map} +1 -1
  195. package/dist/library/index.js +11 -11
  196. package/dist/library/install.js +3 -3
  197. package/dist/library/src/index.d.ts +3 -3
  198. package/dist/library/src/index.d.ts.map +1 -1
  199. package/dist/library/src/local/library-manager.d.ts +6 -0
  200. package/dist/library/src/local/library-manager.d.ts.map +1 -1
  201. package/dist/library/src/local/local-catalog-source.d.ts +5 -2
  202. package/dist/library/src/local/local-catalog-source.d.ts.map +1 -1
  203. package/dist/library/src/manifest-writer.d.ts +23 -1
  204. package/dist/library/src/manifest-writer.d.ts.map +1 -1
  205. package/dist/library/src/sync/git-driver.d.ts +12 -0
  206. package/dist/library/src/sync/git-driver.d.ts.map +1 -1
  207. package/dist/{library-publish-LFOJJVMK.js → library-publish-FGXF5TJO.js} +85 -41
  208. package/dist/library-publish-FGXF5TJO.js.map +1 -0
  209. package/dist/{open-library-4WUMQHES.js → open-library-P3D337NH.js} +20 -20
  210. package/dist/{open-library-4WUMQHES.js.map → open-library-P3D337NH.js.map} +1 -1
  211. package/dist/open-registry-Z3P2X2AB.js +32 -0
  212. package/dist/{open-registry-NVPCQPND.js.map → open-registry-Z3P2X2AB.js.map} +1 -1
  213. package/dist/paths-JKEKXM52.js +22 -0
  214. package/dist/{paths-YUCP7K6U.js.map → paths-JKEKXM52.js.map} +1 -1
  215. package/dist/{plugin-store-66QFBNEO.js → plugin-store-WI4MZJLP.js} +10 -10
  216. package/dist/{plugin-store-66QFBNEO.js.map → plugin-store-WI4MZJLP.js.map} +1 -1
  217. package/dist/project-WFUDVYNN.js +41 -0
  218. package/dist/{project-VMOHUXBD.js.map → project-WFUDVYNN.js.map} +1 -1
  219. package/dist/resolver/index.js +9 -9
  220. package/dist/runner/index.js +28 -28
  221. package/dist/runner/src/serve.d.ts.map +1 -1
  222. package/dist/sdk/asset-manager.js +14 -14
  223. package/dist/sdk/bridge.js +12 -12
  224. package/dist/sdk/core.js +8 -8
  225. package/dist/sdk/flow.js +9 -9
  226. package/dist/sdk/index.js +28 -28
  227. package/dist/sdk/resolver.js +9 -9
  228. package/dist/sdk/runner.js +28 -28
  229. package/dist/secrets/index.js +2 -2
  230. package/dist/{setup-PYY23HGZ.js → setup-RAMLTORM.js} +22 -22
  231. package/dist/{setup-PYY23HGZ.js.map → setup-RAMLTORM.js.map} +1 -1
  232. package/dist/skills-EOHZ2DZ4.js +26 -0
  233. package/dist/{skills-CS7NE5TT.js.map → skills-EOHZ2DZ4.js.map} +1 -1
  234. package/dist/{source-JCF6KSQN.js → source-FYVSFYEI.js} +21 -21
  235. package/dist/{source-JCF6KSQN.js.map → source-FYVSFYEI.js.map} +1 -1
  236. package/dist/{source-manifest-publish-O6P7G2M7.js → source-manifest-publish-4FPIPPLV.js} +23 -23
  237. package/dist/{source-manifest-publish-O6P7G2M7.js.map → source-manifest-publish-4FPIPPLV.js.map} +1 -1
  238. package/dist/tui/index.js +28 -28
  239. package/dist/workspace-plugin/adapters/mcp.js +22 -22
  240. package/dist/workspace-plugin/adapters/omp.js +14 -14
  241. package/dist/workspace-plugin/index.js +1 -1
  242. package/package.json +1 -1
  243. package/dist/chunk-2KOKBTR4.js.map +0 -1
  244. package/dist/chunk-2NYXQYHN.js +0 -22
  245. package/dist/chunk-2NYXQYHN.js.map +0 -1
  246. package/dist/chunk-AO7VJ6G6.js.map +0 -1
  247. package/dist/chunk-D2V42LUE.js.map +0 -1
  248. package/dist/chunk-MFHKHXDE.js.map +0 -1
  249. package/dist/chunk-MX3UQXLU.js.map +0 -1
  250. package/dist/chunk-PA7WLID3.js.map +0 -1
  251. package/dist/chunk-PTO2YDDG.js.map +0 -1
  252. package/dist/chunk-RGXVQZOV.js.map +0 -1
  253. package/dist/chunk-TZCQ7ZWQ.js.map +0 -1
  254. package/dist/chunk-WIHQWVWL.js.map +0 -1
  255. package/dist/chunk-XOGG7VDZ.js.map +0 -1
  256. package/dist/library-publish-LFOJJVMK.js.map +0 -1
  257. package/dist/open-registry-NVPCQPND.js +0 -32
  258. package/dist/paths-YUCP7K6U.js +0 -22
  259. package/dist/project-VMOHUXBD.js +0 -41
  260. package/dist/skills-CS7NE5TT.js +0 -26
@@ -1,22 +1,22 @@
1
- export { AssignmentNotFoundError, CatalogCache, CatalogConfigSchema, CatalogHttpError, DuplicateAssignmentError, DuplicateLibraryNameError, GitSyncDriver, InstanceHasConsumersError, InstanceNotFoundError, InterpolationError, KnowledgeManifestSchema, LIBRARY_BACKENDS, LIBRARY_OWNERSHIPS, 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, assertManifestEditable, classifyRef, cloneOrInitGitRepo, createEmptyLockFile, curatedManifestOverlay, deriveSlug, detectChanges, detectNestedPresetRefs, detectWorkspaceVersion, ensureGitRepo, evaluateUpgrade, extractLibraryInstanceId, extractReferencedKeys, filterKey, getConfigDefaults, getDefaultValue, getSidecarRoot, getStoreManifestsDir, getStoreRoot, hasInterpolationTokens, installLibraryAsset, interpolate, isGitRepo, isLocalCatalogUrl, isSecretPlaceholder, knowledgeKindProvider, listSidecarSlugsOnDisk, loadLockFile, loadWorkspaceV2, migrateSidecarsToStoreIfNeeded, migrateWorkspaceConfig, missingRootAssets, parsePreset, parsePresetYaml, parseWorkspaceV2, projectConfigPath, pruneMissingRootAssets, queryInstancePickerChoices, resolveAllItems, resolveConfig, resolveIndexPath, resolveItem, resolvePin, resolveSidecarPaths, saveConfig, saveLockFile, saveWorkspaceV2, scanLibraryRoot, setManifestPublisher, setOriginUrl, sha256Hex, stampManifestPublisher, storeSecrets, syncManifestWithDisk, trpcGetUrl, upsertManifestAsset, validateAllPlaceholders, validateKnowledge, validateNestingDepth, validatePlaceholder, writeCuratedManifest } from '../chunk-MX3UQXLU.js';
2
- import '../chunk-XOGG7VDZ.js';
3
- export { installFromManifest } from '../chunk-BTISGSK4.js';
1
+ export { AssignmentNotFoundError, CatalogCache, CatalogConfigSchema, CatalogHttpError, DuplicateAssignmentError, DuplicateLibraryNameError, GitSyncDriver, InstanceHasConsumersError, InstanceNotFoundError, InterpolationError, KnowledgeManifestSchema, LIBRARY_BACKENDS, LIBRARY_OWNERSHIPS, 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, assertManifestEditable, assertValidLibraryName, classifyRef, cloneOrInitGitRepo, createEmptyLockFile, curatedManifestOverlay, deriveSlug, detectChanges, detectNestedPresetRefs, detectWorkspaceVersion, ensureGitRepo, evaluateUpgrade, extractLibraryInstanceId, extractReferencedKeys, filterKey, getConfigDefaults, getDefaultValue, getSidecarRoot, getStoreManifestsDir, getStoreRoot, hasInterpolationTokens, installLibraryAsset, interpolate, isGitRepo, isLocalCatalogUrl, isSecretPlaceholder, knowledgeKindProvider, listSidecarSlugsOnDisk, loadLockFile, loadWorkspaceV2, migrateSidecarsToStoreIfNeeded, migrateWorkspaceConfig, missingRootAssets, parsePreset, parsePresetYaml, parseWorkspaceV2, projectConfigPath, pruneMissingRootAssets, queryInstancePickerChoices, resolveAllItems, resolveConfig, resolveIndexPath, resolveItem, resolvePin, resolveSidecarPaths, saveConfig, saveLockFile, saveWorkspaceV2, scanLibraryRoot, setManifestPublisher, setOriginUrl, sha256Hex, stampManifestPublisher, storeSecrets, syncManifestWithDisk, trackOriginBranch, trpcGetUrl, upsertManifestAsset, validateAllPlaceholders, validateKnowledge, validateNestingDepth, validatePlaceholder, writeCuratedManifest } from '../chunk-DFFD4BFG.js';
2
+ import '../chunk-6VRJH4MR.js';
3
+ export { installFromManifest } from '../chunk-FAP63KV7.js';
4
4
  export { GITHUB_PAT_ENV, fetchAssetFilesFromGitHub } from '../chunk-R7FOF242.js';
5
5
  import '../chunk-3TXEJN4W.js';
6
6
  import '../chunk-FRHE7FFB.js';
7
- export { resolveLibraryDir } from '../chunk-TZCQ7ZWQ.js';
7
+ export { resolveLibraryDir } from '../chunk-OOLT6HGP.js';
8
8
  import '../chunk-4GY63JU6.js';
9
- import '../chunk-BF33SCLY.js';
10
- import '../chunk-46OVMT76.js';
9
+ import '../chunk-SWO25LTO.js';
10
+ import '../chunk-G67BOI2J.js';
11
11
  import '../chunk-5BEFNLOR.js';
12
12
  import '../chunk-A2ULN3KX.js';
13
- import '../chunk-2W4LBLIN.js';
14
- export { userConfigPath } from '../chunk-MFHKHXDE.js';
13
+ import '../chunk-LCU5U5IW.js';
14
+ export { userConfigPath } from '../chunk-L5VSIPQD.js';
15
15
  import '../chunk-CPSIPIX7.js';
16
- import '../chunk-7ZHLYXTI.js';
16
+ import '../chunk-RVIZQ5XD.js';
17
17
  import '../chunk-RVRB27AN.js';
18
- import '../chunk-PA7WLID3.js';
19
- import '../chunk-AO7VJ6G6.js';
18
+ import '../chunk-TTPSDC2G.js';
19
+ import '../chunk-O7VPNKYN.js';
20
20
  import '../chunk-ICSCSM5D.js';
21
21
  import '../chunk-JMKB7IB4.js';
22
22
  import '../chunk-MJHSLODD.js';
@@ -1,7 +1,7 @@
1
- export { installFromManifest, longestCommonDirPrefix } from '../chunk-BTISGSK4.js';
1
+ export { installFromManifest, longestCommonDirPrefix } from '../chunk-FAP63KV7.js';
2
2
  export { GITHUB_PAT_ENV, fetchAssetFilesFromGitHub } from '../chunk-R7FOF242.js';
3
- import '../chunk-7ZHLYXTI.js';
4
- import '../chunk-AO7VJ6G6.js';
3
+ import '../chunk-RVIZQ5XD.js';
4
+ import '../chunk-O7VPNKYN.js';
5
5
  import '../chunk-NSBPE2FW.js';
6
6
  //# sourceMappingURL=install.js.map
7
7
  //# sourceMappingURL=install.js.map
@@ -7,7 +7,7 @@ export { KnowledgeManifestSchema, knowledgeKindProvider, validateKnowledge, } fr
7
7
  export { type AssetDefinition, type AssetFilter, type AssetKind, type Assignment, AssignmentNotFoundError, type CreateInstanceInput, DuplicateAssignmentError, type IAssetIndex, type Instance, type InstanceFilter, InstanceHasConsumersError, InstanceNotFoundError, LibraryError, PIN_POLICIES, type PinPolicy, SourceNotFoundError, type SyncResult, type UpdateInstanceInput, } from "./library.js";
8
8
  export type { LocalIndexOptions } from "./local/library.js";
9
9
  export { LocalIndex } from "./local/library.js";
10
- export { LibraryManager } from "./local/library-manager.js";
10
+ export { assertValidLibraryName, LibraryManager } from "./local/library-manager.js";
11
11
  export type { InstalledLibraryAsset, InstallLibraryAssetOpts, } from "./local/install-library-asset.js";
12
12
  export { installLibraryAsset } from "./local/install-library-asset.js";
13
13
  export { LocalCatalogSource, scanLibraryRoot } from "./local/local-catalog-source.js";
@@ -26,11 +26,11 @@ export { CatalogCache, CatalogHttpError, filterKey, OfflineError, RemoteCatalogS
26
26
  export type { RestCatalogSourceOptions } from "./remote/rest-catalog-source.js";
27
27
  export { RestCatalogSource } from "./remote/rest-catalog-source.js";
28
28
  export type { LibrarySyncDriver } from "./sync/driver.js";
29
- export { type CloneOrInitResult, cloneOrInitGitRepo, ensureGitRepo, GitSyncDriver, isGitRepo, setOriginUrl, } from "./sync/git-driver.js";
29
+ export { type CloneOrInitResult, cloneOrInitGitRepo, ensureGitRepo, GitSyncDriver, isGitRepo, setOriginUrl, trackOriginBranch, } from "./sync/git-driver.js";
30
30
  export { LocalSyncDriver } from "./sync/local-driver.js";
31
31
  export type { WriteCuratedManifestInput, WriteCuratedManifestResult, } from "./sync/manifest-writeback.js";
32
32
  export { writeCuratedManifest } from "./sync/manifest-writeback.js";
33
- export { assertManifestEditable, missingRootAssets, pruneMissingRootAssets, setManifestPublisher, stampManifestPublisher, syncManifestWithDisk, type UpsertAssetInput, type UpsertAssetResult, upsertManifestAsset, } from "./manifest-writer.js";
33
+ export { assertManifestEditable, type ManifestSyncResult, missingRootAssets, pruneMissingRootAssets, setManifestPublisher, type SkippedAsset, stampManifestPublisher, syncManifestWithDisk, type UpsertAssetInput, type UpsertAssetResult, upsertManifestAsset, } from "./manifest-writer.js";
34
34
  export { type AddLibraryInput, type AssetRef, type BackendConfig, type ConflictDescriptor, DuplicateLibraryNameError, type GitBackendConfig, LIBRARY_BACKENDS, LIBRARY_OWNERSHIPS, type Library, type LibraryBackend, type LibraryOwnership, LibrarySyncError, type LocalBackendConfig, type LocalChanges, OperationNotPermittedError, type ProposeOpts, type ProposeResult, type PublishOpts, type PublishResult, type PullOpts, type PullResult, type PushOpts, type PushResult, type RemoteChanges, type SyncStatus, type UpdateLibraryInput, UserLibraryNotFoundError, } from "./user-library.js";
35
35
  export { createEmptyLockFile, detectWorkspaceVersion, type LibraryInstanceRef, LibraryInstanceRefSchema, type LibrarySection, LibrarySectionSchema, type LockAssignment, LockAssignmentSchema, type LockFile, LockFileSchema, loadLockFile, loadWorkspaceV2, PinPolicySchema, type PresetApplied, PresetAppliedSchema, PresetExpandedSchema, parseWorkspaceV2, RequiresEdgeSchema, saveLockFile, saveWorkspaceV2, type WorkspaceConfigV2, WorkspaceConfigV2Schema, } from "./workspace-config.js";
36
36
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../library/src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../library/src/index.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,12 @@
11
11
  import type { LibrarySyncDriver } from "../sync/driver.js";
12
12
  import { type AddLibraryInput, type Library, type LibraryBackend, type UpdateLibraryInput } from "../user-library.js";
13
13
  import type { LocalIndex } from "./library.js";
14
+ /**
15
+ * Throw unless `name` is usable as a library name. A name doubles as the
16
+ * directory under the libraries root, so path separators, `..` and whitespace
17
+ * are refused.
18
+ */
19
+ export declare function assertValidLibraryName(name: string): void;
14
20
  export declare class LibraryManager {
15
21
  private readonly lib;
16
22
  private readonly localDrv;
@@ -1 +1 @@
1
- {"version":3,"file":"library-manager.d.ts","sourceRoot":"","sources":["../../../../library/src/local/library-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,OAAO,EACL,KAAK,eAAe,EAGpB,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,kBAAkB,EAExB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AA0B/C,qBAAa,cAAc;IAIb,OAAO,CAAC,QAAQ,CAAC,GAAG;IAHhC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;gBAEjB,GAAG,EAAE,UAAU;IAE5C,mDAAmD;IACnD,SAAS,CAAC,OAAO,EAAE,cAAc,GAAG,iBAAiB;IAS/C,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAiCpD,aAAa,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAMnC,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAarD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMlD,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAmBlF;;;;;OAKG;IACG,kBAAkB,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAQ7C,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAY9C,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IASpF;;;;OAIG;IACG,qBAAqB,CACzB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CA0BnD"}
1
+ {"version":3,"file":"library-manager.d.ts","sourceRoot":"","sources":["../../../../library/src/local/library-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,OAAO,EACL,KAAK,eAAe,EAGpB,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,kBAAkB,EAExB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AA6B/C;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAMzD;AAED,qBAAa,cAAc;IAIb,OAAO,CAAC,QAAQ,CAAC,GAAG;IAHhC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;gBAEjB,GAAG,EAAE,UAAU;IAE5C,mDAAmD;IACnD,SAAS,CAAC,OAAO,EAAE,cAAc,GAAG,iBAAiB;IAS/C,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAkCpD,aAAa,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAMnC,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAarD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMlD,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBlF;;;;;OAKG;IACG,kBAAkB,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAQ7C,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAY9C,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IASpF;;;;OAIG;IACG,qBAAqB,CACzB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CA0BnD"}
@@ -10,7 +10,7 @@
10
10
  *
11
11
  * @docLink packages/library/concepts#local-catalog-source
12
12
  */
13
- import { type DiscoveryResult } from "@skaile/workspaces/discovery";
13
+ import { type DiscoveredAsset, type DiscoveryResult } from "@skaile/workspaces/discovery";
14
14
  import type { CatalogAsset, CatalogAssetFilter, CatalogSourceInfo, IAssetKindRegistry, ICatalogSource } from "@skaile/workspaces/plugins";
15
15
  import type { BackendConfig, LibraryOwnership } from "../user-library.js";
16
16
  import type { LocalIndex } from "./library.js";
@@ -122,12 +122,15 @@ export declare class LocalCatalogSource implements ICatalogSource {
122
122
  *
123
123
  * @param syncOpts - When `includeDev` is set, assets under the source
124
124
  * config's `dev_paths` (e.g. `ai-assets-dev/`) are discovered and cached
125
- * too. Defaults to excluding them (a normal run).
125
+ * too. Defaults to excluding them (a normal run). `exclude` drops every
126
+ * asset it returns `true` for — never upserted, and any row an earlier sync
127
+ * left behind is pruned (`library index` leaves out a non-semver version).
126
128
  * @returns Discovery statistics, fatal `errors`, and non-fatal `advisories`
127
129
  * (missing sha256, unknown kind) — the latter never signal a failed index.
128
130
  */
129
131
  sync(syncOpts?: {
130
132
  includeDev?: boolean;
133
+ exclude?: (asset: DiscoveredAsset) => boolean;
131
134
  }): Promise<{
132
135
  assetsFound: number;
133
136
  assetsUpdated: number;
@@ -1 +1 @@
1
- {"version":3,"file":"local-catalog-source.d.ts","sourceRoot":"","sources":["../../../../library/src/local/local-catalog-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAEL,KAAK,eAAe,EAGrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACf,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAO/C;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAYtD;AAMD;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,kBAAkB,GAAG,SAAS,EACxC,QAAQ,CAAC,EAAE,yBAAyB,GAAG;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAC9D,eAAe,CAejB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAC1C,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,GAAG,yBAAyB,GAAG;IAAE,UAAU,EAAE,IAAI,CAAA;CAAE,CAMnD;AAMD;;;;;;;;GAQG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IAMrD,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAR5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAS;gBAG3B,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,kBAAkB,YAAA,EAC9C,OAAO,CAAC,EAAE,yBAAyB;IAO/B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAMlD,UAAU,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAUhE,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAmB5C,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAMhE,WAAW,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAIjD;;;;;;;;OAQG;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,eAAe;IAQ1D;;;;;;;;;;;OAWG;IACG,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC;QACvD,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;CAiFH"}
1
+ {"version":3,"file":"local-catalog-source.d.ts","sourceRoot":"","sources":["../../../../library/src/local/local-catalog-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,eAAe,EAGrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACf,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAO/C;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAYtD;AAMD;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,kBAAkB,GAAG,SAAS,EACxC,QAAQ,CAAC,EAAE,yBAAyB,GAAG;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAC9D,eAAe,CAejB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAC1C,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,GAAG,yBAAyB,GAAG;IAAE,UAAU,EAAE,IAAI,CAAA;CAAE,CAMnD;AAMD;;;;;;;;GAQG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IAMrD,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAR5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAS;gBAG3B,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,kBAAkB,YAAA,EAC9C,OAAO,CAAC,EAAE,yBAAyB;IAO/B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAMlD,UAAU,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAUhE,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAmB5C,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAMhE,WAAW,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAIjD;;;;;;;;OAQG;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,eAAe;IAQ1D;;;;;;;;;;;;;OAaG;IACG,IAAI,CAAC,QAAQ,CAAC,EAAE;QACpB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC;KAC/C,GAAG,OAAO,CAAC;QACV,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;CAqFH"}
@@ -69,6 +69,24 @@ export declare function stampManifestPublisher(libraryPath: string, publisher: s
69
69
  * the manifest when absent. Returns whether the file changed.
70
70
  */
71
71
  export declare function setManifestPublisher(libraryPath: string, publisher: string): boolean;
72
+ /** An on-disk asset {@link syncManifestWithDisk} left out of the manifest. */
73
+ export interface SkippedAsset {
74
+ kind: string;
75
+ name: string;
76
+ /** Why it was left out: `unparsable` (no readable manifest) or `invalid-version` (not semver). */
77
+ reason: "unparsable" | "invalid-version";
78
+ /** One-line human text, e.g. `version "x" is not valid semver`. */
79
+ detail: string;
80
+ /** The asset's manifest file, relative to the library root. */
81
+ file: string;
82
+ }
83
+ /** Outcome of {@link syncManifestWithDisk}. */
84
+ export interface ManifestSyncResult {
85
+ /** Entries dropped because their root directory is gone. */
86
+ removed: AssetEntry[];
87
+ /** Scanned assets that never became an entry — see {@link SkippedAsset}. */
88
+ skipped: SkippedAsset[];
89
+ }
72
90
  /**
73
91
  * Reconcile the manifest `assets[]` inventory with what is on disk: stamp
74
92
  * `defaultPublisher` when the manifest declares none, prune entries whose root
@@ -77,6 +95,10 @@ export declare function setManifestPublisher(libraryPath: string, publisher: str
77
95
  * publishers an author set are kept; scanned assets inherit the top-level one.
78
96
  * Typed frontmatter whose `type:` is not a registered kind is skipped (reported
79
97
  * as `unknown_asset_kind` by the scanner), never inventoried as a skill.
98
+ *
99
+ * An asset whose manifest file cannot be parsed (an empty `SKILL.md`) or whose
100
+ * version is not semver is never upserted — it would land as a versionless or
101
+ * unpublishable entry. It is returned in `skipped` instead.
80
102
  */
81
- export declare function syncManifestWithDisk(libraryPath: string, defaultPublisher: string, registry: IAssetKindRegistry): Promise<AssetEntry[]>;
103
+ export declare function syncManifestWithDisk(libraryPath: string, defaultPublisher: string, registry: IAssetKindRegistry): Promise<ManifestSyncResult>;
82
104
  //# sourceMappingURL=manifest-writer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"manifest-writer.d.ts","sourceRoot":"","sources":["../../../library/src/manifest-writer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EACL,KAAK,UAAU,EAIf,KAAK,iBAAiB,EAEvB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,kFAAkF;IAClF,KAAK,EAAE,OAAO,CAAC;CAChB;AAgBD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAEhE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,gBAAgB,GACtB,iBAAiB,CAqBnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,UAAU,EAAE,CAMhG;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,EAAE,CASxE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAOtF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAOpF;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,kBAAkB,GAC3B,OAAO,CAAC,UAAU,EAAE,CAAC,CAevB"}
1
+ {"version":3,"file":"manifest-writer.d.ts","sourceRoot":"","sources":["../../../library/src/manifest-writer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EACL,KAAK,UAAU,EAIf,KAAK,iBAAiB,EAEvB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,kFAAkF;IAClF,KAAK,EAAE,OAAO,CAAC;CAChB;AAgBD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAEhE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,gBAAgB,GACtB,iBAAiB,CAwBnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,UAAU,EAAE,CAMhG;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,EAAE,CASxE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAOtF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAOpF;AAED,8EAA8E;AAC9E,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,kGAAkG;IAClG,MAAM,EAAE,YAAY,GAAG,iBAAiB,CAAC;IACzC,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,+CAA+C;AAC/C,MAAM,WAAW,kBAAkB;IACjC,4DAA4D;IAC5D,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,4EAA4E;IAC5E,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,kBAAkB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CAoC7B"}
@@ -32,6 +32,18 @@ export declare function setOriginUrl(libPath: string, url: string): void;
32
32
  * @throws LibrarySyncError carrying git's stderr when git fails.
33
33
  */
34
34
  export declare function ensureGitRepo(libPath: string, url: string, branch: string): void;
35
+ /**
36
+ * Make `branch` track `origin/<branch>` so `git pull`/`git rebase` need no extra
37
+ * arguments. The tracking config is written directly, so it works while the
38
+ * remote has no such branch yet (`git branch --set-upstream-to` would refuse).
39
+ * With `fetch`, the remote branch is fetched best-effort (an unreachable remote
40
+ * is ignored) so `@{u}` resolves right away when the remote already has it.
41
+ *
42
+ * @throws LibrarySyncError carrying git's stderr when git cannot write the config.
43
+ */
44
+ export declare function trackOriginBranch(libPath: string, branch: string, opts?: {
45
+ fetch?: boolean;
46
+ }): void;
35
47
  /** Outcome of {@link cloneOrInitGitRepo}. */
36
48
  export interface CloneOrInitResult {
37
49
  /** Branch the library tracks. */
@@ -1 +1 @@
1
- {"version":3,"file":"git-driver.d.ts","sourceRoot":"","sources":["../../../../library/src/sync/git-driver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EACL,KAAK,QAAQ,EAEb,KAAK,OAAO,EAGZ,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAMrD,+FAA+F;AAC/F,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAElD;AAUD;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAU/D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAMhF;AAED,6CAA6C;AAC7C,MAAM,WAAW,iBAAiB;IAChC,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,MAAM,EAAE,OAAO,CAAC;IAChB,0FAA0F;IAC1F,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,GACb,iBAAiB,CAoBnB;AA8BD,qBAAa,aAAc,YAAW,iBAAiB;IACrD,QAAQ,CAAC,OAAO,EAAG,KAAK,CAAU;IAE5B,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IA4CzC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAuBxD,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAoBxD,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAyDhE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;CAG5F"}
1
+ {"version":3,"file":"git-driver.d.ts","sourceRoot":"","sources":["../../../../library/src/sync/git-driver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EACL,KAAK,QAAQ,EAEb,KAAK,OAAO,EAGZ,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAMrD,+FAA+F;AAC/F,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAElD;AAUD;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAU/D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAMhF;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GACzB,IAAI,CAWN;AAED,6CAA6C;AAC7C,MAAM,WAAW,iBAAiB;IAChC,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,MAAM,EAAE,OAAO,CAAC;IAChB,0FAA0F;IAC1F,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,GACb,iBAAiB,CAoBnB;AA8BD,qBAAa,aAAc,YAAW,iBAAiB;IACrD,QAAQ,CAAC,OAAO,EAAG,KAAK,CAAU;IAE5B,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IA4CzC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IA4CxD,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAoBxD,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAyDhE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;CAG5F"}
@@ -1,38 +1,38 @@
1
- import { makeHttpPublisherClient } from './chunk-GP6ZL7PE.js';
2
- import { checkSkillManifest } from './chunk-2NYXQYHN.js';
3
- import { isStoreAuthenticated, bareName, assetNamespace, refFor, assetEntryRef, manifestNamespaces, plannedRefs, formatNamespaceAvailability, preflightNamespace, publishToStore } from './chunk-65EYRFZJ.js';
4
- import { openLibraryManager } from './chunk-I4QBZLOR.js';
5
- import { logErr, logInfo, logOk, logWarn, S } from './chunk-VJENKWXF.js';
6
- import './chunk-OLLAQLFJ.js';
7
- import './chunk-AOAZCSDI.js';
1
+ import { makeHttpPublisherClient } from './chunk-BWZF2ZIF.js';
2
+ import { findAssetManifestFile, declaredVersion, checkAssetManifest } from './chunk-6C654TFI.js';
3
+ import { isStoreAuthenticated, bareName, assetNamespace, refFor, assetEntryRef, manifestNamespaces, plannedRefs, formatNamespaceAvailability, preflightNamespace, publishToStore } from './chunk-LXY4BUA3.js';
4
+ import { openLibraryManager } from './chunk-GIC3G5YG.js';
5
+ import { logErr, logInfo, logOk, logWarn, S } from './chunk-THEJJBOU.js';
6
+ import './chunk-WIEC3ZE4.js';
7
+ import './chunk-LBQ4BBX4.js';
8
8
  import './chunk-QZLWJETK.js';
9
9
  import './chunk-NFGRW3L7.js';
10
10
  import './chunk-QCI6D7E4.js';
11
- import './chunk-PTO2YDDG.js';
12
- import { missingRootAssets } from './chunk-MX3UQXLU.js';
13
- import './chunk-XOGG7VDZ.js';
14
- import './chunk-BTISGSK4.js';
11
+ import './chunk-D5HOETOB.js';
12
+ import { missingRootAssets } from './chunk-DFFD4BFG.js';
13
+ import { parseManifestFile, SEMVER_RE } from './chunk-6VRJH4MR.js';
14
+ import './chunk-FAP63KV7.js';
15
15
  import './chunk-R7FOF242.js';
16
16
  import './chunk-3TXEJN4W.js';
17
- import './chunk-2KOKBTR4.js';
17
+ import './chunk-74EEFB52.js';
18
18
  import './chunk-CGYEHQOX.js';
19
19
  import './chunk-KTBKW2FI.js';
20
20
  import './chunk-UQ6LFBPZ.js';
21
- import './chunk-VKSXST23.js';
21
+ import './chunk-AVCUPPG6.js';
22
22
  import './chunk-FRHE7FFB.js';
23
- import './chunk-TZCQ7ZWQ.js';
23
+ import './chunk-OOLT6HGP.js';
24
24
  import './chunk-4GY63JU6.js';
25
- import './chunk-BF33SCLY.js';
26
- import './chunk-46OVMT76.js';
25
+ import './chunk-SWO25LTO.js';
26
+ import './chunk-G67BOI2J.js';
27
27
  import './chunk-5BEFNLOR.js';
28
28
  import './chunk-A2ULN3KX.js';
29
- import './chunk-2W4LBLIN.js';
30
- import './chunk-MFHKHXDE.js';
29
+ import './chunk-LCU5U5IW.js';
30
+ import './chunk-L5VSIPQD.js';
31
31
  import './chunk-CPSIPIX7.js';
32
- import { loadSkPublishManifest, decodeSkaileManifest } from './chunk-7ZHLYXTI.js';
32
+ import { loadSkPublishManifest, decodeSkaileManifest } from './chunk-RVIZQ5XD.js';
33
33
  import './chunk-RVRB27AN.js';
34
- import { parseFrontmatter } from './chunk-PA7WLID3.js';
35
- import './chunk-AO7VJ6G6.js';
34
+ import { parseFrontmatter } from './chunk-TTPSDC2G.js';
35
+ import './chunk-O7VPNKYN.js';
36
36
  import './chunk-ICSCSM5D.js';
37
37
  import './chunk-JMKB7IB4.js';
38
38
  import './chunk-MJHSLODD.js';
@@ -132,31 +132,68 @@ function isGithubRemote(url) {
132
132
  url.trim()
133
133
  );
134
134
  }
135
+ function notGithubRemoteMessage(name, url) {
136
+ return `The remote of library "${name}" is not a GitHub url: ${url}. The store fetches published assets from GitHub \u2014 repoint it with \`skaile library set ${name} backendConfig.url=https://github.com/<owner>/<repo>\`.`;
137
+ }
135
138
  var MAX_LISTED_UNTRACKED = 10;
136
- function assetWarnings(libPath, manifest, targetName) {
139
+ function planAssets(libPath, manifest, targetName) {
140
+ const out = [];
141
+ for (const entry of manifest.assets ?? []) {
142
+ if (targetName && entry.name !== targetName) continue;
143
+ if (!entry.root || entry.source || manifest.source) continue;
144
+ const file = findAssetManifestFile(join(libPath, entry.root), entry.kind, entry.name);
145
+ if (!file) continue;
146
+ const text = readFileSync(file, "utf-8");
147
+ out.push({
148
+ entry,
149
+ rel: relative(libPath, file),
150
+ parsed: parseManifestFile(file, text),
151
+ body: parseFrontmatter(text).body
152
+ });
153
+ }
154
+ return out;
155
+ }
156
+ function assetRefusals(assets, manifest) {
157
+ const refusals = [];
158
+ for (const { entry, rel, parsed } of assets) {
159
+ const ref = assetEntryRef(entry, manifest);
160
+ if (!parsed.ok) {
161
+ refusals.push(`${ref} (${rel}) \u2014 manifest file could not be parsed: ${parsed.reason}`);
162
+ continue;
163
+ }
164
+ const fileVersion = declaredVersion(parsed.data);
165
+ for (const version of /* @__PURE__ */ new Set([entry.version, fileVersion])) {
166
+ if (version !== void 0 && !SEMVER_RE.test(version)) {
167
+ refusals.push(`${ref} (${rel}) \u2014 version "${version}" is not valid semver`);
168
+ }
169
+ }
170
+ }
171
+ return refusals;
172
+ }
173
+ function assetWarnings(assets, manifest) {
137
174
  const warnings = [];
138
- for (const a of manifest.assets ?? []) {
139
- if (targetName && a.name !== targetName) continue;
140
- if (a.kind !== "skill" || !a.root || a.source || manifest.source) continue;
141
- const file = join(libPath, a.root, "SKILL.md");
142
- if (!existsSync(file)) continue;
143
- const { data, body } = parseFrontmatter(readFileSync(file, "utf-8"));
144
- if (!data || Object.keys(data).length === 0) continue;
145
- const rel = relative(libPath, file);
146
- for (const f of checkSkillManifest(data, body, basename(join(libPath, a.root)))) {
147
- warnings.push(`${assetEntryRef(a, manifest)} (${rel}) [${f.tag}] \u2014 ${f.text}`);
175
+ for (const { entry, rel, parsed, body } of assets) {
176
+ if (!parsed.ok || Object.keys(parsed.data).length === 0) continue;
177
+ const findings = checkAssetManifest(
178
+ entry.kind,
179
+ parsed.data,
180
+ rel.endsWith(".md") ? body : void 0,
181
+ basename(entry.root ?? "")
182
+ );
183
+ for (const f of findings) {
184
+ warnings.push(`${assetEntryRef(entry, manifest)} (${rel}) [${f.tag}] \u2014 ${f.text}`);
148
185
  }
149
186
  }
150
187
  return warnings;
151
188
  }
152
- function publishWarnings(libPath, spawn, skipPush, manifest, targetName) {
189
+ function publishWarnings(libPath, spawn, skipPush, manifest, assets) {
153
190
  const warnings = [];
154
191
  if (!existsSync(join(libPath, "LICENSE")) && !existsSync(join(libPath, "LICENSE.md"))) {
155
192
  warnings.push(
156
193
  "No LICENSE or LICENSE.md in the library root \u2014 a public repo without a license grants consumers no rights to use it."
157
194
  );
158
195
  }
159
- warnings.push(...assetWarnings(libPath, manifest, targetName));
196
+ warnings.push(...assetWarnings(assets, manifest));
160
197
  if (!skipPush) {
161
198
  const status = runGit(spawn, libPath, ["status", "--porcelain", "--untracked-files=all"]);
162
199
  if (status.status === 0) {
@@ -236,16 +273,23 @@ async function publishLibrary(name, opts, client, spawn = spawnSync) {
236
273
  process.exit(1);
237
274
  }
238
275
  } else if (!isGithubRemote(remoteUrl)) {
239
- logErr(
240
- `The remote of library "${name}" is not a GitHub url: ${remoteUrl}. The store fetches published assets from GitHub \u2014 repoint it with \`skaile library set ${name} backendConfig.url=https://github.com/<owner>/<repo>\`.`
241
- );
276
+ logErr(notGithubRemoteMessage(name, remoteUrl));
242
277
  process.exit(1);
243
278
  }
244
279
  const targetName = opts.asset ? bareName(opts.asset) : void 0;
245
280
  const namespaces = manifestNamespaces(manifest, targetName);
246
281
  const wouldBeRefs = plannedRefs(manifest, targetName);
282
+ const assets = planAssets(lib.path, manifest, targetName);
283
+ const refusals = assetRefusals(assets, manifest);
284
+ if (refusals.length > 0) {
285
+ for (const r of refusals) logErr(r);
286
+ logErr(
287
+ `These assets cannot be published. Fix them (see \`skaile validate\`), then run \`skaile library index ${name}\` and re-run.`
288
+ );
289
+ process.exit(1);
290
+ }
247
291
  const sourceRef = opts.ref ?? branchOf(lib);
248
- const warnings = publishWarnings(lib.path, spawn, opts.skipPush, manifest, targetName);
292
+ const warnings = publishWarnings(lib.path, spawn, opts.skipPush, manifest, assets);
249
293
  if (opts.dryRun) {
250
294
  logInfo(`Publish plan for ${S.bold(name)}:`);
251
295
  logInfo(
@@ -363,6 +407,6 @@ async function runLibraryYank(name, opts, client) {
363
407
  }
364
408
  }
365
409
 
366
- export { runLibraryPublish, runLibraryRegister, runLibraryYank };
367
- //# sourceMappingURL=library-publish-LFOJJVMK.js.map
368
- //# sourceMappingURL=library-publish-LFOJJVMK.js.map
410
+ export { isGithubRemote, notGithubRemoteMessage, runLibraryPublish, runLibraryRegister, runLibraryYank };
411
+ //# sourceMappingURL=library-publish-FGXF5TJO.js.map
412
+ //# sourceMappingURL=library-publish-FGXF5TJO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../cli/src/commands/library-publish.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DA,IAAM,iBAAA,GAAoB,sBAAA;AAG1B,SAAS,YAAY,GAAA,EAAkC;AACrD,EAAA,IAAI,GAAA,CAAI,OAAA,KAAY,KAAA,EAAO,OAAO,MAAA;AAClC,EAAA,OAAQ,IAAI,aAAA,CAAmC,GAAA;AACjD;AAGA,SAAS,SAAS,GAAA,EAAsB;AACtC,EAAA,IAAI,GAAA,CAAI,OAAA,KAAY,KAAA,EAAO,OAAO,MAAA;AAClC,EAAA,OAAQ,GAAA,CAAI,cAAmC,MAAA,IAAU,MAAA;AAC3D;AAMA,SAAS,aAAa,OAAA,EAAoC;AACxD,EAAA,IAAI,IAAA;AACJ,EAAA,IAAI;AACF,IAAA,IAAA,GAAO,YAAA,CAAa,IAAA,CAAK,OAAA,EAAS,iBAAiB,GAAG,OAAO,CAAA;AAAA,EAC/D,CAAA,CAAA,MAAQ;AACN,IAAA,MAAA;AAAA,MACE,CAAA,GAAA,EAAM,CAAA,CAAE,GAAA,CAAI,iBAAiB,CAAC,CAAA,+GAAA;AAAA,KAEhC;AACA,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AACA,EAAA,MAAM,EAAE,QAAA,EAAU,WAAA,EAAY,GAAI,qBAAqB,IAAI,CAAA;AAC3D,EAAA,MAAM,SAAS,WAAA,CAAY,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,aAAa,OAAO,CAAA;AAC/D,EAAA,IAAI,MAAA,CAAO,SAAS,CAAA,EAAG;AACrB,IAAA,KAAA,MAAW,CAAA,IAAK,QAAQ,MAAA,CAAO,CAAA,EAAG,EAAE,IAAI,CAAA,EAAA,EAAK,CAAA,CAAE,OAAO,CAAA,CAAE,CAAA;AACxD,IAAA,MAAA,CAAO,mFAA8E,CAAA;AACrF,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AACA,EAAA,OAAO,QAAA;AACT;AAGA,SAAS,MAAA,CAAO,KAAA,EAAkB,GAAA,EAAa,IAAA,EAAgB;AAC7D,EAAA,OAAO,KAAA,CAAM,KAAA,EAAO,CAAC,IAAA,EAAM,GAAA,EAAK,GAAG,IAAI,CAAA,EAAG,EAAE,QAAA,EAAU,OAAA,EAAS,CAAA;AACjE;AAQA,SAAS,cAAc,IAAA,EAKd;AACP,EAAA,MAAM,EAAE,OAAA,EAAS,SAAA,EAAW,MAAA,EAAQ,OAAM,GAAI,IAAA;AAE9C,EAAA,MAAM,SAAS,MAAA,CAAO,KAAA,EAAO,SAAS,CAAC,WAAA,EAAa,WAAW,CAAC,CAAA;AAChE,EAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,IAAA,MAAM,OAAO,MAAA,CAAO,KAAA,EAAO,OAAA,EAAS,CAAC,MAAM,CAAC,CAAA;AAC5C,IAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,iBAAA,EAAA,CAAqB,IAAA,CAAK,MAAA,IAAU,EAAA,EAAI,QAAA,EAAS,CAAE,IAAA,EAAK,IAAK,CAAA,KAAA,EAAQ,IAAA,CAAK,MAAM,CAAA,CAAE,CAAA;AAAA,OACpF;AAAA,IACF;AAAA,EACF;AAGA,EAAA,MAAM,MAAA,GAAS,OAAO,KAAA,EAAO,OAAA,EAAS,CAAC,QAAA,EAAU,SAAA,EAAW,QAAQ,CAAC,CAAA;AACrE,EAAA,MAAM,UAAA,GACJ,MAAA,CAAO,MAAA,KAAW,CAAA,GACd,CAAC,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,SAAS,CAAA,GACzC,CAAC,QAAA,EAAU,KAAA,EAAO,UAAU,SAAS,CAAA;AAC3C,EAAA,MAAM,SAAA,GAAY,MAAA,CAAO,KAAA,EAAO,OAAA,EAAS,UAAU,CAAA;AACnD,EAAA,IAAI,SAAA,CAAU,WAAW,CAAA,EAAG;AAC1B,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,mBAAA,EAAA,CAAuB,SAAA,CAAU,MAAA,IAAU,EAAA,EAAI,QAAA,EAAS,CAAE,IAAA,EAAK,IAAK,CAAA,KAAA,EAAQ,SAAA,CAAU,MAAM,CAAA,CAAE,CAAA;AAAA,KAChG;AAAA,EACF;AAEA,EAAA,MAAM,MAAM,MAAA,CAAO,KAAA,EAAO,SAAS,CAAC,KAAA,EAAO,IAAI,CAAC,CAAA;AAChD,EAAA,IAAI,GAAA,CAAI,WAAW,CAAA,EAAG;AACpB,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,gBAAA,EAAA,CAAoB,GAAA,CAAI,MAAA,IAAU,EAAA,EAAI,QAAA,EAAS,CAAE,IAAA,EAAK,IAAK,CAAA,KAAA,EAAQ,GAAA,CAAI,MAAM,CAAA,CAAE,CAAA;AAAA,KACjF;AAAA,EACF;AAIA,EAAA,MAAM,MAAA,GAAS,KAAA;AAAA,IACb,KAAA;AAAA,IACA;AAAA,MACE,IAAA;AAAA,MACA,OAAA;AAAA,MACA,IAAA;AAAA,MACA,iCAAA;AAAA,MACA,IAAA;AAAA,MACA,kBAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,EAAE,UAAU,OAAA;AAAQ,GACtB;AACA,EAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,IAAA,MAAM,GAAA,GAAM,GAAG,MAAA,CAAO,MAAA,IAAU,EAAE,CAAA,EAAG,MAAA,CAAO,UAAU,EAAE,CAAA,CAAA;AACxD,IAAA,IAAI,CAAC,oBAAA,CAAqB,IAAA,CAAK,GAAG,CAAA,EAAG;AACnC,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,mBAAA,EAAsB,GAAA,CAAI,IAAA,MAAU,CAAA,KAAA,EAAQ,MAAA,CAAO,MAAM,CAAA,CAAE,CAAA,CAAE,CAAA;AAAA,IAC/E;AAAA,EACF;AAEA,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,KAAA,EAAO,OAAA,EAAS,CAAC,QAAQ,QAAA,EAAU,CAAA,KAAA,EAAQ,MAAM,CAAA,CAAE,CAAC,CAAA;AACxE,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,iBAAA,EAAA,CAAqB,IAAA,CAAK,MAAA,IAAU,EAAA,EAAI,QAAA,EAAS,CAAE,IAAA,EAAK,IAAK,CAAA,KAAA,EAAQ,IAAA,CAAK,MAAM,CAAA,CAAE,CAAA;AAAA,KACpF;AAAA,EACF;AACF;AAQO,SAAS,eAAe,GAAA,EAAsB;AACnD,EAAA,OAAO,yGAAA,CAA0G,IAAA;AAAA,IAC/G,IAAI,IAAA;AAAK,GACX;AACF;AAGO,SAAS,sBAAA,CAAuB,MAAc,GAAA,EAAqB;AACxE,EAAA,OACE,CAAA,uBAAA,EAA0B,IAAI,CAAA,uBAAA,EAA0B,GAAG,gGAEnC,IAAI,CAAA,uDAAA,CAAA;AAEhC;AAGA,IAAM,oBAAA,GAAuB,EAAA;AAgB7B,SAAS,UAAA,CACP,OAAA,EACA,QAAA,EACA,UAAA,EACa;AACb,EAAA,MAAM,MAAmB,EAAC;AAC1B,EAAA,KAAA,MAAW,KAAA,IAAS,QAAA,CAAS,MAAA,IAAU,EAAC,EAAG;AACzC,IAAA,IAAI,UAAA,IAAc,KAAA,CAAM,IAAA,KAAS,UAAA,EAAY;AAC7C,IAAA,IAAI,CAAC,KAAA,CAAM,IAAA,IAAQ,KAAA,CAAM,MAAA,IAAU,SAAS,MAAA,EAAQ;AACpD,IAAA,MAAM,IAAA,GAAO,qBAAA,CAAsB,IAAA,CAAK,OAAA,EAAS,KAAA,CAAM,IAAI,CAAA,EAAG,KAAA,CAAM,IAAA,EAAM,KAAA,CAAM,IAAI,CAAA;AACpF,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,MAAM,IAAA,GAAO,YAAA,CAAa,IAAA,EAAM,OAAO,CAAA;AACvC,IAAA,GAAA,CAAI,IAAA,CAAK;AAAA,MACP,KAAA;AAAA,MACA,GAAA,EAAK,QAAA,CAAS,OAAA,EAAS,IAAI,CAAA;AAAA,MAC3B,MAAA,EAAQ,iBAAA,CAAkB,IAAA,EAAM,IAAI,CAAA;AAAA,MACpC,IAAA,EAAM,gBAAA,CAAiB,IAAI,CAAA,CAAE;AAAA,KAC9B,CAAA;AAAA,EACH;AACA,EAAA,OAAO,GAAA;AACT;AAQA,SAAS,aAAA,CAAc,QAAqB,QAAA,EAAuC;AACjF,EAAA,MAAM,WAAqB,EAAC;AAC5B,EAAA,KAAA,MAAW,EAAE,KAAA,EAAO,GAAA,EAAK,MAAA,MAAY,MAAA,EAAQ;AAC3C,IAAA,MAAM,GAAA,GAAM,aAAA,CAAc,KAAA,EAAO,QAAQ,CAAA;AACzC,IAAA,IAAI,CAAC,OAAO,EAAA,EAAI;AACd,MAAA,QAAA,CAAS,IAAA,CAAK,GAAG,GAAG,CAAA,EAAA,EAAK,GAAG,CAAA,4CAAA,EAA0C,MAAA,CAAO,MAAM,CAAA,CAAE,CAAA;AACrF,MAAA;AAAA,IACF;AACA,IAAA,MAAM,WAAA,GAAc,eAAA,CAAgB,MAAA,CAAO,IAAI,CAAA;AAC/C,IAAA,KAAA,MAAW,OAAA,wBAAe,GAAA,CAAI,CAAC,MAAM,OAAA,EAAS,WAAW,CAAC,CAAA,EAAG;AAC3D,MAAA,IAAI,YAAY,MAAA,IAAa,CAAC,SAAA,CAAU,IAAA,CAAK,OAAO,CAAA,EAAG;AACrD,QAAA,QAAA,CAAS,KAAK,CAAA,EAAG,GAAG,KAAK,GAAG,CAAA,kBAAA,EAAgB,OAAO,CAAA,qBAAA,CAAuB,CAAA;AAAA,MAC5E;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO,QAAA;AACT;AAQA,SAAS,aAAA,CAAc,QAAqB,QAAA,EAAuC;AACjF,EAAA,MAAM,WAAqB,EAAC;AAC5B,EAAA,KAAA,MAAW,EAAE,KAAA,EAAO,GAAA,EAAK,MAAA,EAAQ,IAAA,MAAU,MAAA,EAAQ;AACjD,IAAA,IAAI,CAAC,OAAO,EAAA,IAAM,MAAA,CAAO,KAAK,MAAA,CAAO,IAAI,CAAA,CAAE,MAAA,KAAW,CAAA,EAAG;AACzD,IAAA,MAAM,QAAA,GAAW,kBAAA;AAAA,MACf,KAAA,CAAM,IAAA;AAAA,MACN,MAAA,CAAO,IAAA;AAAA,MACP,GAAA,CAAI,QAAA,CAAS,KAAK,CAAA,GAAI,IAAA,GAAO,MAAA;AAAA,MAC7B,QAAA,CAAS,KAAA,CAAM,IAAA,IAAQ,EAAE;AAAA,KAC3B;AACA,IAAA,KAAA,MAAW,KAAK,QAAA,EAAU;AACxB,MAAA,QAAA,CAAS,IAAA,CAAK,CAAA,EAAG,aAAA,CAAc,KAAA,EAAO,QAAQ,CAAC,CAAA,EAAA,EAAK,GAAG,CAAA,GAAA,EAAM,CAAA,CAAE,GAAG,CAAA,SAAA,EAAO,CAAA,CAAE,IAAI,CAAA,CAAE,CAAA;AAAA,IACnF;AAAA,EACF;AACA,EAAA,OAAO,QAAA;AACT;AAQA,SAAS,eAAA,CACP,OAAA,EACA,KAAA,EACA,QAAA,EACA,UACA,MAAA,EACU;AACV,EAAA,MAAM,WAAqB,EAAC;AAC5B,EAAA,IAAI,CAAC,UAAA,CAAW,IAAA,CAAK,OAAA,EAAS,SAAS,CAAC,CAAA,IAAK,CAAC,UAAA,CAAW,IAAA,CAAK,OAAA,EAAS,YAAY,CAAC,CAAA,EAAG;AACrF,IAAA,QAAA,CAAS,IAAA;AAAA,MACP;AAAA,KACF;AAAA,EACF;AACA,EAAA,QAAA,CAAS,IAAA,CAAK,GAAG,aAAA,CAAc,MAAA,EAAQ,QAAQ,CAAC,CAAA;AAChD,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,MAAM,MAAA,GAAS,OAAO,KAAA,EAAO,OAAA,EAAS,CAAC,QAAA,EAAU,aAAA,EAAe,uBAAuB,CAAC,CAAA;AACxF,IAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,MAAA,MAAM,SAAA,GAAA,CAAa,OAAO,MAAA,IAAU,EAAA,EACjC,UAAS,CACT,KAAA,CAAM,IAAI,CAAA,CACV,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,UAAA,CAAW,KAAK,CAAC,CAAA,CACjC,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,CAAM,CAAC,CAAC,CAAA;AACxB,MAAA,IAAI,SAAA,CAAU,SAAS,CAAA,EAAG;AACxB,QAAA,MAAM,QAAQ,SAAA,CAAU,KAAA,CAAM,GAAG,oBAAoB,CAAA,CAAE,KAAK,IAAI,CAAA;AAChE,QAAA,MAAM,IAAA,GACJ,UAAU,MAAA,GAAS,oBAAA,GACf,QAAQ,SAAA,CAAU,MAAA,GAAS,oBAAoB,CAAA,KAAA,CAAA,GAC/C,EAAA;AACN,QAAA,QAAA,CAAS,IAAA;AAAA,UACP,GAAG,SAAA,CAAU,MAAM,CAAA,sEAAA,EAAyE,KAAK,GAAG,IAAI,CAAA,CAAA;AAAA,SAC1G;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO,QAAA;AACT;AAMA,IAAM,oBAAA,GACJ,6PAAA;AAQF,SAAS,eAAA,CAAgB,IAAA,EAAc,KAAA,EAAkB,SAAA,EAA4B;AACnF,EAAA,MAAM,GAAA,GAAM,KAAA,CAAM,IAAA,EAAM,CAAC,MAAA,EAAQ,UAAU,IAAA,EAAM,SAAA,GAAY,WAAA,GAAc,UAAU,CAAA,EAAG;AAAA,IACtF,QAAA,EAAU;AAAA,GACX,CAAA;AACD,EAAA,IAAI,GAAA,CAAI,WAAW,CAAA,EAAG;AACpB,IAAA,MAAM,UAAU,GAAA,CAAI,MAAA,IAAU,EAAA,EAAI,QAAA,GAAW,IAAA,EAAK;AAClD,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,eAAA,EAAkB,IAAI,CAAA,SAAA,EAAY,UAAU,CAAA,KAAA,EAAQ,GAAA,CAAI,MAAM,CAAA,CAAE,CAAA,CAAE,CAAA;AAAA,EACpF;AAIA,EAAA,MAAM,GAAA,GAAM,CAAA,EAAG,GAAA,CAAI,MAAA,IAAU,EAAE;AAAA,EAAK,GAAA,CAAI,UAAU,EAAE,CAAA,CAAA;AACpD,EAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,KAAA,CAAM,+BAA+B,CAAA;AACvD,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,eAAA,EAAkB,IAAI,CAAA;AAAA,EAAwC,GAAA,CAAI,IAAA,EAAM,CAAA,CAAE,CAAA;AAAA,EAC5F;AACA,EAAA,OAAO,MAAM,CAAC,CAAA,CAAE,QAAQ,QAAA,EAAU,EAAE,EAAE,IAAA,EAAK;AAC7C;AAGA,eAAe,cAAA,CACb,IAAA,EACA,IAAA,EAQA,MAAA,EACA,QAAmB,SAAA,EACJ;AACf,EAAA,MAAM,WAAW,MAAA,KAAW,MAAA;AAC5B,EAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,MAAM,kBAAA,EAAmB;AACpD,EAAA,IAAI;AACF,IAAA,MAAM,GAAA,GAAM,MAAM,OAAA,CAAQ,cAAA,CAAe,IAAI,CAAA;AAC7C,IAAA,MAAM,QAAA,GAAW,YAAA,CAAa,GAAA,CAAI,IAAI,CAAA;AAItC,IAAA,MAAM,OAAA,GAAU,iBAAA,CAAkB,GAAA,CAAI,IAAA,EAAM,QAAQ,CAAA;AACpD,IAAA,IAAI,OAAA,CAAQ,SAAS,CAAA,EAAG;AACtB,MAAA,KAAA,MAAW,KAAK,OAAA,EAAS;AACvB,QAAA,MAAA,CAAO,CAAA,EAAG,cAAc,CAAA,EAAG,QAAQ,CAAC,CAAA,cAAA,EAAY,CAAA,CAAE,IAAI,CAAA,gCAAA,CAAkC,CAAA;AAAA,MAC1F;AACA,MAAA,MAAA;AAAA,QACE,oFAC4B,IAAI,CAAA,+CAAA;AAAA,OAClC;AACA,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB;AAIA,IAAA,IAAI,SAAA,GAAY,YAAY,GAAG,CAAA;AAC/B,IAAA,IAAI,eAAA,GAAkB,KAAA;AACtB,IAAA,IAAI,IAAA,CAAK,OAAA,IAAW,CAAC,IAAA,CAAK,UAAA,EAAY;AACpC,MAAA,MAAA;AAAA,QACE;AAAA,OACF;AACA,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB;AACA,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,OAAA,GAAU,SAAA,GAAY,QAAA;AAC9C,IAAA,IAAI,CAAC,SAAA,EAAW;AACd,MAAA,IAAI,KAAK,UAAA,EAAY;AACnB,QAAA,IAAI,IAAA,CAAK,OAAA,EAAS,OAAA,CAAQ,oBAAoB,CAAA;AAC9C,QAAA,IAAI,KAAK,MAAA,EAAQ;AAGf,UAAA,eAAA,GAAkB,IAAA;AAClB,UAAA,SAAA,GAAY,CAAA,kCAAA,EAAqC,IAAI,IAAI,CAAA,CAAA;AAAA,QAC3D,CAAA,MAAO;AACL,UAAA,SAAA,GAAY,gBAAgB,GAAA,CAAI,IAAA,EAAM,KAAA,EAAO,IAAA,CAAK,YAAY,IAAI,CAAA;AAClE,UAAA,MAAM,OAAA,CAAQ,cAAc,IAAA,EAAM;AAAA,YAChC,OAAA,EAAS,KAAA;AAAA,YACT,eAAe,EAAE,GAAA,EAAK,WAAW,MAAA,EAAQ,MAAA,EAAQ,UAAU,KAAA;AAAM,WAClE,CAAA;AACD,UAAA,KAAA,CAAM,oBAAoB,CAAA,CAAE,GAAA,CAAI,SAAS,CAAC,CAAA,EAAA,EAAK,UAAU,CAAA,EAAA,CAAI,CAAA;AAAA,QAC/D;AAAA,MACF,CAAA,MAAO;AACL,QAAA,MAAA;AAAA,UACE,CAAA,SAAA,EAAY,IAAI,CAAA,2BAAA,EAAyB,CAAA,CAAE,IAAI,CAAA,oBAAA,EAAuB,IAAI,QAAQ,CAAC,CAAA,6DAAA;AAAA,SAErF;AACA,QAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,MAChB;AAAA,IACF,CAAA,MAAA,IAAW,CAAC,cAAA,CAAe,SAAS,CAAA,EAAG;AAIrC,MAAA,MAAA,CAAO,sBAAA,CAAuB,IAAA,EAAM,SAAS,CAAC,CAAA;AAC9C,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB;AAIA,IAAA,MAAM,aAAa,IAAA,CAAK,KAAA,GAAQ,QAAA,CAAS,IAAA,CAAK,KAAK,CAAA,GAAI,KAAA,CAAA;AACvD,IAAA,MAAM,UAAA,GAAa,kBAAA,CAAmB,QAAA,EAAU,UAAU,CAAA;AAC1D,IAAA,MAAM,WAAA,GAAc,WAAA,CAAY,QAAA,EAAU,UAAU,CAAA;AAIpD,IAAA,MAAM,MAAA,GAAS,UAAA,CAAW,GAAA,CAAI,IAAA,EAAM,UAAU,UAAU,CAAA;AACxD,IAAA,MAAM,QAAA,GAAW,aAAA,CAAc,MAAA,EAAQ,QAAQ,CAAA;AAC/C,IAAA,IAAI,QAAA,CAAS,SAAS,CAAA,EAAG;AACvB,MAAA,KAAA,MAAW,CAAA,IAAK,QAAA,EAAU,MAAA,CAAO,CAAC,CAAA;AAClC,MAAA,MAAA;AAAA,QACE,yGAC4B,IAAI,CAAA,cAAA;AAAA,OAClC;AACA,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB;AAEA,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,GAAA,IAAO,QAAA,CAAS,GAAG,CAAA;AAC1C,IAAA,MAAM,QAAA,GAAW,gBAAgB,GAAA,CAAI,IAAA,EAAM,OAAO,IAAA,CAAK,QAAA,EAAU,UAAU,MAAM,CAAA;AAEjF,IAAA,IAAI,KAAK,MAAA,EAAQ;AACf,MAAA,OAAA,CAAQ,CAAA,iBAAA,EAAoB,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,CAAG,CAAA;AAC3C,MAAA,OAAA;AAAA,QACE,CAAA,cAAA,EAAiB,SAAS,CAAA,EAAG,eAAA,GAAkB,uBAAuB,UAAU,CAAA,wBAAA,EAA2B,UAAU,CAAA,GAAA,CAAA,GAAQ,EAAE,CAAA;AAAA,OACjI;AACA,MAAA,OAAA;AAAA,QACE,CAAA,cAAA,EAAiB,WAAW,MAAA,GAAS,CAAA,GAAI,WAAW,IAAA,CAAK,IAAI,IAAI,sBAAsB,CAAA;AAAA,OACzF;AAGA,MAAA,MAAM,QAAA,GAAW,YAAY,oBAAA,EAAqB;AAClD,MAAA,IAAI,CAAC,QAAA,EAAU;AAEb,QAAA,OAAA,CAAQ,mEAAmE,CAAA;AAAA,MAC7E,CAAA,MAAA,IAAW,UAAA,CAAW,MAAA,GAAS,CAAA,EAAG;AAChC,QAAA,KAAA,MAAW,MAAM,UAAA,EAAY;AAC3B,UAAA,IAAI;AACF,YAAA,MAAM,QAAQ,MAAA,CAAO,MAAA,IAAU,uBAAA,EAAwB,EAAG,sBAAsB,EAAE,CAAA;AAClF,YAAA,MAAM,SAAS,UAAA,CAAW,MAAA,GAAS,CAAA,GAAI,CAAA,CAAA,EAAI,EAAE,CAAA,QAAA,CAAA,GAAQ,EAAA;AACrD,YAAA,OAAA,CAAQ,iBAAiB,MAAM,CAAA,EAAG,2BAAA,CAA4B,KAAK,CAAC,CAAA,CAAE,CAAA;AAAA,UACxE,CAAA,CAAA,MAAQ;AAAA,UAER;AAAA,QACF;AAAA,MACF;AACA,MAAA,OAAA,CAAQ,CAAA,cAAA,EAAiB,SAAS,CAAA,CAAE,CAAA;AACpC,MAAA,OAAA,CAAQ,CAAA,gBAAA,EAAmB,WAAA,CAAY,MAAM,CAAA,UAAA,CAAY,CAAA;AACzD,MAAA,KAAA,MAAW,CAAA,IAAK,WAAA,EAAa,OAAA,CAAQ,CAAA,IAAA,EAAO,CAAC,CAAA,CAAE,CAAA;AAC/C,MAAA,KAAA,MAAW,CAAA,IAAK,QAAA,EAAU,OAAA,CAAQ,CAAC,CAAA;AACnC,MAAA;AAAA,IACF;AAGA,IAAA,KAAA,MAAW,CAAA,IAAK,QAAA,EAAU,OAAA,CAAQ,CAAC,CAAA;AAGnC,IAAA,IAAI,CAAC,QAAA,IAAY,CAAC,oBAAA,EAAqB,EAAG;AACxC,MAAA,MAAA,CAAO,sDAAiD,CAAA;AACxD,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB;AAEA,IAAA,MAAM,GAAA,GAAM,UAAU,uBAAA,EAAwB;AAI9C,IAAA,KAAA,MAAW,MAAM,UAAA,EAAY;AAC3B,MAAA,MAAM,IAAA,GAAO,MAAM,kBAAA,CAAmB,GAAA,EAAK,EAAE,CAAA;AAC7C,MAAA,IAAI,CAAC,KAAK,EAAA,EAAI;AACZ,QAAA,MAAA,CAAO,IAAA,CAAK,OAAA,IAAW,CAAA,sBAAA,EAAyB,EAAE,CAAA,CAAA,CAAG,CAAA;AACrD,QAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,MAChB;AAAA,IACF;AAGA,IAAA,IAAI,CAAC,KAAK,QAAA,EAAU;AAGlB,MAAA,OAAA;AAAA,QACE,CAAA,wDAAA,EAA2D,CAAA,CAAE,GAAA,CAAI,SAAS,CAAC,CAAA,wEAAA;AAAA,OAE7E;AACA,MAAA,aAAA,CAAc,EAAE,OAAA,EAAS,GAAA,CAAI,IAAA,EAAM,SAAA,EAAW,QAAQ,QAAA,CAAS,GAAG,CAAA,EAAG,KAAA,EAAO,CAAA;AAC5E,MAAA,KAAA,CAAM,CAAA,OAAA,EAAU,CAAA,CAAE,GAAA,CAAI,IAAI,CAAC,OAAO,CAAA,CAAE,GAAA,CAAI,SAAS,CAAC,CAAA,CAAA,CAAG,CAAA;AAAA,IACvD;AAEA,IAAA,MAAM,EAAE,SAAA,EAAU,GAAI,MAAM,cAAA,CAAe;AAAA,MACzC,SAAA,EAAW,SAAA;AAAA,MACX,GAAA,EAAK,SAAA;AAAA,MACL,QAAA;AAAA,MACA,SAAA,EAAW,UAAA;AAAA,MACX,MAAA,EAAQ;AAAA,KACT,CAAA;AAED,IAAA,IAAI,SAAA,CAAU,SAAS,CAAA,EAAG;AACxB,MAAA,OAAA,CAAQ,CAAA,+BAAA,EAAkC,SAAA,CAAU,CAAC,CAAC,CAAA,GAAA,CAAK,CAAA;AAAA,IAC7D;AAAA,EACF,CAAA,SAAE;AACA,IAAA,KAAA,EAAM;AAAA,EACR;AACF;AAOA,eAAsB,iBAAA,CACpB,IAAA,EACA,IAAA,EAOA,MAAA,EACA,QAAmB,SAAA,EACJ;AACf,EAAA,MAAM,cAAA,CAAe,MAAM,EAAE,GAAG,MAAM,QAAA,EAAU,KAAA,EAAM,EAAG,MAAA,EAAQ,KAAK,CAAA;AACxE;AAOA,eAAsB,kBAAA,CACpB,IAAA,EACA,IAAA,EACA,MAAA,EACA,QAAmB,SAAA,EACJ;AACf,EAAA,MAAM,cAAA,CAAe,MAAM,EAAE,GAAG,MAAM,QAAA,EAAU,IAAA,EAAK,EAAG,MAAA,EAAQ,KAAK,CAAA;AACvE;AAOA,eAAsB,cAAA,CACpB,IAAA,EACA,IAAA,EACA,MAAA,EACe;AACf,EAAA,MAAM,WAAW,MAAA,KAAW,MAAA;AAC5B,EAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,MAAM,kBAAA,EAAmB;AACpD,EAAA,IAAI;AACF,IAAA,MAAM,GAAA,GAAM,MAAM,OAAA,CAAQ,cAAA,CAAe,IAAI,CAAA;AAC7C,IAAA,MAAM,SAAA,GAAY,YAAY,GAAG,CAAA;AACjC,IAAA,IAAI,CAAC,SAAA,EAAW;AACd,MAAA,MAAA,CAAO,CAAA,SAAA,EAAY,IAAI,CAAA,iDAAA,CAA8C,CAAA;AACrE,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB;AAEA,IAAA,IAAI,CAAC,QAAA,IAAY,CAAC,oBAAA,EAAqB,EAAG;AACxC,MAAA,MAAA,CAAO,sDAAiD,CAAA;AACxD,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB;AAEA,IAAA,MAAM,GAAA,GAAM,UAAU,uBAAA,EAAwB;AAC9C,IAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,WAAA,EAAY;AACnC,IAAA,MAAM,SAAS,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,QAAQ,SAAS,CAAA;AACnD,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,MAAA,CAAO,CAAA,SAAA,EAAY,IAAI,CAAA,wDAAA,CAAqD,CAAA;AAC5E,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,IAChB;AAEA,IAAA,MAAM,aAAa,IAAA,CAAK,KAAA,GAAQ,QAAA,CAAS,IAAA,CAAK,KAAK,CAAA,GAAI,KAAA,CAAA;AACvD,IAAA,MAAM,cAAc,MAAM,GAAA,CAAI,gBAAA,CAAiB,MAAA,CAAO,EAAE,CAAA,EAAG,MAAA;AAAA,MACzD,CAAC,CAAA,KAAM,CAAA,CAAE,cAAc,CAAC,UAAA,IAAc,EAAE,IAAA,KAAS,UAAA;AAAA,KACnD;AACA,IAAA,IAAI,UAAA,CAAW,WAAW,CAAA,EAAG;AAC3B,MAAA,OAAA,CAAQ,qDAAgD,CAAA;AACxD,MAAA;AAAA,IACF;AAKA,IAAA,MAAM,QAAA,GAAW,qBAAA,CAAsB,GAAA,CAAI,IAAI,CAAA;AAC/C,IAAA,MAAM,SAAmB,EAAC;AAC1B,IAAA,KAAA,MAAW,KAAK,UAAA,EAAY;AAC1B,MAAA,IAAI;AACF,QAAA,MAAM,GAAA,CAAI,cAAA,CAAe,CAAA,CAAE,EAAE,CAAA;AAC7B,QAAA,MAAM,KAAA,GAAQ,QAAA,EAAU,MAAA,EAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,KAAS,CAAA,CAAE,IAAA,IAAQ,CAAA,CAAE,IAAA,KAAS,EAAE,IAAI,CAAA;AAClF,QAAA,MAAM,KAAK,QAAA,IAAY,KAAA,GAAQ,cAAA,CAAe,KAAA,EAAO,QAAQ,CAAA,GAAI,KAAA,CAAA;AACjE,QAAA,MAAA,CAAO,KAAK,EAAA,GAAK,MAAA,CAAO,CAAA,CAAE,IAAA,EAAM,IAAI,CAAA,CAAE,IAAA,EAAM,CAAA,CAAE,OAAO,IAAI,CAAA,EAAG,CAAA,CAAE,IAAI,CAAA,CAAA,EAAI,CAAA,CAAE,IAAI,CAAA,CAAE,CAAA;AAAA,MAChF,SAAS,GAAA,EAAK;AACZ,QAAA,MAAA;AAAA,UACE,CAAA,eAAA,EAAkB,CAAA,CAAE,IAAI,CAAA,CAAA,EAAI,CAAA,CAAE,IAAI,CAAA,EAAA,EAAK,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,SACzF;AAAA,MACF;AAAA,IACF;AAEA,IAAA,KAAA,CAAM,CAAA,OAAA,EAAU,MAAA,CAAO,MAAM,CAAA,UAAA,CAAY,CAAA;AACzC,IAAA,KAAA,MAAW,CAAA,IAAK,MAAA,EAAQ,OAAA,CAAQ,CAAA,EAAA,EAAK,CAAC,CAAA,CAAE,CAAA;AAAA,EAC1C,CAAA,SAAE;AACA,IAAA,KAAA,EAAM;AAAA,EACR;AACF","file":"library-publish-FGXF5TJO.js","sourcesContent":["/**\n * `skaile library publish / register / yank` — the first-party publish flow.\n * A git-backed library you own carries an in-repo `skaile.manifest.yaml`; this\n * commits + pushes the library repo (publish), or takes the current remote HEAD\n * as-is (register), then registers + syncs it as a store source and publishes\n * the manifest's assets, each under its own namespace — `assets[].publisher`,\n * else the manifest's top-level `publisher` (no namespace remap — first-party\n * authors intend their declared namespace). Every distinct namespace is\n * preflighted before the push. The plan phase (dry-run and real) also requires the\n * remote to be a GitHub url and warns about a missing LICENSE and, for `publish`,\n * untracked files that `git add -A` would make public.\n *\n * - `publish` = commit (if dirty) + push + register + sync + publish.\n * - `register` = same, but skip the commit/push (bytes already on GitHub).\n * - `yank` = unpublish the library's published assets (all, or one).\n *\n * The store REST surface is reached through the injectable {@link PublisherClient}\n * (default HTTP); git side-effects go through an injectable `spawn`. Both seams\n * keep the flow unit/integration-testable without a live store or a real remote.\n *\n * @docLink cli/commands/library\n */\n\nimport { spawnSync } from \"node:child_process\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { basename, join, relative } from \"node:path\";\nimport {\n type AssetEntry,\n decodeSkaileManifest,\n loadSkPublishManifest,\n parseFrontmatter,\n type SkPublishManifest,\n} from \"@skaile/workspaces/core\";\nimport {\n type ParseManifestResult,\n parseManifestFile,\n SEMVER_RE,\n} from \"@skaile/workspaces/discovery\";\nimport { type GitBackendConfig, type Library, missingRootAssets } from \"@skaile/workspaces/library\";\nimport { logErr, logInfo, logOk, logWarn, S } from \"../helpers.ts\";\nimport { openLibraryManager } from \"../open-library.ts\";\nimport { checkAssetManifest, declaredVersion, findAssetManifestFile } from \"../skill-checks.ts\";\nimport { isStoreAuthenticated } from \"../store-client.ts\";\nimport { makeHttpPublisherClient, type PublisherClient } from \"../store-publisher.ts\";\nimport {\n assetEntryRef,\n assetNamespace,\n bareName,\n formatNamespaceAvailability,\n manifestNamespaces,\n plannedRefs,\n preflightNamespace,\n publishToStore,\n refFor,\n} from \"./publish-core.ts\";\n\n/** Injectable spawn contract — the subset of `spawnSync` these helpers use. */\ntype SpawnLike = typeof spawnSync;\n\n/** The fixed filename a library carries at its root for publication. */\nconst MANIFEST_FILENAME = \"skaile.manifest.yaml\";\n\n/** The remote url of a git-backed library, or `undefined` for a local one. */\nfunction remoteUrlOf(lib: Library): string | undefined {\n if (lib.backend !== \"git\") return undefined;\n return (lib.backendConfig as GitBackendConfig).url;\n}\n\n/** The publish branch of a git-backed library (defaults to `main`). */\nfunction branchOf(lib: Library): string {\n if (lib.backend !== \"git\") return \"main\";\n return (lib.backendConfig as GitBackendConfig).branch ?? \"main\";\n}\n\n/**\n * Read + decode the in-repo `skaile.manifest.yaml`. Prints each error\n * diagnostic and exits (1) — mirroring the sidecar flow's validation gate.\n */\nfunction loadManifest(libPath: string): SkPublishManifest {\n let text: string;\n try {\n text = readFileSync(join(libPath, MANIFEST_FILENAME), \"utf-8\");\n } catch {\n logErr(\n `No ${S.dim(MANIFEST_FILENAME)} in the library — author it (see \\`skaile library create\\`) ` +\n \"and run `skaile validate` before publishing.\",\n );\n process.exit(1);\n }\n const { manifest, diagnostics } = decodeSkaileManifest(text);\n const errors = diagnostics.filter((d) => d.severity === \"error\");\n if (errors.length > 0) {\n for (const d of errors) logErr(`${d.code}: ${d.message}`);\n logErr(\"The manifest has errors — fix them with `skaile validate` before publishing.\");\n process.exit(1);\n }\n return manifest;\n}\n\n/** Run a git command in `cwd` via the injected spawn; returns the result. */\nfunction runGit(spawn: SpawnLike, cwd: string, args: string[]) {\n return spawn(\"git\", [\"-C\", cwd, ...args], { encoding: \"utf-8\" });\n}\n\n/**\n * Ensure `libPath` is a git repo whose `origin` points at `remoteUrl`, then\n * commit any changes and push to `branch`. Idempotent re-publish: an unchanged\n * tree makes `git commit` fail with \"nothing to commit\" — swallowed. Push (or\n * any other git) failures surface as thrown Errors carrying git's stderr.\n */\nfunction commitAndPush(opts: {\n libPath: string;\n remoteUrl: string;\n branch: string;\n spawn: SpawnLike;\n}): void {\n const { libPath, remoteUrl, branch, spawn } = opts;\n\n const gitDir = runGit(spawn, libPath, [\"rev-parse\", \"--git-dir\"]);\n if (gitDir.status !== 0) {\n const init = runGit(spawn, libPath, [\"init\"]);\n if (init.status !== 0) {\n throw new Error(\n `git init failed: ${(init.stderr ?? \"\").toString().trim() || `exit ${init.status}`}`,\n );\n }\n }\n\n // Point origin at the resolved remote (add if absent, else set-url).\n const getUrl = runGit(spawn, libPath, [\"remote\", \"get-url\", \"origin\"]);\n const originArgs =\n getUrl.status === 0\n ? [\"remote\", \"set-url\", \"origin\", remoteUrl]\n : [\"remote\", \"add\", \"origin\", remoteUrl];\n const setOrigin = runGit(spawn, libPath, originArgs);\n if (setOrigin.status !== 0) {\n throw new Error(\n `git remote failed: ${(setOrigin.stderr ?? \"\").toString().trim() || `exit ${setOrigin.status}`}`,\n );\n }\n\n const add = runGit(spawn, libPath, [\"add\", \"-A\"]);\n if (add.status !== 0) {\n throw new Error(\n `git add failed: ${(add.stderr ?? \"\").toString().trim() || `exit ${add.status}`}`,\n );\n }\n\n // Fixed bot identity via -c so the commit succeeds regardless of the author's\n // git config (the publish commit is a machine action).\n const commit = spawn(\n \"git\",\n [\n \"-C\",\n libPath,\n \"-c\",\n \"user.email=publish@skaile.store\",\n \"-c\",\n \"user.name=skaile\",\n \"commit\",\n \"-m\",\n \"chore: publish\",\n ],\n { encoding: \"utf-8\" },\n );\n if (commit.status !== 0) {\n const out = `${commit.stdout ?? \"\"}${commit.stderr ?? \"\"}`;\n if (!/nothing to commit/i.test(out)) {\n throw new Error(`git commit failed: ${out.trim() || `exit ${commit.status}`}`);\n }\n }\n\n const push = runGit(spawn, libPath, [\"push\", \"origin\", `HEAD:${branch}`]);\n if (push.status !== 0) {\n throw new Error(\n `git push failed: ${(push.stderr ?? \"\").toString().trim() || `exit ${push.status}`}`,\n );\n }\n}\n\n/**\n * `true` when `url` is a GitHub repo remote the store can fetch: `https://github.com/<o>/<r>[.git]`,\n * `git@github.com:<o>/<r>[.git]` or `ssh://git@github.com/<o>/<r>[.git]`. The store is\n * pointer-only and fetches bytes from GitHub, so any other remote (a local path, a `file://`\n * url, another host) can be pushed to but never published.\n */\nexport function isGithubRemote(url: string): boolean {\n return /^(?:https:\\/\\/github\\.com\\/|git@github\\.com:|ssh:\\/\\/git@github\\.com\\/)[^/\\s]+\\/[^/\\s]+?(?:\\.git)?\\/?$/i.test(\n url.trim(),\n );\n}\n\n/** The advisory for a remote `library publish` cannot use (see {@link isGithubRemote}). */\nexport function notGithubRemoteMessage(name: string, url: string): string {\n return (\n `The remote of library \"${name}\" is not a GitHub url: ${url}. ` +\n \"The store fetches published assets from GitHub — repoint it with \" +\n `\\`skaile library set ${name} backendConfig.url=https://github.com/<owner>/<repo>\\`.`\n );\n}\n\n/** How many untracked paths the publish plan lists before collapsing to \"and N more\". */\nconst MAX_LISTED_UNTRACKED = 10;\n\n/** A first-party manifest asset resolved to its on-disk manifest file, read and parsed. */\ninterface PlanAsset {\n entry: AssetEntry;\n /** Path relative to the library root, for messages. */\n rel: string;\n parsed: ParseManifestResult;\n body: string;\n}\n\n/**\n * The first-party `root:` assets the plan covers, each with its manifest file read.\n * Curated entries (`source`) carry no library directory and a root with no manifest\n * file is `missingRootAssets`' concern, so both are left out.\n */\nfunction planAssets(\n libPath: string,\n manifest: SkPublishManifest,\n targetName: string | undefined,\n): PlanAsset[] {\n const out: PlanAsset[] = [];\n for (const entry of manifest.assets ?? []) {\n if (targetName && entry.name !== targetName) continue;\n if (!entry.root || entry.source || manifest.source) continue;\n const file = findAssetManifestFile(join(libPath, entry.root), entry.kind, entry.name);\n if (!file) continue;\n const text = readFileSync(file, \"utf-8\");\n out.push({\n entry,\n rel: relative(libPath, file),\n parsed: parseManifestFile(file, text),\n body: parseFrontmatter(text).body,\n });\n }\n return out;\n}\n\n/**\n * Reasons the plan cannot publish an asset: its manifest file cannot be parsed (an\n * empty `SKILL.md`) or carries a version that is not semver. The same two cases\n * `skaile library index` keeps out of the manifest and `skaile validate` fails on;\n * a hand-edited manifest can still list one, so the plan stops rather than ships it.\n */\nfunction assetRefusals(assets: PlanAsset[], manifest: SkPublishManifest): string[] {\n const refusals: string[] = [];\n for (const { entry, rel, parsed } of assets) {\n const ref = assetEntryRef(entry, manifest);\n if (!parsed.ok) {\n refusals.push(`${ref} (${rel}) — manifest file could not be parsed: ${parsed.reason}`);\n continue;\n }\n const fileVersion = declaredVersion(parsed.data);\n for (const version of new Set([entry.version, fileVersion])) {\n if (version !== undefined && !SEMVER_RE.test(version)) {\n refusals.push(`${ref} (${rel}) — version \"${version}\" is not valid semver`);\n }\n }\n }\n return refusals;\n}\n\n/**\n * Per-asset advisories for the assets the plan would publish — the same checks\n * `skaile validate` runs (agentskills.io conformance for skills, the untouched\n * `library create` scaffold for skill, agent, prompt, contract and flow), one line per\n * asset/finding. An unparsable manifest is {@link assetRefusals}' to report.\n */\nfunction assetWarnings(assets: PlanAsset[], manifest: SkPublishManifest): string[] {\n const warnings: string[] = [];\n for (const { entry, rel, parsed, body } of assets) {\n if (!parsed.ok || Object.keys(parsed.data).length === 0) continue;\n const findings = checkAssetManifest(\n entry.kind,\n parsed.data,\n rel.endsWith(\".md\") ? body : undefined,\n basename(entry.root ?? \"\"),\n );\n for (const f of findings) {\n warnings.push(`${assetEntryRef(entry, manifest)} (${rel}) [${f.tag}] — ${f.text}`);\n }\n }\n return warnings;\n}\n\n/**\n * Advisory publish-plan warnings: a missing LICENSE (a public repo without one grants\n * consumers no rights), per-asset skill warnings ({@link assetWarnings}) and — for `publish`,\n * which runs `git add -A` — untracked files that would become public. Never throws; a\n * non-git directory simply yields no untracked warning.\n */\nfunction publishWarnings(\n libPath: string,\n spawn: SpawnLike,\n skipPush: boolean,\n manifest: SkPublishManifest,\n assets: PlanAsset[],\n): string[] {\n const warnings: string[] = [];\n if (!existsSync(join(libPath, \"LICENSE\")) && !existsSync(join(libPath, \"LICENSE.md\"))) {\n warnings.push(\n \"No LICENSE or LICENSE.md in the library root — a public repo without a license grants consumers no rights to use it.\",\n );\n }\n warnings.push(...assetWarnings(assets, manifest));\n if (!skipPush) {\n const status = runGit(spawn, libPath, [\"status\", \"--porcelain\", \"--untracked-files=all\"]);\n if (status.status === 0) {\n const untracked = (status.stdout ?? \"\")\n .toString()\n .split(\"\\n\")\n .filter((l) => l.startsWith(\"?? \"))\n .map((l) => l.slice(3));\n if (untracked.length > 0) {\n const shown = untracked.slice(0, MAX_LISTED_UNTRACKED).join(\", \");\n const more =\n untracked.length > MAX_LISTED_UNTRACKED\n ? ` and ${untracked.length - MAX_LISTED_UNTRACKED} more`\n : \"\";\n warnings.push(\n `${untracked.length} untracked file(s) will be committed by \\`git add -A\\` and published: ${shown}${more}.`,\n );\n }\n }\n }\n return warnings;\n}\n\n/**\n * The store only registers PUBLIC repos (the backend rejects a private one with \"must be\n * public\"), so a repo provisioned with `--private` can be created and linked but not published.\n */\nconst PRIVATE_REPO_WARNING =\n \"--private: the store only accepts PUBLIC repos — registering a private repo is rejected. \" +\n \"The repo will be created private, but publishing it will fail; share it directly \" +\n \"(`skaile source add <url>` with the consumer's own git credentials) instead.\";\n\n/**\n * Provision a GitHub repo `github.com/<you>/<name>` via `gh` (public unless `isPrivate`) and\n * return its https url. Parses the url `gh` prints on success. Throws on failure.\n */\nfunction createRepoViaGh(name: string, spawn: SpawnLike, isPrivate: boolean): string {\n const res = spawn(\"gh\", [\"repo\", \"create\", name, isPrivate ? \"--private\" : \"--public\"], {\n encoding: \"utf-8\",\n });\n if (res.status !== 0) {\n const stderr = (res.stderr ?? \"\").toString().trim();\n throw new Error(`gh repo create ${name} failed: ${stderr || `exit ${res.status}`}`);\n }\n // `gh repo create` prints the repo url (e.g. `https://github.com/<owner>/<name>`);\n // scan combined output for the first github.com url so we capture whatever\n // owner gh resolved (the authed user).\n const out = `${res.stdout ?? \"\"}\\n${res.stderr ?? \"\"}`;\n const match = out.match(/https:\\/\\/github\\.com\\/[^\\s]+/);\n if (!match) {\n throw new Error(`gh repo create ${name} succeeded but printed no repo url:\\n${out.trim()}`);\n }\n return match[0].replace(/\\.git$/, \"\").trim();\n}\n\n/** Shared publish body for `publish` (pushes) and `register` (skips the push). */\nasync function publishLibrary(\n name: string,\n opts: {\n asset?: string;\n createRepo?: boolean;\n private?: boolean;\n ref?: string;\n dryRun?: boolean;\n skipPush: boolean;\n },\n client?: PublisherClient,\n spawn: SpawnLike = spawnSync,\n): Promise<void> {\n const injected = client !== undefined;\n const { manager, close } = await openLibraryManager();\n try {\n const lib = await manager.requireLibrary(name);\n const manifest = loadManifest(lib.path);\n\n // A manifest entry whose directory is gone would publish a catalog entry\n // that points at nothing — refuse (dry-run included) rather than plan it.\n const missing = missingRootAssets(lib.path, manifest);\n if (missing.length > 0) {\n for (const a of missing) {\n logErr(`${assetEntryRef(a, manifest)} — root \"${a.root}\" does not exist in the library.`);\n }\n logErr(\n \"The manifest lists assets that are no longer on disk. Run \" +\n `\\`skaile library index ${name}\\` to drop them from the manifest, then re-run.`,\n );\n process.exit(1);\n }\n\n // Resolve the remote: git-backed → its url; local + --create-repo → provision\n // and link; else stop with a hint.\n let remoteUrl = remoteUrlOf(lib);\n let wouldCreateRepo = false;\n if (opts.private && !opts.createRepo) {\n logErr(\n \"--private only applies together with --create-repo (it sets the new repo's visibility).\",\n );\n process.exit(1);\n }\n const visibility = opts.private ? \"private\" : \"public\";\n if (!remoteUrl) {\n if (opts.createRepo) {\n if (opts.private) logWarn(PRIVATE_REPO_WARNING);\n if (opts.dryRun) {\n // A dry-run must not provision anything — defer the real\n // `gh repo create` to the live run and just show the would-be remote.\n wouldCreateRepo = true;\n remoteUrl = `https://github.com/<your-account>/${lib.name}`;\n } else {\n remoteUrl = createRepoViaGh(lib.name, spawn, opts.private === true);\n await manager.updateLibrary(name, {\n backend: \"git\",\n backendConfig: { url: remoteUrl, branch: \"main\", authHint: \"ssh\" },\n });\n logOk(`Created + linked ${S.dim(remoteUrl)} (${visibility}).`);\n }\n } else {\n logErr(\n `Library \"${name}\" has no remote — run ${S.cmd(`skaile library link ${name} <url>`)} ` +\n \"first, or pass `--create-repo` to provision a public repo.\",\n );\n process.exit(1);\n }\n } else if (!isGithubRemote(remoteUrl)) {\n // Plan-phase gate (dry-run and real): the store fetches from GitHub, so a\n // local-path / other-host remote can never be published. A remote here means\n // the library is already git-backed, where `library link` refuses.\n logErr(notGithubRemoteMessage(name, remoteUrl));\n process.exit(1);\n }\n\n // Each asset publishes under `assets[].publisher ?? manifest.publisher`\n // (first-party — no remap), so one library can span several namespaces.\n const targetName = opts.asset ? bareName(opts.asset) : undefined;\n const namespaces = manifestNamespaces(manifest, targetName);\n const wouldBeRefs = plannedRefs(manifest, targetName);\n\n // An asset whose manifest file cannot be parsed or carries a non-semver version\n // must not be planned (dry-run included): it would publish as a broken entry.\n const assets = planAssets(lib.path, manifest, targetName);\n const refusals = assetRefusals(assets, manifest);\n if (refusals.length > 0) {\n for (const r of refusals) logErr(r);\n logErr(\n \"These assets cannot be published. Fix them (see `skaile validate`), then run \" +\n `\\`skaile library index ${name}\\` and re-run.`,\n );\n process.exit(1);\n }\n\n const sourceRef = opts.ref ?? branchOf(lib);\n const warnings = publishWarnings(lib.path, spawn, opts.skipPush, manifest, assets);\n\n if (opts.dryRun) {\n logInfo(`Publish plan for ${S.bold(name)}:`);\n logInfo(\n ` remote: ${remoteUrl}${wouldCreateRepo ? ` (would be created ${visibility} via \\`gh repo create --${visibility}\\`)` : \"\"}`,\n );\n logInfo(\n ` publisher: ${namespaces.length > 0 ? namespaces.join(\", \") : \"<manifest publisher>\"}`,\n );\n // Best-effort namespace-availability probe — a read-only GET, only when\n // signed in (or a client is injected). A failure keeps dry-run offline-safe.\n const canCheck = injected || isStoreAuthenticated();\n if (!canCheck) {\n // The real run stops at \"Not signed in\" before any namespace check.\n logWarn(\"namespace check skipped: not signed in (run `skaile store login`)\");\n } else if (namespaces.length > 0) {\n for (const ns of namespaces) {\n try {\n const avail = await (client ?? makeHttpPublisherClient()).namespaceAvailability(ns);\n const prefix = namespaces.length > 1 ? `@${ns} — ` : \"\";\n logInfo(` namespace: ${prefix}${formatNamespaceAvailability(avail)}`);\n } catch {\n // Store unreachable / not signed in — skip the advisory, never fail.\n }\n }\n }\n logInfo(` source ref: ${sourceRef}`);\n logInfo(` would publish ${wouldBeRefs.length} asset(s):`);\n for (const r of wouldBeRefs) logInfo(` ${r}`);\n for (const w of warnings) logWarn(w);\n return;\n }\n\n // Real run: surface the same advisories before anything is pushed.\n for (const w of warnings) logWarn(w);\n\n // A real publish makes store calls, so it needs a token (injected fakes bypass).\n if (!injected && !isStoreAuthenticated()) {\n logErr(\"Not signed in — run `skaile store login` first.\");\n process.exit(1);\n }\n\n const pub = client ?? makeHttpPublisherClient();\n\n // Preflight EVERY distinct namespace BEFORE the public git push, so a\n // reserved/unclaimed one fails fast with guidance instead of after publishing bytes.\n for (const ns of namespaces) {\n const gate = await preflightNamespace(pub, ns);\n if (!gate.ok) {\n logErr(gate.message ?? `Cannot publish under @${ns}.`);\n process.exit(1);\n }\n }\n\n // publish commits + pushes the library repo; register takes the remote HEAD as-is.\n if (!opts.skipPush) {\n // `git add -A` stages every non-ignored file → a PUBLIC push. Surface it so\n // an unexpected file in the working tree is not silently published.\n logInfo(\n `Committing the library and pushing to the PUBLIC remote ${S.dim(remoteUrl)} ` +\n \"(.gitignore honored; anything else in the working tree becomes public).\",\n );\n commitAndPush({ libPath: lib.path, remoteUrl, branch: branchOf(lib), spawn });\n logOk(`Pushed ${S.dim(name)} to ${S.dim(remoteUrl)}.`);\n }\n\n const { published } = await publishToStore({\n sourceUrl: remoteUrl,\n ref: sourceRef,\n manifest,\n assetName: targetName,\n client: pub,\n });\n\n if (published.length > 0) {\n logInfo(`Consumers can now \\`skaile add ${published[0]}\\`.`);\n }\n } finally {\n close();\n }\n}\n\n/**\n * `skaile library publish <lib>` — commit + push the library repo, register +\n * sync it as a store source, and publish its manifest's assets under the\n * manifest publisher. See the module header for the full flow.\n */\nexport async function runLibraryPublish(\n name: string,\n opts: {\n asset?: string;\n createRepo?: boolean;\n private?: boolean;\n ref?: string;\n dryRun?: boolean;\n },\n client?: PublisherClient,\n spawn: SpawnLike = spawnSync,\n): Promise<void> {\n await publishLibrary(name, { ...opts, skipPush: false }, client, spawn);\n}\n\n/**\n * `skaile library register <lib>` — same as publish but skips the commit/push\n * (the bytes are already on GitHub at the current remote HEAD). Still requires a\n * git-backed remote.\n */\nexport async function runLibraryRegister(\n name: string,\n opts: { asset?: string; ref?: string; dryRun?: boolean },\n client?: PublisherClient,\n spawn: SpawnLike = spawnSync,\n): Promise<void> {\n await publishLibrary(name, { ...opts, skipPush: true }, client, spawn);\n}\n\n/**\n * `skaile library yank <lib>` — unpublish the library's published assets from\n * the store (all, or the single asset matching `opts.asset`'s name).\n * Auth-gated like publish.\n */\nexport async function runLibraryYank(\n name: string,\n opts: { asset?: string },\n client?: PublisherClient,\n): Promise<void> {\n const injected = client !== undefined;\n const { manager, close } = await openLibraryManager();\n try {\n const lib = await manager.requireLibrary(name);\n const remoteUrl = remoteUrlOf(lib);\n if (!remoteUrl) {\n logErr(`Library \"${name}\" has no remote — nothing published to yank.`);\n process.exit(1);\n }\n\n if (!injected && !isStoreAuthenticated()) {\n logErr(\"Not signed in — run `skaile store login` first.\");\n process.exit(1);\n }\n\n const pub = client ?? makeHttpPublisherClient();\n const rows = await pub.sourcesList();\n const source = rows.find((r) => r.url === remoteUrl);\n if (!source) {\n logErr(`Library \"${name}\" is not registered in the store — nothing to yank.`);\n process.exit(1);\n }\n\n const targetName = opts.asset ? bareName(opts.asset) : undefined;\n const candidates = (await pub.sourceCandidates(source.id)).filter(\n (c) => c.published && (!targetName || c.name === targetName),\n );\n if (candidates.length === 0) {\n logInfo(\"No published assets matched — nothing to yank.\");\n return;\n }\n\n // Report each yanked asset under its own namespace\n // (`assets[].publisher ?? manifest.publisher`); fall back to `kind:name`\n // when the manifest is absent or declares no namespace for it.\n const manifest = loadSkPublishManifest(lib.path);\n const yanked: string[] = [];\n for (const c of candidates) {\n try {\n await pub.assetUnpublish(c.id);\n const entry = manifest?.assets?.find((a) => a.kind === c.kind && a.name === c.name);\n const ns = manifest && entry ? assetNamespace(entry, manifest) : undefined;\n yanked.push(ns ? refFor(c.kind, ns, c.name, c.version) : `${c.kind}:${c.name}`);\n } catch (err) {\n logErr(\n `Failed to yank ${c.kind}:${c.name}: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n }\n\n logOk(`Yanked ${yanked.length} asset(s):`);\n for (const r of yanked) logInfo(` ${r}`);\n } finally {\n close();\n }\n}\n"]}
@@ -1,40 +1,40 @@
1
- export { LocalCatalogDisabledError, authoringLibraries, openCatalogSource, openLibrary, openLibraryManager, resolveCatalogSource } from './chunk-I4QBZLOR.js';
2
- import './chunk-VJENKWXF.js';
3
- import './chunk-OLLAQLFJ.js';
4
- import './chunk-AOAZCSDI.js';
1
+ export { LocalCatalogDisabledError, authoringLibraries, openCatalogSource, openLibrary, openLibraryManager, resolveCatalogSource } from './chunk-GIC3G5YG.js';
2
+ import './chunk-THEJJBOU.js';
3
+ import './chunk-WIEC3ZE4.js';
4
+ import './chunk-LBQ4BBX4.js';
5
5
  import './chunk-QZLWJETK.js';
6
6
  import './chunk-NFGRW3L7.js';
7
7
  import './chunk-QCI6D7E4.js';
8
- import './chunk-PTO2YDDG.js';
9
- import './chunk-MX3UQXLU.js';
10
- import './chunk-XOGG7VDZ.js';
11
- import './chunk-BTISGSK4.js';
8
+ import './chunk-D5HOETOB.js';
9
+ import './chunk-DFFD4BFG.js';
10
+ import './chunk-6VRJH4MR.js';
11
+ import './chunk-FAP63KV7.js';
12
12
  import './chunk-R7FOF242.js';
13
13
  import './chunk-3TXEJN4W.js';
14
- import './chunk-2KOKBTR4.js';
14
+ import './chunk-74EEFB52.js';
15
15
  import './chunk-CGYEHQOX.js';
16
16
  import './chunk-KTBKW2FI.js';
17
17
  import './chunk-UQ6LFBPZ.js';
18
- import './chunk-VKSXST23.js';
18
+ import './chunk-AVCUPPG6.js';
19
19
  import './chunk-FRHE7FFB.js';
20
- import './chunk-TZCQ7ZWQ.js';
20
+ import './chunk-OOLT6HGP.js';
21
21
  import './chunk-4GY63JU6.js';
22
- import './chunk-BF33SCLY.js';
23
- import './chunk-46OVMT76.js';
22
+ import './chunk-SWO25LTO.js';
23
+ import './chunk-G67BOI2J.js';
24
24
  import './chunk-5BEFNLOR.js';
25
25
  import './chunk-A2ULN3KX.js';
26
- import './chunk-2W4LBLIN.js';
27
- import './chunk-MFHKHXDE.js';
26
+ import './chunk-LCU5U5IW.js';
27
+ import './chunk-L5VSIPQD.js';
28
28
  import './chunk-CPSIPIX7.js';
29
- import './chunk-7ZHLYXTI.js';
29
+ import './chunk-RVIZQ5XD.js';
30
30
  import './chunk-RVRB27AN.js';
31
- import './chunk-PA7WLID3.js';
32
- import './chunk-AO7VJ6G6.js';
31
+ import './chunk-TTPSDC2G.js';
32
+ import './chunk-O7VPNKYN.js';
33
33
  import './chunk-ICSCSM5D.js';
34
34
  import './chunk-JMKB7IB4.js';
35
35
  import './chunk-MJHSLODD.js';
36
36
  import './chunk-C3CAXQMA.js';
37
37
  import './chunk-BOFL7GIF.js';
38
38
  import './chunk-NSBPE2FW.js';
39
- //# sourceMappingURL=open-library-4WUMQHES.js.map
40
- //# sourceMappingURL=open-library-4WUMQHES.js.map
39
+ //# sourceMappingURL=open-library-P3D337NH.js.map
40
+ //# sourceMappingURL=open-library-P3D337NH.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"open-library-4WUMQHES.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"open-library-P3D337NH.js"}