@skaile/workspaces 0.24.0 → 0.26.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 (520) hide show
  1. package/CHANGELOG.md +276 -0
  2. package/README.md +2 -2
  3. package/dist/{asset-feeds-WKIKSZ6Z.js → asset-feeds-WMVTI7KW.js} +11 -10
  4. package/dist/asset-feeds-WMVTI7KW.js.map +1 -0
  5. package/dist/asset-manager/index.js +11 -10
  6. package/dist/asset-manager/installer.js +10 -9
  7. package/dist/asset-manager/renderers.js +2 -2
  8. package/dist/asset-manager/src/index.d.ts +6 -7
  9. package/dist/asset-manager/src/index.d.ts.map +1 -1
  10. package/dist/asset-manager/src/installer.d.ts.map +1 -1
  11. package/dist/bridge/drivers/claude-sdk.js +14 -7
  12. package/dist/bridge/drivers/claude-sdk.js.map +1 -1
  13. package/dist/bridge/drivers/codex.js +8 -34
  14. package/dist/bridge/drivers/codex.js.map +1 -1
  15. package/dist/bridge/drivers/echo.js +1 -1
  16. package/dist/bridge/drivers/omp.js +64 -50
  17. package/dist/bridge/drivers/omp.js.map +1 -1
  18. package/dist/bridge/index.js +4 -4
  19. package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
  20. package/dist/bridge/src/drivers/codex.d.ts.map +1 -1
  21. package/dist/bridge/src/drivers/omp.d.ts +20 -4
  22. package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
  23. package/dist/bridge/src/error-classifier.d.ts +17 -0
  24. package/dist/bridge/src/error-classifier.d.ts.map +1 -1
  25. package/dist/bridge/src/models.d.ts +1 -1
  26. package/dist/bridge/src/models.d.ts.map +1 -1
  27. package/dist/bridge/src/provider-endpoints.d.ts +16 -0
  28. package/dist/bridge/src/provider-endpoints.d.ts.map +1 -0
  29. package/dist/bridge/src/validation.d.ts +1 -1
  30. package/dist/bridge/src/validation.d.ts.map +1 -1
  31. package/dist/{chunk-M5TE6YI5.js → chunk-23M4XZQW.js} +10 -52
  32. package/dist/chunk-23M4XZQW.js.map +1 -0
  33. package/dist/{chunk-DH4N5AW4.js → chunk-2FS4FPZ7.js} +3 -3
  34. package/dist/{chunk-DH4N5AW4.js.map → chunk-2FS4FPZ7.js.map} +1 -1
  35. package/dist/{chunk-6VTG73UY.js → chunk-45H3UO2R.js} +2 -2
  36. package/dist/{chunk-6VTG73UY.js.map → chunk-45H3UO2R.js.map} +1 -1
  37. package/dist/chunk-4SQ6Y6U7.js +28 -0
  38. package/dist/chunk-4SQ6Y6U7.js.map +1 -0
  39. package/dist/{chunk-LSGAYQ2E.js → chunk-5YO3H5Q4.js} +3 -3
  40. package/dist/{chunk-LSGAYQ2E.js.map → chunk-5YO3H5Q4.js.map} +1 -1
  41. package/dist/{chunk-JDX54X4Y.js → chunk-7GWYRVAX.js} +12 -9
  42. package/dist/chunk-7GWYRVAX.js.map +1 -0
  43. package/dist/{chunk-46COM7M5.js → chunk-7OBGSR7O.js} +5 -5
  44. package/dist/chunk-7OBGSR7O.js.map +1 -0
  45. package/dist/{chunk-2RFOFHSM.js → chunk-BKF3UFF4.js} +21 -9
  46. package/dist/chunk-BKF3UFF4.js.map +1 -0
  47. package/dist/{chunk-KOVLSBXK.js → chunk-BMQKMOQY.js} +81 -79
  48. package/dist/chunk-BMQKMOQY.js.map +1 -0
  49. package/dist/{chunk-J2TITSXF.js → chunk-BQRRBGDE.js} +2 -2
  50. package/dist/{chunk-J2TITSXF.js.map → chunk-BQRRBGDE.js.map} +1 -1
  51. package/dist/{chunk-5ESCS2OS.js → chunk-C32BRO2W.js} +67 -35
  52. package/dist/chunk-C32BRO2W.js.map +1 -0
  53. package/dist/{chunk-GZWJGNNN.js → chunk-DEYYRFQU.js} +3 -3
  54. package/dist/chunk-DEYYRFQU.js.map +1 -0
  55. package/dist/{chunk-YX3UWPJ5.js → chunk-IEJ5IOC3.js} +27 -49
  56. package/dist/chunk-IEJ5IOC3.js.map +1 -0
  57. package/dist/chunk-IERB3UXJ.js +215 -0
  58. package/dist/chunk-IERB3UXJ.js.map +1 -0
  59. package/dist/{chunk-FVTV7M76.js → chunk-IFGTRL2I.js} +3 -3
  60. package/dist/chunk-IFGTRL2I.js.map +1 -0
  61. package/dist/{chunk-LJ52ZKIU.js → chunk-JIQLLZ65.js} +203 -39
  62. package/dist/chunk-JIQLLZ65.js.map +1 -0
  63. package/dist/{chunk-Z3M5K67G.js → chunk-KL2MQ6WI.js} +114 -63
  64. package/dist/chunk-KL2MQ6WI.js.map +1 -0
  65. package/dist/{chunk-6FNCZYJY.js → chunk-MBOR7D65.js} +3 -3
  66. package/dist/{chunk-6FNCZYJY.js.map → chunk-MBOR7D65.js.map} +1 -1
  67. package/dist/{chunk-QAVZOJCV.js → chunk-OVRSNIKJ.js} +2 -2
  68. package/dist/chunk-OVRSNIKJ.js.map +1 -0
  69. package/dist/{chunk-DQWREFRQ.js → chunk-PAYAFNXG.js} +22 -3
  70. package/dist/chunk-PAYAFNXG.js.map +1 -0
  71. package/dist/{chunk-D3VO6WNC.js → chunk-PRLD7EXG.js} +3 -3
  72. package/dist/chunk-PRLD7EXG.js.map +1 -0
  73. package/dist/{chunk-N6TA6RSH.js → chunk-PY7AQRGH.js} +59 -13
  74. package/dist/chunk-PY7AQRGH.js.map +1 -0
  75. package/dist/{chunk-NELZIQ2E.js → chunk-QDJKE557.js} +20 -3
  76. package/dist/chunk-QDJKE557.js.map +1 -0
  77. package/dist/{chunk-OYRW5RCM.js → chunk-QHXS3YDV.js} +9 -9
  78. package/dist/chunk-QHXS3YDV.js.map +1 -0
  79. package/dist/{chunk-2F3RUZXC.js → chunk-RTAIGPTF.js} +161 -106
  80. package/dist/chunk-RTAIGPTF.js.map +1 -0
  81. package/dist/{chunk-IPUYL6TD.js → chunk-TV72ZJYN.js} +8 -5
  82. package/dist/{chunk-IPUYL6TD.js.map → chunk-TV72ZJYN.js.map} +1 -1
  83. package/dist/{chunk-ICS76R4T.js → chunk-W7W66MDZ.js} +10 -8
  84. package/dist/chunk-W7W66MDZ.js.map +1 -0
  85. package/dist/{chunk-JQBHCJ6N.js → chunk-WD4LP66U.js} +329 -121
  86. package/dist/chunk-WD4LP66U.js.map +1 -0
  87. package/dist/{chunk-AFLH7B64.js → chunk-XGLGS5B4.js} +3 -3
  88. package/dist/{chunk-AFLH7B64.js.map → chunk-XGLGS5B4.js.map} +1 -1
  89. package/dist/{chunk-HIIARTRZ.js → chunk-YDTW4GT6.js} +450 -207
  90. package/dist/chunk-YDTW4GT6.js.map +1 -0
  91. package/dist/{chunk-2XY6732A.js → chunk-YRU4WB6Y.js} +5 -5
  92. package/dist/chunk-YRU4WB6Y.js.map +1 -0
  93. package/dist/{chunk-542K7SR6.js → chunk-Z5DI7PDG.js} +173 -90
  94. package/dist/chunk-Z5DI7PDG.js.map +1 -0
  95. package/dist/{chunk-KLNL7QHN.js → chunk-ZAP2BDHG.js} +30 -5
  96. package/dist/chunk-ZAP2BDHG.js.map +1 -0
  97. package/dist/{chunk-GCJXPUHG.js → chunk-ZONCCO5N.js} +9 -4
  98. package/dist/chunk-ZONCCO5N.js.map +1 -0
  99. package/dist/{chunk-ODPII24X.js → chunk-ZYDE52WE.js} +3 -3
  100. package/dist/{chunk-ODPII24X.js.map → chunk-ZYDE52WE.js.map} +1 -1
  101. package/dist/cli/index.js +566 -425
  102. package/dist/cli/index.js.map +1 -1
  103. package/dist/cli/src/commands/complete-resolvers.d.ts.map +1 -1
  104. package/dist/cli/src/commands/config.d.ts.map +1 -1
  105. package/dist/cli/src/commands/connector.d.ts +7 -0
  106. package/dist/cli/src/commands/connector.d.ts.map +1 -1
  107. package/dist/cli/src/commands/flow.d.ts +3 -2
  108. package/dist/cli/src/commands/flow.d.ts.map +1 -1
  109. package/dist/cli/src/commands/npx.d.ts.map +1 -1
  110. package/dist/cli/src/commands/project.d.ts.map +1 -1
  111. package/dist/cli/src/commands/run.d.ts.map +1 -1
  112. package/dist/cli/src/commands/validate.d.ts.map +1 -1
  113. package/dist/cli/src/flow-discovery.d.ts +24 -0
  114. package/dist/cli/src/flow-discovery.d.ts.map +1 -0
  115. package/dist/cli/src/open-registry.d.ts +2 -2
  116. package/dist/cli/src/paths.d.ts +26 -9
  117. package/dist/cli/src/paths.d.ts.map +1 -1
  118. package/dist/cli/src/skill-walker.d.ts +9 -5
  119. package/dist/cli/src/skill-walker.d.ts.map +1 -1
  120. package/dist/connectors/config.js +8 -7
  121. package/dist/connectors/index.js +13 -12
  122. package/dist/connectors/rclone-config.js +1 -1
  123. package/dist/connectors/src/connector-manager.d.ts +24 -2
  124. package/dist/connectors/src/connector-manager.d.ts.map +1 -1
  125. package/dist/connectors/src/connector-prompt.d.ts.map +1 -1
  126. package/dist/connectors/src/connector-registry.d.ts +3 -3
  127. package/dist/connectors/src/credential-helper-script.d.ts.map +1 -1
  128. package/dist/connectors/src/index.d.ts +4 -2
  129. package/dist/connectors/src/index.d.ts.map +1 -1
  130. package/dist/connectors/src/managed-gitconfig.d.ts.map +1 -1
  131. package/dist/connectors/src/mount-placeholder.d.ts +68 -0
  132. package/dist/connectors/src/mount-placeholder.d.ts.map +1 -0
  133. package/dist/connectors/src/rclone-config/googledrive.d.ts +1 -1
  134. package/dist/core/discovery.js +1 -1
  135. package/dist/core/index.js +7 -6
  136. package/dist/core/manifest.js +2 -2
  137. package/dist/core/models.js +1 -1
  138. package/dist/core/publish-manifest.d.ts +2 -0
  139. package/dist/core/publish-manifest.js +5 -0
  140. package/dist/core/publish-manifest.js.map +1 -0
  141. package/dist/core/runtime-assets.js +5 -4
  142. package/dist/core/src/discovery.d.ts +27 -0
  143. package/dist/core/src/discovery.d.ts.map +1 -1
  144. package/dist/core/src/index.d.ts +9 -6
  145. package/dist/core/src/index.d.ts.map +1 -1
  146. package/dist/core/src/lock.d.ts.map +1 -1
  147. package/dist/core/src/manifest-yaml-editor.d.ts +62 -0
  148. package/dist/core/src/manifest-yaml-editor.d.ts.map +1 -0
  149. package/dist/core/src/models.d.ts +16 -3
  150. package/dist/core/src/models.d.ts.map +1 -1
  151. package/dist/core/src/publish-manifest.d.ts +160 -0
  152. package/dist/core/src/publish-manifest.d.ts.map +1 -0
  153. package/dist/core/src/repo-manager.d.ts +9 -1
  154. package/dist/core/src/repo-manager.d.ts.map +1 -1
  155. package/dist/core/src/runtime-assets.d.ts +80 -29
  156. package/dist/core/src/runtime-assets.d.ts.map +1 -1
  157. package/dist/core/src/walker.d.ts +19 -6
  158. package/dist/core/src/walker.d.ts.map +1 -1
  159. package/dist/core/src/workspace-config.d.ts +30 -36
  160. package/dist/core/src/workspace-config.d.ts.map +1 -1
  161. package/dist/core/src/workspace-yaml-editor.d.ts +1 -15
  162. package/dist/core/src/workspace-yaml-editor.d.ts.map +1 -1
  163. package/dist/core/workspace-config.js +4 -3
  164. package/dist/deploy/index.js +50 -79
  165. package/dist/deploy/index.js.map +1 -1
  166. package/dist/deploy/src/targets/container-runtime.d.ts +1 -1
  167. package/dist/deploy/src/targets/container-runtime.d.ts.map +1 -1
  168. package/dist/deploy/src/targets/local.d.ts.map +1 -1
  169. package/dist/deploy/src/targets/nix.d.ts.map +1 -1
  170. package/dist/deploy/src/targets/process-handle.d.ts +7 -5
  171. package/dist/deploy/src/targets/process-handle.d.ts.map +1 -1
  172. package/dist/discovery/index.js +5 -4
  173. package/dist/discovery/src/discover-manifest.d.ts +3 -2
  174. package/dist/discovery/src/discover-manifest.d.ts.map +1 -1
  175. package/dist/discovery/src/discover.d.ts +2 -2
  176. package/dist/discovery/src/discover.d.ts.map +1 -1
  177. package/dist/discovery/src/index.d.ts +1 -1
  178. package/dist/discovery/src/index.d.ts.map +1 -1
  179. package/dist/discovery/src/source-config.d.ts +53 -12
  180. package/dist/discovery/src/source-config.d.ts.map +1 -1
  181. package/dist/discovery/src/tree-entries.d.ts +2 -2
  182. package/dist/discovery/src/tree-entries.d.ts.map +1 -1
  183. package/dist/{ensure-sources-OJUBGX6Z.js → ensure-sources-CVULUVH4.js} +12 -11
  184. package/dist/ensure-sources-CVULUVH4.js.map +1 -0
  185. package/dist/factory-assets/.skaile-source.yaml +6 -0
  186. package/dist/factory-assets/README.md +36 -0
  187. package/dist/factory-assets/bundles/workspaces-authoring/workspaces-authoring.bundle.yaml +9 -0
  188. package/dist/factory-assets/connectors/deploy/CONNECTOR.md +41 -0
  189. package/dist/{base-assets → factory-assets}/connectors/deploy/adapter.d.ts +2 -2
  190. package/dist/factory-assets/connectors/deploy/adapter.d.ts.map +1 -0
  191. package/dist/factory-assets/connectors/deploy.js +22 -0
  192. package/dist/factory-assets/connectors/devserver/CONNECTOR.md +44 -0
  193. package/dist/{base-assets → factory-assets}/connectors/devserver/adapter.d.ts +2 -2
  194. package/dist/factory-assets/connectors/devserver/adapter.d.ts.map +1 -0
  195. package/dist/factory-assets/connectors/devserver.js +22 -0
  196. package/dist/factory-assets/connectors/flow/CONNECTOR.md +47 -0
  197. package/dist/{base-assets → factory-assets}/connectors/flow/adapter.d.ts +2 -2
  198. package/dist/factory-assets/connectors/flow/adapter.d.ts.map +1 -0
  199. package/dist/factory-assets/connectors/flow/adapter.js +22 -0
  200. package/dist/factory-assets/connectors/flow/engine/engine.d.ts.map +1 -0
  201. package/dist/{base-assets → factory-assets}/connectors/flow/engine/flow-kind-provider.d.ts +1 -1
  202. package/dist/factory-assets/connectors/flow/engine/flow-kind-provider.d.ts.map +1 -0
  203. package/dist/factory-assets/connectors/flow/engine/flow-manifest.d.ts.map +1 -0
  204. package/dist/factory-assets/connectors/flow/engine/index.d.ts.map +1 -0
  205. package/dist/factory-assets/connectors/flow/engine/loader.d.ts.map +1 -0
  206. package/dist/factory-assets/connectors/flow/engine/types.d.ts.map +1 -0
  207. package/dist/factory-assets/connectors/flow/engine.js +15 -0
  208. package/dist/factory-assets/connectors/flow/index.d.ts.map +1 -0
  209. package/dist/{base-assets → factory-assets}/connectors/flow/prompt-fragments.d.ts +5 -5
  210. package/dist/factory-assets/connectors/flow/prompt-fragments.d.ts.map +1 -0
  211. package/dist/{base-assets → factory-assets}/connectors/flow/prompt-fragments.js +1 -1
  212. package/dist/{base-assets → factory-assets}/connectors/flow/run-flow.d.ts +8 -8
  213. package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -0
  214. package/dist/factory-assets/connectors/flow/run-flow.js +25 -0
  215. package/dist/{base-assets → factory-assets}/connectors/flow/stimulus-driver.d.ts +2 -2
  216. package/dist/factory-assets/connectors/flow/stimulus-driver.d.ts.map +1 -0
  217. package/dist/factory-assets/connectors/flow/stimulus-driver.js +4 -0
  218. package/dist/factory-assets/connectors/flow.js +22 -0
  219. package/dist/factory-assets/connectors/git/CONNECTOR.md +145 -0
  220. package/dist/{base-assets → factory-assets}/connectors/git/driver.d.ts +2 -2
  221. package/dist/factory-assets/connectors/git/driver.d.ts.map +1 -0
  222. package/dist/factory-assets/connectors/git.js +22 -0
  223. package/dist/factory-assets/connectors/gmail/CONNECTOR.md +50 -0
  224. package/dist/{base-assets → factory-assets}/connectors/gmail/adapter.d.ts +2 -2
  225. package/dist/factory-assets/connectors/gmail/adapter.d.ts.map +1 -0
  226. package/dist/factory-assets/connectors/gmail.js +22 -0
  227. package/dist/factory-assets/connectors/googledrive/CONNECTOR.md +150 -0
  228. package/dist/{base-assets → factory-assets}/connectors/googledrive/driver.d.ts +2 -2
  229. package/dist/factory-assets/connectors/googledrive/driver.d.ts.map +1 -0
  230. package/dist/factory-assets/connectors/googledrive.js +22 -0
  231. package/dist/factory-assets/connectors/local/CONNECTOR.md +40 -0
  232. package/dist/{base-assets → factory-assets}/connectors/local/driver.d.ts +2 -2
  233. package/dist/factory-assets/connectors/local/driver.d.ts.map +1 -0
  234. package/dist/factory-assets/connectors/local.js +22 -0
  235. package/dist/factory-assets/connectors/mattermost/CONNECTOR.md +65 -0
  236. package/dist/{base-assets → factory-assets}/connectors/mattermost/adapter.d.ts +2 -2
  237. package/dist/factory-assets/connectors/mattermost/adapter.d.ts.map +1 -0
  238. package/dist/factory-assets/connectors/mattermost.js +22 -0
  239. package/dist/factory-assets/connectors/memory/CONNECTOR.md +40 -0
  240. package/dist/{base-assets → factory-assets}/connectors/memory/adapter.d.ts +2 -2
  241. package/dist/factory-assets/connectors/memory/adapter.d.ts.map +1 -0
  242. package/dist/factory-assets/connectors/memory.js +22 -0
  243. package/dist/factory-assets/connectors/minio/CONNECTOR.md +68 -0
  244. package/dist/{base-assets → factory-assets}/connectors/minio/adapter.d.ts +2 -2
  245. package/dist/factory-assets/connectors/minio/adapter.d.ts.map +1 -0
  246. package/dist/factory-assets/connectors/minio.js +22 -0
  247. package/dist/factory-assets/connectors/postgres/CONNECTOR.md +46 -0
  248. package/dist/{base-assets → factory-assets}/connectors/postgres/adapter.d.ts +2 -2
  249. package/dist/factory-assets/connectors/postgres/adapter.d.ts.map +1 -0
  250. package/dist/factory-assets/connectors/postgres.js +22 -0
  251. package/dist/factory-assets/connectors/s3/CONNECTOR.md +76 -0
  252. package/dist/{base-assets → factory-assets}/connectors/s3/driver.d.ts +2 -2
  253. package/dist/factory-assets/connectors/s3/driver.d.ts.map +1 -0
  254. package/dist/factory-assets/connectors/s3.js +22 -0
  255. package/dist/factory-assets/connectors/sharepoint/CONNECTOR.md +181 -0
  256. package/dist/{base-assets → factory-assets}/connectors/sharepoint/driver.d.ts +2 -2
  257. package/dist/factory-assets/connectors/sharepoint/driver.d.ts.map +1 -0
  258. package/dist/factory-assets/connectors/sharepoint.js +22 -0
  259. package/dist/factory-assets/connectors/sqlite/CONNECTOR.md +44 -0
  260. package/dist/{base-assets → factory-assets}/connectors/sqlite/adapter.d.ts +2 -2
  261. package/dist/factory-assets/connectors/sqlite/adapter.d.ts.map +1 -0
  262. package/dist/factory-assets/connectors/sqlite.js +22 -0
  263. package/dist/factory-assets/connectors/static-server/CONNECTOR.md +41 -0
  264. package/dist/{base-assets → factory-assets}/connectors/static-server/adapter.d.ts +2 -2
  265. package/dist/factory-assets/connectors/static-server/adapter.d.ts.map +1 -0
  266. package/dist/factory-assets/connectors/static-server.js +22 -0
  267. package/dist/factory-assets/connectors/tunnel/CONNECTOR.md +40 -0
  268. package/dist/{base-assets → factory-assets}/connectors/tunnel/adapter.d.ts +2 -2
  269. package/dist/factory-assets/connectors/tunnel/adapter.d.ts.map +1 -0
  270. package/dist/factory-assets/connectors/tunnel.js +22 -0
  271. package/dist/factory-assets/connectors/webdav/CONNECTOR.md +139 -0
  272. package/dist/{base-assets → factory-assets}/connectors/webdav/driver.d.ts +2 -2
  273. package/dist/factory-assets/connectors/webdav/driver.d.ts.map +1 -0
  274. package/dist/factory-assets/connectors/webdav.js +22 -0
  275. package/dist/factory-assets/connectors/xstate/CONNECTOR.md +57 -0
  276. package/dist/{base-assets → factory-assets}/connectors/xstate/adapter.d.ts +2 -2
  277. package/dist/factory-assets/connectors/xstate/adapter.d.ts.map +1 -0
  278. package/dist/factory-assets/connectors/xstate-store/CONNECTOR.md +48 -0
  279. package/dist/{base-assets → factory-assets}/connectors/xstate-store/adapter.d.ts +2 -2
  280. package/dist/factory-assets/connectors/xstate-store/adapter.d.ts.map +1 -0
  281. package/dist/factory-assets/connectors/xstate-store.js +22 -0
  282. package/dist/factory-assets/connectors/xstate.js +22 -0
  283. package/dist/{base-assets → factory-assets}/index.d.ts +1 -1
  284. package/dist/factory-assets/index.d.ts.map +1 -0
  285. package/dist/{base-assets → factory-assets}/index.js +1 -1
  286. package/dist/factory-assets/index.js.map +1 -0
  287. package/dist/factory-assets/skaile.manifest.yaml +25 -0
  288. package/dist/factory-assets/skills/authoring-skaile-assets/SKILL.md +176 -0
  289. package/dist/factory-assets/skills/authoring-skaile-manifests/SKILL.md +243 -0
  290. package/dist/factory-assets/skills/authoring-skaile-manifests/references/dependency-standard.md +197 -0
  291. package/dist/factory-assets/skills/manifest-compliance/SKILL.md +140 -0
  292. package/dist/factory-assets/skills/skaile-author-asset/SKILL.md +239 -0
  293. package/dist/factory-assets/skills/skaile-manage-workspace/SKILL.md +168 -0
  294. package/dist/{flows-DYFTPCPM.js → flows-JZFJD5IN.js} +3 -3
  295. package/dist/{flows-DYFTPCPM.js.map → flows-JZFJD5IN.js.map} +1 -1
  296. package/dist/library/index.js +14 -5
  297. package/dist/library/src/install/install-from-manifest.d.ts.map +1 -1
  298. package/dist/library/src/library.d.ts +2 -0
  299. package/dist/library/src/library.d.ts.map +1 -1
  300. package/dist/library/src/local/library.d.ts +2 -0
  301. package/dist/library/src/local/library.d.ts.map +1 -1
  302. package/dist/library/src/local/local-catalog-source.d.ts +2 -1
  303. package/dist/library/src/local/local-catalog-source.d.ts.map +1 -1
  304. package/dist/library/src/local/sidecar-paths.d.ts +4 -4
  305. package/dist/library/src/local/sidecar-paths.d.ts.map +1 -1
  306. package/dist/library/src/local/store-paths.d.ts +4 -3
  307. package/dist/library/src/local/store-paths.d.ts.map +1 -1
  308. package/dist/library/src/pin-resolver.d.ts.map +1 -1
  309. package/dist/library/src/preset/apply.d.ts.map +1 -1
  310. package/dist/library/src/preset/placeholders.d.ts.map +1 -1
  311. package/dist/library/src/remote/remote-catalog-source.d.ts +7 -0
  312. package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
  313. package/dist/library/src/remote/rest-catalog-source.d.ts +7 -0
  314. package/dist/library/src/remote/rest-catalog-source.d.ts.map +1 -1
  315. package/dist/library/src/sync/manifest-writeback.d.ts +1 -1
  316. package/dist/library/src/sync/manifest-writeback.d.ts.map +1 -1
  317. package/dist/open-library-WYASW4BH.js +22 -0
  318. package/dist/{open-library-67FSSQWE.js.map → open-library-WYASW4BH.js.map} +1 -1
  319. package/dist/paths-BMW6JYW6.js +15 -0
  320. package/dist/{paths-FKKGS6BA.js.map → paths-BMW6JYW6.js.map} +1 -1
  321. package/dist/{plugin-store-IZ5SCRAV.js → plugin-store-O5VR45CA.js} +9 -8
  322. package/dist/plugin-store-O5VR45CA.js.map +1 -0
  323. package/dist/plugins/src/asset-kind-provider.d.ts +1 -1
  324. package/dist/plugins/src/catalog-source.d.ts +13 -0
  325. package/dist/plugins/src/catalog-source.d.ts.map +1 -1
  326. package/dist/resolver/index.js +1 -1
  327. package/dist/resolver/src/parser.d.ts.map +1 -1
  328. package/dist/runner/index.js +20 -19
  329. package/dist/runner/src/capability-registry.d.ts +1 -1
  330. package/dist/runner/src/capability-registry.d.ts.map +1 -1
  331. package/dist/runner/src/external-mcp.d.ts +112 -0
  332. package/dist/runner/src/external-mcp.d.ts.map +1 -0
  333. package/dist/runner/src/resource-handler.d.ts.map +1 -1
  334. package/dist/runner/src/resources.d.ts +10 -2
  335. package/dist/runner/src/resources.d.ts.map +1 -1
  336. package/dist/runner/src/serve.d.ts.map +1 -1
  337. package/dist/runner/src/session-builder.d.ts +12 -0
  338. package/dist/runner/src/session-builder.d.ts.map +1 -1
  339. package/dist/runner/src/workspace-migration.d.ts.map +1 -1
  340. package/dist/sdk/asset-manager.js +11 -10
  341. package/dist/sdk/bridge.js +4 -4
  342. package/dist/sdk/core.js +7 -6
  343. package/dist/sdk/flow.js +12 -1
  344. package/dist/sdk/index.js +23 -22
  345. package/dist/sdk/index.js.map +1 -1
  346. package/dist/sdk/resolver.js +1 -1
  347. package/dist/sdk/runner.js +20 -19
  348. package/dist/sdk/session.js +1 -1
  349. package/dist/sdk/src/flow/index.d.ts +1 -1
  350. package/dist/sdk/src/flow/index.d.ts.map +1 -1
  351. package/dist/sdk/src/workspace.d.ts +3 -2
  352. package/dist/sdk/src/workspace.d.ts.map +1 -1
  353. package/dist/sdk/telemetry.js +1 -1
  354. package/dist/secrets/index.js +1 -1
  355. package/dist/secrets/src/providers/env.d.ts.map +1 -1
  356. package/dist/secrets/src/providers/local.d.ts.map +1 -1
  357. package/dist/session/index.js +1 -1
  358. package/dist/session/src/mentions.d.ts.map +1 -1
  359. package/dist/{setup-J7CYEQOF.js → setup-YNLFR5GB.js} +13 -12
  360. package/dist/setup-YNLFR5GB.js.map +1 -0
  361. package/dist/skills-6HJ3WINN.js +7 -0
  362. package/dist/{skills-CRL3VJNN.js.map → skills-6HJ3WINN.js.map} +1 -1
  363. package/dist/store-client-CENBEASX.js +15 -0
  364. package/dist/{store-client-AEI6Y3KD.js.map → store-client-CENBEASX.js.map} +1 -1
  365. package/dist/telemetry/index.js +1 -1
  366. package/dist/telemetry/src/config.d.ts +0 -16
  367. package/dist/telemetry/src/config.d.ts.map +1 -1
  368. package/dist/tui/index.js +20 -19
  369. package/dist/tui/index.js.map +1 -1
  370. package/dist/types/manifests.js +1 -1
  371. package/dist/types/src/flow.d.ts +2 -2
  372. package/dist/types/src/install-manifest.d.ts +1 -1
  373. package/dist/types/src/install-manifest.d.ts.map +1 -1
  374. package/dist/types/src/manifests/index.d.ts +1 -1
  375. package/dist/types/src/manifests/skill.d.ts +21 -0
  376. package/dist/types/src/manifests/skill.d.ts.map +1 -1
  377. package/dist/workspace-plugin/adapters/mcp.js +4 -4
  378. package/dist/workspace-plugin/adapters/omp.js +7 -7
  379. package/dist/workspace-plugin/index.js +1 -1
  380. package/dist/workspace-plugin/src/tools/flows.d.ts.map +1 -1
  381. package/package.json +158 -151
  382. package/dist/asset-feeds-WKIKSZ6Z.js.map +0 -1
  383. package/dist/base-assets/connectors/deploy/adapter.d.ts.map +0 -1
  384. package/dist/base-assets/connectors/deploy.js +0 -21
  385. package/dist/base-assets/connectors/devserver/adapter.d.ts.map +0 -1
  386. package/dist/base-assets/connectors/devserver.js +0 -21
  387. package/dist/base-assets/connectors/flow/adapter.d.ts.map +0 -1
  388. package/dist/base-assets/connectors/flow/adapter.js +0 -21
  389. package/dist/base-assets/connectors/flow/engine/engine.d.ts.map +0 -1
  390. package/dist/base-assets/connectors/flow/engine/flow-kind-provider.d.ts.map +0 -1
  391. package/dist/base-assets/connectors/flow/engine/flow-manifest.d.ts.map +0 -1
  392. package/dist/base-assets/connectors/flow/engine/index.d.ts.map +0 -1
  393. package/dist/base-assets/connectors/flow/engine/loader.d.ts.map +0 -1
  394. package/dist/base-assets/connectors/flow/engine/types.d.ts.map +0 -1
  395. package/dist/base-assets/connectors/flow/engine.js +0 -4
  396. package/dist/base-assets/connectors/flow/index.d.ts.map +0 -1
  397. package/dist/base-assets/connectors/flow/prompt-fragments.d.ts.map +0 -1
  398. package/dist/base-assets/connectors/flow/run-flow.d.ts.map +0 -1
  399. package/dist/base-assets/connectors/flow/run-flow.js +0 -24
  400. package/dist/base-assets/connectors/flow/stimulus-driver.d.ts.map +0 -1
  401. package/dist/base-assets/connectors/flow/stimulus-driver.js +0 -4
  402. package/dist/base-assets/connectors/flow.js +0 -21
  403. package/dist/base-assets/connectors/git/driver.d.ts.map +0 -1
  404. package/dist/base-assets/connectors/git.js +0 -21
  405. package/dist/base-assets/connectors/gmail/adapter.d.ts.map +0 -1
  406. package/dist/base-assets/connectors/gmail.js +0 -21
  407. package/dist/base-assets/connectors/googledrive/driver.d.ts.map +0 -1
  408. package/dist/base-assets/connectors/googledrive.js +0 -21
  409. package/dist/base-assets/connectors/local/driver.d.ts.map +0 -1
  410. package/dist/base-assets/connectors/local.js +0 -21
  411. package/dist/base-assets/connectors/mattermost/adapter.d.ts.map +0 -1
  412. package/dist/base-assets/connectors/mattermost.js +0 -21
  413. package/dist/base-assets/connectors/memory/adapter.d.ts.map +0 -1
  414. package/dist/base-assets/connectors/memory.js +0 -21
  415. package/dist/base-assets/connectors/minio/adapter.d.ts.map +0 -1
  416. package/dist/base-assets/connectors/minio.js +0 -21
  417. package/dist/base-assets/connectors/postgres/adapter.d.ts.map +0 -1
  418. package/dist/base-assets/connectors/postgres.js +0 -21
  419. package/dist/base-assets/connectors/s3/driver.d.ts.map +0 -1
  420. package/dist/base-assets/connectors/s3.js +0 -21
  421. package/dist/base-assets/connectors/sharepoint/driver.d.ts.map +0 -1
  422. package/dist/base-assets/connectors/sharepoint.js +0 -21
  423. package/dist/base-assets/connectors/sqlite/adapter.d.ts.map +0 -1
  424. package/dist/base-assets/connectors/sqlite.js +0 -21
  425. package/dist/base-assets/connectors/static-server/adapter.d.ts.map +0 -1
  426. package/dist/base-assets/connectors/static-server.js +0 -21
  427. package/dist/base-assets/connectors/tunnel/adapter.d.ts.map +0 -1
  428. package/dist/base-assets/connectors/tunnel.js +0 -21
  429. package/dist/base-assets/connectors/webdav/driver.d.ts.map +0 -1
  430. package/dist/base-assets/connectors/webdav.js +0 -21
  431. package/dist/base-assets/connectors/xstate/adapter.d.ts.map +0 -1
  432. package/dist/base-assets/connectors/xstate-store/adapter.d.ts.map +0 -1
  433. package/dist/base-assets/connectors/xstate-store.js +0 -21
  434. package/dist/base-assets/connectors/xstate.js +0 -21
  435. package/dist/base-assets/index.d.ts.map +0 -1
  436. package/dist/base-assets/index.js.map +0 -1
  437. package/dist/chunk-2F3RUZXC.js.map +0 -1
  438. package/dist/chunk-2M3XTMOL.js +0 -23
  439. package/dist/chunk-2M3XTMOL.js.map +0 -1
  440. package/dist/chunk-2RFOFHSM.js.map +0 -1
  441. package/dist/chunk-2XY6732A.js.map +0 -1
  442. package/dist/chunk-46COM7M5.js.map +0 -1
  443. package/dist/chunk-542K7SR6.js.map +0 -1
  444. package/dist/chunk-5ESCS2OS.js.map +0 -1
  445. package/dist/chunk-D3VO6WNC.js.map +0 -1
  446. package/dist/chunk-DQWREFRQ.js.map +0 -1
  447. package/dist/chunk-FVTV7M76.js.map +0 -1
  448. package/dist/chunk-GCJXPUHG.js.map +0 -1
  449. package/dist/chunk-GZWJGNNN.js.map +0 -1
  450. package/dist/chunk-HIIARTRZ.js.map +0 -1
  451. package/dist/chunk-ICS76R4T.js.map +0 -1
  452. package/dist/chunk-JDX54X4Y.js.map +0 -1
  453. package/dist/chunk-JQBHCJ6N.js.map +0 -1
  454. package/dist/chunk-KLNL7QHN.js.map +0 -1
  455. package/dist/chunk-KOVLSBXK.js.map +0 -1
  456. package/dist/chunk-LJ52ZKIU.js.map +0 -1
  457. package/dist/chunk-M5TE6YI5.js.map +0 -1
  458. package/dist/chunk-N6TA6RSH.js.map +0 -1
  459. package/dist/chunk-NELZIQ2E.js.map +0 -1
  460. package/dist/chunk-OYRW5RCM.js.map +0 -1
  461. package/dist/chunk-QAVZOJCV.js.map +0 -1
  462. package/dist/chunk-YX3UWPJ5.js.map +0 -1
  463. package/dist/chunk-Z3M5K67G.js.map +0 -1
  464. package/dist/ensure-sources-OJUBGX6Z.js.map +0 -1
  465. package/dist/open-library-67FSSQWE.js +0 -13
  466. package/dist/paths-FKKGS6BA.js +0 -4
  467. package/dist/plugin-store-IZ5SCRAV.js.map +0 -1
  468. package/dist/setup-J7CYEQOF.js.map +0 -1
  469. package/dist/skills-CRL3VJNN.js +0 -7
  470. package/dist/store-client-AEI6Y3KD.js +0 -14
  471. /package/dist/{base-assets → factory-assets}/connectors/deploy.d.ts +0 -0
  472. /package/dist/{base-assets → factory-assets}/connectors/deploy.js.map +0 -0
  473. /package/dist/{base-assets → factory-assets}/connectors/devserver.d.ts +0 -0
  474. /package/dist/{base-assets → factory-assets}/connectors/devserver.js.map +0 -0
  475. /package/dist/{base-assets → factory-assets}/connectors/flow/adapter.js.map +0 -0
  476. /package/dist/{base-assets → factory-assets}/connectors/flow/engine/engine.d.ts +0 -0
  477. /package/dist/{base-assets → factory-assets}/connectors/flow/engine/flow-manifest.d.ts +0 -0
  478. /package/dist/{base-assets → factory-assets}/connectors/flow/engine/index.d.ts +0 -0
  479. /package/dist/{base-assets → factory-assets}/connectors/flow/engine/loader.d.ts +0 -0
  480. /package/dist/{base-assets → factory-assets}/connectors/flow/engine/types.d.ts +0 -0
  481. /package/dist/{base-assets → factory-assets}/connectors/flow/engine.d.ts +0 -0
  482. /package/dist/{base-assets → factory-assets}/connectors/flow/engine.js.map +0 -0
  483. /package/dist/{base-assets → factory-assets}/connectors/flow/index.d.ts +0 -0
  484. /package/dist/{base-assets → factory-assets}/connectors/flow/prompt-fragments.js.map +0 -0
  485. /package/dist/{base-assets → factory-assets}/connectors/flow/run-flow.js.map +0 -0
  486. /package/dist/{base-assets → factory-assets}/connectors/flow/stimulus-driver.js.map +0 -0
  487. /package/dist/{base-assets → factory-assets}/connectors/flow.d.ts +0 -0
  488. /package/dist/{base-assets → factory-assets}/connectors/flow.js.map +0 -0
  489. /package/dist/{base-assets → factory-assets}/connectors/git.d.ts +0 -0
  490. /package/dist/{base-assets → factory-assets}/connectors/git.js.map +0 -0
  491. /package/dist/{base-assets → factory-assets}/connectors/gmail.d.ts +0 -0
  492. /package/dist/{base-assets → factory-assets}/connectors/gmail.js.map +0 -0
  493. /package/dist/{base-assets → factory-assets}/connectors/googledrive.d.ts +0 -0
  494. /package/dist/{base-assets → factory-assets}/connectors/googledrive.js.map +0 -0
  495. /package/dist/{base-assets → factory-assets}/connectors/local.d.ts +0 -0
  496. /package/dist/{base-assets → factory-assets}/connectors/local.js.map +0 -0
  497. /package/dist/{base-assets → factory-assets}/connectors/mattermost.d.ts +0 -0
  498. /package/dist/{base-assets → factory-assets}/connectors/mattermost.js.map +0 -0
  499. /package/dist/{base-assets → factory-assets}/connectors/memory.d.ts +0 -0
  500. /package/dist/{base-assets → factory-assets}/connectors/memory.js.map +0 -0
  501. /package/dist/{base-assets → factory-assets}/connectors/minio.d.ts +0 -0
  502. /package/dist/{base-assets → factory-assets}/connectors/minio.js.map +0 -0
  503. /package/dist/{base-assets → factory-assets}/connectors/postgres.d.ts +0 -0
  504. /package/dist/{base-assets → factory-assets}/connectors/postgres.js.map +0 -0
  505. /package/dist/{base-assets → factory-assets}/connectors/s3.d.ts +0 -0
  506. /package/dist/{base-assets → factory-assets}/connectors/s3.js.map +0 -0
  507. /package/dist/{base-assets → factory-assets}/connectors/sharepoint.d.ts +0 -0
  508. /package/dist/{base-assets → factory-assets}/connectors/sharepoint.js.map +0 -0
  509. /package/dist/{base-assets → factory-assets}/connectors/sqlite.d.ts +0 -0
  510. /package/dist/{base-assets → factory-assets}/connectors/sqlite.js.map +0 -0
  511. /package/dist/{base-assets → factory-assets}/connectors/static-server.d.ts +0 -0
  512. /package/dist/{base-assets → factory-assets}/connectors/static-server.js.map +0 -0
  513. /package/dist/{base-assets → factory-assets}/connectors/tunnel.d.ts +0 -0
  514. /package/dist/{base-assets → factory-assets}/connectors/tunnel.js.map +0 -0
  515. /package/dist/{base-assets → factory-assets}/connectors/webdav.d.ts +0 -0
  516. /package/dist/{base-assets → factory-assets}/connectors/webdav.js.map +0 -0
  517. /package/dist/{base-assets → factory-assets}/connectors/xstate-store.d.ts +0 -0
  518. /package/dist/{base-assets → factory-assets}/connectors/xstate-store.js.map +0 -0
  519. /package/dist/{base-assets → factory-assets}/connectors/xstate.d.ts +0 -0
  520. /package/dist/{base-assets → factory-assets}/connectors/xstate.js.map +0 -0
@@ -0,0 +1,197 @@
1
+ # The skaile dependency standard (canonical-identity)
2
+
3
+ Deep reference for the dependency grammar used by `@skaile/workspaces`. The
4
+ authoritative source is `docs/concepts/manifest-schema.md` and the spec
5
+ `_devlog/specs/2026-05-31-manifest-canonical-identity.md` (scoped-grammar follow-up:
6
+ `_devlog/specs/2026-06-02-scoped-asset-ref-grammar.md`). This file restates it for
7
+ asset authors and flags where the current code is **stricter than the older docs**.
8
+
9
+ ## 1. Identity
10
+
11
+ Every asset has a global identity tuple:
12
+
13
+ ```
14
+ (publisher, kind, name, version)
15
+ ```
16
+
17
+ - **Asset-intrinsic.** Declared in the *source's* `skaile.yaml`, never by the
18
+ consuming project. There is no project-local renaming.
19
+ - **publisher** — canonical, GitHub-shaped: 1–39 chars, alphanumeric + single
20
+ hyphens, no leading/trailing hyphen, no double hyphen. Auto-derived from a
21
+ GitHub source URL's org/user; **must be declared** for any non-GitHub URL.
22
+ - **kind** — one of: `skill`, `agent`, `prompt`, `bundle`, `flow`, `contract`,
23
+ `mcp-server`, `persona`, `ruleset`, `knowledge`, `connector`.
24
+ - **version** — SemVer (see § Version waterfall). Two assets with the same tuple
25
+ MUST be byte-identical.
26
+
27
+ ## 2. The canonical reference grammar
28
+
29
+ ```
30
+ kind:@<publisher>/name[#version]
31
+ ```
32
+
33
+ | Token | Role |
34
+ |---|---|
35
+ | `kind:` | asset kind + colon. `mcp:` is shorthand for `mcp-server:`. |
36
+ | `@` | **scope sigil** — introduces the publisher, npm-style. |
37
+ | `<publisher>/` | publisher namespace + slash. |
38
+ | `name` | asset name. Permissive: anything except `/`, `#`, whitespace. |
39
+ | `#version` | optional **version sigil** + pin. |
40
+
41
+ Reads as an npm scoped package: `@skaile-ai/audit`.
42
+
43
+ ### Examples
44
+
45
+ ```
46
+ skill:@skaile-ai/audit
47
+ skill:@skaile-ai/audit#^1.4.0
48
+ bundle:@skaile-ai/skaile-development#~2.0
49
+ agent:@vercel-labs/reviewer
50
+ mcp:@skaile-ai/excel # == mcp-server:@skaile-ai/excel
51
+ contract:@skaile-ai/implementation-contract#1.0.0
52
+ skill:@skaile-ai/audit#6a5266fdda9d1c697f537968532691f6d70c779a # 40-char SHA pin
53
+ ```
54
+
55
+ ## 3. Pins
56
+
57
+ | Pin form | Meaning |
58
+ |---|---|
59
+ | `#1.4.0` | exact SemVer |
60
+ | `#^1.4.0`, `#^1` | caret range |
61
+ | `#~1.4.0`, `#~1.4` | tilde range |
62
+ | `#1.x`, `#1.4.x` | wildcard |
63
+ | `#<40-char-sha>` | exact source-commit pin |
64
+ | absent | resolver picks the highest SemVer-sorted candidate |
65
+ | `#main`, `#latest`, `#HEAD`, any floating ref | **parse-time error** |
66
+
67
+ Floating refs are rejected by design — resolution must be reproducible.
68
+
69
+ ## 4. SHA-synthetic versions
70
+
71
+ When no version can be derived (no `assets[].version`, no source `version:`, no
72
+ SemVer git tag), the resolver mints `0.0.0-sha.<7char>` from the commit. These:
73
+
74
+ - participate in resolution,
75
+ - satisfy **only** their exact literal pin (`#0.0.0-sha.abc1234`) or the
76
+ commit-SHA pin that produced them,
77
+ - never match caret/tilde/wildcard ranges.
78
+
79
+ Consequence: an untagged source resolves only when pinned exactly. **Tag
80
+ releases** to enable ranged (`^`, `~`, `x`) installs.
81
+
82
+ ## 5. `requires:` vs `dependencies:` — the split that trips authors
83
+
84
+ There are two distinct dependency channels. They use **different grammars**.
85
+
86
+ ### `requires:` — content frontmatter, intra-source, bare `kind:name`
87
+
88
+ In a `SKILL.md` / `agent.yaml` / `MCP.md`, `requires:` lists peer assets the
89
+ asset needs. Form is **`kind:name`** — no `@publisher`, no `#version`. The
90
+ publisher is **inherited from the same source** (same-source assumption).
91
+
92
+ ```yaml
93
+ # SKILL.md frontmatter
94
+ metadata:
95
+ requires:
96
+ - contract:implementation-contract
97
+ - skill:use-exa
98
+ ```
99
+
100
+ Accepted as a comma-separated string or a YAML list. Read from either the
101
+ top level or under `metadata:`.
102
+
103
+ ### `dependencies:` — bundle & project manifests, full canonical refs
104
+
105
+ A **bundle** (`*.bundle.yaml`) and a **project** `skaile.yaml` use
106
+ `dependencies:` with the **full canonical grammar** and can cross publishers and
107
+ pin versions:
108
+
109
+ ```yaml
110
+ # a bundle, or a project skaile.yaml
111
+ dependencies:
112
+ - skill:@skaile-ai/audit#^1.4
113
+ - agent:@skaile-ai/impl-build-implement
114
+ - skill:@vercel-labs/agent-skills
115
+ ```
116
+
117
+ > Putting a full canonical ref in a content `requires:` (or a bare `kind:name`
118
+ > in a project `dependencies:`) is the most common authoring mistake. Keep them
119
+ > in their lanes: **`requires:` = bare same-source; `dependencies:` = canonical
120
+ > cross-source.**
121
+
122
+ ### Transitive expansion
123
+
124
+ Installing a bundle resolves every `dependencies:` ref, recursing into nested
125
+ bundles to arbitrary depth. A shared dep is de-duped; cycles are broken by a
126
+ `seen` set. A bare transitive ref inherits its parent candidate's publisher.
127
+
128
+ ## 6. Resolution algorithm (per dep)
129
+
130
+ 1. Gather **source candidates** from every cloned `sources[]` repo (provenance
131
+ index, keyed `<publisher>/<kind>:<name>`).
132
+ 2. Optionally gather **store candidates** from every `stores[]` catalog.
133
+ 3. Filter by the pin (SemVer range / SHA / exact).
134
+ 4. Pick the **highest** matching version.
135
+ 5. **Conflict check:** if ≥2 finalists at that version have divergent content
136
+ `sha256`, raise `CanonicalRefConflictError` with the dep chain — unless an
137
+ `overrides[]` entry selects one source.
138
+ 6. Cross-check: when a source and a store both produced the chosen version,
139
+ probe `catalog.getCanonicalDigest` and compare `sha256`.
140
+
141
+ ### Conflict error shape
142
+
143
+ ```
144
+ error: divergent sha256 for skill:@skaile-ai/audit#1.4.0
145
+ pulled in via:
146
+ bundle:@skaile-ai/skaile-development#^2.0
147
+ skill:@skaile-ai/audit#~1.4
148
+ candidates:
149
+ https://github.com/skaile-ai/ai-assets @ 6a5266fd sha256: 1da6294a...
150
+ https://github.com/mortegro/ai-assets-fork @ ab12cd34 sha256: 9e3f7c01...
151
+ resolve by:
152
+ 1. removing one source from skaile.yaml,
153
+ 2. configuring a store and using its canonical digest, or
154
+ 3. adding to overrides: (with a non-empty reason:)
155
+ ```
156
+
157
+ ## 7. Overrides
158
+
159
+ ```yaml
160
+ overrides:
161
+ - ref: skill:@skaile-ai/audit#1.4.0 # the canonical, fully-pinned ref
162
+ source: https://github.com/skaile-ai/ai-assets # which candidate wins
163
+ reason: "vendored patch for #42; revert when upstream merges" # REQUIRED, non-empty
164
+ ```
165
+
166
+ `reason:` is mandatory — empty/missing is a parse error. Use overrides only to
167
+ break a genuine sha conflict; the right long-term fix is to stop publishing
168
+ divergent bytes under the same coordinates.
169
+
170
+ ## 8. Version waterfall (recap)
171
+
172
+ 1. `assets[].version` in the source `skaile.yaml`
173
+ 2. source top-level `version:`
174
+ 3. SemVer git tag (`git describe --tags`, `v` stripped)
175
+ 4. synthetic `0.0.0-sha.<7char>`
176
+
177
+ ## 9. What changed from legacy (migration cheatsheet)
178
+
179
+ | Legacy | Canonical (now) |
180
+ |---|---|
181
+ | `skill:audit@skaile-ai` | `skill:@skaile-ai/audit` |
182
+ | `skill:audit@skaile-ai#1.4.0` | `skill:@skaile-ai/audit#1.4.0` |
183
+ | bare `skill:audit` in a project dep | `skill:@<publisher>/audit` (publisher now required) |
184
+ | `@skaile` publisher | `@skaile-ai` (rebrand) |
185
+ | `repositories:` / `ai_resources:` top-level keys | `sources:` / `dependencies:` |
186
+
187
+ **The legacy `kind:name@<publisher>` grammar no longer parses** — it is a hard
188
+ error (`publisher required in asset ref`). The older `manifest-schema.md` line
189
+ about "still parses for one release with a deprecation warning" is stale; the
190
+ aliases were removed. Run the `migrate-skaile-manifest` skill to convert.
191
+
192
+ ## 10. Lock key
193
+
194
+ The lock file (`skaile.lock.yaml`, schema v3) keys each entry by the
195
+ fully-pinned canonical ref `kind:@<publisher>/name#version` and records the
196
+ contributing source URL + commit and per-file `sha256`. Regenerate, never
197
+ hand-edit: `rm skaile.lock.yaml && skaile install`.
@@ -0,0 +1,140 @@
1
+ ---
2
+ name: manifest-compliance
3
+ description: "Use when an AI-asset repo has manifests or skaile.yaml refs that fail canonical-name rules — the symptom is a runtime hard error like `publisher required in asset ref \"flow:@skaile-ai/CLI Concept\"` or `invalid asset name \"…\"` thrown by parseAssetRef at install/apply time. Scans a repo with `skaile validate`, then fixes each non-compliant asset identity (skill/agent `name`, flow `id`) to lowercase kebab-case and rewrites every reference (skaile.yaml dependencies/overrides, flow node skill refs, directory names). Trigger when the user says 'fix asset names', 'my manifest is invalid', 'publisher required error', 'invalid asset name', 'make my assets compliant', or 'migrate legacy manifest names'."
4
+ metadata:
5
+ version: 1.0.0
6
+ source: AUTHORED
7
+ stage: beta
8
+ tags: [asset-store, manifest, compliance, validation, naming, migration, repo-author]
9
+ prerequisites:
10
+ inputs_optional:
11
+ - id: repo_path
12
+ label: "Path to the asset repo / library to check"
13
+ type: text
14
+ default: "."
15
+ hint: "Repo root — the tree containing SKILL.md / *.flow.yaml / skaile.yaml files"
16
+ - id: write
17
+ label: "Apply fixes vs report only"
18
+ type: boolean
19
+ default: false
20
+ hint: "If false, only report violations; if true, rename + rewrite refs"
21
+ reads:
22
+ - path: skills/authoring-skaile-manifests/references/dependency-standard.md
23
+ description: "Canonical dependency grammar + asset-ref shape"
24
+ keywords: [manifest, compliance, asset-name, kebab-case, parseAssetRef, validate]
25
+ ---
26
+
27
+ # Manifest Compliance
28
+
29
+ Detect and fix asset manifests that violate the **canonical asset-name rule**,
30
+ then rewrite every reference so the repo installs and applies without the
31
+ `parseAssetRef` hard error.
32
+
33
+ ## The rule
34
+
35
+ A canonical asset **name** (and a flow's **id**) is **lowercase kebab-case**:
36
+
37
+ - allowed: `a-z`, `0-9`, single hyphens between segments
38
+ - forbidden: uppercase, spaces, underscores, dots, leading/trailing or double hyphens
39
+
40
+ A full reference is `kind:@<publisher>/name[#version]` — e.g.
41
+ `flow:@skaile-ai/cli-concept`. A name like `"CLI Concept"` (space + uppercase)
42
+ breaks the grammar; because the publisher is present, older builds reported the
43
+ *misleading* `publisher required …` error — the real fault is the name.
44
+
45
+ > A flow's `name:` frontmatter is a human-readable **display title** and may
46
+ > contain spaces/uppercase. The asset identity is the flow's `id:` field —
47
+ > that is what must be kebab-case. Fix `id`, leave `name` alone.
48
+
49
+ ## Step 0: Confirm context
50
+
51
+ 1. Resolve `repo_path` (default `.`).
52
+ 2. Confirm it's a repo/library tree (has `SKILL.md`, `*.flow.yaml`, or
53
+ `skaile.yaml` files somewhere under it).
54
+
55
+ ## Step 1: Detect (always run first)
56
+
57
+ Run the repo-wide compliance check:
58
+
59
+ ```bash
60
+ bun run cli validate <repo_path>
61
+ ```
62
+
63
+ `skaile validate [path]` walks the tree and reports, per file:
64
+
65
+ - `invalid asset name "…"` / `invalid asset id "…"` — a manifest identity that
66
+ isn't kebab-case (skill/agent `name`, flow `id`).
67
+ - `[dependencies] / [overrides.ref] — …` — a `skaile.yaml` ref that fails
68
+ `parseAssetRef` (the exact path that hard-errors at runtime).
69
+ - `[assets] — invalid asset name "…"` — a published `assets[]` entry identity.
70
+
71
+ Exit code is `1` when any violation is found. Collect the full list before
72
+ fixing — there are usually several, and references are interlinked.
73
+
74
+ If validate is clean, report "compliant" and stop.
75
+
76
+ ## Step 2: Plan the renames
77
+
78
+ For each violation, derive the compliant name and present the mapping to the
79
+ user **before** writing:
80
+
81
+ | Bad identity | Proposed kebab-case |
82
+ |---|---|
83
+ | `CLI Concept` | `cli-concept` |
84
+ | `Test Echo Flow` | `test-echo-flow` |
85
+ | `my_audit` | `my-audit` |
86
+
87
+ Kebab-case derivation: lowercase, replace runs of non-`[a-z0-9]` with a single
88
+ hyphen, trim leading/trailing hyphens. Flag collisions (two assets mapping to
89
+ the same name) for the user to disambiguate — never auto-merge.
90
+
91
+ ## Step 3: Apply fixes (`write = true`)
92
+
93
+ For each renamed asset, apply **all** of these so no dangling reference remains:
94
+
95
+ 1. **Manifest identity** — edit the `name:` (or, for flows, `id:`) field in the
96
+ asset's own manifest (`SKILL.md` frontmatter, `agent.yaml`, `*.flow.yaml`,
97
+ `MCP.md`, `CONNECTOR.md`, `*.preset.yaml`, etc.).
98
+ 2. **Directory name** — if the asset's folder is named after the old identity,
99
+ rename the directory to match (use `git mv` so history is preserved).
100
+ 3. **Inbound references** — grep the whole tree for the old identity and update
101
+ every occurrence:
102
+ - `skaile.yaml` → `dependencies:`, `overrides[].ref`, `assets[].name`
103
+ - flow nodes → `data.skill` / node refs that name the asset
104
+ - any `kind:@publisher/<old-name>` ref string anywhere
105
+
106
+ ```bash
107
+ grep -rn "<old-name>" <repo_path> --include="*.yaml" --include="*.md" --include="*.json"
108
+ ```
109
+
110
+ Review each hit — only rewrite genuine asset-ref occurrences, not prose.
111
+
112
+ ## Step 4: Verify
113
+
114
+ Re-run the detector and confirm a clean tree:
115
+
116
+ ```bash
117
+ bun run cli validate <repo_path>
118
+ ```
119
+
120
+ Expect `All manifests valid` and exit `0`. If violations remain, return to
121
+ Step 3 (a missed inbound reference, or a second-order collision).
122
+
123
+ ## Step 5: Suggest commit
124
+
125
+ Summarize the renames applied (old → new) and the files touched, and suggest a
126
+ commit message, e.g.:
127
+
128
+ ```
129
+ fix(assets): make asset identities canonical kebab-case
130
+
131
+ - flow "CLI Concept" → cli-concept (+ refs)
132
+ ```
133
+
134
+ ## CHECKLIST
135
+
136
+ - [ ] Ran `skaile validate <repo_path>` and collected every violation
137
+ - [ ] Proposed kebab-case mapping reviewed with the user (collisions flagged)
138
+ - [ ] Fixed flow identity in `id:`, not `name:` (display title left intact)
139
+ - [ ] Updated manifest identity, directory name, AND all inbound references
140
+ - [ ] Re-ran `skaile validate` to a clean (exit 0) tree before committing
@@ -0,0 +1,239 @@
1
+ ---
2
+ name: "skaile-author-asset"
3
+ description: "Use when an asset author needs to build a skill in a local library and publish it. Covers the source/library/store model, structuring a repo into domains, the SKILL.md format, and the .skaile-source.yaml manifest (v1 glob vs v2 author-shipped inventory) and publish flow via the skaile CLI."
4
+ metadata:
5
+ version: "0.1.0"
6
+ tags:
7
+ - "authoring"
8
+ - "skill"
9
+ - "library"
10
+ - "publish"
11
+ - "manifest"
12
+ - "domain"
13
+ - "ai-assets"
14
+ - "asset-manager"
15
+ stage: "alpha"
16
+ requires:
17
+ - "skill:authoring-skaile-assets"
18
+ ---
19
+
20
+ # Author an AI-Asset
21
+
22
+ How to author a **skill** (or any asset kind) in a local library, structure the
23
+ repository into **domains**, write the `.skaile-source.yaml` **manifest**, and
24
+ **publish** it through the store.
25
+
26
+ For the canonical skill folder layout and frontmatter spec, read the companion
27
+ **[authoring-skaile-assets]** skill first. This skill adds the
28
+ library/manifest/publish lifecycle on top of it.
29
+
30
+ ## The three nouns
31
+
32
+ Everything below maps to one of three concepts. Keep them straight:
33
+
34
+ | Noun | What it is | Holds bytes? |
35
+ | ----------- | ----------------------------------------------------------------- | ------------ |
36
+ | **source** | A GitHub repo of AI-assets (yours, your team's, a third party's). | Yes |
37
+ | **library** | A registered place *on your machine* where you author/hold assets.| Yes |
38
+ | **store** | A remote catalog of **manifests** that point at sources. | No — pointers only |
39
+
40
+ The store never hosts asset bytes. It returns a pointer triple — upstream repo
41
+ URL + pinned commit SHA + per-file SHA256 — and the bytes are fetched directly
42
+ from GitHub and hash-verified on install.
43
+
44
+ ## Asset kinds
45
+
46
+ A skill is one of several discoverable kinds. Each is recognized by a filename
47
+ glob:
48
+
49
+ | Kind | Discovery pattern |
50
+ | ------------ | ---------------------------------------------- |
51
+ | `skill` | `**/SKILL.md` |
52
+ | `agent` | `**/agent.yaml` or `**/AGENT.md` |
53
+ | `contract` | `**/CONTRACT.md` |
54
+ | `flow` | `**/*.flow.yaml` / `**/*.flow.json` |
55
+ | `connector` | `**/CONNECTOR.md` |
56
+ | `prompt` | `**/*.prompt.md` |
57
+ | `preset` | `**/*.preset.yaml` |
58
+ | `mcp-server` | `**/MCP.md` |
59
+ | `knowledge` | `**/knowledge.yaml` / `**/knowledge/index.yaml`|
60
+
61
+ ## 1. Create a library and scaffold the skill
62
+
63
+ ```bash
64
+ # One-time: register a personal authoring library at ~/.skaile/libraries/personal
65
+ skaile library init personal
66
+
67
+ # Scaffold a new asset inside the default (or named) library
68
+ skaile library create skill my-skill --library personal
69
+ ```
70
+
71
+ Libraries live at `~/.skaile/libraries/<name>/`; the local index that tracks
72
+ them is `~/.skaile/index.db` (SQLite — never hand-edit it).
73
+
74
+ ## 2. Structure: domains
75
+
76
+ A **domain** is the **first-level directory** of an asset repo. It groups
77
+ related assets and defines the publisher namespace. Lay out assets by
78
+ `<domain>/<kind-plural>/<name>/`:
79
+
80
+ ```
81
+ my-assets/ # repo root (a "source")
82
+ ├── .skaile-source.yaml # manifest (see §4)
83
+ ├── research/ # DOMAIN → publisher @research
84
+ │ ├── DOMAIN.md # domain description (recommended)
85
+ │ ├── skills/
86
+ │ │ ├── brief/SKILL.md
87
+ │ │ └── summarize/SKILL.md
88
+ │ ├── agents/
89
+ │ │ └── analyst/agent.yaml
90
+ │ └── contracts/
91
+ │ └── brief-format/CONTRACT.md
92
+ └── ops/ # DOMAIN → publisher @ops
93
+ └── skills/...
94
+ ```
95
+
96
+ With `publisher_default: '@<domain>'` in the manifest, every asset under
97
+ `research/` is published as `@research/<name>`. Override per-path with
98
+ `publisher_overrides`. Use `domain-builder` to scaffold a new domain.
99
+
100
+ ## 3. Write the SKILL.md
101
+
102
+ A skill is `SKILL.md` = YAML frontmatter + a markdown body (the body is the
103
+ prompt injected to the LLM). Only `name` and `description` are required; all
104
+ skaile-specific fields go inside `metadata:` per `skill-builder-contract`.
105
+ Optional companions in the same folder: `validator.py` (deterministic
106
+ MUST/NEVER/CHECKLIST rules), `CLI.md`, `references/`, and nested sub-skills.
107
+
108
+ ```yaml
109
+ ---
110
+ name: brief
111
+ description: Generate a concise project brief from a research question
112
+ metadata:
113
+ version: "1.0.0"
114
+ author: skaile
115
+ tags: [research, brief]
116
+ stage: alpha # alpha | beta | stable | deprecated
117
+ requires: # cross-asset dependencies (optional)
118
+ - "@research/brief-format@^2"
119
+ ---
120
+
121
+ # Brief
122
+
123
+ ## When to use
124
+ ...
125
+
126
+ ## How it works
127
+ 1. ...
128
+ ```
129
+
130
+ Keep the body tight — it ships as a prompt.
131
+
132
+ ## 4. The manifest — `.skaile-source.yaml`
133
+
134
+ One file at the **repo root** declares how the repo maps to publisher
135
+ namespaces. Two modes:
136
+
137
+ ### v1 — glob mode (default)
138
+
139
+ Discovery walks the tree, matches kind globs, and resolves publishers from the
140
+ template. Use this while a repo is evolving fast.
141
+
142
+ ```yaml
143
+ version: 1
144
+ publisher_default: '@<domain>' # <domain> → first-level dir name
145
+ default_ref: main
146
+ publisher_overrides:
147
+ - path: research-contracts/
148
+ publisher: '@research-contracts'
149
+ ```
150
+
151
+ ### v2 — author-shipped inventory (pinned)
152
+
153
+ Add an `assets:` block and bump to `version: 2`. Discovery then treats the
154
+ block as authoritative: it **skips the glob walk**, uses your curated `files[]`
155
+ filter, your per-entry publisher, your `requires[]` graph, and verifies your
156
+ `sha256`. Use this for reproducible, signed, audit-friendly releases.
157
+
158
+ ```yaml
159
+ version: 2
160
+ publisher_default: '@<domain>'
161
+ default_ref: main
162
+ assets:
163
+ - path: research/skills/brief # relative to repo root
164
+ kind: skill
165
+ publisher: '@research' # required per entry
166
+ name: brief
167
+ version: 1.0.0
168
+ sha256: "<64-hex>" # optional locally, REQUIRED to publish
169
+ files: # explicit; no wildcards; ≥1
170
+ - SKILL.md
171
+ - validator.py
172
+ - references/template.md
173
+ requires:
174
+ - "@research/brief-format@^2"
175
+ metadata:
176
+ description: Generates a project brief
177
+ keywords: [research, brief]
178
+ ```
179
+
180
+ **Never hand-edit the `assets:` block.** Generate it from the asset files (this
181
+ is what `source-manifest-builder` automates):
182
+
183
+ ```bash
184
+ skaile source build-manifest --path ./my-assets # preview
185
+ skaile source build-manifest --path ./my-assets --diff # show drift (CI-friendly, non-zero on drift)
186
+ skaile source build-manifest --path ./my-assets --write # write the manifest
187
+ skaile source verify-manifest --path ./my-assets --strict # verify before commit/publish
188
+ ```
189
+
190
+ Hash = sort `files[]` lexicographically, then SHA256 over
191
+ `<relpath>\0<content>\0` per file. Author-computed hashes are wire-compatible
192
+ with server-computed ones. Missing files are a hard error in manifest mode.
193
+
194
+ ## 5. Publish
195
+
196
+ ```bash
197
+ # Attach a GitHub remote so the library is store-publishable
198
+ skaile library link personal https://github.com/you/my-assets
199
+
200
+ # Push bytes to GitHub + register the manifest in the store, atomically
201
+ skaile library publish @research/brief@1.0.0
202
+
203
+ # Or register a manifest for bytes already on GitHub (no push)
204
+ skaile library register @research/brief@1.0.0
205
+
206
+ # Retract a catalog entry
207
+ skaile library yank @research/brief@1.0.0
208
+ ```
209
+
210
+ Consumers then install pointer-only: `skaile install @research/brief@1.0.0`
211
+ fetches from your repo at the pinned commit and verifies SHA256 per file.
212
+
213
+ ## Dev-only assets — `dev_paths` + `--dev`
214
+
215
+ A package can ship two sets of assets: **public** skills its consumers want
216
+ (conventionally under `ai-assets/`), and skills only useful for developing *the
217
+ project itself* — scaffolders, validators, skill-on-skill tooling (under
218
+ `ai-assets-dev/`). The dev set should be **excluded from a normal run** and
219
+ pulled in only when a contributor opts in.
220
+
221
+ - **Folder name:** keep dev assets under one top-level folder named
222
+ **`ai-assets-dev/`** (intention-revealing; treat the `-dev` suffix as
223
+ reserved).
224
+ - **Mechanism:** declare it in `.skaile-source.yaml` under `dev_paths`:
225
+
226
+ ```yaml
227
+ version: 1
228
+ publisher_default: '@<domain>'
229
+ dev_paths: # excluded from a normal discovery run
230
+ - ai-assets-dev
231
+ ```
232
+
233
+ Normal sync → `ai-assets-dev/` is skipped. `skaile source sync <name> --dev`
234
+ (or `skaile source add <url> --dev`) re-includes it and indexes the dev
235
+ assets so `manage` / `install` / `add` can see them. Re-sync without `--dev`
236
+ to drop them again. Matching is whole-segment, so `ai-assets-dev` excludes
237
+ `ai-assets-dev/…` but not a sibling like `ai-assets-development`.
238
+
239
+ Full guide: `docs/discovery/dev-assets.md`.