@skaile/workspaces 5.5.0 → 5.6.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 (423) hide show
  1. package/CHANGELOG.md +84 -0
  2. package/dist/app-sdk/index.js +1 -1
  3. package/dist/{asset-feeds-KTFUB7EX.js → asset-feeds-4O2JK5S4.js} +27 -14
  4. package/dist/asset-feeds-4O2JK5S4.js.map +1 -0
  5. package/dist/asset-manager/catalog-deployer.js +9 -9
  6. package/dist/asset-manager/index.js +18 -18
  7. package/dist/asset-manager/installer.js +11 -11
  8. package/dist/asset-manager/renderers.js +20 -2
  9. package/dist/asset-manager/src/index.d.ts +66 -24
  10. package/dist/asset-manager/src/index.d.ts.map +1 -1
  11. package/dist/asset-manager/src/install-agent.d.ts +22 -14
  12. package/dist/asset-manager/src/install-agent.d.ts.map +1 -1
  13. package/dist/asset-manager/src/install-instances.d.ts +55 -0
  14. package/dist/asset-manager/src/install-instances.d.ts.map +1 -0
  15. package/dist/asset-manager/src/installer.d.ts +30 -7
  16. package/dist/asset-manager/src/installer.d.ts.map +1 -1
  17. package/dist/asset-manager/src/renderers.d.ts +29 -8
  18. package/dist/asset-manager/src/renderers.d.ts.map +1 -1
  19. package/dist/bridge/drivers/claude-sdk.js +14 -14
  20. package/dist/bridge/drivers/codex.js +20 -14
  21. package/dist/bridge/drivers/codex.js.map +1 -1
  22. package/dist/bridge/drivers/continue.js +11 -11
  23. package/dist/bridge/drivers/echo.js +3 -3
  24. package/dist/bridge/drivers/gemini.js +6 -6
  25. package/dist/bridge/drivers/goose.js +11 -11
  26. package/dist/bridge/drivers/omp.js +4 -4
  27. package/dist/bridge/drivers/opencode.js +11 -11
  28. package/dist/bridge/drivers/qwen.js +6 -6
  29. package/dist/bridge/index.js +15 -15
  30. package/dist/bridge/src/codex/native-policy.d.ts +1 -1
  31. package/dist/bridge/src/drivers/codex.d.ts +2 -1
  32. package/dist/bridge/src/drivers/codex.d.ts.map +1 -1
  33. package/dist/{chunk-LCULZ4ED.js → chunk-27HS2DHB.js} +4 -4
  34. package/dist/{chunk-LCULZ4ED.js.map → chunk-27HS2DHB.js.map} +1 -1
  35. package/dist/{chunk-X4GO3GJZ.js → chunk-2GRB5ITE.js} +4 -4
  36. package/dist/{chunk-X4GO3GJZ.js.map → chunk-2GRB5ITE.js.map} +1 -1
  37. package/dist/{chunk-ES2FXWQ4.js → chunk-2NYXQYHN.js} +4 -4
  38. package/dist/{chunk-ES2FXWQ4.js.map → chunk-2NYXQYHN.js.map} +1 -1
  39. package/dist/{chunk-ORUHADS6.js → chunk-2W4LBLIN.js} +386 -60
  40. package/dist/chunk-2W4LBLIN.js.map +1 -0
  41. package/dist/{chunk-SNVOASTL.js → chunk-2XFUXGV6.js} +3 -3
  42. package/dist/{chunk-SNVOASTL.js.map → chunk-2XFUXGV6.js.map} +1 -1
  43. package/dist/{chunk-ZDKJHQY2.js → chunk-3TXEJN4W.js} +2 -2
  44. package/dist/{chunk-ZDKJHQY2.js.map → chunk-3TXEJN4W.js.map} +1 -1
  45. package/dist/{chunk-5Y3L7XWH.js → chunk-436GRQC2.js} +15 -15
  46. package/dist/chunk-436GRQC2.js.map +1 -0
  47. package/dist/{chunk-JELTQ4H7.js → chunk-45VFGT7A.js} +3 -3
  48. package/dist/{chunk-JELTQ4H7.js.map → chunk-45VFGT7A.js.map} +1 -1
  49. package/dist/{chunk-XGIS325V.js → chunk-46OVMT76.js} +3 -3
  50. package/dist/{chunk-XGIS325V.js.map → chunk-46OVMT76.js.map} +1 -1
  51. package/dist/{chunk-37GBJLF5.js → chunk-47ZD34KB.js} +3 -3
  52. package/dist/{chunk-37GBJLF5.js.map → chunk-47ZD34KB.js.map} +1 -1
  53. package/dist/{chunk-MMC24L2W.js → chunk-4CTGEEN6.js} +274 -121
  54. package/dist/chunk-4CTGEEN6.js.map +1 -0
  55. package/dist/{chunk-LFEGIZTW.js → chunk-4GNJELPH.js} +2 -2
  56. package/dist/{chunk-LFEGIZTW.js.map → chunk-4GNJELPH.js.map} +1 -1
  57. package/dist/{chunk-V7VDSFPS.js → chunk-5B5IZVEP.js} +2 -2
  58. package/dist/{chunk-V7VDSFPS.js.map → chunk-5B5IZVEP.js.map} +1 -1
  59. package/dist/{chunk-CODXK5L5.js → chunk-6NPINANG.js} +6 -6
  60. package/dist/{chunk-CODXK5L5.js.map → chunk-6NPINANG.js.map} +1 -1
  61. package/dist/{chunk-XBM5ND55.js → chunk-7KLC4LZO.js} +8 -8
  62. package/dist/{chunk-XBM5ND55.js.map → chunk-7KLC4LZO.js.map} +1 -1
  63. package/dist/{chunk-SR4RFKHM.js → chunk-7ZHLYXTI.js} +3 -3
  64. package/dist/{chunk-SR4RFKHM.js.map → chunk-7ZHLYXTI.js.map} +1 -1
  65. package/dist/{chunk-WX74MVNA.js → chunk-AO7VJ6G6.js} +3 -24
  66. package/dist/chunk-AO7VJ6G6.js.map +1 -0
  67. package/dist/{chunk-DPMKI26Y.js → chunk-AOAZCSDI.js} +4 -3
  68. package/dist/chunk-AOAZCSDI.js.map +1 -0
  69. package/dist/{chunk-YK7WJSTD.js → chunk-BF33SCLY.js} +10 -5
  70. package/dist/chunk-BF33SCLY.js.map +1 -0
  71. package/dist/{chunk-VKSA2CDJ.js → chunk-BTISGSK4.js} +4 -4
  72. package/dist/{chunk-VKSA2CDJ.js.map → chunk-BTISGSK4.js.map} +1 -1
  73. package/dist/{chunk-TOSHZX4C.js → chunk-CPSIPIX7.js} +2 -2
  74. package/dist/chunk-CPSIPIX7.js.map +1 -0
  75. package/dist/{chunk-K2K7OF4P.js → chunk-DMLDYFDS.js} +23 -6
  76. package/dist/chunk-DMLDYFDS.js.map +1 -0
  77. package/dist/{chunk-EJYZ3MKJ.js → chunk-DZM73WDN.js} +4 -4
  78. package/dist/{chunk-EJYZ3MKJ.js.map → chunk-DZM73WDN.js.map} +1 -1
  79. package/dist/{chunk-QMWMSZQ4.js → chunk-FK6HPLQA.js} +3 -3
  80. package/dist/{chunk-QMWMSZQ4.js.map → chunk-FK6HPLQA.js.map} +1 -1
  81. package/dist/chunk-FRHE7FFB.js +655 -0
  82. package/dist/chunk-FRHE7FFB.js.map +1 -0
  83. package/dist/{chunk-75EX5GY4.js → chunk-IPWR33AW.js} +181 -111
  84. package/dist/chunk-IPWR33AW.js.map +1 -0
  85. package/dist/{chunk-C4GF7RSQ.js → chunk-KUFNKVBM.js} +3 -3
  86. package/dist/{chunk-C4GF7RSQ.js.map → chunk-KUFNKVBM.js.map} +1 -1
  87. package/dist/{chunk-GCYD4EGY.js → chunk-KYXOGHY6.js} +4 -4
  88. package/dist/{chunk-GCYD4EGY.js.map → chunk-KYXOGHY6.js.map} +1 -1
  89. package/dist/{chunk-G474PBUQ.js → chunk-LLKKLKZJ.js} +3 -3
  90. package/dist/{chunk-G474PBUQ.js.map → chunk-LLKKLKZJ.js.map} +1 -1
  91. package/dist/{chunk-AC2N5BRP.js → chunk-MX3UQXLU.js} +18 -30
  92. package/dist/chunk-MX3UQXLU.js.map +1 -0
  93. package/dist/{chunk-N3Y43LMZ.js → chunk-MX6LZE2C.js} +34 -11
  94. package/dist/chunk-MX6LZE2C.js.map +1 -0
  95. package/dist/{chunk-BNUZEYC3.js → chunk-NARITJS2.js} +3 -3
  96. package/dist/{chunk-BNUZEYC3.js.map → chunk-NARITJS2.js.map} +1 -1
  97. package/dist/{chunk-3665M43C.js → chunk-NLXIALVO.js} +5 -5
  98. package/dist/{chunk-3665M43C.js.map → chunk-NLXIALVO.js.map} +1 -1
  99. package/dist/{chunk-UFS3FEBA.js → chunk-O5GDKC5I.js} +3 -3
  100. package/dist/{chunk-UFS3FEBA.js.map → chunk-O5GDKC5I.js.map} +1 -1
  101. package/dist/{chunk-Y4QWHIHB.js → chunk-OGLDAJFL.js} +4 -4
  102. package/dist/{chunk-Y4QWHIHB.js.map → chunk-OGLDAJFL.js.map} +1 -1
  103. package/dist/chunk-OLLAQLFJ.js +17 -0
  104. package/dist/chunk-OLLAQLFJ.js.map +1 -0
  105. package/dist/{chunk-LFMX2UEF.js → chunk-PA7WLID3.js} +86 -69
  106. package/dist/chunk-PA7WLID3.js.map +1 -0
  107. package/dist/{chunk-K2NUT3HO.js → chunk-PJS2YWGG.js} +6 -6
  108. package/dist/{chunk-K2NUT3HO.js.map → chunk-PJS2YWGG.js.map} +1 -1
  109. package/dist/{chunk-G2O2AARG.js → chunk-RGXVQZOV.js} +6021 -3099
  110. package/dist/chunk-RGXVQZOV.js.map +1 -0
  111. package/dist/{chunk-R4G7XI7A.js → chunk-S7QXEXKY.js} +4 -5
  112. package/dist/chunk-S7QXEXKY.js.map +1 -0
  113. package/dist/{chunk-JKWU6ULI.js → chunk-SDFROXSA.js} +3 -3
  114. package/dist/{chunk-JKWU6ULI.js.map → chunk-SDFROXSA.js.map} +1 -1
  115. package/dist/{chunk-WHSQSVN2.js → chunk-SX4UIDKT.js} +3 -3
  116. package/dist/{chunk-WHSQSVN2.js.map → chunk-SX4UIDKT.js.map} +1 -1
  117. package/dist/{chunk-3JHFFIQ6.js → chunk-TZCQ7ZWQ.js} +83 -9
  118. package/dist/chunk-TZCQ7ZWQ.js.map +1 -0
  119. package/dist/{chunk-UHLBDAJR.js → chunk-UAP2XHRF.js} +10 -10
  120. package/dist/{chunk-UHLBDAJR.js.map → chunk-UAP2XHRF.js.map} +1 -1
  121. package/dist/{chunk-P6KFWTGP.js → chunk-V7NN3HXR.js} +7 -12
  122. package/dist/chunk-V7NN3HXR.js.map +1 -0
  123. package/dist/{chunk-LAI7X6I2.js → chunk-VBBBZDI7.js} +3 -3
  124. package/dist/{chunk-LAI7X6I2.js.map → chunk-VBBBZDI7.js.map} +1 -1
  125. package/dist/{chunk-TNWXGHLD.js → chunk-VKSXST23.js} +51 -42
  126. package/dist/chunk-VKSXST23.js.map +1 -0
  127. package/dist/{chunk-HTKZ4AOW.js → chunk-VSQFGU5D.js} +3 -3
  128. package/dist/{chunk-HTKZ4AOW.js.map → chunk-VSQFGU5D.js.map} +1 -1
  129. package/dist/{chunk-JBPG5KQC.js → chunk-VX3INFBA.js} +4 -4
  130. package/dist/{chunk-JBPG5KQC.js.map → chunk-VX3INFBA.js.map} +1 -1
  131. package/dist/{chunk-Y7UBRRKG.js → chunk-XOGG7VDZ.js} +40 -31
  132. package/dist/chunk-XOGG7VDZ.js.map +1 -0
  133. package/dist/{chunk-JAJG4G5E.js → chunk-ZBBM6O6P.js} +3 -3
  134. package/dist/{chunk-JAJG4G5E.js.map → chunk-ZBBM6O6P.js.map} +1 -1
  135. package/dist/cli/index.js +4997 -3410
  136. package/dist/cli/index.js.map +1 -1
  137. package/dist/cli/src/asset-feeds.d.ts.map +1 -1
  138. package/dist/cli/src/commands/catalog.d.ts +7 -7
  139. package/dist/cli/src/commands/catalog.d.ts.map +1 -1
  140. package/dist/cli/src/commands/connector.d.ts +2 -2
  141. package/dist/cli/src/commands/connector.d.ts.map +1 -1
  142. package/dist/cli/src/commands/diff.d.ts.map +1 -1
  143. package/dist/cli/src/commands/history.d.ts.map +1 -1
  144. package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
  145. package/dist/cli/src/commands/manage.d.ts.map +1 -1
  146. package/dist/cli/src/commands/migrate-agents.d.ts +131 -0
  147. package/dist/cli/src/commands/migrate-agents.d.ts.map +1 -0
  148. package/dist/cli/src/commands/migrate-assets.d.ts +54 -0
  149. package/dist/cli/src/commands/migrate-assets.d.ts.map +1 -0
  150. package/dist/cli/src/commands/migrate-files.d.ts +52 -0
  151. package/dist/cli/src/commands/migrate-files.d.ts.map +1 -0
  152. package/dist/cli/src/commands/migrate-providers.d.ts +5 -8
  153. package/dist/cli/src/commands/migrate-providers.d.ts.map +1 -1
  154. package/dist/cli/src/commands/migrate.d.ts +21 -0
  155. package/dist/cli/src/commands/migrate.d.ts.map +1 -0
  156. package/dist/cli/src/commands/npx.d.ts.map +1 -1
  157. package/dist/cli/src/commands/outdated.d.ts.map +1 -1
  158. package/dist/cli/src/commands/patch.d.ts.map +1 -1
  159. package/dist/cli/src/commands/preset-cmd.d.ts.map +1 -1
  160. package/dist/cli/src/commands/project.d.ts +13 -1
  161. package/dist/cli/src/commands/project.d.ts.map +1 -1
  162. package/dist/cli/src/commands/rebuild.d.ts.map +1 -1
  163. package/dist/cli/src/commands/run.d.ts.map +1 -1
  164. package/dist/cli/src/commands/show.d.ts.map +1 -1
  165. package/dist/cli/src/commands/tree.d.ts.map +1 -1
  166. package/dist/cli/src/commands/update.d.ts.map +1 -1
  167. package/dist/cli/src/commands/validate-instances.d.ts +17 -0
  168. package/dist/cli/src/commands/validate-instances.d.ts.map +1 -0
  169. package/dist/cli/src/commands/validate.d.ts +14 -0
  170. package/dist/cli/src/commands/validate.d.ts.map +1 -1
  171. package/dist/cli/src/commands/why.d.ts.map +1 -1
  172. package/dist/cli/src/helpers.d.ts.map +1 -1
  173. package/dist/cli/src/open-library.d.ts.map +1 -1
  174. package/dist/cli/src/open-registry.d.ts +13 -16
  175. package/dist/cli/src/open-registry.d.ts.map +1 -1
  176. package/dist/cli/src/type-guards.d.ts +3 -0
  177. package/dist/cli/src/type-guards.d.ts.map +1 -0
  178. package/dist/connectors/config.js +6 -6
  179. package/dist/connectors/index.js +19 -19
  180. package/dist/{connectors-MPYCSQNG.js → connectors-HWENZFKW.js} +22 -22
  181. package/dist/{connectors-MPYCSQNG.js.map → connectors-HWENZFKW.js.map} +1 -1
  182. package/dist/connectors-shared/index.js +2 -2
  183. package/dist/core/driver-targets.js +1 -1
  184. package/dist/core/index.js +8 -8
  185. package/dist/core/manifest.js +2 -2
  186. package/dist/core/models.js +1 -1
  187. package/dist/core/publish-manifest.js +2 -2
  188. package/dist/core/ref.js +1 -1
  189. package/dist/core/runtime-assets.js +6 -6
  190. package/dist/core/src/agent-instances.d.ts +93 -0
  191. package/dist/core/src/agent-instances.d.ts.map +1 -0
  192. package/dist/core/src/agent-prompt-sections.d.ts +90 -0
  193. package/dist/core/src/agent-prompt-sections.d.ts.map +1 -0
  194. package/dist/core/src/driver-targets.d.ts +4 -2
  195. package/dist/core/src/driver-targets.d.ts.map +1 -1
  196. package/dist/core/src/index.d.ts +12 -8
  197. package/dist/core/src/index.d.ts.map +1 -1
  198. package/dist/core/src/manifest.d.ts +71 -27
  199. package/dist/core/src/manifest.d.ts.map +1 -1
  200. package/dist/core/src/models.d.ts +6 -92
  201. package/dist/core/src/models.d.ts.map +1 -1
  202. package/dist/core/src/repo-manager.d.ts +47 -3
  203. package/dist/core/src/repo-manager.d.ts.map +1 -1
  204. package/dist/core/src/type-guards.d.ts +3 -0
  205. package/dist/core/src/type-guards.d.ts.map +1 -0
  206. package/dist/core/src/walker.d.ts +7 -3
  207. package/dist/core/src/walker.d.ts.map +1 -1
  208. package/dist/core/src/workspace-config.d.ts +19 -15
  209. package/dist/core/src/workspace-config.d.ts.map +1 -1
  210. package/dist/core/store.js +2 -2
  211. package/dist/core/workspace-config.js +5 -5
  212. package/dist/deploy/index.js +8 -8
  213. package/dist/discovery/index.js +6 -6
  214. package/dist/discovery/src/builtin-providers.d.ts +5 -4
  215. package/dist/discovery/src/builtin-providers.d.ts.map +1 -1
  216. package/dist/discovery/src/default-registry.d.ts +23 -0
  217. package/dist/discovery/src/default-registry.d.ts.map +1 -0
  218. package/dist/discovery/src/discover.d.ts +0 -6
  219. package/dist/discovery/src/discover.d.ts.map +1 -1
  220. package/dist/discovery/src/index.d.ts +2 -1
  221. package/dist/discovery/src/index.d.ts.map +1 -1
  222. package/dist/discovery/src/tree-entries.d.ts +1 -1
  223. package/dist/discovery/src/tree-entries.d.ts.map +1 -1
  224. package/dist/{ensure-sources-QFRA46DJ.js → ensure-sources-VCPKNPK2.js} +21 -21
  225. package/dist/{ensure-sources-QFRA46DJ.js.map → ensure-sources-VCPKNPK2.js.map} +1 -1
  226. package/dist/factory-assets/README.md +3 -3
  227. package/dist/factory-assets/connectors/box.js +19 -19
  228. package/dist/factory-assets/connectors/deploy.js +19 -19
  229. package/dist/factory-assets/connectors/devserver.js +19 -19
  230. package/dist/factory-assets/connectors/flow/adapter.js +19 -19
  231. package/dist/factory-assets/connectors/flow/engine/flow-kind-provider.d.ts.map +1 -1
  232. package/dist/factory-assets/connectors/flow/engine.js +9 -9
  233. package/dist/factory-assets/connectors/flow/run-flow.js +21 -21
  234. package/dist/factory-assets/connectors/flow.js +19 -19
  235. package/dist/factory-assets/connectors/git.js +19 -19
  236. package/dist/factory-assets/connectors/gmail.js +19 -19
  237. package/dist/factory-assets/connectors/googledrive.js +19 -19
  238. package/dist/factory-assets/connectors/local.js +19 -19
  239. package/dist/factory-assets/connectors/mattermost.js +19 -19
  240. package/dist/factory-assets/connectors/memory.js +19 -19
  241. package/dist/factory-assets/connectors/minio.js +19 -19
  242. package/dist/factory-assets/connectors/postgres.js +19 -19
  243. package/dist/factory-assets/connectors/s3.js +19 -19
  244. package/dist/factory-assets/connectors/sharepoint.js +19 -19
  245. package/dist/factory-assets/connectors/sqlite.js +19 -19
  246. package/dist/factory-assets/connectors/static-server.js +19 -19
  247. package/dist/factory-assets/connectors/tunnel.js +19 -19
  248. package/dist/factory-assets/connectors/webdav.js +19 -19
  249. package/dist/factory-assets/connectors/xstate-store.js +19 -19
  250. package/dist/factory-assets/connectors/xstate.js +19 -19
  251. package/dist/factory-assets/index.js.map +1 -1
  252. package/dist/factory-assets/presets/workspaces-authoring/workspaces-authoring.preset.yaml +9 -0
  253. package/dist/factory-assets/skaile.manifest.yaml +2 -2
  254. package/dist/factory-assets/skills/authoring-skaile-assets/SKILL.md +16 -12
  255. package/dist/factory-assets/skills/authoring-skaile-manifests/SKILL.md +8 -8
  256. package/dist/factory-assets/skills/authoring-skaile-manifests/references/dependency-standard.md +13 -11
  257. package/dist/factory-assets/skills/skaile-manage-workspace/SKILL.md +1 -1
  258. package/dist/{flows-KCARGXRT.js → flows-ENQY2DV7.js} +13 -13
  259. package/dist/{flows-KCARGXRT.js.map → flows-ENQY2DV7.js.map} +1 -1
  260. package/dist/{helpers-PSROT7CU.js → helpers-IW36CEJX.js} +21 -21
  261. package/dist/{helpers-PSROT7CU.js.map → helpers-IW36CEJX.js.map} +1 -1
  262. package/dist/library/index.js +13 -13
  263. package/dist/library/install.js +3 -3
  264. package/dist/library/src/index.d.ts +2 -2
  265. package/dist/library/src/index.d.ts.map +1 -1
  266. package/dist/library/src/library.d.ts +2 -12
  267. package/dist/library/src/library.d.ts.map +1 -1
  268. package/dist/library/src/local/local-catalog-source.d.ts +2 -2
  269. package/dist/library/src/local/local-catalog-source.d.ts.map +1 -1
  270. package/dist/library/src/manifest-writer.d.ts +4 -1
  271. package/dist/library/src/manifest-writer.d.ts.map +1 -1
  272. package/dist/library/src/sync/manifest-writeback.d.ts.map +1 -1
  273. package/dist/{library-publish-YAI7WOXC.js → library-publish-R3DQLMTD.js} +27 -27
  274. package/dist/{library-publish-YAI7WOXC.js.map → library-publish-R3DQLMTD.js.map} +1 -1
  275. package/dist/open-library-FAJZRDKE.js +40 -0
  276. package/dist/{open-library-Z5NJU4Z5.js.map → open-library-FAJZRDKE.js.map} +1 -1
  277. package/dist/open-registry-NVPCQPND.js +32 -0
  278. package/dist/{open-registry-TYUVN5SG.js.map → open-registry-NVPCQPND.js.map} +1 -1
  279. package/dist/paths-YUCP7K6U.js +22 -0
  280. package/dist/{paths-HKAXUR3W.js.map → paths-YUCP7K6U.js.map} +1 -1
  281. package/dist/{plugin-store-N6SI2TYM.js → plugin-store-66QFBNEO.js} +10 -10
  282. package/dist/{plugin-store-N6SI2TYM.js.map → plugin-store-66QFBNEO.js.map} +1 -1
  283. package/dist/plugins/index.js +1 -1
  284. package/dist/plugins/src/asset-kind-provider.d.ts +14 -2
  285. package/dist/plugins/src/asset-kind-provider.d.ts.map +1 -1
  286. package/dist/plugins/src/index.d.ts +1 -1
  287. package/dist/plugins/src/index.d.ts.map +1 -1
  288. package/dist/project-ALJIVFHI.js +41 -0
  289. package/dist/{project-SVS4UMGL.js.map → project-ALJIVFHI.js.map} +1 -1
  290. package/dist/resolver/index.js +9 -9
  291. package/dist/runner/index.js +34 -29
  292. package/dist/runner/src/agent-capabilities.d.ts +101 -0
  293. package/dist/runner/src/agent-capabilities.d.ts.map +1 -0
  294. package/dist/runner/src/agent.d.ts.map +1 -1
  295. package/dist/runner/src/agents/in-process-host.d.ts +56 -0
  296. package/dist/runner/src/agents/in-process-host.d.ts.map +1 -0
  297. package/dist/runner/src/agents/instances.d.ts +62 -0
  298. package/dist/runner/src/agents/instances.d.ts.map +1 -0
  299. package/dist/runner/src/agents/json-schema.d.ts +16 -0
  300. package/dist/runner/src/agents/json-schema.d.ts.map +1 -0
  301. package/dist/runner/src/agents/memory-run-store.d.ts +19 -0
  302. package/dist/runner/src/agents/memory-run-store.d.ts.map +1 -0
  303. package/dist/runner/src/agents/run-controller.d.ts +208 -0
  304. package/dist/runner/src/agents/run-controller.d.ts.map +1 -0
  305. package/dist/runner/src/agents/standalone-surface.d.ts +30 -0
  306. package/dist/runner/src/agents/standalone-surface.d.ts.map +1 -0
  307. package/dist/runner/src/capability-registry.d.ts.map +1 -1
  308. package/dist/runner/src/composition/bootstrap.d.ts +13 -51
  309. package/dist/runner/src/composition/bootstrap.d.ts.map +1 -1
  310. package/dist/runner/src/composition/compile.d.ts +43 -27
  311. package/dist/runner/src/composition/compile.d.ts.map +1 -1
  312. package/dist/runner/src/composition/content-source.d.ts +94 -0
  313. package/dist/runner/src/composition/content-source.d.ts.map +1 -0
  314. package/dist/runner/src/composition/dry-run.d.ts +34 -0
  315. package/dist/runner/src/composition/dry-run.d.ts.map +1 -0
  316. package/dist/runner/src/composition/errors.d.ts +41 -0
  317. package/dist/runner/src/composition/errors.d.ts.map +1 -0
  318. package/dist/runner/src/composition/index.d.ts +10 -3
  319. package/dist/runner/src/composition/index.d.ts.map +1 -1
  320. package/dist/runner/src/composition/prompt-sections.d.ts +31 -0
  321. package/dist/runner/src/composition/prompt-sections.d.ts.map +1 -0
  322. package/dist/runner/src/composition/resolve-instance.d.ts +140 -0
  323. package/dist/runner/src/composition/resolve-instance.d.ts.map +1 -0
  324. package/dist/runner/src/composition/resolve.d.ts +43 -25
  325. package/dist/runner/src/composition/resolve.d.ts.map +1 -1
  326. package/dist/runner/src/composition/revision-hash.d.ts +58 -0
  327. package/dist/runner/src/composition/revision-hash.d.ts.map +1 -0
  328. package/dist/runner/src/composition/run-snapshot.d.ts +37 -0
  329. package/dist/runner/src/composition/run-snapshot.d.ts.map +1 -0
  330. package/dist/runner/src/composition/types.d.ts +79 -12
  331. package/dist/runner/src/composition/types.d.ts.map +1 -1
  332. package/dist/runner/src/index.d.ts +2 -0
  333. package/dist/runner/src/index.d.ts.map +1 -1
  334. package/dist/runner/src/manifest.d.ts +1 -1
  335. package/dist/runner/src/manifest.d.ts.map +1 -1
  336. package/dist/runner/src/mixin-resolver.d.ts +14 -15
  337. package/dist/runner/src/mixin-resolver.d.ts.map +1 -1
  338. package/dist/runner/src/serve.d.ts +6 -0
  339. package/dist/runner/src/serve.d.ts.map +1 -1
  340. package/dist/runner/src/session-builder.d.ts +35 -6
  341. package/dist/runner/src/session-builder.d.ts.map +1 -1
  342. package/dist/sdk/asset-manager.js +18 -18
  343. package/dist/sdk/bridge.js +15 -15
  344. package/dist/sdk/core.js +8 -8
  345. package/dist/sdk/flow.js +9 -9
  346. package/dist/sdk/index.js +34 -29
  347. package/dist/sdk/index.js.map +1 -1
  348. package/dist/sdk/resolver.js +9 -9
  349. package/dist/sdk/runner.js +34 -29
  350. package/dist/sdk/session.js +2 -2
  351. package/dist/sdk/types.js +1 -1
  352. package/dist/secrets/index.js +2 -2
  353. package/dist/session/index.js +2 -2
  354. package/dist/{setup-IOEZGJNC.js → setup-35JXIA3N.js} +28 -28
  355. package/dist/{setup-IOEZGJNC.js.map → setup-35JXIA3N.js.map} +1 -1
  356. package/dist/skills-CS7NE5TT.js +26 -0
  357. package/dist/{skills-HW6I6ZZ7.js.map → skills-CS7NE5TT.js.map} +1 -1
  358. package/dist/source-ISR4KRZV.js +41 -0
  359. package/dist/{source-OKRJT53H.js.map → source-ISR4KRZV.js.map} +1 -1
  360. package/dist/{source-manifest-publish-MILEQDRD.js → source-manifest-publish-P22IPK5F.js} +27 -27
  361. package/dist/{source-manifest-publish-MILEQDRD.js.map → source-manifest-publish-P22IPK5F.js.map} +1 -1
  362. package/dist/tui/index.js +34 -29
  363. package/dist/tui/index.js.map +1 -1
  364. package/dist/types/index.js +1 -1
  365. package/dist/types/manifests.js +1 -1
  366. package/dist/types/src/agent-lifecycle.d.ts +402 -0
  367. package/dist/types/src/agent-lifecycle.d.ts.map +1 -0
  368. package/dist/types/src/capabilities.d.ts +0 -4
  369. package/dist/types/src/capabilities.d.ts.map +1 -1
  370. package/dist/types/src/delivery.d.ts.map +1 -1
  371. package/dist/types/src/events.d.ts +66 -4
  372. package/dist/types/src/events.d.ts.map +1 -1
  373. package/dist/types/src/index.d.ts +3 -1
  374. package/dist/types/src/index.d.ts.map +1 -1
  375. package/dist/types/src/lifecycle.d.ts +21 -3
  376. package/dist/types/src/lifecycle.d.ts.map +1 -1
  377. package/dist/types/src/manifests/_shared.d.ts +1 -16
  378. package/dist/types/src/manifests/_shared.d.ts.map +1 -1
  379. package/dist/types/src/manifests/agent-composition.d.ts +44 -0
  380. package/dist/types/src/manifests/agent-composition.d.ts.map +1 -0
  381. package/dist/types/src/manifests/agent.d.ts +184 -6
  382. package/dist/types/src/manifests/agent.d.ts.map +1 -1
  383. package/dist/types/src/manifests/index.d.ts +6 -15
  384. package/dist/types/src/manifests/index.d.ts.map +1 -1
  385. package/dist/types/src/manifests/preset.d.ts +5 -5
  386. package/dist/types/src/version.d.ts +16 -1
  387. package/dist/types/src/version.d.ts.map +1 -1
  388. package/dist/workspace-plugin/adapters/mcp.js +26 -26
  389. package/dist/workspace-plugin/adapters/omp.js +14 -14
  390. package/dist/workspace-plugin/index.js +1 -1
  391. package/package.json +1 -1
  392. package/dist/asset-feeds-KTFUB7EX.js.map +0 -1
  393. package/dist/chunk-2D2P7HSR.js +0 -15
  394. package/dist/chunk-2D2P7HSR.js.map +0 -1
  395. package/dist/chunk-3JHFFIQ6.js.map +0 -1
  396. package/dist/chunk-5CYEWBPB.js +0 -440
  397. package/dist/chunk-5CYEWBPB.js.map +0 -1
  398. package/dist/chunk-5Y3L7XWH.js.map +0 -1
  399. package/dist/chunk-75EX5GY4.js.map +0 -1
  400. package/dist/chunk-AC2N5BRP.js.map +0 -1
  401. package/dist/chunk-DPMKI26Y.js.map +0 -1
  402. package/dist/chunk-G2O2AARG.js.map +0 -1
  403. package/dist/chunk-K2K7OF4P.js.map +0 -1
  404. package/dist/chunk-LFMX2UEF.js.map +0 -1
  405. package/dist/chunk-MMC24L2W.js.map +0 -1
  406. package/dist/chunk-N3Y43LMZ.js.map +0 -1
  407. package/dist/chunk-ORUHADS6.js.map +0 -1
  408. package/dist/chunk-P6KFWTGP.js.map +0 -1
  409. package/dist/chunk-R4G7XI7A.js.map +0 -1
  410. package/dist/chunk-TNWXGHLD.js.map +0 -1
  411. package/dist/chunk-TOSHZX4C.js.map +0 -1
  412. package/dist/chunk-WX74MVNA.js.map +0 -1
  413. package/dist/chunk-Y7UBRRKG.js.map +0 -1
  414. package/dist/chunk-YK7WJSTD.js.map +0 -1
  415. package/dist/factory-assets/bundles/workspaces-authoring/workspaces-authoring.bundle.yaml +0 -9
  416. package/dist/open-library-Z5NJU4Z5.js +0 -40
  417. package/dist/open-registry-TYUVN5SG.js +0 -32
  418. package/dist/paths-HKAXUR3W.js +0 -22
  419. package/dist/project-SVS4UMGL.js +0 -36
  420. package/dist/skills-HW6I6ZZ7.js +0 -26
  421. package/dist/source-OKRJT53H.js +0 -41
  422. package/dist/types/src/manifests/mount.d.ts +0 -21
  423. package/dist/types/src/manifests/mount.d.ts.map +0 -1
@@ -1,22 +1,107 @@
1
- import { getStoreManifestsDir } from './chunk-AC2N5BRP.js';
2
- import { readManifestSourceConfig, discoverAssetsInTree } from './chunk-Y7UBRRKG.js';
3
- import { deployAll, removeAsset, canonicalEntryRef, createScaffold } from './chunk-75EX5GY4.js';
4
- import { resolveConfiguredDriverTarget, GLOBAL_INSTALL_DIR_NAME, resolveLibraryDir, buildLibraryLockEntries, writeLock, buildLockFile, readLock, verifyLock, mergeLockFile, extractForPatch, generatePatch, savePatch, applyPatch } from './chunk-3JHFFIQ6.js';
5
- import { resolveRuntimeAssets, factoryAssetRoots } from './chunk-YK7WJSTD.js';
6
- import { deployedBase, deployedDir, isDeployed } from './chunk-XGIS325V.js';
7
- import { loadMcpServerDeclarations, resolveGlobalHarnesses, resolveGlobalSkWorkspaceConfig, resolveSkWorkspaceConfig, getGlobalCacheDir, sourceCacheKey, getRepoCommit, matchPin, coerceVersion, resolveAll, buildProvenanceIndex, ensureRepo, sourceShortName, scanRepo, SKAILE_YAML_DEFAULT, checkRepoStatus, resolveAsset, readLinks, storeManifestSlug } from './chunk-ORUHADS6.js';
8
- import { globalSkaileDir, globalCacheRoot, migrateLegacyDir } from './chunk-MFHKHXDE.js';
9
- import { scanDirectory, parseRequires } from './chunk-LFMX2UEF.js';
10
- import { parseAssetRef, parseAssetRefLoose, assetRefToStr, slugifyAssetName } from './chunk-WX74MVNA.js';
1
+ import { getStoreManifestsDir } from './chunk-MX3UQXLU.js';
2
+ import { readManifestSourceConfig, discoverAssetsInTree } from './chunk-XOGG7VDZ.js';
3
+ import { installAgent, installTargetOf, deployAll, removeAsset, canonicalEntryRef, createScaffold } from './chunk-IPWR33AW.js';
11
4
  import { appendHistory, getRecentHistory, clearHistory } from './chunk-KTBKW2FI.js';
12
5
  import { commitChanges } from './chunk-UQ6LFBPZ.js';
6
+ import { driverTargetSupportsAgents, CODEX_IDENTITY_DIR } from './chunk-VKSXST23.js';
7
+ import { resolveConfiguredDriverTarget, GLOBAL_INSTALL_DIR_NAME, resolveLibraryDir, buildLibraryLockEntries, writeLock, buildLockFile, readLock, verifyLock, mergeLockFile, extractForPatch, generatePatch, savePatch, applyPatch } from './chunk-TZCQ7ZWQ.js';
8
+ import { resolveRuntimeAssets, factoryAssetRoots } from './chunk-BF33SCLY.js';
9
+ import { deployedBase, deployedDir, isDeployed } from './chunk-46OVMT76.js';
10
+ import { resolveSkWorkspaceConfig, effectiveAgentInstances, resolveAgentDefinitionDir, loadMcpServerDeclarations, resolveGlobalHarnesses, resolveGlobalSkWorkspaceConfig, getGlobalCacheDir, sourceCacheKey, getRepoCommit, matchPin, coerceVersion, resolveAll, buildProvenanceIndex, ensureRepo, sourceShortName, scanRepo, SKAILE_YAML_DEFAULT, checkRepoStatus, resolveAsset, readLinks, storeManifestSlug } from './chunk-2W4LBLIN.js';
11
+ import { globalSkaileDir, globalCacheRoot, migrateLegacyDir } from './chunk-MFHKHXDE.js';
12
+ import { DRIVER_TARGETS } from './chunk-CPSIPIX7.js';
13
+ import { scanDirectory, parseRequires } from './chunk-PA7WLID3.js';
14
+ import { parseAssetRef, parseAssetRefLoose, assetRefToStr, slugifyAssetName } from './chunk-AO7VJ6G6.js';
13
15
  import { spawnSync } from 'child_process';
14
- import { existsSync, readdirSync, rmSync, lstatSync, unlinkSync, mkdirSync, writeFileSync, readFileSync } from 'fs';
15
- import path, { resolve, join, sep, dirname } from 'path';
16
+ import { existsSync, rmSync, readdirSync, lstatSync, unlinkSync, mkdirSync, writeFileSync, readFileSync } from 'fs';
17
+ import path, { join, resolve, dirname, sep, posix } from 'path';
16
18
  import { gt } from 'semver';
17
19
  import { stringify, parse } from 'yaml';
18
20
  import fs from 'fs/promises';
19
21
 
22
+ var ledgerPath = (projectDir) => join(projectDir, ".skaile", "agent-instances-managed.json");
23
+ function readLedger(projectDir) {
24
+ const p = ledgerPath(projectDir);
25
+ if (!existsSync(p)) return { version: 1, targets: {} };
26
+ try {
27
+ const parsed = JSON.parse(readFileSync(p, "utf-8"));
28
+ return { version: 1, targets: parsed.targets ?? {} };
29
+ } catch {
30
+ return { version: 1, targets: {} };
31
+ }
32
+ }
33
+ function writeLedger(projectDir, ledger) {
34
+ const p = ledgerPath(projectDir);
35
+ mkdirSync(dirname(p), { recursive: true });
36
+ writeFileSync(p, `${JSON.stringify(ledger, null, 2)}
37
+ `, "utf-8");
38
+ }
39
+ function installAgentInstances(opts) {
40
+ const { projectDir, driverTarget, log } = opts;
41
+ const result = { instances: [], removed: [], warnings: [] };
42
+ if (!driverTargetSupportsAgents(driverTarget)) return result;
43
+ const wsConfig = opts.wsConfig ?? resolveSkWorkspaceConfig(projectDir);
44
+ const instances = effectiveAgentInstances(wsConfig);
45
+ const agentDeployDir = deployedBase("agent", driverTarget, false, projectDir);
46
+ const skillsRelDir = DRIVER_TARGETS[driverTarget]?.local.skill ?? "";
47
+ const ledger = readLedger(projectDir);
48
+ const previous = ledger.targets[driverTarget] ?? {};
49
+ const owned = {};
50
+ for (const [id, instance] of Object.entries(instances)) {
51
+ let srcDir;
52
+ try {
53
+ srcDir = resolveAgentDefinitionDir(projectDir, instance.ref);
54
+ } catch (err) {
55
+ result.warnings.push(
56
+ `agent instance "${id}": ${err instanceof Error ? err.message : String(err)}`
57
+ );
58
+ }
59
+ if (srcDir === void 0 || !existsSync(join(srcDir, "agent.yaml"))) {
60
+ if (srcDir !== void 0) {
61
+ result.warnings.push(
62
+ `agent instance "${id}": ${instance.ref} resolves to ${srcDir}, which has no agent.yaml`
63
+ );
64
+ }
65
+ if (previous[id]) owned[id] = previous[id];
66
+ continue;
67
+ }
68
+ const rendered = installAgent(
69
+ srcDir,
70
+ agentDeployDir,
71
+ projectDir,
72
+ driverTarget,
73
+ skillsRelDir,
74
+ id,
75
+ /* includeSubAgents */
76
+ true,
77
+ /* @__PURE__ */ new Set(),
78
+ wsConfig,
79
+ log,
80
+ instance
81
+ );
82
+ result.warnings.push(...rendered.warnings);
83
+ const files = [...new Set(rendered.created)];
84
+ owned[id] = files;
85
+ result.instances.push({ id, files });
86
+ }
87
+ const claimed = new Set(Object.values(owned).flat());
88
+ const root = resolve(projectDir);
89
+ const removable = [resolve(agentDeployDir), resolve(dirname(agentDeployDir), CODEX_IDENTITY_DIR)];
90
+ for (const rel of Object.values(previous).flat()) {
91
+ if (claimed.has(rel)) continue;
92
+ const abs = resolve(root, rel);
93
+ if (!removable.some((dir) => abs.startsWith(dir + sep)) || !existsSync(abs)) continue;
94
+ rmSync(abs, { recursive: true, force: true });
95
+ result.removed.push(rel);
96
+ }
97
+ const nextTargets = { ...ledger.targets };
98
+ if (Object.keys(owned).length > 0) nextTargets[driverTarget] = owned;
99
+ else delete nextTargets[driverTarget];
100
+ if (JSON.stringify(nextTargets) !== JSON.stringify(ledger.targets)) {
101
+ writeLedger(projectDir, { version: 1, targets: nextTargets });
102
+ }
103
+ return result;
104
+ }
20
105
  var TARGET_MCP_CONFIG = {
21
106
  "claude-code": ".mcp.json"
22
107
  };
@@ -199,7 +284,6 @@ function pinsBySlug(sources) {
199
284
  var MD_BY_KIND = {
200
285
  skill: "SKILL.md",
201
286
  agent: "AGENT.md",
202
- bundle: "BUNDLE.md",
203
287
  "mcp-server": "MCP.md",
204
288
  connector: "CONNECTOR.md",
205
289
  prompt: "PROMPT.md",
@@ -211,19 +295,13 @@ function matchManifestPath(kind, paths) {
211
295
  const hit = paths.find((p) => p.endsWith(exact));
212
296
  if (hit) return hit;
213
297
  }
298
+ if (kind === "preset") return paths.find((p) => p.endsWith(".preset.yaml"));
214
299
  if (kind === "prompt") return paths.find((p) => p.endsWith(".prompt.md"));
215
300
  if (kind === "flow") {
216
301
  return paths.find((p) => p.endsWith(".flow.yaml") || p.endsWith(".flow.json"));
217
302
  }
218
303
  return void 0;
219
304
  }
220
- var NON_DEPLOYABLE_KINDS = /* @__PURE__ */ new Set([
221
- "bundle",
222
- "mcp-server",
223
- "persona",
224
- "ruleset",
225
- "knowledge"
226
- ]);
227
305
  function unscopedName(x) {
228
306
  return x.includes("/") ? x.split("/").pop() : x;
229
307
  }
@@ -254,7 +332,7 @@ function indexLockByKindName(lock) {
254
332
  }
255
333
  return lockByKindName;
256
334
  }
257
- function libraryDiskHashes(libPath, cache) {
335
+ function libraryDiskHashes(libPath, cache, registry) {
258
336
  let hashes = cache.get(libPath);
259
337
  if (!hashes) {
260
338
  const sourceConfig = readManifestSourceConfig(libPath, "library") ?? {
@@ -265,7 +343,7 @@ function libraryDiskHashes(libPath, cache) {
265
343
  dev_paths: []
266
344
  };
267
345
  hashes = new Map(
268
- discoverAssetsInTree(libPath, { sourceConfig }).assets.map((a) => [
346
+ discoverAssetsInTree(libPath, { sourceConfig, registry }).assets.map((a) => [
269
347
  `${a.kind}:${a.name}`,
270
348
  a.sha256
271
349
  ])
@@ -420,6 +498,9 @@ var AssetManager = class {
420
498
  driverTarget;
421
499
  /** Whether this instance operates in global-install mode. */
422
500
  global;
501
+ /** Asset-kind registry shared with the host (one instance per process). */
502
+ registry;
503
+ _knownKinds;
423
504
  /** Explicit global-harness override (global mode only); else auto-resolved. */
424
505
  harnessesOverride;
425
506
  /** Injected catalog fetcher (tests / custom); falls back to a built one. */
@@ -435,6 +516,7 @@ var AssetManager = class {
435
516
  constructor(opts) {
436
517
  this.projectDir = resolve(opts.projectDir);
437
518
  this.global = opts.global ?? false;
519
+ this.registry = opts.registry;
438
520
  this.driverTarget = opts.driverTarget ?? (this.global ? void 0 : resolveConfiguredDriverTarget(this.projectDir)) ?? "claude-code";
439
521
  this.harnessesOverride = opts.harnesses ?? opts.backends;
440
522
  this.injectedStoreFetcher = opts.storeFetcher;
@@ -443,6 +525,19 @@ var AssetManager = class {
443
525
  this.indexPathOverride = opts.indexPath;
444
526
  this.onLibraryCollision = opts.onLibraryCollision;
445
527
  }
528
+ /** Registered kind names — the `knownKinds` argument of the manifest scanners. */
529
+ get knownKinds() {
530
+ this._knownKinds ??= new Set(this.registry.getAllKinds());
531
+ return this._knownKinds;
532
+ }
533
+ /**
534
+ * The harness component dir a kind installs into (its provider's
535
+ * `installTarget`), or `undefined` for composition-only kinds, which are only
536
+ * cached in the store cache and composed at session start.
537
+ */
538
+ installTarget(kind) {
539
+ return installTargetOf(this.registry, kind);
540
+ }
446
541
  /**
447
542
  * Root for this manager's **state** — config SSOT, lock, cache, history.
448
543
  * `~/.skaile` in global mode (the cross-harness SSOT), else the project dir.
@@ -493,7 +588,13 @@ var AssetManager = class {
493
588
  /** Deploy options for one harness. In global mode, `driverTarget` is the
494
589
  * fan-out target (not the constructor's `driverTarget`, which is project-only). */
495
590
  deployOptsFor(target, link) {
496
- return { driverTarget: target, global: this.global, cwd: this.projectDir, link: link === true };
591
+ return {
592
+ registry: this.registry,
593
+ driverTarget: target,
594
+ global: this.global,
595
+ cwd: this.projectDir,
596
+ link: link === true
597
+ };
497
598
  }
498
599
  /**
499
600
  * Render the project's declared MCP servers into the driver target's own
@@ -515,6 +616,29 @@ var AssetManager = class {
515
616
  );
516
617
  }
517
618
  }
619
+ /**
620
+ * Render every agent instance of `skaile.yaml` into the driver target's native
621
+ * agent files (`.claude/agents/<id>.md`, …) and prune the renderings of
622
+ * instances that left the config. Runs after the skills deploy, so composed
623
+ * skills resolve. Project scope only. Never fails an install — a render error
624
+ * is warned and swallowed.
625
+ */
626
+ renderAgentInstances() {
627
+ if (this.global) return {};
628
+ try {
629
+ const result = installAgentInstances({
630
+ projectDir: this.projectDir,
631
+ driverTarget: this.driverTarget
632
+ });
633
+ for (const w of result.warnings) console.warn(`skaile: ${w}`);
634
+ return { agentInstances: result.instances, agentFilesRemoved: result.removed };
635
+ } catch (err) {
636
+ console.warn(
637
+ `skaile: could not render agent instances for ${this.driverTarget}: ${err instanceof Error ? err.message : String(err)}`
638
+ );
639
+ return {};
640
+ }
641
+ }
518
642
  loadConfig() {
519
643
  const config = this.global ? resolveGlobalSkWorkspaceConfig() : resolveSkWorkspaceConfig(this.projectDir);
520
644
  const sources = config.sources ?? [];
@@ -664,7 +788,7 @@ var AssetManager = class {
664
788
  const isDefaultLib = new Map(roots.map((r) => [r.name, r.isDefault]));
665
789
  for (const { name, dir } of roots) {
666
790
  const publisher = readDeclaredPublisher(dir) ?? slugifyAssetName(name);
667
- for (const entry of await scanDirectory(dir, publisher)) {
791
+ for (const entry of await scanDirectory(dir, publisher, { knownKinds: this.knownKinds })) {
668
792
  const key = `${entry.kind}:@${entry.publisher}/${entry.name}`;
669
793
  const list = byKey.get(key);
670
794
  if (list) list.push({ entry, library: name });
@@ -756,7 +880,7 @@ var AssetManager = class {
756
880
  const publisher = e.publisher ?? "";
757
881
  const def = newestLibraryDef(snap, name, { kind: e.kind, publisher, name: e.name });
758
882
  const libPath = this.libraryPath(name, snap);
759
- const sha256 = (libPath ? libraryDiskHashes(libPath, diskHashes).get(`${e.kind}:${e.name}`) : void 0) ?? def?.sha256;
883
+ const sha256 = (libPath ? libraryDiskHashes(libPath, diskHashes, this.registry).get(`${e.kind}:${e.name}`) : void 0) ?? def?.sha256;
760
884
  return {
761
885
  kind: e.kind,
762
886
  publisher,
@@ -795,7 +919,7 @@ var AssetManager = class {
795
919
  );
796
920
  continue;
797
921
  }
798
- const found = (await scanDirectory(libPath, publisher)).find(
922
+ const found = (await scanDirectory(libPath, publisher, { knownKinds: this.knownKinds })).find(
799
923
  (x) => x.kind === kind && x.name === name
800
924
  );
801
925
  if (!found) {
@@ -811,7 +935,7 @@ var AssetManager = class {
811
935
  continue;
812
936
  }
813
937
  if (origin.sha256) {
814
- const onDisk = libraryDiskHashes(libPath, diskHashes).get(`${kind}:${name}`);
938
+ const onDisk = libraryDiskHashes(libPath, diskHashes, this.registry).get(`${kind}:${name}`);
815
939
  if (onDisk !== void 0 && onDisk !== origin.sha256) {
816
940
  missing.push(
817
941
  `${ref} (library "${origin.name}" content changed since lock \u2014 or the lock predates the one shared asset hash; re-lock with \`skaile install\`)`
@@ -857,7 +981,8 @@ var AssetManager = class {
857
981
  overrides: opts.overrides,
858
982
  stores: opts.stores,
859
983
  storeFetcher: this.storeFetcherFor(opts.stores),
860
- projectDir: this.projectDir
984
+ projectDir: this.projectDir,
985
+ knownKinds: this.knownKinds
861
986
  });
862
987
  if (first.missing.length === 0) return first;
863
988
  const fallback = await this.globalStoreFallback(opts.stores);
@@ -869,7 +994,8 @@ var AssetManager = class {
869
994
  overrides: opts.overrides,
870
995
  stores,
871
996
  storeFetcher: this.storeFetcherFor(stores),
872
- projectDir: this.projectDir
997
+ projectDir: this.projectDir,
998
+ knownKinds: this.knownKinds
873
999
  });
874
1000
  return retry.missing.length < first.missing.length ? retry : first;
875
1001
  } catch {
@@ -920,7 +1046,7 @@ var AssetManager = class {
920
1046
  * Fetch + SHA-verify the bytes of every store-resolved candidate that needs
921
1047
  * bytes on disk into `.skaile/cache/store/`, reusing the same verified-fetch
922
1048
  * path the pointer-only `library.install` uses (`installFromManifest` flat
923
- * mode). That is the deployable kinds plus `mcp-server` — see the skip guard.
1049
+ * mode). Every kind with bytes, composition-only kinds included.
924
1050
  *
925
1051
  * @returns Map of candidate key → staged primary-manifest path.
926
1052
  */
@@ -928,7 +1054,6 @@ var AssetManager = class {
928
1054
  const staged = /* @__PURE__ */ new Map();
929
1055
  let installFromManifest;
930
1056
  for (const c of resolved) {
931
- if (NON_DEPLOYABLE_KINDS.has(c.kind) && c.kind !== "mcp-server") continue;
932
1057
  if (!c.files || c.files.length === 0 || !c.sourceUrl || !c.commit) continue;
933
1058
  if (this.candidateHasLocalBytes(c, repositories)) continue;
934
1059
  if (!installFromManifest) {
@@ -998,7 +1123,12 @@ var AssetManager = class {
998
1123
  }
999
1124
  /** Build a copy-deploy catalog entry pointing at staged store bytes. */
1000
1125
  stagedCandidateToEntry(c, stagedManifestPath) {
1126
+ const paths = (c.files ?? []).map((f) => f.path);
1127
+ const root = commonDirPrefix(paths);
1128
+ const manifestDir = posix.dirname(this.stagedManifestRel(c));
1129
+ const files = paths.map((p) => root && p.startsWith(`${root}/`) ? p.slice(root.length + 1) : p).map((p) => posix.relative(manifestDir, p)).filter((rel) => rel !== "" && !rel.startsWith(".."));
1001
1130
  const entry = {
1131
+ files,
1002
1132
  name: c.name,
1003
1133
  kind: c.kind,
1004
1134
  description: c.description ?? "",
@@ -1040,13 +1170,17 @@ var AssetManager = class {
1040
1170
  const cloneError = this.ensureSourceClones(repositories, sources);
1041
1171
  if (cloneError) return cloneError;
1042
1172
  const provenanceIndex = await buildProvenanceIndex(this.buildClones(repositories), {
1043
- projectDir: this.projectDir
1044
- });
1045
- const { resolved, missing, overridesApplied } = await this.resolveWithStores(dependencies, {
1046
- provenanceIndex,
1047
- overrides,
1048
- stores
1173
+ projectDir: this.projectDir,
1174
+ knownKinds: this.knownKinds
1049
1175
  });
1176
+ const { resolved, missing, overridesApplied, presets } = await this.resolveWithStores(
1177
+ dependencies,
1178
+ {
1179
+ provenanceIndex,
1180
+ overrides,
1181
+ stores
1182
+ }
1183
+ );
1050
1184
  const lib = await this.resolveLibraryEntries(missing);
1051
1185
  const directLock = this.directInstallLockEntries();
1052
1186
  const libraryLock = { ...directLock, ...await this.libraryLockEntries(lib) };
@@ -1060,6 +1194,7 @@ var AssetManager = class {
1060
1194
  )
1061
1195
  ];
1062
1196
  await this.renderDriverMcpConfig();
1197
+ const agentRender = this.renderAgentInstances();
1063
1198
  const lockWritten = resolved.length > 0 || lib.entries.length > 0 || existsSync(this.lockPath);
1064
1199
  if (lockWritten) {
1065
1200
  writeLock(this.lockPath, buildLockFile(resolved, overridesApplied, libraryLock));
@@ -1067,7 +1202,16 @@ var AssetManager = class {
1067
1202
  this.recordInstallHistory(deployed, removed);
1068
1203
  const { npmInstalled, npmFailed } = await this.installRuntimeAssetDeps();
1069
1204
  const stillMissing = missing.filter((m) => !lib.resolved.has(m));
1070
- return { deployed, removed, missing: stillMissing, lockWritten, npmInstalled, npmFailed };
1205
+ return {
1206
+ deployed,
1207
+ removed,
1208
+ missing: stillMissing,
1209
+ lockWritten,
1210
+ npmInstalled,
1211
+ npmFailed,
1212
+ presets,
1213
+ ...agentRender
1214
+ };
1071
1215
  }
1072
1216
  /**
1073
1217
  * Ensure all source clones are present/up to date. Returns an early
@@ -1321,7 +1465,14 @@ var AssetManager = class {
1321
1465
  )
1322
1466
  ];
1323
1467
  await this.renderDriverMcpConfig();
1324
- return { deployed, removed: [], missing: library.missing, lockWritten: false };
1468
+ const agentRender = this.renderAgentInstances();
1469
+ return {
1470
+ deployed,
1471
+ removed: [],
1472
+ missing: library.missing,
1473
+ lockWritten: false,
1474
+ ...agentRender
1475
+ };
1325
1476
  }
1326
1477
  /**
1327
1478
  * Add a single asset (and its transitive dependencies) to the workspace.
@@ -1344,7 +1495,8 @@ var AssetManager = class {
1344
1495
  parseAssetRef(ref);
1345
1496
  this.ensureSourceClonesQuiet(repositories, sources);
1346
1497
  const provenanceIndex = await buildProvenanceIndex(this.buildClones(repositories), {
1347
- projectDir: this.projectDir
1498
+ projectDir: this.projectDir,
1499
+ knownKinds: this.knownKinds
1348
1500
  });
1349
1501
  const { resolved, missing, overridesApplied } = await this.resolveWithStores([ref], {
1350
1502
  provenanceIndex,
@@ -1374,6 +1526,7 @@ var AssetManager = class {
1374
1526
  }
1375
1527
  this.addDependencyToConfig(ref);
1376
1528
  await this.renderDriverMcpConfig();
1529
+ this.renderAgentInstances();
1377
1530
  if (resolved.length > 0 || lib.entries.length > 0) {
1378
1531
  const fresh = buildLockFile(resolved, overridesApplied, await this.libraryLockEntries(lib));
1379
1532
  writeLock(this.lockPath, mergeLockFile(this.tryReadLock(), fresh));
@@ -1417,37 +1570,37 @@ var AssetManager = class {
1417
1570
  );
1418
1571
  }
1419
1572
  /**
1420
- * Bundles in the configured sources (and the bundled factory source) that list
1421
- * `ref` as a member, for the `skaile add` discoverability hint. Membership is
1422
- * not a dependency: nothing here installs the bundle or its siblings.
1573
+ * Presets in the configured sources (and the bundled factory source) that list
1574
+ * `ref` as an asset item, for the `skaile add` discoverability hint. Membership is
1575
+ * not a dependency: nothing here installs the preset or its siblings.
1423
1576
  *
1424
1577
  * Matches on kind + name, and on publisher only when both sides carry one, so
1425
- * a bare `skill:x` member line still matches `skill:@pub/x`. Bundles already
1578
+ * a bare `skill:x` item still matches `skill:@pub/x`. Presets already
1426
1579
  * declared in `skaile.yaml` are left out. Best-effort: any failure yields `[]`,
1427
1580
  * so it can never fail an `add` that succeeded.
1428
1581
  *
1429
1582
  * @param ref - The added asset ref (`kind:name`, `kind:@pub/name`, optionally pinned).
1430
- * @returns One `{ name, ref }` per containing bundle, deduped by `ref`; `ref` is
1431
- * the `skaile add` form (`bundle:@pub/name`, or `bundle:name` without a publisher).
1583
+ * @returns One `{ name, ref }` per containing preset, deduped by `ref`; `ref` is
1584
+ * the `skaile add` form (`preset:@pub/name`, or `preset:name` without a publisher).
1432
1585
  */
1433
- async bundlesContaining(ref) {
1586
+ async presetsContaining(ref) {
1434
1587
  const target = memberIdentity(ref);
1435
- if (!target || target.kind === "bundle") return [];
1588
+ if (!target || target.kind === "preset") return [];
1436
1589
  try {
1437
1590
  const sameAsset = (id, want) => !!id && id.kind === want.kind && id.name === want.name && (!id.publisher || !want.publisher || id.publisher === want.publisher);
1438
1591
  const declared = this.loadConfig().dependencies.map(memberIdentity);
1439
1592
  const out = [];
1440
1593
  const seen = /* @__PURE__ */ new Set();
1441
- for (const b of await this.search(void 0, "bundle")) {
1442
- const members = [...b.dependencies, ...b.requires.map((d) => `${d.kind}:${d.name}`)];
1594
+ for (const p of await this.search(void 0, "preset")) {
1595
+ const members = [...p.dependencies, ...p.requires.map((d) => `${d.kind}:${d.name}`)];
1443
1596
  if (!members.some((m) => sameAsset(memberIdentity(m), target))) continue;
1444
- const publisher = b.publisher?.replace(/^@/, "");
1445
- const bundleId = { kind: "bundle", name: b.name, publisher };
1446
- if (declared.some((d) => sameAsset(d, bundleId))) continue;
1447
- const bundleRef = publisher ? assetRefToStr({ kind: "bundle", name: b.name, publisher }) : `bundle:${b.name}`;
1448
- if (seen.has(bundleRef)) continue;
1449
- seen.add(bundleRef);
1450
- out.push({ name: b.name, ref: bundleRef });
1597
+ const publisher = p.publisher?.replace(/^@/, "");
1598
+ const presetId = { kind: "preset", name: p.name, publisher };
1599
+ if (declared.some((d) => sameAsset(d, presetId))) continue;
1600
+ const presetRef = publisher ? assetRefToStr({ kind: "preset", name: p.name, publisher }) : `preset:${p.name}`;
1601
+ if (seen.has(presetRef)) continue;
1602
+ seen.add(presetRef);
1603
+ out.push({ name: p.name, ref: presetRef });
1451
1604
  }
1452
1605
  return out;
1453
1606
  } catch {
@@ -1629,10 +1782,12 @@ var AssetManager = class {
1629
1782
  *
1630
1783
  * @param ref - Asset ref in `kind:name` form (e.g. `skill:my-skill`).
1631
1784
  * @returns `true` if the asset was found and removed, `false` if it was not deployed.
1785
+ * A `preset:` ref has no deployed files: it is found when declared in `skaile.yaml`, and
1786
+ * only its declaration goes — its expanded items leave with the next `skaile install`.
1632
1787
  */
1633
1788
  remove(ref) {
1634
1789
  const parsed = parseAssetRef(ref);
1635
- let ok = false;
1790
+ let ok = parsed.kind === "preset" ? this.removeDependencyFromConfig(parsed) : false;
1636
1791
  for (const t of this.targetHarnesses()) {
1637
1792
  if (removeAsset(parsed.kind, parsed.name, this.deployOptsFor(t))) ok = true;
1638
1793
  }
@@ -1683,7 +1838,7 @@ var AssetManager = class {
1683
1838
  for (const [name, decl] of Object.entries(repositories)) {
1684
1839
  const repoDir = this.resolveRepoDir(decl, name);
1685
1840
  if (!repoDir) continue;
1686
- all = [...all, ...await scanRepo(repoDir, name)];
1841
+ all = [...all, ...await scanRepo(repoDir, name, { knownKinds: this.knownKinds })];
1687
1842
  }
1688
1843
  if (kind) all = all.filter((e) => e.kind === kind);
1689
1844
  if (query) {
@@ -1727,7 +1882,7 @@ var AssetManager = class {
1727
1882
  for (const [name, decl] of Object.entries(repositories)) {
1728
1883
  const repoDir = this.resolveRepoDir(decl, name);
1729
1884
  if (!repoDir) continue;
1730
- const entries = await scanRepo(repoDir, name);
1885
+ const entries = await scanRepo(repoDir, name, { knownKinds: this.knownKinds });
1731
1886
  const match = entries.find(
1732
1887
  (e) => e.kind === parsed.kind && e.name === parsed.name && (!parsed.publisher || e.publisher === parsed.publisher)
1733
1888
  );
@@ -1746,7 +1901,11 @@ var AssetManager = class {
1746
1901
  * @returns Shallow {@link CatalogEntry} objects (description and version will be empty).
1747
1902
  */
1748
1903
  listDeployed(kind) {
1749
- const kinds = kind ? [kind] : ["skill", "agent", "prompt", "flow", "contract"];
1904
+ const kinds = kind ? [this.installTarget(kind)].filter((k) => k !== void 0) : [
1905
+ ...new Set(
1906
+ this.registry.getAllProviders().map((p) => p.installTarget).filter((t) => t !== void 0)
1907
+ )
1908
+ ];
1750
1909
  const result = [];
1751
1910
  const seen = /* @__PURE__ */ new Set();
1752
1911
  for (const k of kinds) {
@@ -1758,7 +1917,7 @@ var AssetManager = class {
1758
1917
  if (item.isDirectory() || item.isSymbolicLink()) {
1759
1918
  name = item.name;
1760
1919
  } else if (item.isFile()) {
1761
- name = item.name.replace(/\.prompt\.md$/, "").replace(/\.flow\.(yaml|json)$/, "").replace(/\.bundle\.yaml$/, "").replace(/\.(md|toml|yaml|json)$/, "");
1920
+ name = item.name.replace(/\.prompt\.md$/, "").replace(/\.flow\.(yaml|json)$/, "").replace(/\.(md|toml|yaml|json)$/, "");
1762
1921
  } else {
1763
1922
  continue;
1764
1923
  }
@@ -1796,8 +1955,9 @@ var AssetManager = class {
1796
1955
  if (this.global || this.driverTarget === "claude-code") return [];
1797
1956
  const tracked = /* @__PURE__ */ new Map();
1798
1957
  const track = (kind, name) => {
1799
- if (kind && name && !NON_DEPLOYABLE_KINDS.has(kind)) {
1800
- tracked.set(`${kind}:${name}`, { kind, name });
1958
+ const component = kind ? this.installTarget(kind) : void 0;
1959
+ if (kind && name && component) {
1960
+ tracked.set(`${kind}:${name}`, { kind, name, component });
1801
1961
  }
1802
1962
  };
1803
1963
  const lock = this.tryReadLock();
@@ -1818,8 +1978,7 @@ var AssetManager = class {
1818
1978
  } catch {
1819
1979
  }
1820
1980
  const out = [];
1821
- for (const { kind, name } of tracked.values()) {
1822
- const k = kind;
1981
+ for (const { kind, name, component: k } of tracked.values()) {
1823
1982
  const legacy = deployedDir(k, name, "claude-code", false, this.projectDir);
1824
1983
  if (legacy === deployedDir(k, name, this.driverTarget, false, this.projectDir)) continue;
1825
1984
  if (isDeployed(k, name, "claude-code", false, this.projectDir)) {
@@ -1833,11 +1992,12 @@ var AssetManager = class {
1833
1992
  * with a reconciliation {@link DeclaredState}:
1834
1993
  *
1835
1994
  * - `declared` — in `skaile.yaml`, not yet resolved into the lock.
1836
- * - `installed` — declared + locked, and (for deployable kinds) materialized on
1837
- * disk. An `mcp-server` is instead checked against the declarations the runner
1838
- * would actually wire (store-staged or materialized `MCP.md`); the remaining
1839
- * non-deployable kinds ({@link NON_DEPLOYABLE_KINDS}) count as installed once
1840
- * locked — they are resolved at session start with no on-disk footprint here.
1995
+ * - `installed` — declared + locked, and (for kinds with an `installTarget`)
1996
+ * materialized on disk. An `mcp-server` is instead checked against the
1997
+ * declarations the runner would actually wire (store-staged or materialized
1998
+ * `MCP.md`); the remaining composition-only kinds (no `installTarget`) count as
1999
+ * installed once locked — they are resolved at session start with no harness
2000
+ * footprint here.
1841
2001
  * - `drift` — declared + locked but the deployed files are missing on disk.
1842
2002
  * - `invalid` — the `dependencies:` entry isn't a parseable canonical ref. Only
1843
2003
  * surfaced in the unfiltered listing (a `kind` filter can't classify it).
@@ -1879,7 +2039,7 @@ var AssetManager = class {
1879
2039
  continue;
1880
2040
  }
1881
2041
  if (kind && parsed.kind !== kind) continue;
1882
- const locked = lockKeys.some(
2042
+ const locked = parsed.kind === "preset" ? lock !== null : lockKeys.some(
1883
2043
  (k) => k.kind === parsed.kind && k.name === parsed.name && (!parsed.publisher || k.publisher === parsed.publisher)
1884
2044
  );
1885
2045
  let state;
@@ -1888,17 +2048,20 @@ var AssetManager = class {
1888
2048
  } else if (parsed.kind === "mcp-server") {
1889
2049
  const wired = await wiredMcpNames();
1890
2050
  state = wired.has(parsed.name) || wired.has(unscopedName(parsed.name)) ? "installed" : "drift";
1891
- } else if (NON_DEPLOYABLE_KINDS.has(parsed.kind)) {
1892
- state = "installed";
1893
2051
  } else {
1894
- const onDisk = isDeployed(
1895
- parsed.kind,
1896
- parsed.name,
1897
- this.driverTarget,
1898
- this.global,
1899
- this.projectDir
1900
- );
1901
- state = onDisk ? "installed" : "drift";
2052
+ const component = this.installTarget(parsed.kind);
2053
+ if (!component) {
2054
+ state = "installed";
2055
+ } else {
2056
+ const onDisk = isDeployed(
2057
+ component,
2058
+ parsed.name,
2059
+ this.driverTarget,
2060
+ this.global,
2061
+ this.projectDir
2062
+ );
2063
+ state = onDisk ? "installed" : "drift";
2064
+ }
1902
2065
  }
1903
2066
  out.push({ ref, kind: parsed.kind, name: parsed.name, state });
1904
2067
  }
@@ -1941,18 +2104,16 @@ var AssetManager = class {
1941
2104
  continue;
1942
2105
  }
1943
2106
  if (opts?.kind && parsed.kind !== opts.kind) continue;
1944
- const locked = lockKeys.some(
2107
+ const locked = parsed.kind === "preset" ? lock !== null : lockKeys.some(
1945
2108
  (k) => k.kind === parsed.kind && k.name === parsed.name && (!parsed.publisher || k.publisher === parsed.publisher)
1946
2109
  );
1947
2110
  for (const harness of harnesses) {
1948
2111
  let state;
1949
2112
  if (!locked) {
1950
2113
  state = "declared";
1951
- } else if (NON_DEPLOYABLE_KINDS.has(parsed.kind)) {
1952
- state = "installed";
1953
2114
  } else {
1954
- const onDisk = isDeployed(parsed.kind, parsed.name, harness, true);
1955
- state = onDisk ? "installed" : "drift";
2115
+ const component = this.installTarget(parsed.kind);
2116
+ state = !component || isDeployed(component, parsed.name, harness, true) ? "installed" : "drift";
1956
2117
  }
1957
2118
  out.push({ ref, kind: parsed.kind, name: parsed.name, state, harness });
1958
2119
  }
@@ -2110,8 +2271,9 @@ var AssetManager = class {
2110
2271
  for (const [ref, entry] of Object.entries(lock.assets)) {
2111
2272
  if (reported.has(ref) || entry.library?.installed) continue;
2112
2273
  const { publisher, kind, name, version } = parseCanonicalLockKey(ref);
2113
- if (!kind || !name || NON_DEPLOYABLE_KINDS.has(kind)) continue;
2114
- if (isDeployed(kind, name, this.driverTarget, this.global, this.projectDir)) {
2274
+ const component = kind ? this.installTarget(kind) : void 0;
2275
+ if (!kind || !name || !component) continue;
2276
+ if (isDeployed(component, name, this.driverTarget, this.global, this.projectDir)) {
2115
2277
  continue;
2116
2278
  }
2117
2279
  result.push({
@@ -2144,8 +2306,10 @@ var AssetManager = class {
2144
2306
  const parsed = parseAssetRef(ref);
2145
2307
  const entry = await this.info(ref);
2146
2308
  if (!entry || !existsSync(entry.source)) return { status: "not-found" };
2309
+ const component = this.installTarget(parsed.kind);
2310
+ if (!component) return { status: "not-deployed" };
2147
2311
  const deployedPath = join(
2148
- deployedBase(parsed.kind, this.driverTarget, this.global, this.projectDir),
2312
+ deployedBase(component, this.driverTarget, this.global, this.projectDir),
2149
2313
  parsed.name
2150
2314
  );
2151
2315
  if (!existsSync(deployedPath)) return { status: "not-deployed" };
@@ -2167,7 +2331,8 @@ var AssetManager = class {
2167
2331
  const { repositories, sources, stores, dependencies, overrides } = this.loadConfig();
2168
2332
  this.ensureSourceClonesQuiet(repositories, sources);
2169
2333
  const provenanceIndex = await buildProvenanceIndex(this.buildClones(repositories), {
2170
- projectDir: this.projectDir
2334
+ projectDir: this.projectDir,
2335
+ knownKinds: this.knownKinds
2171
2336
  });
2172
2337
  const { resolved, missing, overridesApplied } = await this.resolveWithStores(dependencies, {
2173
2338
  provenanceIndex,
@@ -2282,18 +2447,11 @@ var AssetManager = class {
2282
2447
  for (const req of full.requires) {
2283
2448
  const dep = memberIdentity(`${req.kind}:${req.name}`);
2284
2449
  if (!dep) continue;
2285
- if (!isDeployed(
2286
- dep.kind,
2287
- dep.name,
2288
- this.driverTarget,
2289
- this.global,
2290
- this.projectDir
2291
- )) {
2292
- const inRepos = await resolveAsset(
2293
- { kind: dep.kind, name: dep.name },
2294
- repositories,
2295
- this.reposDir
2296
- ) !== null;
2450
+ const depComponent = this.installTarget(dep.kind);
2451
+ if (depComponent && !isDeployed(depComponent, dep.name, this.driverTarget, this.global, this.projectDir)) {
2452
+ const inRepos = await resolveAsset({ kind: dep.kind, name: dep.name }, repositories, this.reposDir, {
2453
+ knownKinds: this.knownKinds
2454
+ }) !== null;
2297
2455
  issues.push({
2298
2456
  assetKind: entry.kind,
2299
2457
  assetName: entry.name,
@@ -2311,7 +2469,7 @@ var AssetManager = class {
2311
2469
  * Create a minimal asset scaffold directory (delegates to {@link createScaffold}).
2312
2470
  *
2313
2471
  * @param name - Asset name (also used as the directory name).
2314
- * @param kind - Asset kind: `skill` | `agent` | `bundle` | `flow` | `prompt` | `contract`.
2472
+ * @param kind - Asset kind: `skill` | `agent` | `preset` | `flow` | `prompt` | `contract`.
2315
2473
  * @param destDir - Parent directory to create the asset in.
2316
2474
  * @param opts - Optional scaffold content (`description`).
2317
2475
  * @returns `{ ok: true, path }` on success, `{ ok: false, path: errorMessage }` if the
@@ -2372,14 +2530,9 @@ var AssetManager = class {
2372
2530
  if (!lock) return removed;
2373
2531
  for (const ref of Object.keys(lock.assets)) {
2374
2532
  const { kind, name } = parseCanonicalLockKey(ref);
2375
- if (!kind || !name) continue;
2376
- const dest = deployedDir(
2377
- kind,
2378
- name,
2379
- this.driverTarget,
2380
- this.global,
2381
- this.projectDir
2382
- );
2533
+ const component = kind ? this.installTarget(kind) : void 0;
2534
+ if (!kind || !name || !component) continue;
2535
+ const dest = deployedDir(component, name, this.driverTarget, this.global, this.projectDir);
2383
2536
  try {
2384
2537
  const stat = lstatSync(dest);
2385
2538
  if (stat.isSymbolicLink()) unlinkSync(dest);
@@ -2460,9 +2613,9 @@ var AssetManager = class {
2460
2613
  */
2461
2614
  removeDependencyFromConfig(target) {
2462
2615
  const configPath = join(this.stateRoot, "skaile.yaml");
2463
- if (!existsSync(configPath)) return;
2616
+ if (!existsSync(configPath)) return false;
2464
2617
  const raw = parse(readFileSync(configPath, "utf8")) ?? {};
2465
- if (!Array.isArray(raw.dependencies)) return;
2618
+ if (!Array.isArray(raw.dependencies)) return false;
2466
2619
  const wantPub = target.publisher?.replace(/^@/, "");
2467
2620
  const idx = raw.dependencies.findIndex((dep) => {
2468
2621
  if (typeof dep !== "string") return false;
@@ -2471,10 +2624,10 @@ var AssetManager = class {
2471
2624
  const havePub = p.publisher?.replace(/^@/, "");
2472
2625
  return wantPub === void 0 || havePub === void 0 || havePub === wantPub;
2473
2626
  });
2474
- if (idx !== -1) {
2475
- raw.dependencies.splice(idx, 1);
2476
- writeFileSync(configPath, stringify(raw, { lineWidth: 120 }));
2477
- }
2627
+ if (idx === -1) return false;
2628
+ raw.dependencies.splice(idx, 1);
2629
+ writeFileSync(configPath, stringify(raw, { lineWidth: 120 }));
2630
+ return true;
2478
2631
  }
2479
2632
  resolveRepoDir(decl, name) {
2480
2633
  const links = readLinks(this.projectDir);
@@ -2493,6 +2646,6 @@ var AssetManager = class {
2493
2646
  }
2494
2647
  };
2495
2648
 
2496
- export { AssetManager, FACTORY_SOURCE_URL, MissingManifestError, NON_DEPLOYABLE_KINDS, normalizeRepoUrl, parseCanonicalLockKey, parseRefTolerant, renderMcpServerConfig, softDepName };
2497
- //# sourceMappingURL=chunk-MMC24L2W.js.map
2498
- //# sourceMappingURL=chunk-MMC24L2W.js.map
2649
+ export { AssetManager, FACTORY_SOURCE_URL, MissingManifestError, installAgentInstances, normalizeRepoUrl, parseCanonicalLockKey, parseRefTolerant, renderMcpServerConfig, softDepName };
2650
+ //# sourceMappingURL=chunk-4CTGEEN6.js.map
2651
+ //# sourceMappingURL=chunk-4CTGEEN6.js.map