@skaile/workspaces 5.13.0 → 5.15.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 (382) hide show
  1. package/CHANGELOG.md +108 -0
  2. package/README.md +1 -1
  3. package/dist/app-sdk/index.js +1 -1
  4. package/dist/{asset-feeds-ALMTHLPV.js → asset-feeds-LIDC7547.js} +19 -19
  5. package/dist/{asset-feeds-ALMTHLPV.js.map → asset-feeds-LIDC7547.js.map} +1 -1
  6. package/dist/asset-manager/catalog-deployer.js +7 -7
  7. package/dist/asset-manager/index.js +14 -14
  8. package/dist/asset-manager/installer.js +9 -9
  9. package/dist/asset-manager/renderers.js +8 -8
  10. package/dist/asset-manager/src/index.d.ts +128 -6
  11. package/dist/asset-manager/src/index.d.ts.map +1 -1
  12. package/dist/asset-manager/src/install-instances.d.ts +19 -0
  13. package/dist/asset-manager/src/install-instances.d.ts.map +1 -1
  14. package/dist/asset-manager/src/installer.d.ts.map +1 -1
  15. package/dist/asset-manager/src/mcp-config.d.ts +5 -0
  16. package/dist/asset-manager/src/mcp-config.d.ts.map +1 -1
  17. package/dist/bridge/drivers/claude-sdk.js +162 -27
  18. package/dist/bridge/drivers/claude-sdk.js.map +1 -1
  19. package/dist/bridge/drivers/codex.js +80 -15
  20. package/dist/bridge/drivers/codex.js.map +1 -1
  21. package/dist/bridge/drivers/continue.js +10 -9
  22. package/dist/bridge/drivers/continue.js.map +1 -1
  23. package/dist/bridge/drivers/echo.js +4 -3
  24. package/dist/bridge/drivers/echo.js.map +1 -1
  25. package/dist/bridge/drivers/gemini.js +7 -6
  26. package/dist/bridge/drivers/goose.js +10 -9
  27. package/dist/bridge/drivers/goose.js.map +1 -1
  28. package/dist/bridge/drivers/omp.js +113 -40
  29. package/dist/bridge/drivers/omp.js.map +1 -1
  30. package/dist/bridge/drivers/opencode.js +10 -9
  31. package/dist/bridge/drivers/opencode.js.map +1 -1
  32. package/dist/bridge/drivers/qwen.js +7 -6
  33. package/dist/bridge/drivers/qwen.js.map +1 -1
  34. package/dist/bridge/index.js +14 -13
  35. package/dist/bridge/src/codex/friendly-error.d.ts +19 -0
  36. package/dist/bridge/src/codex/friendly-error.d.ts.map +1 -0
  37. package/dist/bridge/src/drivers/claude-sdk.d.ts +2 -0
  38. package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
  39. package/dist/bridge/src/drivers/claude-self-turns.d.ts +72 -0
  40. package/dist/bridge/src/drivers/claude-self-turns.d.ts.map +1 -0
  41. package/dist/bridge/src/drivers/codex.d.ts.map +1 -1
  42. package/dist/bridge/src/drivers/omp-models-yml.d.ts +17 -7
  43. package/dist/bridge/src/drivers/omp-models-yml.d.ts.map +1 -1
  44. package/dist/bridge/src/drivers/omp.d.ts +7 -0
  45. package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
  46. package/dist/bridge/src/normalizer.d.ts.map +1 -1
  47. package/dist/bridge/src/types.d.ts +12 -0
  48. package/dist/bridge/src/types.d.ts.map +1 -1
  49. package/dist/{chunk-VLBIME5L.js → chunk-2LTF2ZHH.js} +4 -4
  50. package/dist/{chunk-VLBIME5L.js.map → chunk-2LTF2ZHH.js.map} +1 -1
  51. package/dist/chunk-4AKR4XPQ.js +273 -0
  52. package/dist/chunk-4AKR4XPQ.js.map +1 -0
  53. package/dist/{chunk-BF422IDP.js → chunk-4QINFQ27.js} +159 -20
  54. package/dist/chunk-4QINFQ27.js.map +1 -0
  55. package/dist/{chunk-V5JHD4I2.js → chunk-54TVXZP3.js} +3 -3
  56. package/dist/{chunk-V5JHD4I2.js.map → chunk-54TVXZP3.js.map} +1 -1
  57. package/dist/{chunk-XJYBCDY2.js → chunk-74THIMZV.js} +3 -3
  58. package/dist/{chunk-XJYBCDY2.js.map → chunk-74THIMZV.js.map} +1 -1
  59. package/dist/{chunk-IY5E7Y5W.js → chunk-ANSZULXH.js} +32 -9
  60. package/dist/chunk-ANSZULXH.js.map +1 -0
  61. package/dist/{chunk-J4DB5G36.js → chunk-AVUJBSFA.js} +2 -2
  62. package/dist/{chunk-J4DB5G36.js.map → chunk-AVUJBSFA.js.map} +1 -1
  63. package/dist/{chunk-FB3NREF7.js → chunk-AXNX2SKZ.js} +483 -32
  64. package/dist/chunk-AXNX2SKZ.js.map +1 -0
  65. package/dist/{chunk-H5U7LNTJ.js → chunk-BFMYYNDT.js} +25 -3
  66. package/dist/chunk-BFMYYNDT.js.map +1 -0
  67. package/dist/{chunk-4L4R5LV3.js → chunk-BV7NLPI6.js} +4 -4
  68. package/dist/{chunk-4L4R5LV3.js.map → chunk-BV7NLPI6.js.map} +1 -1
  69. package/dist/{chunk-FHDK3BFD.js → chunk-D2MZZ2KB.js} +3 -3
  70. package/dist/{chunk-FHDK3BFD.js.map → chunk-D2MZZ2KB.js.map} +1 -1
  71. package/dist/{chunk-F4NJDSR7.js → chunk-D5WTOVLG.js} +7 -4
  72. package/dist/chunk-D5WTOVLG.js.map +1 -0
  73. package/dist/{chunk-Y4Z7LGSH.js → chunk-DP6YRAPZ.js} +67 -23
  74. package/dist/chunk-DP6YRAPZ.js.map +1 -0
  75. package/dist/{chunk-AHCI4V5L.js → chunk-DPCEQOIZ.js} +3 -3
  76. package/dist/{chunk-AHCI4V5L.js.map → chunk-DPCEQOIZ.js.map} +1 -1
  77. package/dist/{chunk-U27JRO5L.js → chunk-ESXZJP4M.js} +3 -3
  78. package/dist/{chunk-U27JRO5L.js.map → chunk-ESXZJP4M.js.map} +1 -1
  79. package/dist/{chunk-B7CZYFB2.js → chunk-GLMKS6V6.js} +4 -4
  80. package/dist/{chunk-B7CZYFB2.js.map → chunk-GLMKS6V6.js.map} +1 -1
  81. package/dist/{chunk-BVJU2GKE.js → chunk-GQ5OYFVD.js} +4 -271
  82. package/dist/chunk-GQ5OYFVD.js.map +1 -0
  83. package/dist/{chunk-PZOO7L26.js → chunk-I3JO3NIZ.js} +4 -4
  84. package/dist/{chunk-PZOO7L26.js.map → chunk-I3JO3NIZ.js.map} +1 -1
  85. package/dist/{chunk-L3ZGYSWY.js → chunk-J76LDUDS.js} +91 -18
  86. package/dist/chunk-J76LDUDS.js.map +1 -0
  87. package/dist/{chunk-6GICC4RJ.js → chunk-JHP6MIW2.js} +56 -19
  88. package/dist/chunk-JHP6MIW2.js.map +1 -0
  89. package/dist/{chunk-PXDWTJ3P.js → chunk-KRRHADE7.js} +5 -5
  90. package/dist/{chunk-PXDWTJ3P.js.map → chunk-KRRHADE7.js.map} +1 -1
  91. package/dist/{chunk-NDUYFYJB.js → chunk-KUB4HFGK.js} +12 -7
  92. package/dist/chunk-KUB4HFGK.js.map +1 -0
  93. package/dist/{chunk-ZU24LWBI.js → chunk-LEOXPIC6.js} +3 -3
  94. package/dist/{chunk-ZU24LWBI.js.map → chunk-LEOXPIC6.js.map} +1 -1
  95. package/dist/{chunk-57SF6W6E.js → chunk-MGM5EJQQ.js} +3 -3
  96. package/dist/chunk-MGM5EJQQ.js.map +1 -0
  97. package/dist/{chunk-5SKVCMRC.js → chunk-MKTJZLQM.js} +6 -11
  98. package/dist/chunk-MKTJZLQM.js.map +1 -0
  99. package/dist/{chunk-XBYSURMK.js → chunk-N36S36OZ.js} +3 -3
  100. package/dist/{chunk-XBYSURMK.js.map → chunk-N36S36OZ.js.map} +1 -1
  101. package/dist/{chunk-NVO6WECE.js → chunk-NKDSU4Q7.js} +6 -6
  102. package/dist/{chunk-NVO6WECE.js.map → chunk-NKDSU4Q7.js.map} +1 -1
  103. package/dist/{chunk-OQ5MKDS3.js → chunk-NOF73BUH.js} +27 -6
  104. package/dist/chunk-NOF73BUH.js.map +1 -0
  105. package/dist/{chunk-4DLQESIY.js → chunk-O673TBWJ.js} +3 -3
  106. package/dist/{chunk-4DLQESIY.js.map → chunk-O673TBWJ.js.map} +1 -1
  107. package/dist/{chunk-DKGEV6SQ.js → chunk-OOQ5Q75W.js} +111 -20
  108. package/dist/chunk-OOQ5Q75W.js.map +1 -0
  109. package/dist/{chunk-PYTTF754.js → chunk-PIDMOE7R.js} +4 -4
  110. package/dist/{chunk-PYTTF754.js.map → chunk-PIDMOE7R.js.map} +1 -1
  111. package/dist/{chunk-6JKIOPT3.js → chunk-PK5XQBOC.js} +4 -4
  112. package/dist/{chunk-6JKIOPT3.js.map → chunk-PK5XQBOC.js.map} +1 -1
  113. package/dist/{chunk-6NQDDCIL.js → chunk-PQF5QHVS.js} +15 -7
  114. package/dist/chunk-PQF5QHVS.js.map +1 -0
  115. package/dist/{chunk-HWGYJMME.js → chunk-PV47EEHD.js} +4 -4
  116. package/dist/{chunk-HWGYJMME.js.map → chunk-PV47EEHD.js.map} +1 -1
  117. package/dist/{chunk-2H73V6XR.js → chunk-PW3TYWOI.js} +3 -3
  118. package/dist/{chunk-2H73V6XR.js.map → chunk-PW3TYWOI.js.map} +1 -1
  119. package/dist/{chunk-ZSMMX3JD.js → chunk-QR7W5JV4.js} +66 -16
  120. package/dist/chunk-QR7W5JV4.js.map +1 -0
  121. package/dist/chunk-RTYDYSUV.js +1336 -0
  122. package/dist/chunk-RTYDYSUV.js.map +1 -0
  123. package/dist/{chunk-7SMP4GNW.js → chunk-SAKVAG23.js} +7 -6
  124. package/dist/chunk-SAKVAG23.js.map +1 -0
  125. package/dist/{chunk-GMDSRSGI.js → chunk-SCUEPCSJ.js} +12 -9
  126. package/dist/chunk-SCUEPCSJ.js.map +1 -0
  127. package/dist/{chunk-M3P4BYRK.js → chunk-SP5NGNBV.js} +6 -3
  128. package/dist/chunk-SP5NGNBV.js.map +1 -0
  129. package/dist/{chunk-HBZD3MIW.js → chunk-SRKU7QUG.js} +233 -51
  130. package/dist/chunk-SRKU7QUG.js.map +1 -0
  131. package/dist/{chunk-2BIESC6S.js → chunk-SZPE55SB.js} +3 -3
  132. package/dist/{chunk-2BIESC6S.js.map → chunk-SZPE55SB.js.map} +1 -1
  133. package/dist/{chunk-YTZFSKWL.js → chunk-TCWECSEB.js} +3 -3
  134. package/dist/{chunk-YTZFSKWL.js.map → chunk-TCWECSEB.js.map} +1 -1
  135. package/dist/{chunk-J4OYIYFQ.js → chunk-VY6NTFE7.js} +2 -2
  136. package/dist/{chunk-J4OYIYFQ.js.map → chunk-VY6NTFE7.js.map} +1 -1
  137. package/dist/{chunk-5FYOM4RF.js → chunk-WWUWMOX2.js} +15 -11
  138. package/dist/chunk-WWUWMOX2.js.map +1 -0
  139. package/dist/{chunk-USHB5KEY.js → chunk-WXKNM2JJ.js} +3 -3
  140. package/dist/{chunk-USHB5KEY.js.map → chunk-WXKNM2JJ.js.map} +1 -1
  141. package/dist/{chunk-QO7CR3KB.js → chunk-X7DIT65W.js} +4 -4
  142. package/dist/{chunk-QO7CR3KB.js.map → chunk-X7DIT65W.js.map} +1 -1
  143. package/dist/{chunk-Y7WKXPWS.js → chunk-XX4C72CC.js} +544 -68
  144. package/dist/chunk-XX4C72CC.js.map +1 -0
  145. package/dist/{chunk-VMKMFS2Q.js → chunk-YIDZJHY6.js} +3 -3
  146. package/dist/{chunk-VMKMFS2Q.js.map → chunk-YIDZJHY6.js.map} +1 -1
  147. package/dist/{chunk-R6QHJEHE.js → chunk-YL23KWBX.js} +5 -5
  148. package/dist/{chunk-R6QHJEHE.js.map → chunk-YL23KWBX.js.map} +1 -1
  149. package/dist/{chunk-4NJ3QQHZ.js → chunk-YUURCZWY.js} +5 -5
  150. package/dist/{chunk-4NJ3QQHZ.js.map → chunk-YUURCZWY.js.map} +1 -1
  151. package/dist/{chunk-X4BAYGMT.js → chunk-ZIW34FGO.js} +3 -3
  152. package/dist/{chunk-X4BAYGMT.js.map → chunk-ZIW34FGO.js.map} +1 -1
  153. package/dist/cli/index.js +4324 -4078
  154. package/dist/cli/index.js.map +1 -1
  155. package/dist/cli/src/agent-checks.d.ts +21 -0
  156. package/dist/cli/src/agent-checks.d.ts.map +1 -1
  157. package/dist/cli/src/commands/asset-cmd.d.ts.map +1 -1
  158. package/dist/cli/src/commands/catalog.d.ts.map +1 -1
  159. package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
  160. package/dist/cli/src/commands/library-index.d.ts +25 -5
  161. package/dist/cli/src/commands/library-index.d.ts.map +1 -1
  162. package/dist/cli/src/commands/library-publish.d.ts.map +1 -1
  163. package/dist/cli/src/commands/outdated.d.ts.map +1 -1
  164. package/dist/cli/src/commands/plugin-registry-cmd.d.ts.map +1 -1
  165. package/dist/cli/src/commands/preset-cmd.d.ts.map +1 -1
  166. package/dist/cli/src/commands/project.d.ts +16 -1
  167. package/dist/cli/src/commands/project.d.ts.map +1 -1
  168. package/dist/cli/src/commands/rebuild.d.ts.map +1 -1
  169. package/dist/cli/src/commands/run.d.ts.map +1 -1
  170. package/dist/cli/src/commands/serve-preflight.d.ts +5 -6
  171. package/dist/cli/src/commands/serve-preflight.d.ts.map +1 -1
  172. package/dist/cli/src/commands/serve.d.ts +19 -0
  173. package/dist/cli/src/commands/serve.d.ts.map +1 -1
  174. package/dist/cli/src/commands/session.d.ts.map +1 -1
  175. package/dist/cli/src/commands/source.d.ts +7 -0
  176. package/dist/cli/src/commands/source.d.ts.map +1 -1
  177. package/dist/cli/src/commands/update.d.ts.map +1 -1
  178. package/dist/cli/src/commands/validate.d.ts +0 -9
  179. package/dist/cli/src/commands/validate.d.ts.map +1 -1
  180. package/dist/cli/src/skill-checks.d.ts +8 -1
  181. package/dist/cli/src/skill-checks.d.ts.map +1 -1
  182. package/dist/connectors/config.js +5 -5
  183. package/dist/connectors/index.js +18 -17
  184. package/dist/connectors/src/config.d.ts.map +1 -1
  185. package/dist/connectors/src/connector-manager.d.ts +8 -1
  186. package/dist/connectors/src/connector-manager.d.ts.map +1 -1
  187. package/dist/connectors/src/connector-prompt.d.ts +9 -0
  188. package/dist/connectors/src/connector-prompt.d.ts.map +1 -1
  189. package/dist/{connectors-GFKMKAXV.js → connectors-JQR5RAMC.js} +21 -20
  190. package/dist/{connectors-GFKMKAXV.js.map → connectors-JQR5RAMC.js.map} +1 -1
  191. package/dist/connectors-shared/index.js +2 -2
  192. package/dist/core/index.js +6 -6
  193. package/dist/core/manifest.js +2 -2
  194. package/dist/core/models.js +1 -1
  195. package/dist/core/publish-manifest.js +3 -3
  196. package/dist/core/ref.js +1 -1
  197. package/dist/core/runtime-assets.js +5 -5
  198. package/dist/core/src/driver-sdk.d.ts +31 -0
  199. package/dist/core/src/driver-sdk.d.ts.map +1 -0
  200. package/dist/core/src/index.d.ts +3 -2
  201. package/dist/core/src/index.d.ts.map +1 -1
  202. package/dist/core/src/lock.d.ts.map +1 -1
  203. package/dist/core/src/manifest-yaml-editor.d.ts +5 -0
  204. package/dist/core/src/manifest-yaml-editor.d.ts.map +1 -1
  205. package/dist/core/src/manifest.d.ts.map +1 -1
  206. package/dist/core/src/models.d.ts +8 -0
  207. package/dist/core/src/models.d.ts.map +1 -1
  208. package/dist/core/src/publish-manifest.d.ts +28 -7
  209. package/dist/core/src/publish-manifest.d.ts.map +1 -1
  210. package/dist/core/src/repo-manager.d.ts.map +1 -1
  211. package/dist/core/src/walker.d.ts +4 -0
  212. package/dist/core/src/walker.d.ts.map +1 -1
  213. package/dist/core/src/workspace-config.d.ts +44 -0
  214. package/dist/core/src/workspace-config.d.ts.map +1 -1
  215. package/dist/core/workspace-config.js +4 -4
  216. package/dist/deploy/index.js +6 -6
  217. package/dist/discovery/index.js +5 -5
  218. package/dist/{ensure-sources-VUKHL65L.js → ensure-sources-NAGBSMJE.js} +17 -17
  219. package/dist/{ensure-sources-VUKHL65L.js.map → ensure-sources-NAGBSMJE.js.map} +1 -1
  220. package/dist/factory-assets/connectors/box.js +18 -17
  221. package/dist/factory-assets/connectors/deploy.js +18 -17
  222. package/dist/factory-assets/connectors/devserver.js +18 -17
  223. package/dist/factory-assets/connectors/flow/adapter.js +18 -17
  224. package/dist/factory-assets/connectors/flow/engine.js +7 -7
  225. package/dist/factory-assets/connectors/flow/run-flow.d.ts +5 -0
  226. package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -1
  227. package/dist/factory-assets/connectors/flow/run-flow.js +20 -19
  228. package/dist/factory-assets/connectors/flow.js +18 -17
  229. package/dist/factory-assets/connectors/git.js +18 -17
  230. package/dist/factory-assets/connectors/gmail.js +18 -17
  231. package/dist/factory-assets/connectors/googledrive.js +18 -17
  232. package/dist/factory-assets/connectors/local.js +18 -17
  233. package/dist/factory-assets/connectors/mattermost.js +18 -17
  234. package/dist/factory-assets/connectors/memory.js +18 -17
  235. package/dist/factory-assets/connectors/minio.js +18 -17
  236. package/dist/factory-assets/connectors/postgres.js +18 -17
  237. package/dist/factory-assets/connectors/s3.js +18 -17
  238. package/dist/factory-assets/connectors/sharepoint.js +18 -17
  239. package/dist/factory-assets/connectors/sqlite.js +18 -17
  240. package/dist/factory-assets/connectors/static-server.js +18 -17
  241. package/dist/factory-assets/connectors/tunnel.js +18 -17
  242. package/dist/factory-assets/connectors/webdav.js +18 -17
  243. package/dist/factory-assets/connectors/xstate-store.js +18 -17
  244. package/dist/factory-assets/connectors/xstate.js +18 -17
  245. package/dist/{flows-A4YALSZY.js → flows-CYJI3URW.js} +11 -11
  246. package/dist/{flows-A4YALSZY.js.map → flows-CYJI3URW.js.map} +1 -1
  247. package/dist/{helpers-53XZW7KF.js → helpers-XFHJDJOA.js} +17 -17
  248. package/dist/{helpers-53XZW7KF.js.map → helpers-XFHJDJOA.js.map} +1 -1
  249. package/dist/library/index.js +11 -11
  250. package/dist/library/install.js +5 -5
  251. package/dist/library/src/index.d.ts +1 -1
  252. package/dist/library/src/index.d.ts.map +1 -1
  253. package/dist/library/src/install/source-fetch-github.d.ts.map +1 -1
  254. package/dist/library/src/manifest-writer.d.ts +15 -0
  255. package/dist/library/src/manifest-writer.d.ts.map +1 -1
  256. package/dist/library/src/remote/remote-catalog-source.d.ts +6 -1
  257. package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
  258. package/dist/library/src/remote/rest-catalog-source.d.ts +6 -1
  259. package/dist/library/src/remote/rest-catalog-source.d.ts.map +1 -1
  260. package/dist/{library-publish-FFIPWIRM.js → library-publish-FC3ZABR2.js} +91 -29
  261. package/dist/library-publish-FC3ZABR2.js.map +1 -0
  262. package/dist/model-endpoint/index.d.ts +2 -0
  263. package/dist/model-endpoint/index.js +9 -0
  264. package/dist/model-endpoint/index.js.map +1 -0
  265. package/dist/model-endpoint/src/index.d.ts +4 -0
  266. package/dist/model-endpoint/src/index.d.ts.map +1 -0
  267. package/dist/model-endpoint/src/openai-chat.d.ts +105 -0
  268. package/dist/model-endpoint/src/openai-chat.d.ts.map +1 -0
  269. package/dist/model-endpoint/src/openai-responses.d.ts +106 -0
  270. package/dist/model-endpoint/src/openai-responses.d.ts.map +1 -0
  271. package/dist/model-endpoint/src/openai-shared.d.ts +77 -0
  272. package/dist/model-endpoint/src/openai-shared.d.ts.map +1 -0
  273. package/dist/model-endpoint/src/resolve.d.ts +36 -0
  274. package/dist/model-endpoint/src/resolve.d.ts.map +1 -0
  275. package/dist/model-endpoint/src/server.d.ts +16 -0
  276. package/dist/model-endpoint/src/server.d.ts.map +1 -0
  277. package/dist/model-endpoint/src/types.d.ts +78 -0
  278. package/dist/model-endpoint/src/types.d.ts.map +1 -0
  279. package/dist/open-library-5ET7SAJC.js +40 -0
  280. package/dist/{open-library-PZAT3TJA.js.map → open-library-5ET7SAJC.js.map} +1 -1
  281. package/dist/open-registry-X6YQVP7V.js +32 -0
  282. package/dist/{open-registry-W46UXZ3I.js.map → open-registry-X6YQVP7V.js.map} +1 -1
  283. package/dist/{paths-KKY3NSBZ.js → paths-NXWIBZCX.js} +9 -9
  284. package/dist/{paths-KKY3NSBZ.js.map → paths-NXWIBZCX.js.map} +1 -1
  285. package/dist/{plugin-store-CK7YWRIC.js → plugin-store-BIITCNOZ.js} +8 -8
  286. package/dist/{plugin-store-CK7YWRIC.js.map → plugin-store-BIITCNOZ.js.map} +1 -1
  287. package/dist/project-2UXHSVVA.js +82 -0
  288. package/dist/{project-EZUH7PUJ.js.map → project-2UXHSVVA.js.map} +1 -1
  289. package/dist/resolver/index.js +7 -7
  290. package/dist/runner/index.js +35 -32
  291. package/dist/runner/src/event-gap-buffer.d.ts.map +1 -1
  292. package/dist/runner/src/model-endpoint-discovery.d.ts +64 -0
  293. package/dist/runner/src/model-endpoint-discovery.d.ts.map +1 -0
  294. package/dist/runner/src/resources.d.ts.map +1 -1
  295. package/dist/runner/src/serve.d.ts +14 -0
  296. package/dist/runner/src/serve.d.ts.map +1 -1
  297. package/dist/runner/src/session-builder.d.ts +8 -0
  298. package/dist/runner/src/session-builder.d.ts.map +1 -1
  299. package/dist/runner/src/session.d.ts +15 -0
  300. package/dist/runner/src/session.d.ts.map +1 -1
  301. package/dist/sdk/asset-manager.js +14 -14
  302. package/dist/sdk/bridge.js +14 -13
  303. package/dist/sdk/core.js +6 -6
  304. package/dist/sdk/flow.js +7 -7
  305. package/dist/sdk/index.js +35 -32
  306. package/dist/sdk/index.js.map +1 -1
  307. package/dist/sdk/resolver.js +7 -7
  308. package/dist/sdk/runner.js +35 -32
  309. package/dist/sdk/session.js +2 -2
  310. package/dist/sdk/transport/ws/server.js +1 -1
  311. package/dist/sdk/transport/ws.js +1 -1
  312. package/dist/sdk/transport.js +1 -1
  313. package/dist/sdk/types.js +1 -1
  314. package/dist/serve-preflight-GD7IQFA3.js +54 -0
  315. package/dist/serve-preflight-GD7IQFA3.js.map +1 -0
  316. package/dist/session/index.js +2 -2
  317. package/dist/{setup-L632QIHV.js → setup-IKH4R7UN.js} +25 -24
  318. package/dist/setup-IKH4R7UN.js.map +1 -0
  319. package/dist/{skills-OY3Y5GKA.js → skills-XVHOXOOH.js} +12 -12
  320. package/dist/{skills-OY3Y5GKA.js.map → skills-XVHOXOOH.js.map} +1 -1
  321. package/dist/source-M6IARYNO.js +83 -0
  322. package/dist/{source-36FHMN5V.js.map → source-M6IARYNO.js.map} +1 -1
  323. package/dist/source-fetch-github-ST4MFL3D.js +4 -0
  324. package/dist/{source-fetch-github-PIO6EMMF.js.map → source-fetch-github-ST4MFL3D.js.map} +1 -1
  325. package/dist/{source-manifest-publish-NIXJSJ22.js → source-manifest-publish-UP2IS2QW.js} +65 -24
  326. package/dist/source-manifest-publish-UP2IS2QW.js.map +1 -0
  327. package/dist/transport/index.js +1 -1
  328. package/dist/transport/src/ws/server.d.ts +16 -0
  329. package/dist/transport/src/ws/server.d.ts.map +1 -1
  330. package/dist/transport/ws/server.js +1 -1
  331. package/dist/transport/ws.js +1 -1
  332. package/dist/tui/index.js +35 -32
  333. package/dist/tui/index.js.map +1 -1
  334. package/dist/types/index.js +1 -1
  335. package/dist/types/manifests.js +1 -1
  336. package/dist/types/src/delivery.d.ts.map +1 -1
  337. package/dist/types/src/events.d.ts +55 -1
  338. package/dist/types/src/events.d.ts.map +1 -1
  339. package/dist/types/src/index.d.ts +1 -1
  340. package/dist/types/src/index.d.ts.map +1 -1
  341. package/dist/types/src/manifests/mcp-server.d.ts.map +1 -1
  342. package/dist/types/src/version.d.ts +11 -1
  343. package/dist/types/src/version.d.ts.map +1 -1
  344. package/dist/workspace-plugin/adapters/mcp.js +25 -24
  345. package/dist/workspace-plugin/adapters/omp.js +14 -14
  346. package/dist/workspace-plugin/index.js +1 -1
  347. package/dist/workspace-plugin/src/adapters/mcp.d.ts.map +1 -1
  348. package/package.json +14 -3
  349. package/dist/chunk-57SF6W6E.js.map +0 -1
  350. package/dist/chunk-5FYOM4RF.js.map +0 -1
  351. package/dist/chunk-5SKVCMRC.js.map +0 -1
  352. package/dist/chunk-6GICC4RJ.js.map +0 -1
  353. package/dist/chunk-6NQDDCIL.js.map +0 -1
  354. package/dist/chunk-7SMP4GNW.js.map +0 -1
  355. package/dist/chunk-BF422IDP.js.map +0 -1
  356. package/dist/chunk-BVJU2GKE.js.map +0 -1
  357. package/dist/chunk-DKGEV6SQ.js.map +0 -1
  358. package/dist/chunk-F4NJDSR7.js.map +0 -1
  359. package/dist/chunk-FB3NREF7.js.map +0 -1
  360. package/dist/chunk-GMDSRSGI.js.map +0 -1
  361. package/dist/chunk-H5U7LNTJ.js.map +0 -1
  362. package/dist/chunk-HBZD3MIW.js.map +0 -1
  363. package/dist/chunk-IY5E7Y5W.js.map +0 -1
  364. package/dist/chunk-L3ZGYSWY.js.map +0 -1
  365. package/dist/chunk-M3P4BYRK.js.map +0 -1
  366. package/dist/chunk-NDUYFYJB.js.map +0 -1
  367. package/dist/chunk-OQ5MKDS3.js.map +0 -1
  368. package/dist/chunk-PN44DOGP.js +0 -345
  369. package/dist/chunk-PN44DOGP.js.map +0 -1
  370. package/dist/chunk-Y4Z7LGSH.js.map +0 -1
  371. package/dist/chunk-Y7WKXPWS.js.map +0 -1
  372. package/dist/chunk-ZSMMX3JD.js.map +0 -1
  373. package/dist/library-publish-FFIPWIRM.js.map +0 -1
  374. package/dist/open-library-PZAT3TJA.js +0 -40
  375. package/dist/open-registry-W46UXZ3I.js +0 -32
  376. package/dist/project-EZUH7PUJ.js +0 -79
  377. package/dist/serve-preflight-F7MYF747.js +0 -64
  378. package/dist/serve-preflight-F7MYF747.js.map +0 -1
  379. package/dist/setup-L632QIHV.js.map +0 -1
  380. package/dist/source-36FHMN5V.js +0 -42
  381. package/dist/source-fetch-github-PIO6EMMF.js +0 -4
  382. package/dist/source-manifest-publish-NIXJSJ22.js.map +0 -1
@@ -1,21 +1,417 @@
1
- import { openLibrary } from './chunk-VLBIME5L.js';
2
- import { S, logErr, logWarn, logOk, logInfo } from './chunk-PYTTF754.js';
3
- import { getKindRegistry } from './chunk-4NJ3QQHZ.js';
4
- import { stampManifestPublisher, upsertManifestAsset, resolveIndexPath, LocalIndex } from './chunk-DKGEV6SQ.js';
5
- import { requiresSyntaxErrors } from './chunk-NVO6WECE.js';
6
- import { matchPin } from './chunk-L3ZGYSWY.js';
1
+ import { openLibrary } from './chunk-2LTF2ZHH.js';
2
+ import { S, logErr, logWarn, logOk, logInfo } from './chunk-PIDMOE7R.js';
3
+ import { getKindRegistry } from './chunk-YUURCZWY.js';
4
+ import { resolveBinding, UnknownCompositionKindError } from './chunk-SRKU7QUG.js';
5
+ import { parseFlowDefinition } from './chunk-X3RMRJNR.js';
6
+ import { assetRootProblem, stampManifestPublisher, upsertManifestAsset, resolveIndexPath, LocalIndex } from './chunk-OOQ5Q75W.js';
7
+ import { SEMVER_RE, parseManifestFile, requiresSyntaxErrors } from './chunk-NKDSU4Q7.js';
8
+ import { composeRefTarget, SKILL_DESCRIPTION_PLACEHOLDER_PREFIX, PRESET_DESCRIPTION_PLACEHOLDER, PRESET_ITEM_PLACEHOLDER_REF, composeSlotDiagnostics, agentDeprecationDiagnostics, SKILL_BODY_PLACEHOLDER, CONTRACT_BODY_PLACEHOLDER, PROMPT_BODY_PLACEHOLDER, AGENT_BODY_PLACEHOLDER } from './chunk-MGM5EJQQ.js';
9
+ import { checkAgentSkillConformance } from './chunk-4QINFQ27.js';
10
+ import { matchPin } from './chunk-J76LDUDS.js';
7
11
  import { globalSkaileDir } from './chunk-L5VSIPQD.js';
8
- import { SKAILE_MANIFEST_FILENAME, listLibrarySymlinks, librarySymlinkMessage, loadSkPublishManifest } from './chunk-IY5E7Y5W.js';
9
- import { parseFrontmatter } from './chunk-M3P4BYRK.js';
10
- import { parseDep, isValidPublisher, slugifyAssetName, PUBLISHER_HINT } from './chunk-J4OYIYFQ.js';
11
- import * as fs from 'fs';
12
+ import { SKAILE_MANIFEST_FILENAME, loadSkPublishManifest, listLibrarySymlinks, librarySymlinkMessage } from './chunk-ANSZULXH.js';
13
+ import { parseFrontmatter } from './chunk-SP5NGNBV.js';
14
+ import { parseDep, isValidPublisher, slugifyAssetName, parseAssetRef, isValidAssetName, ASSET_NAME_HINT, PUBLISHER_HINT } from './chunk-VY6NTFE7.js';
15
+ import * as fs3 from 'fs';
12
16
  import { rmSync, readFileSync, mkdirSync, writeFileSync, chmodSync } from 'fs';
13
- import * as path from 'path';
17
+ import * as path3 from 'path';
14
18
  import { join, dirname } from 'path';
15
19
  import { Option } from 'commander';
16
20
  import { parse, stringify } from 'yaml';
17
21
  import { randomBytes, createHash } from 'crypto';
18
22
 
23
+ var error = (text) => ({ tag: "agent", text, conformance: false });
24
+ var PSEUDO_COMPOSE_KINDS = /* @__PURE__ */ new Set(["soul"]);
25
+ function checkComposeKinds(parsed, registry) {
26
+ if (parsed === null || typeof parsed !== "object") return [];
27
+ const composes = parsed.composes;
28
+ if (!Array.isArray(composes)) return [];
29
+ const diagnostics = [];
30
+ composes.forEach((item, i) => {
31
+ if (item === null || typeof item !== "object") return;
32
+ const fields = item;
33
+ const kind = fields.kind;
34
+ if (typeof kind !== "string") return;
35
+ if (!PSEUDO_COMPOSE_KINDS.has(kind) && !registry.getProvider(kind)) {
36
+ diagnostics.push({
37
+ code: "unknown_asset_kind",
38
+ severity: "error",
39
+ message: `composes item kind "${kind}" is not a registered asset kind (registered: ${registry.getAllKinds().join(", ")})`,
40
+ path: `composes[${i}].kind`
41
+ });
42
+ return;
43
+ }
44
+ if (fields.binding !== void 0 || typeof fields.ref !== "string") return;
45
+ try {
46
+ resolveBinding({ kind, ref: fields.ref });
47
+ } catch (err) {
48
+ if (!(err instanceof UnknownCompositionKindError)) throw err;
49
+ diagnostics.push({
50
+ code: "unknown_asset_kind",
51
+ severity: "error",
52
+ message: `composes item "${fields.ref}" of kind "${kind}" has no default binding; set \`binding:\` (the session build fails without it)`,
53
+ path: `composes[${i}].binding`
54
+ });
55
+ }
56
+ });
57
+ return diagnostics;
58
+ }
59
+ function checkAgentDefinition(parsed, registry) {
60
+ const errors = [];
61
+ const advisories = [];
62
+ for (const d of [
63
+ ...checkComposeKinds(parsed, registry),
64
+ ...composeSlotDiagnostics(parsed),
65
+ ...agentDeprecationDiagnostics(parsed)
66
+ ]) {
67
+ (d.severity === "error" ? errors : advisories).push({
68
+ tag: "agent",
69
+ text: `${d.code}: ${d.path}: ${d.message}`,
70
+ conformance: false
71
+ });
72
+ }
73
+ return { errors, advisories };
74
+ }
75
+ function isInside(parent, child) {
76
+ const rel = path3.relative(parent, child);
77
+ return rel === "" || !rel.startsWith("..") && !path3.isAbsolute(rel);
78
+ }
79
+ function records(value) {
80
+ return Array.isArray(value) ? value.filter((v) => v !== null && typeof v === "object") : [];
81
+ }
82
+ function checkAgentFiles(parsed, agentDir, libraryRoot) {
83
+ const out = [];
84
+ records(parsed.composes).forEach((item, i) => {
85
+ if (typeof item.kind !== "string" || typeof item.ref !== "string") return;
86
+ const target = composeRefTarget({ kind: item.kind, ref: item.ref });
87
+ if (target?.type !== "local") return;
88
+ const where = `composes[${i}].ref`;
89
+ const resolved = path3.resolve(agentDir, target.path);
90
+ if (!fs3.existsSync(resolved)) {
91
+ out.push(
92
+ error(`${where}: local path "${item.ref}" does not exist (resolved from ${agentDir})`)
93
+ );
94
+ return;
95
+ }
96
+ if (!isInside(libraryRoot, resolved)) {
97
+ out.push(
98
+ error(`${where}: local path "${item.ref}" leaves the library and cannot be published`)
99
+ );
100
+ return;
101
+ }
102
+ const ownManifests = [
103
+ agentDir,
104
+ path3.join(agentDir, "agent.yaml"),
105
+ path3.join(agentDir, "AGENT.md")
106
+ ];
107
+ if (item.kind === "agent" && ownManifests.includes(resolved)) {
108
+ out.push(
109
+ error(
110
+ `${where}: agent composes itself (${item.ref}); an agent cannot be its own sub-agent`
111
+ )
112
+ );
113
+ }
114
+ });
115
+ const blocks = records(
116
+ parsed.memory !== null && typeof parsed.memory === "object" ? parsed.memory.blocks : void 0
117
+ );
118
+ blocks.forEach((block, i) => {
119
+ if (typeof block.source !== "string" || block.source === "") return;
120
+ const where = `memory.blocks[${i}].source`;
121
+ const resolved = path3.resolve(agentDir, block.source);
122
+ if (!isInside(agentDir, resolved)) {
123
+ out.push(error(`${where}: "${block.source}" leaves the agent directory`));
124
+ return;
125
+ }
126
+ let stat;
127
+ try {
128
+ stat = fs3.statSync(resolved);
129
+ } catch {
130
+ out.push(error(`${where}: file "${block.source}" does not exist in ${agentDir}`));
131
+ return;
132
+ }
133
+ if (!stat.isFile()) {
134
+ out.push(error(`${where}: "${block.source}" is not a file`));
135
+ return;
136
+ }
137
+ const max = block.max_chars;
138
+ if (typeof max !== "number") return;
139
+ const length = [...fs3.readFileSync(resolved, "utf-8").trim()].length;
140
+ if (length > max) {
141
+ out.push(
142
+ error(
143
+ `${where}: "${block.source}" holds ${length} characters, more than memory block "${String(block.name)}" max_chars ${max}`
144
+ )
145
+ );
146
+ }
147
+ });
148
+ return out;
149
+ }
150
+ function agentComposeRefAdvisories(parsed, hasAsset, libraryPublisher) {
151
+ const out = [];
152
+ records(parsed.composes).forEach((item, i) => {
153
+ if (typeof item.kind !== "string" || typeof item.ref !== "string") return;
154
+ const target = composeRefTarget({ kind: item.kind, ref: item.ref });
155
+ if (target?.type !== "asset" || target.kind === "soul") return;
156
+ if (target.publisher !== void 0 && libraryPublisher !== void 0 && target.publisher !== libraryPublisher) {
157
+ return;
158
+ }
159
+ if (target.publisher !== void 0 && libraryPublisher === void 0) return;
160
+ if (hasAsset(target.kind, target.name)) return;
161
+ out.push({
162
+ tag: "agent",
163
+ text: `composes[${i}].ref: ${item.ref} is not in this library; \`skaile add\` fails with "requires \u2026 not found" unless the asset is published elsewhere`,
164
+ conformance: false
165
+ });
166
+ });
167
+ return out;
168
+ }
169
+
170
+ // cli/src/skill-checks.ts
171
+ var BODY_PLACEHOLDER_BY_KIND = {
172
+ skill: SKILL_BODY_PLACEHOLDER,
173
+ agent: AGENT_BODY_PLACEHOLDER,
174
+ prompt: PROMPT_BODY_PLACEHOLDER,
175
+ contract: CONTRACT_BODY_PLACEHOLDER
176
+ };
177
+ var MARKDOWN_SCAFFOLD_KINDS = {
178
+ skill: true,
179
+ agent: true,
180
+ prompt: true,
181
+ contract: true
182
+ };
183
+ var FLOW_DESCRIPTION_PLACEHOLDER = "Flow description";
184
+ function checkAssetManifest(kind, parsed, body, dirName) {
185
+ const out = [];
186
+ if (kind === "skill") {
187
+ for (const f of checkAgentSkillConformance(parsed, { dirName })) {
188
+ out.push({ tag: "skill conformance", text: `${f.field}: ${f.message}`, conformance: true });
189
+ }
190
+ }
191
+ if (MARKDOWN_SCAFFOLD_KINDS[kind]) {
192
+ const bodyText = body?.replace(/^#[^\n]*\n+/, "");
193
+ const isPlaceholder = bodyText === SKILL_BODY_PLACEHOLDER || bodyText === BODY_PLACEHOLDER_BY_KIND[kind];
194
+ if (isPlaceholder) {
195
+ const noun = kind === "skill" ? "skill prompt" : kind;
196
+ out.push({
197
+ tag: kind,
198
+ text: `body is still the scaffold placeholder; write the ${noun}`,
199
+ conformance: false,
200
+ scaffoldBody: true
201
+ });
202
+ }
203
+ }
204
+ return out;
205
+ }
206
+ function declaredVersion(parsed) {
207
+ const scalar = (v) => typeof v === "string" ? v : typeof v === "number" ? String(v) : void 0;
208
+ const meta = parsed.metadata;
209
+ const nested = meta !== null && typeof meta === "object" ? scalar(meta.version) : void 0;
210
+ return scalar(parsed.version) ?? nested;
211
+ }
212
+ function invalidSemverText(version) {
213
+ return SEMVER_RE.test(version) ? void 0 : `version "${version}" is not valid semver`;
214
+ }
215
+ function rawVersionScalar(text) {
216
+ const front = text.startsWith("---") ? text.split(/\n---/, 1)[0] ?? text : text;
217
+ const m = /^[ \t]*version:[ \t]*([^\s#][^#\n]*?)[ \t]*(?:#.*)?$/m.exec(front);
218
+ return m?.[1];
219
+ }
220
+ function versionProblemText(parsed, rawText) {
221
+ const version = declaredVersion(parsed);
222
+ const text = version === void 0 ? void 0 : invalidSemverText(version);
223
+ if (text === void 0) return void 0;
224
+ const meta = parsed.metadata;
225
+ const nested = meta !== null && typeof meta === "object" ? meta.version : void 0;
226
+ const key = parsed.version === void 0 || parsed.version === null ? "metadata.version" : "version";
227
+ const written = key === "version" ? parsed.version : nested;
228
+ if (typeof written !== "number") return text;
229
+ const raw = (rawText === void 0 ? void 0 : rawVersionScalar(rawText)) ?? String(written);
230
+ const fix = /^\d+(\.\d+)?$/.test(raw) ? `${raw}${raw.includes(".") ? "" : ".0"}.0` : DEFAULT_VERSION;
231
+ return `version ${raw} is not valid semver: yaml reads an unquoted number as a number, not a string. Write it quoted with three parts: ${key}: "${fix}"`;
232
+ }
233
+ function duplicateAssetMessage(kind, name, dir, detail, library) {
234
+ return `${kind}:${name} found in ${dir} but ${detail}. Rename or delete one of the two directories, then re-run \`skaile library index ${library}\`.`;
235
+ }
236
+ var DEFAULT_VERSION = "0.1.0";
237
+ var SCAFFOLD_KINDS = {
238
+ skill: true,
239
+ agent: true,
240
+ prompt: true,
241
+ contract: true,
242
+ flow: true,
243
+ preset: true
244
+ };
245
+ function withManifestDefaults(kind, parsed) {
246
+ if (!SCAFFOLD_KINDS[kind]) return parsed;
247
+ const out = { ...parsed };
248
+ if (out.metadata === null) delete out.metadata;
249
+ const meta = out.metadata;
250
+ const nested = typeof meta === "object" && meta !== null && "version" in meta ? meta.version : void 0;
251
+ if (out.version == null && nested == null) out.version = DEFAULT_VERSION;
252
+ return out;
253
+ }
254
+ function flowFileNameError(parsed, fileName) {
255
+ const id = parsed.id;
256
+ if (fileName === void 0 || typeof id !== "string" || id.length === 0) return void 0;
257
+ const stem = fileName.replace(/\.flow\.(yaml|yml|json)$/, "");
258
+ if (stem === fileName || stem === id) return void 0;
259
+ return `flow id "${id}" does not match the file name "${fileName}"; a flow asset is named by its id and the flow engine loads it only from "${id}.flow.yaml". Rename the file to "${id}.flow.yaml" or set id: ${stem}`;
260
+ }
261
+ function manifestIdentityError(kind, parsed) {
262
+ const identity = kind === "flow" ? parsed.id : parsed.name;
263
+ if (typeof identity !== "string" || identity.length === 0) return void 0;
264
+ const publisher = typeof parsed.publisher === "string" ? parsed.publisher : void 0;
265
+ if (publisher !== void 0) {
266
+ try {
267
+ parseAssetRef(`${kind}:@${publisher}/${identity}`);
268
+ return void 0;
269
+ } catch (e) {
270
+ return e instanceof Error ? e.message : String(e);
271
+ }
272
+ }
273
+ if (!isValidAssetName(identity)) {
274
+ return `invalid asset ${kind === "flow" ? "id" : "name"} "${identity}" \u2014 ${ASSET_NAME_HINT}`;
275
+ }
276
+ return void 0;
277
+ }
278
+ function scaffoldDefinitionErrors(kind, parsed) {
279
+ const out = [];
280
+ if (kind === "flow") {
281
+ if (parsed.description === FLOW_DESCRIPTION_PLACEHOLDER) {
282
+ out.push("description is still the scaffold placeholder; say what the flow does");
283
+ }
284
+ if (parsed.nodes === void 0) {
285
+ out.push("nodes is missing; a flow needs at least one node");
286
+ } else if (Array.isArray(parsed.nodes) && parsed.nodes.length === 0) {
287
+ out.push("nodes is still the scaffold placeholder (nodes: []); add the flow's nodes");
288
+ }
289
+ }
290
+ if (kind === "preset") {
291
+ if (parsed.description === PRESET_DESCRIPTION_PLACEHOLDER) {
292
+ out.push(
293
+ `description is still the scaffold placeholder ("${PRESET_DESCRIPTION_PLACEHOLDER}"); say what the preset does`
294
+ );
295
+ }
296
+ const items = Array.isArray(parsed.items) ? parsed.items : [];
297
+ const placeholderItem = items.some((item) => {
298
+ const ref = typeof item === "string" ? item : item?.ref;
299
+ return typeof ref === "string" && ref.trim() === PRESET_ITEM_PLACEHOLDER_REF;
300
+ });
301
+ if (placeholderItem) {
302
+ out.push(
303
+ `item ${PRESET_ITEM_PLACEHOLDER_REF} is still the scaffold placeholder; replace it with the preset's real items`
304
+ );
305
+ }
306
+ }
307
+ return out;
308
+ }
309
+ function checkAsset(kind, parsed, body, dirName, registry, rawText, fileName, agentFiles) {
310
+ const errors = [];
311
+ const error2 = (text) => {
312
+ errors.push({ tag: kind, text, conformance: false });
313
+ };
314
+ const identity = manifestIdentityError(kind, parsed);
315
+ if (identity) error2(identity);
316
+ const flowFileError = kind === "flow" ? flowFileNameError(parsed, fileName) : void 0;
317
+ if (flowFileError) error2(flowFileError);
318
+ const semver = versionProblemText(parsed, rawText);
319
+ if (semver) error2(semver);
320
+ const effective = withManifestDefaults(kind, parsed);
321
+ const versionKey = ["skill", "prompt", "contract"].includes(kind) ? "metadata.version" : "version";
322
+ const provider = registry.getProvider(kind);
323
+ if (!provider) {
324
+ error2(`unknown_asset_kind: kind "${kind}" is not registered`);
325
+ } else {
326
+ const result = provider.validateManifest(effective);
327
+ if (!result.ok) {
328
+ for (const e of result.errors) {
329
+ if (e.path === "version" || e.path === "metadata.version") {
330
+ if (!semver) {
331
+ error2(`${e.path}: must be a semver string \u2014 set ${versionKey}: ${DEFAULT_VERSION}`);
332
+ }
333
+ continue;
334
+ }
335
+ error2(`${e.path ? `${e.path}: ` : ""}${e.message}`);
336
+ }
337
+ }
338
+ }
339
+ const description = parsed.description;
340
+ if (kind !== "skill" && typeof description === "string" && description.trim().startsWith(SKILL_DESCRIPTION_PLACEHOLDER_PREFIX)) {
341
+ error2(
342
+ `description: description is still the scaffold placeholder (${SKILL_DESCRIPTION_PLACEHOLDER_PREFIX} \u2026) \u2014 say what the ${kind} does and when to use it`
343
+ );
344
+ }
345
+ for (const text of scaffoldDefinitionErrors(kind, parsed)) error2(text);
346
+ if (kind === "flow") {
347
+ const flow = parseFlowDefinition(effective);
348
+ if (!flow.ok) {
349
+ for (const e of flow.errors) {
350
+ error2(`invalid flow definition: ${e.path || "<root>"}: ${e.message}`);
351
+ }
352
+ }
353
+ }
354
+ const advisories = checkAssetManifest(kind, parsed, body, dirName);
355
+ if (kind === "agent") {
356
+ if (fileName === "agent.yaml") {
357
+ const definition = checkAgentDefinition(parsed, registry);
358
+ errors.push(...definition.errors);
359
+ advisories.push(...definition.advisories);
360
+ }
361
+ if (agentFiles) errors.push(...checkAgentFiles(parsed, agentFiles.dir, agentFiles.libraryRoot));
362
+ }
363
+ return { errors, advisories };
364
+ }
365
+ function findAssetManifestFile(dir, kind, name) {
366
+ const candidates = [];
367
+ if (kind === "skill") candidates.push("SKILL.md");
368
+ else if (kind === "agent") candidates.push("agent.yaml", "AGENT.md");
369
+ else if (kind === "contract") candidates.push("CONTRACT.md");
370
+ else if (kind === "prompt") candidates.push(`${name}.prompt.md`);
371
+ else if (kind === "flow") candidates.push(`${name}.flow.yaml`, `${name}.flow.json`);
372
+ else if (kind === "preset") candidates.push(`${name}.preset.yaml`);
373
+ for (const c of candidates) {
374
+ const file = path3.join(dir, c);
375
+ if (fs3.existsSync(file)) return file;
376
+ }
377
+ const suffix = kind === "prompt" ? ".prompt.md" : kind === "flow" ? ".flow.yaml" : kind === "preset" ? ".preset.yaml" : null;
378
+ if (suffix && fs3.existsSync(dir)) {
379
+ const matches = fs3.readdirSync(dir).filter((f) => f.endsWith(suffix));
380
+ if (matches.length === 1) return path3.join(dir, matches[0]);
381
+ }
382
+ return null;
383
+ }
384
+ function readAssetBody(file, text) {
385
+ if (file.endsWith(".md")) return parseFrontmatter(text).body;
386
+ if (path3.basename(file) !== "agent.yaml") return void 0;
387
+ const soul = path3.join(path3.dirname(file), "SOUL.md");
388
+ return fs3.existsSync(soul) ? fs3.readFileSync(soul, "utf8").trim() : void 0;
389
+ }
390
+ function checkAssetFile(file, kind, registry, libraryRoot, onScaffoldBody) {
391
+ let text;
392
+ try {
393
+ text = fs3.readFileSync(file, "utf8");
394
+ } catch {
395
+ return [];
396
+ }
397
+ const res = parseManifestFile(file, text);
398
+ if (!res.ok) return [];
399
+ const checked = checkAsset(
400
+ kind,
401
+ res.data,
402
+ readAssetBody(file, text),
403
+ path3.basename(path3.dirname(file)),
404
+ registry,
405
+ text,
406
+ path3.basename(file),
407
+ libraryRoot === void 0 ? void 0 : { dir: path3.dirname(file), libraryRoot }
408
+ );
409
+ if (onScaffoldBody) {
410
+ for (const f of checked.advisories) if (f.scaffoldBody) onScaffoldBody(f);
411
+ }
412
+ return checked.errors;
413
+ }
414
+
19
415
  // cli/src/commands/publish-core.ts
20
416
  function formatNamespaceAvailability(a) {
21
417
  switch (a.status) {
@@ -348,10 +744,10 @@ async function getAccessToken(config, deps = {}) {
348
744
 
349
745
  // cli/src/commands/library-index.ts
350
746
  function manifestRequiresProblems(dir) {
351
- const file = path.join(dir, "skaile.manifest.yaml");
747
+ const file = path3.join(dir, "skaile.manifest.yaml");
352
748
  let doc;
353
749
  try {
354
- doc = parse(fs.readFileSync(file, "utf-8"));
750
+ doc = parse(fs3.readFileSync(file, "utf-8"));
355
751
  } catch {
356
752
  return [];
357
753
  }
@@ -389,13 +785,13 @@ async function knownAssetVersions(dir) {
389
785
  };
390
786
  addManifest(dir);
391
787
  const indexPath = resolveIndexPath();
392
- if (!fs.existsSync(indexPath)) return known;
788
+ if (!fs3.existsSync(indexPath)) return known;
393
789
  const index = new LocalIndex({ indexPath, kindRegistry: getKindRegistry() });
394
790
  try {
395
791
  for (const def of await index.listAssetDefs())
396
792
  add(def.publisher, def.kind, def.name, def.version);
397
793
  for (const lib of await index.listSources()) {
398
- if (path.resolve(lib.path) !== path.resolve(dir) && fs.existsSync(lib.path)) {
794
+ if (path3.resolve(lib.path) !== path3.resolve(dir) && fs3.existsSync(lib.path)) {
399
795
  addManifest(lib.path);
400
796
  }
401
797
  }
@@ -408,7 +804,7 @@ async function knownAssetVersions(dir) {
408
804
  async function unresolvedManifestDependencies(dir) {
409
805
  let doc;
410
806
  try {
411
- doc = parse(fs.readFileSync(path.join(dir, SKAILE_MANIFEST_FILENAME), "utf-8"));
807
+ doc = parse(fs3.readFileSync(path3.join(dir, SKAILE_MANIFEST_FILENAME), "utf-8"));
412
808
  } catch {
413
809
  return [];
414
810
  }
@@ -460,7 +856,7 @@ function requireValidPublisherOrExit(raw) {
460
856
  function manifestPublisherProblems(dir) {
461
857
  let doc;
462
858
  try {
463
- doc = parse(fs.readFileSync(path.join(dir, SKAILE_MANIFEST_FILENAME), "utf-8"));
859
+ doc = parse(fs3.readFileSync(path3.join(dir, SKAILE_MANIFEST_FILENAME), "utf-8"));
464
860
  } catch {
465
861
  return [];
466
862
  }
@@ -492,13 +888,68 @@ function exitOnManifestPublisherProblems(dir, libName) {
492
888
  );
493
889
  process.exit(1);
494
890
  }
891
+ function manifestEntryNameProblems(dir) {
892
+ const manifest = loadSkPublishManifest(dir);
893
+ if (!manifest || manifest.source) return [];
894
+ const problems = [];
895
+ for (const entry of manifest.assets ?? []) {
896
+ if (!entry.root || entry.source) continue;
897
+ if (assetRootProblem(dir, entry.root)) continue;
898
+ const file = findAssetManifestFile(path3.join(dir, entry.root), entry.kind, entry.name);
899
+ if (!file) continue;
900
+ let parsedName;
901
+ try {
902
+ const res = parseManifestFile(file, fs3.readFileSync(file, "utf-8"));
903
+ if (!res.ok) continue;
904
+ parsedName = entry.kind === "flow" ? res.data.id : res.data.name;
905
+ } catch {
906
+ continue;
907
+ }
908
+ if (typeof parsedName !== "string" || parsedName === "" || parsedName === entry.name) continue;
909
+ problems.push(
910
+ `${SKAILE_MANIFEST_FILENAME} [assets] ${entry.kind}:${entry.name} \u2014 ${path3.relative(dir, file)} now names "${parsedName}": the entry is a ref \`add\` cannot resolve. Run \`skaile library index <library>\` to rename it, or restore the name.`
911
+ );
912
+ }
913
+ return problems;
914
+ }
915
+ function manifestRootProblems(dir) {
916
+ let doc;
917
+ try {
918
+ doc = parse(fs3.readFileSync(path3.join(dir, SKAILE_MANIFEST_FILENAME), "utf-8"));
919
+ } catch {
920
+ return [];
921
+ }
922
+ if (!doc || typeof doc !== "object") return [];
923
+ const { assets } = doc;
924
+ if (!Array.isArray(assets)) return [];
925
+ const problems = [];
926
+ for (const a of assets) {
927
+ if (!a || typeof a !== "object") continue;
928
+ const { kind, name, root, source } = a;
929
+ if (typeof root !== "string" || source !== void 0) continue;
930
+ const problem = assetRootProblem(dir, root);
931
+ if (problem) {
932
+ problems.push(
933
+ `${SKAILE_MANIFEST_FILENAME} [assets] ${String(kind)}:${String(name)} \u2014 ${problem}`
934
+ );
935
+ }
936
+ }
937
+ return problems;
938
+ }
939
+ function exitOnManifestRootProblems(dir, verb) {
940
+ const problems = manifestRootProblems(dir);
941
+ if (problems.length === 0) return;
942
+ for (const message of problems) logErr(message);
943
+ logErr(`Fix or remove the entry in ${SKAILE_MANIFEST_FILENAME}, then re-run \`${verb}\`.`);
944
+ process.exit(1);
945
+ }
495
946
  function reportLibrarySymlinks(dir, opts) {
496
947
  const links = listLibrarySymlinks(dir, opts);
497
948
  for (const link of links) logErr(librarySymlinkMessage(link));
498
949
  return links.length;
499
950
  }
500
951
  function exitOnLibrarySymlinks(dir, verb) {
501
- const count = reportLibrarySymlinks(dir);
952
+ const count = reportLibrarySymlinks(dir, { wholeTree: true });
502
953
  if (count === 0) return;
503
954
  logErr(`${count} symlink(s) in ${dir}: remove them, then re-run \`${verb}\`.`);
504
955
  process.exit(1);
@@ -513,7 +964,7 @@ async function indexLibrary(lib, index, opts = {}) {
513
964
  const lost = new Set(res.pruned);
514
965
  for (const other of await own.listSources()) {
515
966
  if (other.id === lib.id || other.backend !== "local" || !other.path) continue;
516
- if (!fs.existsSync(other.path)) continue;
967
+ if (!fs3.existsSync(other.path)) continue;
517
968
  await new LocalCatalogSource(own, other.id, other.path, getKindRegistry()).sync({
518
969
  only: lost
519
970
  });
@@ -550,16 +1001,16 @@ function warnLibraryNameFallback(libName, resolved, hasPublisherFlag = false) {
550
1001
  );
551
1002
  }
552
1003
  function normalizeAssetFrontmatter(assetDir) {
553
- let markerFile = ["SKILL.md", "AGENT.md", "CONTRACT.md"].map((m) => path.join(assetDir, m)).find((f) => fs.existsSync(f));
1004
+ let markerFile = ["SKILL.md", "AGENT.md", "CONTRACT.md"].map((m) => path3.join(assetDir, m)).find((f) => fs3.existsSync(f));
554
1005
  if (!markerFile) {
555
- const promptMd = fs.readdirSync(assetDir).find((f) => f.endsWith(".prompt.md"));
556
- if (promptMd) markerFile = path.join(assetDir, promptMd);
1006
+ const promptMd = fs3.readdirSync(assetDir).find((f) => f.endsWith(".prompt.md"));
1007
+ if (promptMd) markerFile = path3.join(assetDir, promptMd);
557
1008
  }
558
1009
  if (!markerFile) return;
559
1010
  try {
560
- const { data, body } = parseFrontmatter(fs.readFileSync(markerFile, "utf8"));
1011
+ const { data, body } = parseFrontmatter(fs3.readFileSync(markerFile, "utf8"));
561
1012
  const fm = stringify(data).trimEnd();
562
- fs.writeFileSync(markerFile, `---
1013
+ fs3.writeFileSync(markerFile, `---
563
1014
  ${fm}
564
1015
  ---
565
1016
 
@@ -580,7 +1031,7 @@ async function registerLibraryAsset(lib, index, input) {
580
1031
  upsertManifestAsset(lib.path, {
581
1032
  kind: input.kind,
582
1033
  name: input.name,
583
- root: path.relative(lib.path, input.assetDir) || input.name,
1034
+ root: path3.relative(lib.path, input.assetDir) || input.name,
584
1035
  version: input.version,
585
1036
  publisher
586
1037
  });
@@ -603,17 +1054,17 @@ function findFiles(root, match) {
603
1054
  const walk = (dir) => {
604
1055
  let entries;
605
1056
  try {
606
- entries = fs.readdirSync(dir, { withFileTypes: true });
1057
+ entries = fs3.readdirSync(dir, { withFileTypes: true });
607
1058
  } catch {
608
1059
  return;
609
1060
  }
610
1061
  for (const entry of entries) {
611
1062
  if (entry.isDirectory()) {
612
1063
  if (!entry.name.startsWith(".") && entry.name !== "node_modules") {
613
- walk(path.join(dir, entry.name));
1064
+ walk(path3.join(dir, entry.name));
614
1065
  }
615
1066
  } else if (match(entry.name)) {
616
- found.push(path.join(dir, entry.name));
1067
+ found.push(path3.join(dir, entry.name));
617
1068
  }
618
1069
  }
619
1070
  };
@@ -635,7 +1086,7 @@ function warnIgnoredDomainFiles(root) {
635
1086
  function warnLegacyBundleFiles(root) {
636
1087
  const files = findFiles(root, (name) => name.endsWith(".bundle.yaml"));
637
1088
  if (files.length > 0) {
638
- const shown = files.slice(0, 5).map((f) => path.relative(root, f) || f);
1089
+ const shown = files.slice(0, 5).map((f) => path3.relative(root, f) || f);
639
1090
  const more = files.length > shown.length ? `, +${files.length - shown.length} more` : "";
640
1091
  logWarn(
641
1092
  `${files.length} *.bundle.yaml file(s) are not scanned (the bundle kind became preset): ${shown.join(", ")}${more}. Run \`skaile migrate assets ${root} --write\` to rename them to *.preset.yaml. See ${LIBRARY_UPGRADE_DOCS}`
@@ -644,6 +1095,6 @@ function warnLegacyBundleFiles(root) {
644
1095
  return files.length;
645
1096
  }
646
1097
 
647
- export { DOMAIN_REMOVED_HINT, assetEntryRef, assetNamespace, bareName, deviceLogin, exitOnEmptyAsset, exitOnLibrarySymlinks, exitOnManifestPublisherProblems, formatNamespaceAvailability, getAccessToken, getStoreIdentity, hasStoredAuth, indexLibrary, loadStoreAuthConfig, logout, manifestNamespaces, manifestPublisherProblems, manifestRequiresProblems, manifestVersionMismatchMessage, plannedRefs, preflightNamespace, publishToStore, refFor, registerLibraryAsset, rejectRemovedDomainOption, removedDomainOption, reportLibrarySymlinks, requireValidPublisherOrExit, resolveLibraryPublisherDetailed, unresolvedManifestDependencies, warnIgnoredDomainFiles, warnLegacyBundleFiles, warnLibraryNameFallback };
648
- //# sourceMappingURL=chunk-FB3NREF7.js.map
649
- //# sourceMappingURL=chunk-FB3NREF7.js.map
1098
+ export { DOMAIN_REMOVED_HINT, agentComposeRefAdvisories, assetEntryRef, assetNamespace, bareName, checkAsset, checkAssetFile, checkComposeKinds, declaredVersion, deviceLogin, duplicateAssetMessage, exitOnEmptyAsset, exitOnLibrarySymlinks, exitOnManifestPublisherProblems, exitOnManifestRootProblems, findAssetManifestFile, formatNamespaceAvailability, getAccessToken, getStoreIdentity, hasStoredAuth, indexLibrary, invalidSemverText, loadStoreAuthConfig, logout, manifestEntryNameProblems, manifestNamespaces, manifestPublisherProblems, manifestRequiresProblems, manifestRootProblems, manifestVersionMismatchMessage, plannedRefs, preflightNamespace, publishToStore, readAssetBody, refFor, registerLibraryAsset, rejectRemovedDomainOption, removedDomainOption, reportLibrarySymlinks, requireValidPublisherOrExit, resolveLibraryPublisherDetailed, unresolvedManifestDependencies, warnIgnoredDomainFiles, warnLegacyBundleFiles, warnLibraryNameFallback };
1099
+ //# sourceMappingURL=chunk-AXNX2SKZ.js.map
1100
+ //# sourceMappingURL=chunk-AXNX2SKZ.js.map