@skaile/workspaces 5.11.0 → 5.12.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 (403) hide show
  1. package/CHANGELOG.md +97 -0
  2. package/README.md +2 -2
  3. package/dist/{asset-feeds-CXGQIDFR.js → asset-feeds-AM6PSSGM.js} +24 -21
  4. package/dist/asset-feeds-AM6PSSGM.js.map +1 -0
  5. package/dist/asset-manager/catalog-deployer.js +8 -8
  6. package/dist/asset-manager/fragments.js +1 -1
  7. package/dist/asset-manager/index.js +16 -16
  8. package/dist/asset-manager/installer.js +11 -11
  9. package/dist/asset-manager/renderers.js +9 -9
  10. package/dist/asset-manager/src/fragments.d.ts +5 -0
  11. package/dist/asset-manager/src/fragments.d.ts.map +1 -1
  12. package/dist/asset-manager/src/index.d.ts +95 -10
  13. package/dist/asset-manager/src/index.d.ts.map +1 -1
  14. package/dist/asset-manager/src/install-agent.d.ts +9 -1
  15. package/dist/asset-manager/src/install-agent.d.ts.map +1 -1
  16. package/dist/asset-manager/src/installer.d.ts +10 -0
  17. package/dist/asset-manager/src/installer.d.ts.map +1 -1
  18. package/dist/asset-manager/src/renderers.d.ts +5 -0
  19. package/dist/asset-manager/src/renderers.d.ts.map +1 -1
  20. package/dist/bridge/drivers/claude-sdk.js +16 -13
  21. package/dist/bridge/drivers/claude-sdk.js.map +1 -1
  22. package/dist/bridge/drivers/codex.js +43 -16
  23. package/dist/bridge/drivers/codex.js.map +1 -1
  24. package/dist/bridge/drivers/continue.js +10 -10
  25. package/dist/bridge/drivers/echo.js +2 -2
  26. package/dist/bridge/drivers/gemini.js +7 -7
  27. package/dist/bridge/drivers/goose.js +10 -10
  28. package/dist/bridge/drivers/omp.js +37 -10
  29. package/dist/bridge/drivers/omp.js.map +1 -1
  30. package/dist/bridge/drivers/opencode.js +10 -10
  31. package/dist/bridge/drivers/qwen.js +7 -7
  32. package/dist/bridge/index.js +12 -12
  33. package/dist/bridge/src/codex/config-toml.d.ts +8 -3
  34. package/dist/bridge/src/codex/config-toml.d.ts.map +1 -1
  35. package/dist/bridge/src/codex/managed-driver.d.ts.map +1 -1
  36. package/dist/bridge/src/drivers/claude-sdk.d.ts +1 -1
  37. package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
  38. package/dist/bridge/src/drivers/codex.d.ts.map +1 -1
  39. package/dist/bridge/src/drivers/omp-models-yml.d.ts.map +1 -1
  40. package/dist/bridge/src/drivers/omp.d.ts +9 -0
  41. package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
  42. package/dist/bridge/src/provider-materialize/credential-env.d.ts +15 -0
  43. package/dist/bridge/src/provider-materialize/credential-env.d.ts.map +1 -1
  44. package/dist/{chunk-4A4OD24G.js → chunk-27L6BBAT.js} +9 -9
  45. package/dist/{chunk-4A4OD24G.js.map → chunk-27L6BBAT.js.map} +1 -1
  46. package/dist/{chunk-HCEVNYSH.js → chunk-2JFIFDDO.js} +3 -3
  47. package/dist/{chunk-HCEVNYSH.js.map → chunk-2JFIFDDO.js.map} +1 -1
  48. package/dist/{chunk-3SM2DL2T.js → chunk-2X3JBVGD.js} +11 -10
  49. package/dist/chunk-2X3JBVGD.js.map +1 -0
  50. package/dist/{chunk-G4FFOV3N.js → chunk-3HUV2LJF.js} +4 -4
  51. package/dist/{chunk-G4FFOV3N.js.map → chunk-3HUV2LJF.js.map} +1 -1
  52. package/dist/{chunk-QZNJOHN6.js → chunk-3LVB3HGH.js} +3 -3
  53. package/dist/{chunk-QZNJOHN6.js.map → chunk-3LVB3HGH.js.map} +1 -1
  54. package/dist/{chunk-ZCAJZ4B2.js → chunk-6VLHITAM.js} +145 -3
  55. package/dist/chunk-6VLHITAM.js.map +1 -0
  56. package/dist/{chunk-J4RBUFGM.js → chunk-7CR2OZPA.js} +6 -6
  57. package/dist/{chunk-J4RBUFGM.js.map → chunk-7CR2OZPA.js.map} +1 -1
  58. package/dist/{chunk-HZXUXHIV.js → chunk-7QWQTA5S.js} +89 -12
  59. package/dist/chunk-7QWQTA5S.js.map +1 -0
  60. package/dist/{chunk-TCHRMVTO.js → chunk-7XWUJC3A.js} +4 -4
  61. package/dist/{chunk-TCHRMVTO.js.map → chunk-7XWUJC3A.js.map} +1 -1
  62. package/dist/{chunk-2F5AWQX5.js → chunk-C3BMXXTN.js} +137 -31
  63. package/dist/chunk-C3BMXXTN.js.map +1 -0
  64. package/dist/{chunk-ZPWTOUTK.js → chunk-CTP3XBMF.js} +7 -4
  65. package/dist/chunk-CTP3XBMF.js.map +1 -0
  66. package/dist/{chunk-GCHPUTA3.js → chunk-DCHQ6BAZ.js} +3 -3
  67. package/dist/{chunk-GCHPUTA3.js.map → chunk-DCHQ6BAZ.js.map} +1 -1
  68. package/dist/{chunk-DALV4HHP.js → chunk-DKXNKFKP.js} +3 -2
  69. package/dist/{chunk-DALV4HHP.js.map → chunk-DKXNKFKP.js.map} +1 -1
  70. package/dist/{chunk-X77SUM4P.js → chunk-G3X4MLDB.js} +3 -3
  71. package/dist/{chunk-X77SUM4P.js.map → chunk-G3X4MLDB.js.map} +1 -1
  72. package/dist/{chunk-CAHB6MHA.js → chunk-GWD3QNVS.js} +5 -5
  73. package/dist/{chunk-CAHB6MHA.js.map → chunk-GWD3QNVS.js.map} +1 -1
  74. package/dist/chunk-H5U7LNTJ.js +122 -0
  75. package/dist/chunk-H5U7LNTJ.js.map +1 -0
  76. package/dist/{chunk-QVFAS5IO.js → chunk-HYMERG57.js} +3 -3
  77. package/dist/{chunk-QVFAS5IO.js.map → chunk-HYMERG57.js.map} +1 -1
  78. package/dist/{chunk-R7NHYEJF.js → chunk-ICIYSJBQ.js} +4 -4
  79. package/dist/{chunk-R7NHYEJF.js.map → chunk-ICIYSJBQ.js.map} +1 -1
  80. package/dist/{chunk-YOH2L76X.js → chunk-ID745F3R.js} +353 -233
  81. package/dist/chunk-ID745F3R.js.map +1 -0
  82. package/dist/{chunk-PQFHMQHQ.js → chunk-JQ3DXNQV.js} +4 -4
  83. package/dist/{chunk-PQFHMQHQ.js.map → chunk-JQ3DXNQV.js.map} +1 -1
  84. package/dist/chunk-K4VOEYOR.js +21 -0
  85. package/dist/chunk-K4VOEYOR.js.map +1 -0
  86. package/dist/{chunk-XDKH7XSA.js → chunk-KVSDRB35.js} +5 -5
  87. package/dist/{chunk-XDKH7XSA.js.map → chunk-KVSDRB35.js.map} +1 -1
  88. package/dist/{chunk-47U4GZ4M.js → chunk-MF54ZHWT.js} +20 -3
  89. package/dist/chunk-MF54ZHWT.js.map +1 -0
  90. package/dist/{chunk-VLTQGE2E.js → chunk-N5M2EISA.js} +197 -52
  91. package/dist/chunk-N5M2EISA.js.map +1 -0
  92. package/dist/{chunk-T7CTHHG7.js → chunk-NDF24LYP.js} +3 -3
  93. package/dist/{chunk-T7CTHHG7.js.map → chunk-NDF24LYP.js.map} +1 -1
  94. package/dist/{chunk-CPWLNZGJ.js → chunk-NGJIVDDD.js} +3 -3
  95. package/dist/{chunk-CPWLNZGJ.js.map → chunk-NGJIVDDD.js.map} +1 -1
  96. package/dist/{chunk-FH7W6TJ4.js → chunk-NJV5SLEK.js} +104 -23
  97. package/dist/chunk-NJV5SLEK.js.map +1 -0
  98. package/dist/{chunk-M3B6EIJD.js → chunk-NJXR5OAM.js} +4 -4
  99. package/dist/{chunk-M3B6EIJD.js.map → chunk-NJXR5OAM.js.map} +1 -1
  100. package/dist/{chunk-CGYEHQOX.js → chunk-NOA6EJXE.js} +11 -2
  101. package/dist/chunk-NOA6EJXE.js.map +1 -0
  102. package/dist/{chunk-RYYLMBA2.js → chunk-NR7H7ZJP.js} +14 -6
  103. package/dist/chunk-NR7H7ZJP.js.map +1 -0
  104. package/dist/{chunk-OBYKJB4U.js → chunk-O2SYFJWP.js} +79 -5
  105. package/dist/chunk-O2SYFJWP.js.map +1 -0
  106. package/dist/{chunk-5LKOAX7I.js → chunk-OQ5MKDS3.js} +21 -5
  107. package/dist/chunk-OQ5MKDS3.js.map +1 -0
  108. package/dist/{chunk-CJERAGFY.js → chunk-P23WJCH2.js} +37 -11
  109. package/dist/chunk-P23WJCH2.js.map +1 -0
  110. package/dist/{chunk-NWDSLXOX.js → chunk-PHRNUTSG.js} +118 -118
  111. package/dist/chunk-PHRNUTSG.js.map +1 -0
  112. package/dist/{chunk-ALEYHUC5.js → chunk-PNOGX36L.js} +104 -24
  113. package/dist/chunk-PNOGX36L.js.map +1 -0
  114. package/dist/{chunk-BNMZVPYA.js → chunk-PNTXHTBC.js} +2 -2
  115. package/dist/{chunk-BNMZVPYA.js.map → chunk-PNTXHTBC.js.map} +1 -1
  116. package/dist/{chunk-GV4DZ6MT.js → chunk-POQ6PGNE.js} +4 -4
  117. package/dist/{chunk-GV4DZ6MT.js.map → chunk-POQ6PGNE.js.map} +1 -1
  118. package/dist/{chunk-T42WRQ4O.js → chunk-QCEKGYHF.js} +3 -3
  119. package/dist/{chunk-T42WRQ4O.js.map → chunk-QCEKGYHF.js.map} +1 -1
  120. package/dist/{chunk-EDYHEMJA.js → chunk-SHQMPGOL.js} +4 -4
  121. package/dist/{chunk-EDYHEMJA.js.map → chunk-SHQMPGOL.js.map} +1 -1
  122. package/dist/{chunk-S3O3GKB7.js → chunk-SMT3LNAG.js} +4 -4
  123. package/dist/{chunk-S3O3GKB7.js.map → chunk-SMT3LNAG.js.map} +1 -1
  124. package/dist/{chunk-PBBPZYVG.js → chunk-T5TSLSRO.js} +110 -44
  125. package/dist/chunk-T5TSLSRO.js.map +1 -0
  126. package/dist/{chunk-DZMNFCWB.js → chunk-TVAR4JHA.js} +530 -126
  127. package/dist/chunk-TVAR4JHA.js.map +1 -0
  128. package/dist/{chunk-COH6FQAG.js → chunk-UTKENBB6.js} +5 -5
  129. package/dist/{chunk-COH6FQAG.js.map → chunk-UTKENBB6.js.map} +1 -1
  130. package/dist/{chunk-XUSALIEI.js → chunk-VRLKHL74.js} +6 -6
  131. package/dist/{chunk-XUSALIEI.js.map → chunk-VRLKHL74.js.map} +1 -1
  132. package/dist/{chunk-WSBKB4CJ.js → chunk-WI4T3KIS.js} +51 -16
  133. package/dist/chunk-WI4T3KIS.js.map +1 -0
  134. package/dist/{chunk-D3B36CYC.js → chunk-X3RMRJNR.js} +4 -3
  135. package/dist/chunk-X3RMRJNR.js.map +1 -0
  136. package/dist/{chunk-IER3KIPH.js → chunk-X6LKA3TJ.js} +5 -5
  137. package/dist/{chunk-IER3KIPH.js.map → chunk-X6LKA3TJ.js.map} +1 -1
  138. package/dist/{chunk-Y3HTGHJC.js → chunk-XMAJJPA4.js} +3 -3
  139. package/dist/{chunk-Y3HTGHJC.js.map → chunk-XMAJJPA4.js.map} +1 -1
  140. package/dist/{chunk-SBSA3IQA.js → chunk-XTVSNWLL.js} +19 -7
  141. package/dist/chunk-XTVSNWLL.js.map +1 -0
  142. package/dist/{chunk-MZG34MBZ.js → chunk-XZY6SBGU.js} +3 -3
  143. package/dist/{chunk-MZG34MBZ.js.map → chunk-XZY6SBGU.js.map} +1 -1
  144. package/dist/{chunk-6O2X3GPW.js → chunk-YQU2BPQD.js} +7 -5
  145. package/dist/chunk-YQU2BPQD.js.map +1 -0
  146. package/dist/cli/index.js +1077 -497
  147. package/dist/cli/index.js.map +1 -1
  148. package/dist/cli/src/agent-checks.d.ts +40 -0
  149. package/dist/cli/src/agent-checks.d.ts.map +1 -0
  150. package/dist/cli/src/asset-feeds.d.ts.map +1 -1
  151. package/dist/cli/src/commands/asset-cmd.d.ts.map +1 -1
  152. package/dist/cli/src/commands/catalog.d.ts +24 -0
  153. package/dist/cli/src/commands/catalog.d.ts.map +1 -1
  154. package/dist/cli/src/commands/config.d.ts.map +1 -1
  155. package/dist/cli/src/commands/diff.d.ts.map +1 -1
  156. package/dist/cli/src/commands/integration.d.ts.map +1 -1
  157. package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
  158. package/dist/cli/src/commands/library-publish.d.ts.map +1 -1
  159. package/dist/cli/src/commands/mcp-server.d.ts +1 -1
  160. package/dist/cli/src/commands/migrate-assets.d.ts +2 -1
  161. package/dist/cli/src/commands/migrate-assets.d.ts.map +1 -1
  162. package/dist/cli/src/commands/migrate.d.ts.map +1 -1
  163. package/dist/cli/src/commands/plugin/claude-code.d.ts +1 -1
  164. package/dist/cli/src/commands/plugin/claude-code.d.ts.map +1 -1
  165. package/dist/cli/src/commands/plugin/types.d.ts +1 -1
  166. package/dist/cli/src/commands/plugin-registry-cmd.d.ts.map +1 -1
  167. package/dist/cli/src/commands/project.d.ts.map +1 -1
  168. package/dist/cli/src/commands/publish-core.d.ts +5 -0
  169. package/dist/cli/src/commands/publish-core.d.ts.map +1 -1
  170. package/dist/cli/src/commands/run.d.ts +2 -1
  171. package/dist/cli/src/commands/run.d.ts.map +1 -1
  172. package/dist/cli/src/commands/serve-preflight.d.ts +22 -0
  173. package/dist/cli/src/commands/serve-preflight.d.ts.map +1 -0
  174. package/dist/cli/src/commands/serve.d.ts.map +1 -1
  175. package/dist/cli/src/commands/source-manifest-publish.d.ts.map +1 -1
  176. package/dist/cli/src/commands/source-manifest.d.ts.map +1 -1
  177. package/dist/cli/src/commands/source.d.ts.map +1 -1
  178. package/dist/cli/src/commands/store.d.ts.map +1 -1
  179. package/dist/cli/src/commands/tree.d.ts.map +1 -1
  180. package/dist/cli/src/commands/update.d.ts.map +1 -1
  181. package/dist/cli/src/commands/validate.d.ts.map +1 -1
  182. package/dist/cli/src/commands/why.d.ts.map +1 -1
  183. package/dist/cli/src/curated-manifests.d.ts +21 -0
  184. package/dist/cli/src/curated-manifests.d.ts.map +1 -0
  185. package/dist/cli/src/index-busy.d.ts +8 -0
  186. package/dist/cli/src/index-busy.d.ts.map +1 -0
  187. package/dist/cli/src/plugin-store/paths.d.ts +7 -3
  188. package/dist/cli/src/plugin-store/paths.d.ts.map +1 -1
  189. package/dist/cli/src/skill-checks.d.ts +15 -2
  190. package/dist/cli/src/skill-checks.d.ts.map +1 -1
  191. package/dist/cli/src/store-addable.d.ts +18 -0
  192. package/dist/cli/src/store-addable.d.ts.map +1 -0
  193. package/dist/connectors/config.js +5 -5
  194. package/dist/connectors/index.js +16 -16
  195. package/dist/{connectors-4QWAKPHB.js → connectors-UNKUKEPG.js} +19 -19
  196. package/dist/{connectors-4QWAKPHB.js.map → connectors-UNKUKEPG.js.map} +1 -1
  197. package/dist/core/index.js +7 -7
  198. package/dist/core/logging.js +1 -1
  199. package/dist/core/manifest.js +2 -2
  200. package/dist/core/models.js +1 -1
  201. package/dist/core/publish-manifest.js +2 -2
  202. package/dist/core/ref.js +1 -1
  203. package/dist/core/runtime-assets.js +5 -5
  204. package/dist/core/src/index.d.ts +5 -4
  205. package/dist/core/src/index.d.ts.map +1 -1
  206. package/dist/core/src/lock.d.ts +15 -5
  207. package/dist/core/src/lock.d.ts.map +1 -1
  208. package/dist/core/src/logging/sinks/sqlite-sink.d.ts.map +1 -1
  209. package/dist/core/src/manifest.d.ts +5 -0
  210. package/dist/core/src/manifest.d.ts.map +1 -1
  211. package/dist/core/src/models.d.ts +3 -3
  212. package/dist/core/src/package-manager.d.ts +19 -0
  213. package/dist/core/src/package-manager.d.ts.map +1 -0
  214. package/dist/core/src/publish-manifest.d.ts.map +1 -1
  215. package/dist/core/src/repo-manager.d.ts +11 -0
  216. package/dist/core/src/repo-manager.d.ts.map +1 -1
  217. package/dist/core/src/settings.d.ts +26 -6
  218. package/dist/core/src/settings.d.ts.map +1 -1
  219. package/dist/core/src/walker.d.ts +6 -1
  220. package/dist/core/src/walker.d.ts.map +1 -1
  221. package/dist/core/src/workspace-config.d.ts.map +1 -1
  222. package/dist/core/workspace-config.js +4 -4
  223. package/dist/deploy/index.js +7 -7
  224. package/dist/discovery/index.js +5 -5
  225. package/dist/{ensure-sources-2RONZKCU.js → ensure-sources-POMEQSTM.js} +19 -19
  226. package/dist/{ensure-sources-2RONZKCU.js.map → ensure-sources-POMEQSTM.js.map} +1 -1
  227. package/dist/factory-assets/connectors/box.js +16 -16
  228. package/dist/factory-assets/connectors/deploy.js +16 -16
  229. package/dist/factory-assets/connectors/devserver.js +16 -16
  230. package/dist/factory-assets/connectors/flow/adapter.js +16 -16
  231. package/dist/factory-assets/connectors/flow/contract/normalize.d.ts.map +1 -1
  232. package/dist/factory-assets/connectors/flow/contract.js +1 -1
  233. package/dist/factory-assets/connectors/flow/engine.js +9 -9
  234. package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -1
  235. package/dist/factory-assets/connectors/flow/run-flow.js +18 -18
  236. package/dist/factory-assets/connectors/flow.js +16 -16
  237. package/dist/factory-assets/connectors/git.js +16 -16
  238. package/dist/factory-assets/connectors/gmail.js +16 -16
  239. package/dist/factory-assets/connectors/googledrive.js +16 -16
  240. package/dist/factory-assets/connectors/local.js +16 -16
  241. package/dist/factory-assets/connectors/mattermost.js +16 -16
  242. package/dist/factory-assets/connectors/memory.js +16 -16
  243. package/dist/factory-assets/connectors/minio.js +16 -16
  244. package/dist/factory-assets/connectors/postgres.js +16 -16
  245. package/dist/factory-assets/connectors/s3.js +16 -16
  246. package/dist/factory-assets/connectors/sharepoint.js +16 -16
  247. package/dist/factory-assets/connectors/sqlite.js +16 -16
  248. package/dist/factory-assets/connectors/static-server.js +16 -16
  249. package/dist/factory-assets/connectors/tunnel.js +16 -16
  250. package/dist/factory-assets/connectors/webdav.js +16 -16
  251. package/dist/factory-assets/connectors/xstate-store.js +16 -16
  252. package/dist/factory-assets/connectors/xstate.js +16 -16
  253. package/dist/factory-assets/skills/authoring-skaile-assets/SKILL.md +10 -8
  254. package/dist/factory-assets/skills/authoring-skaile-manifests/SKILL.md +15 -11
  255. package/dist/factory-assets/skills/authoring-skaile-manifests/references/dependency-standard.md +12 -9
  256. package/dist/factory-assets/skills/skaile-author-asset/SKILL.md +2 -2
  257. package/dist/{flows-EQF2CH4U.js → flows-DVKMZKM4.js} +12 -12
  258. package/dist/{flows-EQF2CH4U.js.map → flows-DVKMZKM4.js.map} +1 -1
  259. package/dist/{helpers-CFK6YP6R.js → helpers-Y4OT7VIS.js} +19 -19
  260. package/dist/{helpers-CFK6YP6R.js.map → helpers-Y4OT7VIS.js.map} +1 -1
  261. package/dist/library/index.js +12 -12
  262. package/dist/library/install.js +4 -4
  263. package/dist/library/src/index.d.ts +2 -2
  264. package/dist/library/src/index.d.ts.map +1 -1
  265. package/dist/library/src/install/source-fetch-github.d.ts.map +1 -1
  266. package/dist/library/src/local/db.d.ts +2 -0
  267. package/dist/library/src/local/db.d.ts.map +1 -1
  268. package/dist/library/src/local/library-manager.d.ts +5 -0
  269. package/dist/library/src/local/library-manager.d.ts.map +1 -1
  270. package/dist/library/src/local/library.d.ts +5 -3
  271. package/dist/library/src/local/library.d.ts.map +1 -1
  272. package/dist/library/src/local/local-catalog-source.d.ts.map +1 -1
  273. package/dist/library/src/local/store-paths.d.ts +9 -0
  274. package/dist/library/src/local/store-paths.d.ts.map +1 -1
  275. package/dist/library/src/manifest-writer.d.ts.map +1 -1
  276. package/dist/library/src/remote/index.d.ts +1 -1
  277. package/dist/library/src/remote/index.d.ts.map +1 -1
  278. package/dist/library/src/remote/remote-catalog-source.d.ts +17 -0
  279. package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
  280. package/dist/library/src/sync/git-driver.d.ts.map +1 -1
  281. package/dist/{library-publish-53UTB3MB.js → library-publish-DI4Q5UOG.js} +45 -37
  282. package/dist/library-publish-DI4Q5UOG.js.map +1 -0
  283. package/dist/open-library-N6ESO6IK.js +40 -0
  284. package/dist/{open-library-BOSPJVID.js.map → open-library-N6ESO6IK.js.map} +1 -1
  285. package/dist/open-registry-CBZ5MWTT.js +32 -0
  286. package/dist/{open-registry-4FI7HKET.js.map → open-registry-CBZ5MWTT.js.map} +1 -1
  287. package/dist/paths-U6W6MQNQ.js +22 -0
  288. package/dist/{paths-SUS4S4YT.js.map → paths-U6W6MQNQ.js.map} +1 -1
  289. package/dist/{plugin-store-AGQDMING.js → plugin-store-XMZSPVBF.js} +48 -12
  290. package/dist/plugin-store-XMZSPVBF.js.map +1 -0
  291. package/dist/project-UP52HEHC.js +79 -0
  292. package/dist/{project-I55A4O2T.js.map → project-UP52HEHC.js.map} +1 -1
  293. package/dist/resolver/index.js +8 -8
  294. package/dist/runner/index.js +33 -33
  295. package/dist/runner/src/agent.d.ts.map +1 -1
  296. package/dist/runner/src/agents/in-process-host.d.ts.map +1 -1
  297. package/dist/runner/src/composition/index.d.ts +1 -0
  298. package/dist/runner/src/composition/index.d.ts.map +1 -1
  299. package/dist/runner/src/composition/prompt-sections.d.ts +7 -4
  300. package/dist/runner/src/composition/prompt-sections.d.ts.map +1 -1
  301. package/dist/runner/src/composition/resolve.d.ts +10 -1
  302. package/dist/runner/src/composition/resolve.d.ts.map +1 -1
  303. package/dist/runner/src/composition/verify.d.ts +29 -0
  304. package/dist/runner/src/composition/verify.d.ts.map +1 -0
  305. package/dist/runner/src/credential-notice.d.ts +14 -0
  306. package/dist/runner/src/credential-notice.d.ts.map +1 -0
  307. package/dist/runner/src/environment.d.ts.map +1 -1
  308. package/dist/runner/src/final-text.d.ts +17 -0
  309. package/dist/runner/src/final-text.d.ts.map +1 -0
  310. package/dist/runner/src/index.d.ts +2 -0
  311. package/dist/runner/src/index.d.ts.map +1 -1
  312. package/dist/runner/src/resource-handler.d.ts.map +1 -1
  313. package/dist/runner/src/serve.d.ts +13 -0
  314. package/dist/runner/src/serve.d.ts.map +1 -1
  315. package/dist/sdk/asset-manager.js +16 -16
  316. package/dist/sdk/bridge.js +12 -12
  317. package/dist/sdk/core.js +7 -7
  318. package/dist/sdk/flow.js +9 -9
  319. package/dist/sdk/index.js +36 -34
  320. package/dist/sdk/index.js.map +1 -1
  321. package/dist/sdk/resolver.js +8 -8
  322. package/dist/sdk/runner.js +33 -33
  323. package/dist/sdk/src/local-runtime.d.ts.map +1 -1
  324. package/dist/sdk/transport/ws/client.js +1 -1
  325. package/dist/sdk/transport/ws/server.js +1 -1
  326. package/dist/sdk/transport/ws.js +2 -2
  327. package/dist/sdk/transport.js +2 -2
  328. package/dist/serve-preflight-6P2JJEJ3.js +47 -0
  329. package/dist/serve-preflight-6P2JJEJ3.js.map +1 -0
  330. package/dist/{setup-7DQJKHUI.js → setup-5IRUH5OS.js} +24 -24
  331. package/dist/{setup-7DQJKHUI.js.map → setup-5IRUH5OS.js.map} +1 -1
  332. package/dist/{skills-NUEN5NDX.js → skills-HA36RFNM.js} +13 -13
  333. package/dist/{skills-NUEN5NDX.js.map → skills-HA36RFNM.js.map} +1 -1
  334. package/dist/source-DX5SGWEI.js +41 -0
  335. package/dist/{source-G2LV5LVD.js.map → source-DX5SGWEI.js.map} +1 -1
  336. package/dist/source-fetch-github-PIO6EMMF.js +4 -0
  337. package/dist/{source-fetch-github-QN4LLTL5.js.map → source-fetch-github-PIO6EMMF.js.map} +1 -1
  338. package/dist/{source-manifest-publish-6RM7SWLZ.js → source-manifest-publish-NMRLXWVW.js} +27 -26
  339. package/dist/source-manifest-publish-NMRLXWVW.js.map +1 -0
  340. package/dist/transport/index.js +2 -2
  341. package/dist/transport/src/ws/client.d.ts +6 -0
  342. package/dist/transport/src/ws/client.d.ts.map +1 -1
  343. package/dist/transport/src/ws/server.d.ts +4 -0
  344. package/dist/transport/src/ws/server.d.ts.map +1 -1
  345. package/dist/transport/ws/client.js +1 -1
  346. package/dist/transport/ws/server.js +1 -1
  347. package/dist/transport/ws.js +2 -2
  348. package/dist/tui/index.js +58 -41
  349. package/dist/tui/index.js.map +1 -1
  350. package/dist/tui/src/repl-session.d.ts +1 -1
  351. package/dist/tui/src/repl-session.d.ts.map +1 -1
  352. package/dist/tui/src/repl.d.ts +3 -0
  353. package/dist/tui/src/repl.d.ts.map +1 -1
  354. package/dist/types/manifests.js +1 -1
  355. package/dist/types/src/manifests/agent-composition.d.ts +20 -0
  356. package/dist/types/src/manifests/agent-composition.d.ts.map +1 -1
  357. package/dist/types/src/manifests/agent.d.ts.map +1 -1
  358. package/dist/types/src/manifests/cron.d.ts +15 -0
  359. package/dist/types/src/manifests/cron.d.ts.map +1 -0
  360. package/dist/types/src/manifests/index.d.ts +3 -2
  361. package/dist/types/src/manifests/index.d.ts.map +1 -1
  362. package/dist/workspace-plugin/adapters/mcp.js +23 -23
  363. package/dist/workspace-plugin/adapters/omp.js +106 -51
  364. package/dist/workspace-plugin/adapters/omp.js.map +1 -1
  365. package/dist/workspace-plugin/index.js +2 -2
  366. package/dist/workspace-plugin/src/adapters/claude-code.d.ts.map +1 -1
  367. package/dist/workspace-plugin/src/adapters/omp.d.ts +11 -2
  368. package/dist/workspace-plugin/src/adapters/omp.d.ts.map +1 -1
  369. package/package.json +1 -1
  370. package/dist/asset-feeds-CXGQIDFR.js.map +0 -1
  371. package/dist/chunk-2F5AWQX5.js.map +0 -1
  372. package/dist/chunk-3SM2DL2T.js.map +0 -1
  373. package/dist/chunk-47U4GZ4M.js.map +0 -1
  374. package/dist/chunk-5LKOAX7I.js.map +0 -1
  375. package/dist/chunk-6O2X3GPW.js.map +0 -1
  376. package/dist/chunk-ALEYHUC5.js.map +0 -1
  377. package/dist/chunk-CGYEHQOX.js.map +0 -1
  378. package/dist/chunk-CJERAGFY.js.map +0 -1
  379. package/dist/chunk-D3B36CYC.js.map +0 -1
  380. package/dist/chunk-DZMNFCWB.js.map +0 -1
  381. package/dist/chunk-FH7W6TJ4.js.map +0 -1
  382. package/dist/chunk-HZXUXHIV.js.map +0 -1
  383. package/dist/chunk-NWDSLXOX.js.map +0 -1
  384. package/dist/chunk-OBYKJB4U.js.map +0 -1
  385. package/dist/chunk-PBBPZYVG.js.map +0 -1
  386. package/dist/chunk-R7FOF242.js +0 -59
  387. package/dist/chunk-R7FOF242.js.map +0 -1
  388. package/dist/chunk-RYYLMBA2.js.map +0 -1
  389. package/dist/chunk-SBSA3IQA.js.map +0 -1
  390. package/dist/chunk-VLTQGE2E.js.map +0 -1
  391. package/dist/chunk-WSBKB4CJ.js.map +0 -1
  392. package/dist/chunk-YOH2L76X.js.map +0 -1
  393. package/dist/chunk-ZCAJZ4B2.js.map +0 -1
  394. package/dist/chunk-ZPWTOUTK.js.map +0 -1
  395. package/dist/library-publish-53UTB3MB.js.map +0 -1
  396. package/dist/open-library-BOSPJVID.js +0 -40
  397. package/dist/open-registry-4FI7HKET.js +0 -32
  398. package/dist/paths-SUS4S4YT.js +0 -22
  399. package/dist/plugin-store-AGQDMING.js.map +0 -1
  400. package/dist/project-I55A4O2T.js +0 -41
  401. package/dist/source-G2LV5LVD.js +0 -41
  402. package/dist/source-fetch-github-QN4LLTL5.js +0 -4
  403. package/dist/source-manifest-publish-6RM7SWLZ.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,102 @@
1
1
  # Changelog
2
2
 
3
+ ## 5.12.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#1058](https://github.com/skaile-ai/workspaces/pull/1058) [`5b83a1b`](https://github.com/skaile-ai/workspaces/commit/5b83a1b31f6538877505565f86f4da82f70772b9) Thanks [@mortegro](https://github.com/mortegro)! - Rendered agents: one render on `add` and `install`, and layouts each harness loads.
8
+
9
+ - `skaile add agent:…` renders the agent after its composed skills and delegate sub-agents are in place, so the file already holds the `## Installed Abilities` block and a later `install`, `install --locked` or `update` leaves it alone (no `Updated` line, mtime unchanged). Before, the first `install` or `update` rewrote it (p84, p300).
10
+ - A locked agent that a fresh clone has not restored yet is told `run skaile install --locked`; `skaile add <ref>` is named only for a ref the lock does not have (p303).
11
+ - omp: the agent is also written as the flat `.omp/agents/<name>.md` omp lists next to `<name>/agent.yaml`; local `composes` dirs are copied next to the omp `agent.yaml` (`../x` becomes `./composes/x`) (p356, p418).
12
+ - The Claude Code model aliases (`inherit`, `opus`, `sonnet`, `haiku`) are no longer written into Codex and omp files (p419).
13
+ - A delegate sub-agent or `role` is told it is a sub-agent and lists only the connectors its slots are bound to (p420).
14
+ - Docs say which harness release loads the rendered files: omp 18.12.5 does, Codex 0.159.3 does not list `.codex/agents/*.toml` as spawnable agents (p428).
15
+ - `skaile init` gitignores `__pycache__/`, `*.pyc`, `.omp/system.md`, `.omp/sessions/` and `.codex/skaile-session-instructions.md`; the environment section says "isolated container" only inside a container (p326, p354).
16
+ - `skaile add --global` deploys to the harness of the project you run it in as well as every harness dir that exists under `~`, and prints the path per harness (p353).
17
+
18
+ - [#1058](https://github.com/skaile-ai/workspaces/pull/1058) [`5b83a1b`](https://github.com/skaile-ai/workspaces/commit/5b83a1b31f6538877505565f86f4da82f70772b9) Thanks [@mortegro](https://github.com/mortegro)! - Library authoring guards agree across `validate`, `library index`, `asset import`, `migrate assets` and `library publish`.
19
+
20
+ - `library publish`, `register` and `yank` exit 1 for `--asset ""` instead of selecting every asset (p106).
21
+ - `library index` exits 1 and prints no green line when it skips an asset with a non-semver version, as `validate` does (p222). A yaml-number version (`version: 1.0`) is shown as written with the quoted fix (`"1.0.0"`) by `validate`, `index` and `publish` (p229).
22
+ - A flow with no `nodes:` fails `validate`, `index` and the publish plan like `nodes: []` (p230). `publish` and `register` refuse a skill, agent, prompt or contract whose body is still the untouched scaffold; `validate` still only warns (p231).
23
+ - `validate` fails for a `skaile.manifest.yaml` that does not parse and names the file (p308). Every invalid `dependencies:` form prints the same line in `index` and `validate` and exits 1 (p310). A `dependencies:` entry with an invalid publisher is refused the same way.
24
+ - `asset import` runs the shared asset checks before it copies, exits 1 with `Not imported` when they fail, and no longer prints a success line or `add` hint for such a skill (p223). `asset import` and `asset migrate --mode copy` leave `.DS_Store`, `node_modules/`, `__pycache__/` and `*.pyc` out (p224). `asset migrate` names the commands that make the asset addable (p225).
25
+ - `migrate assets` writes no `publisher:` into a preset and prints `version <old> → <new>` when the version changes (p226); a root-level bundle moves into `<name>/<name>.preset.yaml`, which `index` and `validate` accept (p307).
26
+ - `validate versions --changed-only` notices an edited or new helper file of an asset (p322). `--changed-only` and `validate changelog` outside a git repository print one line naming the problem and no git usage text (p501).
27
+ - `validate` checks agent manifests for what the schema cannot see: a cron no scheduler reads, a capability naming an undeclared connector slot, a local compose path that does not exist, an agent composing itself, a missing or oversized memory source (p415).
28
+ - `skaile` prints no raw JSON log record on stdout (p47) and prints one line, exit 1, when the index database stays locked by another `skaile` process for 5 seconds (p228).
29
+ - `library index` writes `version: 0.1.0` into the manifest entry of an `AGENT.md` or `agent.yaml` agent that declares none, so the version and the lock key are the same in every library (p323).
30
+
31
+ - [#1058](https://github.com/skaile-ai/workspaces/pull/1058) [`5b83a1b`](https://github.com/skaile-ai/workspaces/commit/5b83a1b31f6538877505565f86f4da82f70772b9) Thanks [@mortegro](https://github.com/mortegro)! - `skaile run` uses the composed agent it locked.
32
+
33
+ - A hand edit of a pinned convention file (`SOUL.md`, `RULES.md`, `DUTIES.md`, `knowledge/`) after `skaile rebuild` is now a `composition_conflict` (`hash_mismatch`): `skaile run` stops at session start and `skaile check` prints one line per edited file and exits 1. Before, only the `Revision` changed and `check` exited 0.
34
+ - `skaile add agent:@pub/name` from a project `sources:` clone deploys what the agent `composes:` (skills, connectors, sub-agents) as requirements, so `check` and `install --locked` exit 0 and `remove` prunes them. Before, `check` called them fixable while `install` printed `Nothing to install`.
35
+ - `DUTIES.md` is part of the live system prompt of `skaile run` (the duties section); omp does not read it from the agent directory.
36
+ - A role instance's `model.preferred` is the model of its nested `agent.run` session. Before, the child started on the parent's model or the driver default.
37
+ - `skaile run --skill <name> --dry-run` prints the skill (source, version, requires) and each `prerequisites.files` entry as present or missing; an unknown skill exits 1.
38
+
39
+ - [#1058](https://github.com/skaile-ai/workspaces/pull/1058) [`5b83a1b`](https://github.com/skaile-ai/workspaces/commit/5b83a1b31f6538877505565f86f4da82f70772b9) Thanks [@mortegro](https://github.com/mortegro)! - Drivers (5.11.0 critique, RCV drivers):
40
+
41
+ - `skaile.yaml` alone owns `driver`. `config set model` writes only `model`; a personal `driver` no longer overrides the project harness (a warning says so), and `config show` names the file that set each key (p340).
42
+ - `skaile run` with omp 18.x prints the answer when the reply arrives in `message_start` (p341), and a successful one-shot turn no longer logs `prompt failed - omp process killed` (p342, p427).
43
+ - `skaile repl` reads piped stdin line by line and exits at EOF; with no `skaile.yaml` a non-terminal repl refuses and names `skaile init` (p343).
44
+ - `integration install --driver omp` writes a default-export extension omp 18 loads, calling `skaile integration omp-exec` (p345); `--driver claude-code` writes project-root `.mcp.json` (p346) and its hooks call `skaile integration hook` (p346b).
45
+ - codex: the session home is always created (p347); no credential fails at once with `codex driver needs OPENAI_API_KEY` (p348); the `openai` entry is rendered as `skaile-openai` (p363).
46
+ - `run --help` and `repl --help` build the driver list from the registry (p350); omp start failures name omp's last error line as text (p359); the missing-SDK hint prints the project's package manager (p361); a provider entry whose credential variable is unset is named and not handed to omp (p362).
47
+
48
+ - [#1058](https://github.com/skaile-ai/workspaces/pull/1058) [`5b83a1b`](https://github.com/skaile-ai/workspaces/commit/5b83a1b31f6538877505565f86f4da82f70772b9) Thanks [@mortegro](https://github.com/mortegro)! - Serve, protocol and plugins behave as documented.
49
+
50
+ - `plugin install` resolves the plugin entry from `exports`/`main` (loads under node), loads the plugin once and fails, restoring `skaile.yaml`, when it does not load (p450, p451).
51
+ - `skaile serve` gains `--host`, prints bind address and auth state, warns loudly when it runs without a token, checks the driver SDK before it reports ready, and prints one line on a busy port (p458, p466, p468).
52
+ - A major protocol mismatch emits `incompatible_protocol` and shuts the runner down (p454); `resource_request` accepts `resourceId` as an alias for `connectorId` (p455); an unknown command is answered with an `error` event (p457).
53
+ - `validate` fails on a connector with no `driver` (including the old `adapter` spelling) (p456).
54
+ - The WebSocket client reports the HTTP status of a refused handshake and an `error` event when another client takes the connection over (close code 4001, no reconnect) (p465, p467).
55
+ - The reconnect replay now sends `protocol_info` before the buffered events and the status (p469).
56
+ - `@skaile/workspaces/runner` types no longer pull drizzle into consumers' type-check (p461); `createAgentSession` no longer writes runner log lines to stdout (p473).
57
+
58
+ - [#1058](https://github.com/skaile-ai/workspaces/pull/1058) [`5b83a1b`](https://github.com/skaile-ai/workspaces/commit/5b83a1b31f6538877505565f86f4da82f70772b9) Thanks [@mortegro](https://github.com/mortegro)! - `skaile install --locked` restores every origin in full, and `check` notices what is missing.
59
+
60
+ - A source- or store-origin asset is restored by fetching its locked commit again and deploying every file its lock entry lists, not only its `.md` files (p320, p381). `check`, `doctor`, `outdated` and `diff` compare the deployed folder with that list too: a deleted `build.py` next to an intact `SKILL.md` is drift (exit 1, `<ref> is deployed without <files>`), and `install` / `install --locked` restore it (p382).
61
+ - A store-added asset (`skaile add skill:@admin/review`) is a first-class lock entry: `check`, `doctor` and `outdated` no longer fail with `locked but no source or library provides it any more`, `install --locked` restores it from the pinned commit (or from the bytes in `.skaile/cache/store/` when every file still hashes to the lock), and `install` heals what `check` fails on instead of printing `Nothing to install` (p380, p403).
62
+ - `outdated` counts only the commits that touch an asset's own folder, so a commit to `pirate-report` no longer marks `speak-like-a-pirate` as `1 commit(s) behind` (p397).
63
+ - `skaile.lock.yaml` is always written with `schema_version: 4`, whatever origins it holds. A lock written as `3` still loads and is rewritten as `4` by the next `add`, `install` or `update` (p398).
64
+ - `add`, `install` and `update` refuse to lock a source commit that is in no remote branch of its clone (`<url> clone has unpublished commit <sha>`), and `install --locked` exits 1 with `could not check out pin <sha>` when the pinned commit cannot be fetched, instead of deploying another commit's files and printing `Done` (p260).
65
+ - A re-lock (`install`, `update`) removes the `.env`, `.venv/` and `.pytest_cache/` files an earlier release copied into an asset folder and prints `Removed <file> (not part of <ref>)` for each (p309).
66
+
67
+ - [#1058](https://github.com/skaile-ai/workspaces/pull/1058) [`5b83a1b`](https://github.com/skaile-ai/workspaces/commit/5b83a1b31f6538877505565f86f4da82f70772b9) Thanks [@mortegro](https://github.com/mortegro)! - State commands give one verdict and name the fix.
68
+
69
+ - `skaile update` keeps a locked asset on its library when another library holds the same ref at the same version, also after `library rename`; a higher version elsewhere still wins.
70
+ - `skaile diff <ref>` fails with exit 1 when a requirement of the ref lost its library, when the ref is of a publisher the lock does not hold (`is not deployed — run skaile add <ref>`), and for a ref without a publisher that names no locked asset (`publisher required`); a ref without a publisher that names exactly one locked asset still diffs it.
71
+ - `skaile install` refuses a declared asset whose requirement nothing holds before it deploys or locks anything (`nothing was installed`, exit 1).
72
+ - `skaile info`, `why` and `tree` print one `parse error` line and exit 1 for a `skaile.yaml` that does not parse; `why` and `tree` outside a project print `No skaile.yaml found` and exit 1.
73
+ - `skaile update --catalog-only` exits 1 when the catalog cannot be refreshed and no longer says the re-deploy continues.
74
+ - `check` and `install --locked` say `(run skaile install)` for a requirement that `install` can deploy, not `(fixable)`.
75
+ - `skaile library push` of a library that is only behind says `behind origin by <n> commit(s); run skaile library pull <name>`. `library link` records the checked-out branch of an existing repo; a push without the configured branch names `library set <name> backendConfig.branch=<branch>`.
76
+ - `skaile run <word>` with no flow of that id exits 1 `Flow not found: <id>` and lists the near ids; only text with a space is a prompt.
77
+
78
+ - [#1058](https://github.com/skaile-ai/workspaces/pull/1058) [`5b83a1b`](https://github.com/skaile-ai/workspaces/commit/5b83a1b31f6538877505565f86f4da82f70772b9) Thanks [@mortegro](https://github.com/mortegro)! - Store and catalog commands list only what `add` can install, and offline answers are honest.
79
+
80
+ - `store search`/`show`/`search` list only refs `skaile add` installs: no agent, contract or mcp-server entries, no non-canonical names, no `test-`/`demo-` entries (`--all` shows the test/demo ones). A plain store search prints at most 20 rows and says how many more match. `store show` prints `Requires:`.
81
+ - `store search`, `search --store` and `add` say `store unreachable` or `Store search failed` with the catalog URL and the cause, point at `skaile catalog test`, and exit 1 when the store was asked for. `add` honours `cache_ttl: 0`.
82
+ - Offline, the cached list answers `store search --kind` and `store show` (file list marked unavailable).
83
+ - A GitHub rate limit names `SKAILE_GITHUB_PAT` and the reset time; anonymous store adds read the raw-content host and spend no API calls.
84
+ - A source with a repo-level `publisher:` and no `assets:` can be added; one bad `sources:` entry is named and skipped instead of failing every `add`.
85
+ - `source manifest init`/`edit`/`rebuild` commit the manifest in the store repo; `store search` lists local curated manifests; the init hint prints the repo URL.
86
+ - `source add <bare-name>` is rejected (no made-up `skaile-ai/<name>` clone); a failed clone leaves no empty folders.
87
+ - `sha256 not pinned` is no longer printed on `source sync`, `add` and `update`.
88
+ - `config set|get catalog.url|catalog.cache_ttl|catalog.framing` writes and reads `config.yaml`.
89
+
90
+ ### Patch Changes
91
+
92
+ - [#1058](https://github.com/skaile-ai/workspaces/pull/1058) [`5b83a1b`](https://github.com/skaile-ai/workspaces/commit/5b83a1b31f6538877505565f86f4da82f70772b9) Thanks [@mortegro](https://github.com/mortegro)! - `skaile` no longer prints internal log records on stdout. Until a command sets up its own log store, the CLI keeps only warnings and errors and writes them to stderr (`SKAILE_LOG_LEVEL` still overrides the level). Before, `library index`, `search --local` and `add` printed the raw JSON record `asset scan truncated (cycle)` on stdout when a library held a symlink to an ancestor. `skaile run <flow> --dry-run` prints its plan as plain `[dry-run] …` lines instead of `[info] [flow-connector:run:…]` log lines.
93
+
94
+ The index database (`index.db`) and the log database (`logs.db`) now wait up to 5 seconds for another `skaile` process that holds the write lock. When the wait runs out, `skaile` prints `The skaile index is busy (another skaile process holds it); retry in a moment.` and exits 1 instead of printing a `SQLITE_BUSY` stack trace.
95
+
96
+ - [#1058](https://github.com/skaile-ai/workspaces/pull/1058) [`5b83a1b`](https://github.com/skaile-ai/workspaces/commit/5b83a1b31f6538877505565f86f4da82f70772b9) Thanks [@mortegro](https://github.com/mortegro)! - The managed codex driver refuses an auth refresh request that arrives after its turn has ended. Before, a `turn/completed` read in the same chunk as a second refresh request let that request through and reset the turn's refresh budget.
97
+
98
+ - [#1058](https://github.com/skaile-ai/workspaces/pull/1058) [`5b83a1b`](https://github.com/skaile-ai/workspaces/commit/5b83a1b31f6538877505565f86f4da82f70772b9) Thanks [@mortegro](https://github.com/mortegro)! - Docs match 5.11.0. The three tutorials run end to end as written: tutorial 01 creates a skill with `--description` and says what the `TODO:` placeholder blocks, tutorial 02 shows the real `config show` output and the `driver`, `model` and `apiKey.<provider>` keys, and tutorial 03 builds a strict-v2 flow and runs it. The command pages (`index`, `run`, `repl`, `session`, `connector`, `asset`, `diff`, `library`, `misc`, `project`, `validate`, `source`, `store`, `catalog`, `plugin`, `serve`) list the options, exit codes and messages the CLI has now. The new `integration` page covers `skaile integration install | uninstall | enable | disable | status | hook`; `skaile plugin` documents `install | remove | list` and the rollback of a failed install. `protocol-v2.md` describes the `session_init` handshake the runner speaks (`protocol_info`, `session_init_ack`). Links in the docs use the routes the docs loader generates. The factory skills `authoring-skaile-assets`, `authoring-skaile-manifests` and `skaile-author-asset` list the `requires:` forms 5.11.0 deploys, say that the asset file's version wins over a manifest entry, and name the `manifest-compliance` skill.
99
+
3
100
  ## 5.11.0
4
101
 
5
102
  ### Minor Changes
package/README.md CHANGED
@@ -13,7 +13,7 @@ published package. Every internal folder is exposed as a subpath export and the
13
13
  | **bridge** | `@skaile/workspaces/bridge` | Pluggable agent driver abstraction. Harnesses: Claude SDK, Codex, OMP. |
14
14
  | **flow engine** | `@skaile/workspaces/factory-assets/connectors/flow/engine` | Flow state machine with typed bindings, precondition admission, consumed-output validation, deterministic routing, active strict v2 agent/function/gate/router/sub-flow nodes, and legacy skill compatibility. |
15
15
  | **flow contract** | `@skaile/workspaces/factory-assets/connectors/flow/contract` | Strict Flow v2 authoring schemas, v1 normalization, bounded expressions, binding origins, and canonical content identity. |
16
- | **resolver** | `@skaile/workspaces/resolver` | Parses SKILL.md requirements (reads_from, writes_to), validates gates, generates agent preamble. |
16
+ | **resolver** | `@skaile/workspaces/resolver` | Parses SKILL.md requirements (`metadata.prerequisites`), validates gates, generates the agent preamble. |
17
17
  | **client** | `@skaile/workspaces/client` | Framework-agnostic protocol client. Implements IAgentRuntime over a pluggable transport. |
18
18
  | **transport** | `@skaile/workspaces/transport` | Transport adapters (WebSocket client/server). Pluggable — add stdio, IPC, etc. |
19
19
  | **connectors** | `@skaile/workspaces/connectors` | Resource adapter infrastructure — unified access to git, postgres, redis, s3, sqlite, webdav, and more. |
@@ -25,7 +25,7 @@ published package. Every internal folder is exposed as a subpath export and the
25
25
  | **Vue bindings** | `@skaile/workspace-bridge-vue` | `useAgentStore` + `useResourceClient` for Vue 3.3+. Separate npm package, lives at [`packages/bridge-vue`](https://github.com/skaile-ai/workspaces/tree/main/packages/bridge-vue) in this monorepo. |
26
26
 
27
27
  Coding-agent plugin integration is **CLI-generated** — run
28
- `skaile plugin install --driver <claude-code|omp|codex>`. There are no separate
28
+ `skaile integration install --driver <claude-code|omp|codex>`. There are no separate
29
29
  plugin packages.
30
30
 
31
31
  ## Dependency Graph
@@ -1,29 +1,30 @@
1
- import { getKnownKinds } from './chunk-CAHB6MHA.js';
2
- import './chunk-TCHRMVTO.js';
3
- import './chunk-D3B36CYC.js';
1
+ import { storeNotInstallableReason } from './chunk-K4VOEYOR.js';
2
+ import { getKnownKinds } from './chunk-GWD3QNVS.js';
3
+ import './chunk-7XWUJC3A.js';
4
+ import './chunk-X3RMRJNR.js';
4
5
  import './chunk-7RGTAEG6.js';
5
6
  import './chunk-NUELZWCF.js';
6
- import './chunk-2F5AWQX5.js';
7
- import './chunk-J4RBUFGM.js';
8
- import './chunk-COH6FQAG.js';
9
- import './chunk-R7FOF242.js';
7
+ import './chunk-C3BMXXTN.js';
8
+ import './chunk-7CR2OZPA.js';
9
+ import './chunk-UTKENBB6.js';
10
+ import './chunk-H5U7LNTJ.js';
10
11
  import './chunk-3TXEJN4W.js';
11
- import './chunk-ZCAJZ4B2.js';
12
- import './chunk-PBBPZYVG.js';
12
+ import './chunk-6VLHITAM.js';
13
+ import './chunk-T5TSLSRO.js';
13
14
  import './chunk-4GY63JU6.js';
14
- import { factoryAssetRoots } from './chunk-EDYHEMJA.js';
15
+ import { factoryAssetRoots } from './chunk-SHQMPGOL.js';
15
16
  import './chunk-PMECEZK3.js';
16
17
  import './chunk-5BEFNLOR.js';
17
18
  import './chunk-A2ULN3KX.js';
18
- import { scanRepo } from './chunk-ALEYHUC5.js';
19
+ import { scanRepo } from './chunk-PNOGX36L.js';
19
20
  import './chunk-L5VSIPQD.js';
20
21
  import './chunk-CPSIPIX7.js';
21
- import './chunk-ZPWTOUTK.js';
22
+ import './chunk-CTP3XBMF.js';
22
23
  import './chunk-RVRB27AN.js';
23
- import { parseRequires } from './chunk-SBSA3IQA.js';
24
- import './chunk-BNMZVPYA.js';
24
+ import { parseRequires } from './chunk-XTVSNWLL.js';
25
+ import './chunk-PNTXHTBC.js';
25
26
  import './chunk-ICSCSM5D.js';
26
- import './chunk-DALV4HHP.js';
27
+ import './chunk-DKXNKFKP.js';
27
28
  import './chunk-MJHSLODD.js';
28
29
  import './chunk-C3CAXQMA.js';
29
30
  import './chunk-BOFL7GIF.js';
@@ -51,8 +52,8 @@ function libraryEntryOf(asset) {
51
52
  async function libraryAssets() {
52
53
  const notes = [];
53
54
  try {
54
- const { openLibraryManager } = await import('./open-library-BOSPJVID.js');
55
- const { getKindRegistry } = await import('./open-registry-4FI7HKET.js');
55
+ const { openLibraryManager } = await import('./open-library-N6ESO6IK.js');
56
+ const { getKindRegistry } = await import('./open-registry-CBZ5MWTT.js');
56
57
  const { scanAuthoringLibraries } = await import('./library/index.js');
57
58
  const { library: index, close } = await openLibraryManager();
58
59
  try {
@@ -85,10 +86,12 @@ async function libraryAssets() {
85
86
  async function storeAssets(projectDir) {
86
87
  const notes = [];
87
88
  try {
88
- const { resolveCatalogSource } = await import('./open-library-BOSPJVID.js');
89
+ const { resolveCatalogSource } = await import('./open-library-N6ESO6IK.js');
89
90
  const { source, close } = await resolveCatalogSource({ projectDir });
90
91
  try {
91
- const assets = await source.listAssets();
92
+ const assets = (await source.listAssets()).filter(
93
+ (a) => storeNotInstallableReason(a) === void 0
94
+ );
92
95
  const entries = assets.map((a) => ({
93
96
  name: a.name,
94
97
  kind: a.kind ?? "skill",
@@ -164,5 +167,5 @@ async function gatherAssetFeeds(am, projectDir) {
164
167
  }
165
168
 
166
169
  export { gatherAssetFeeds };
167
- //# sourceMappingURL=asset-feeds-CXGQIDFR.js.map
168
- //# sourceMappingURL=asset-feeds-CXGQIDFR.js.map
170
+ //# sourceMappingURL=asset-feeds-AM6PSSGM.js.map
171
+ //# sourceMappingURL=asset-feeds-AM6PSSGM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../cli/src/asset-feeds.ts"],"names":[],"mappings":"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","file":"asset-feeds-AM6PSSGM.js","sourcesContent":["/**\n * asset-feeds.ts — gather installable assets from every feed the manage TUI\n * surfaces.\n *\n * Four feeds, normalized into `CatalogEntry`:\n * - **Project sources** — `skaile.yaml` `sources:` entries (scanned via\n * `AssetManager.search()`; the new `sources:` field is merged into the\n * legacy repositories map in `AssetManager.loadConfig`).\n * - **Local libraries** — user authoring places from `LocalIndex`, read through\n * `scanAuthoringLibraries` (`@skaile/workspaces/library`): the same scan\n * `library index` / `search --local` use, so publishers and refs match them\n * (per-asset `publisher_overrides` honoured), `dev_paths` assets are left out,\n * and a library that fails to scan becomes one note while the rest stay listed.\n * - **Factory assets** — the bundled first-party `factory-assets` tree\n * (`factoryAssetRoots()`), scanned from disk. Always present; no network.\n * - **Remote store** — the configured catalog source when `catalog.url` is\n * not `local`. Failures are non-fatal — they surface as notes.\n */\n\nimport * as path from \"node:path\";\nimport {\n type AssetKind,\n type CatalogEntry,\n factoryAssetRoots,\n parseRequires,\n scanRepo,\n} from \"@skaile/workspaces/core\";\nimport { getKnownKinds } from \"./open-registry.ts\";\nimport { storeNotInstallableReason } from \"./store-addable.ts\";\nimport type { DiscoveredAsset } from \"@skaile/workspaces/discovery\";\n\n/** One non-fatal note returned to the caller for surfacing in the UI. */\nexport interface FeedNote {\n feed: \"sources\" | \"libraries\" | \"store\" | \"factory\";\n message: string;\n}\n\n/**\n * Which feed an asset came from. This is the top-level grouping axis in the\n * manage TUI (\"where is this skill coming from?\") and is intentionally distinct\n * from `publisher` (asset-intrinsic identity): the same publisher can legitimately\n * appear under more than one origin (e.g. a github repo you added as a `source`\n * that is also listed in the remote `store`).\n */\nexport type AssetOrigin = \"source\" | \"library\" | \"factory\" | \"store\";\n\n/** A catalog entry tagged with the feed it was gathered from. */\nexport interface OriginEntry {\n origin: AssetOrigin;\n entry: CatalogEntry;\n /**\n * Second-level grouping label for the manage tree. Defaults (when unset) to the\n * entry's `publisher`; the source feed sets it to the source's short repo name\n * so the Sources band groups by source — \"which repo did this come from\" — not\n * by the asset-intrinsic publisher.\n */\n group?: string;\n}\n\nexport interface AssetFeedResult {\n entries: OriginEntry[];\n notes: FeedNote[];\n}\n\n/**\n * Map one discovered library asset to the `CatalogEntry` the manage rows read.\n * `publisher` is the bare per-asset publisher (what `search --local` prints),\n * `source` the manifest path. `repo` is left unset: it only feeds the Sources-tree\n * org grouping. `requires` / `dependencies` come from the manifest the way the\n * scanner fills them — string `requires:` refs parsed to `{kind, name}`, a bundle's\n * string `dependencies:` list verbatim.\n */\nfunction libraryEntryOf(asset: DiscoveredAsset): CatalogEntry {\n const { manifest } = asset;\n const nested = (manifest.metadata as Record<string, unknown> | undefined)?.requires;\n const rawRequires = manifest.requires ?? nested;\n const requireRefs =\n typeof rawRequires === \"string\"\n ? rawRequires\n : Array.isArray(rawRequires)\n ? rawRequires.filter((r): r is string => typeof r === \"string\")\n : undefined;\n const deps = manifest.dependencies;\n return {\n name: asset.name,\n kind: asset.kind as AssetKind,\n description: typeof manifest.description === \"string\" ? manifest.description : \"\",\n source: asset.manifestPath,\n publisher: asset.publisher,\n ...(asset.plugin ? { plugin: asset.plugin } : {}),\n version: asset.version,\n requires: requireRefs === undefined ? [] : parseRequires({ requires: requireRefs }),\n dependencies:\n asset.kind === \"bundle\" && Array.isArray(deps)\n ? deps.filter((d): d is string => typeof d === \"string\" && d.length > 0)\n : [],\n };\n}\n\n/**\n * Pull assets from local libraries (the authoring places under\n * `~/.skaile/libraries/<name>/`, not the `~/.skaile/cache/sources/` cache) through\n * `scanAuthoringLibraries`, grouped under the bare library name\n * (`group: <name>`) so the manage TUI shows a clean `<name>` band — no\n * `library:` prefix (mirrors the source feed). Plugin grouping (`entry.plugin`)\n * comes from `DiscoveredAsset.plugin`. A library whose scan fails becomes one\n * `FeedNote`; the outer `catch` covers only opening the index.\n */\nasync function libraryAssets(): Promise<{\n entries: OriginEntry[];\n notes: FeedNote[];\n}> {\n const notes: FeedNote[] = [];\n try {\n // Lazy: the library subpath pulls in SQLite, which the other feeds never need.\n const { openLibraryManager } = await import(\"./open-library.ts\");\n const { getKindRegistry } = await import(\"./open-registry.ts\");\n const { scanAuthoringLibraries } = await import(\"@skaile/workspaces/library\");\n const { library: index, close } = await openLibraryManager();\n try {\n const entries: OriginEntry[] = [];\n for (const scan of await scanAuthoringLibraries(index, getKindRegistry())) {\n if (scan.error !== undefined) {\n notes.push({ feed: \"libraries\", message: `${scan.library.name}: ${scan.error}` });\n continue;\n }\n for (const asset of scan.assets) {\n entries.push({\n origin: \"library\",\n entry: libraryEntryOf(asset),\n group: scan.library.name,\n });\n }\n }\n return { entries, notes };\n } finally {\n close();\n }\n } catch (err) {\n notes.push({\n feed: \"libraries\",\n message: err instanceof Error ? err.message : String(err),\n });\n return { entries: [], notes };\n }\n}\n\n/**\n * Pull a (best-effort) snapshot of the connected remote store catalog.\n *\n * - Returns no entries when the resolved catalog is local-only or the host\n * is unreachable (the failure becomes a note, not an exception).\n * - Maps `CatalogAsset` → `CatalogEntry`, carrying `publisher`, `repo`, and\n * `category` straight through and using `source = \"store://<id>\"`; per-file\n * `source` paths are not available for remote assets so the canonical ref is\n * a stable placeholder.\n */\nasync function storeAssets(projectDir: string): Promise<{\n entries: CatalogEntry[];\n notes: FeedNote[];\n}> {\n const notes: FeedNote[] = [];\n try {\n const { resolveCatalogSource } = await import(\"./open-library.ts\");\n const { source, close } = await resolveCatalogSource({ projectDir });\n try {\n // The store lists only what `skaile add` can install (see store-addable.ts).\n const assets = (await source.listAssets()).filter(\n (a) => storeNotInstallableReason(a) === undefined,\n );\n const entries: CatalogEntry[] = assets.map((a) => ({\n name: a.name,\n kind: (a.kind as AssetKind) ?? \"skill\",\n description: a.description ?? \"\",\n source: `store://${a.id}`,\n publisher: a.publisher,\n repo: a.repo,\n plugin: a.plugin,\n category: a.category,\n version: a.version,\n requires: [],\n dependencies: [],\n }));\n return { entries, notes };\n } finally {\n close();\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n // Local-only catalog throws a recognizable message — silence it; absence\n // is the user's choice, not an error.\n if (!/local/i.test(msg)) {\n notes.push({ feed: \"store\", message: msg });\n }\n return { entries: [], notes };\n }\n}\n\n/** The slice of `AssetManager` the source feed needs (kept narrow for tests). */\ninterface AssetManagerLike {\n search: () => Promise<CatalogEntry[]>;\n searchRepoRoots: () => { repoName: string; root: string }[];\n}\n\n/**\n * Project-source feed: leans on `AssetManager.search()`, which merges\n * `skaile.yaml`'s `sources:` field into the repositories map. Plugin grouping\n * (`entry.plugin`) is stamped by the scanner, so entries pass through as-is.\n */\nasync function sourceAssets(am: AssetManagerLike): Promise<OriginEntry[]> {\n // The bundled factory tree is injected into the repositories map as an implicit\n // source, so `am.search()` returns it too. It has its own `factory` origin band,\n // so drop it here — otherwise the same first-party skills list twice under Sources.\n const factoryPrefixes = factoryAssetRoots().map((r) => (r.endsWith(path.sep) ? r : r + path.sep));\n const isFactoryPath = (p: string) =>\n factoryPrefixes.some((fp) => p === fp.slice(0, -1) || p.startsWith(fp));\n\n const all = (await am.search()).filter((e) => !isFactoryPath(e.source));\n const entries: OriginEntry[] = [];\n // Group each source's entries under the source node (its short repo name), not\n // the publisher: under Sources the navigational question is \"which repo did\n // this come from\". Each entry's `source` (absolute manifest path) lives under\n // exactly one declared root, so group by prefix. The cache slug is\n // URL-keyed `github.com/<org>/<repo>` — take the trailing segment.\n for (const { repoName, root } of am.searchRepoRoots()) {\n if (isFactoryPath(root)) continue;\n const prefix = root.endsWith(path.sep) ? root : root + path.sep;\n const owned = all.filter((e) => e.source === root || e.source.startsWith(prefix));\n if (owned.length === 0) continue;\n const sourceName = repoName.split(\"/\").pop() || repoName;\n for (const entry of owned) entries.push({ origin: \"source\", entry, group: sourceName });\n }\n return entries;\n}\n\n/**\n * Factory-asset feed: scan the bundled first-party `factory-assets` tree(s)\n * resolved by `factoryAssetRoots()` (the `SKAILE_FACTORY_ASSETS_DIR` override\n * layer ahead of the bundled tree). Local disk only, no network — the entries are\n * the built-in skills / connectors / bundles that ship with `@skaile/workspaces`.\n * `factoryAssetRoots()` already dedupes, so the env override pointing at the\n * bundled dir collapses to one root.\n */\nasync function factoryAssets(): Promise<{\n entries: CatalogEntry[];\n notes: FeedNote[];\n}> {\n const notes: FeedNote[] = [];\n try {\n const entries: CatalogEntry[] = [];\n for (const root of factoryAssetRoots()) {\n entries.push(...(await scanRepo(root, \"skaile-factory\", { knownKinds: getKnownKinds() })));\n }\n return { entries, notes };\n } catch (err) {\n notes.push({\n feed: \"factory\",\n message: err instanceof Error ? err.message : String(err),\n });\n return { entries: [], notes };\n }\n}\n\n/** Tag a flat entry list with a single origin. */\nfunction tag(origin: AssetOrigin, entries: CatalogEntry[]): OriginEntry[] {\n return entries.map((entry) => ({ origin, entry }));\n}\n\n/**\n * Run all feeds and return a single normalized result.\n *\n * Feeds run in parallel where possible — the store fetch is the slow one\n * (one HTTP call) and is fired alongside the local library walk. The factory\n * scan is local disk only, so it runs inline.\n */\nexport async function gatherAssetFeeds(\n am: AssetManagerLike,\n projectDir: string,\n): Promise<AssetFeedResult> {\n const [libs, store] = await Promise.all([libraryAssets(), storeAssets(projectDir)]);\n const factory = await factoryAssets();\n const src = await sourceAssets(am);\n return {\n entries: [\n ...src,\n ...libs.entries,\n ...tag(\"factory\", factory.entries),\n ...tag(\"store\", store.entries),\n ],\n notes: [...libs.notes, ...store.notes, ...factory.notes],\n };\n}\n"]}
@@ -1,19 +1,19 @@
1
- export { WORKSPACE_MOUNT_ENV_VAR, deployAll, deployCatalogEntry, findAiAssetsRoot, isUnderWorkspaceMount, resolveFlowSkills, undeployCatalogEntry, workspaceMountDirs } from '../chunk-GCHPUTA3.js';
2
- import '../chunk-PBBPZYVG.js';
1
+ export { WORKSPACE_MOUNT_ENV_VAR, deployAll, deployCatalogEntry, findAiAssetsRoot, isUnderWorkspaceMount, resolveFlowSkills, undeployCatalogEntry, workspaceMountDirs } from '../chunk-DCHQ6BAZ.js';
2
+ import '../chunk-T5TSLSRO.js';
3
3
  import '../chunk-4GY63JU6.js';
4
- import '../chunk-EDYHEMJA.js';
4
+ import '../chunk-SHQMPGOL.js';
5
5
  import '../chunk-PMECEZK3.js';
6
6
  import '../chunk-5BEFNLOR.js';
7
7
  import '../chunk-A2ULN3KX.js';
8
- import '../chunk-ALEYHUC5.js';
8
+ import '../chunk-PNOGX36L.js';
9
9
  import '../chunk-L5VSIPQD.js';
10
10
  import '../chunk-CPSIPIX7.js';
11
- import '../chunk-ZPWTOUTK.js';
11
+ import '../chunk-CTP3XBMF.js';
12
12
  import '../chunk-RVRB27AN.js';
13
- import '../chunk-SBSA3IQA.js';
14
- import '../chunk-BNMZVPYA.js';
13
+ import '../chunk-XTVSNWLL.js';
14
+ import '../chunk-PNTXHTBC.js';
15
15
  import '../chunk-ICSCSM5D.js';
16
- import '../chunk-DALV4HHP.js';
16
+ import '../chunk-DKXNKFKP.js';
17
17
  import '../chunk-MJHSLODD.js';
18
18
  import '../chunk-C3CAXQMA.js';
19
19
  import '../chunk-BOFL7GIF.js';
@@ -1,4 +1,4 @@
1
- export { BUILT_IN_FRAGMENTS, loadPromptExtensions, resolveFragments } from '../chunk-CGYEHQOX.js';
1
+ export { BUILT_IN_FRAGMENTS, loadPromptExtensions, resolveFragments } from '../chunk-NOA6EJXE.js';
2
2
  import '../chunk-NSBPE2FW.js';
3
3
  //# sourceMappingURL=fragments.js.map
4
4
  //# sourceMappingURL=fragments.js.map
@@ -1,30 +1,30 @@
1
- export { AssetManager, FACTORY_SOURCE_URL, MissingManifestError, installAgentInstances, normalizeRepoUrl, parseCanonicalLockKey, parseRefTolerant, renderMcpServerConfig, softDepName } from '../chunk-DZMNFCWB.js';
2
- import '../chunk-2F5AWQX5.js';
3
- import '../chunk-J4RBUFGM.js';
4
- import '../chunk-COH6FQAG.js';
5
- import '../chunk-R7FOF242.js';
1
+ export { AssetManager, FACTORY_SOURCE_URL, MissingManifestError, installAgentInstances, normalizeRepoUrl, parseCanonicalLockKey, parseRefTolerant, renderMcpServerConfig, softDepName } from '../chunk-TVAR4JHA.js';
2
+ import '../chunk-C3BMXXTN.js';
3
+ import '../chunk-7CR2OZPA.js';
4
+ import '../chunk-UTKENBB6.js';
5
+ import '../chunk-H5U7LNTJ.js';
6
6
  import '../chunk-3TXEJN4W.js';
7
- export { SCAFFOLD_KINDS, createScaffold, deployAll, installAgent, installTargetOf, removeAsset } from '../chunk-FH7W6TJ4.js';
8
- export { BUILT_IN_FRAGMENTS, loadPromptExtensions, resolveFragments } from '../chunk-CGYEHQOX.js';
7
+ export { SCAFFOLD_KINDS, createScaffold, deployAll, installAgent, installTargetOf, removeAsset } from '../chunk-NJV5SLEK.js';
8
+ export { BUILT_IN_FRAGMENTS, loadPromptExtensions, resolveFragments } from '../chunk-NOA6EJXE.js';
9
9
  export { appendHistory, clearHistory, getRecentHistory, loadHistory } from '../chunk-KTBKW2FI.js';
10
10
  import '../chunk-UQ6LFBPZ.js';
11
- export { AGENT_RENDERERS, claudeCodeRenderer, codexRenderer, driverTargetSupportsAgents, ompRenderer, renderAgentToFramework } from '../chunk-HZXUXHIV.js';
12
- import '../chunk-ZCAJZ4B2.js';
13
- import '../chunk-PBBPZYVG.js';
11
+ export { AGENT_RENDERERS, claudeCodeRenderer, codexRenderer, driverTargetSupportsAgents, ompRenderer, renderAgentToFramework } from '../chunk-7QWQTA5S.js';
12
+ import '../chunk-6VLHITAM.js';
13
+ import '../chunk-T5TSLSRO.js';
14
14
  import '../chunk-4GY63JU6.js';
15
- import '../chunk-EDYHEMJA.js';
15
+ import '../chunk-SHQMPGOL.js';
16
16
  import '../chunk-PMECEZK3.js';
17
17
  import '../chunk-5BEFNLOR.js';
18
18
  import '../chunk-A2ULN3KX.js';
19
- import '../chunk-ALEYHUC5.js';
19
+ import '../chunk-PNOGX36L.js';
20
20
  import '../chunk-L5VSIPQD.js';
21
21
  import '../chunk-CPSIPIX7.js';
22
- import '../chunk-ZPWTOUTK.js';
22
+ import '../chunk-CTP3XBMF.js';
23
23
  import '../chunk-RVRB27AN.js';
24
- import '../chunk-SBSA3IQA.js';
25
- import '../chunk-BNMZVPYA.js';
24
+ import '../chunk-XTVSNWLL.js';
25
+ import '../chunk-PNTXHTBC.js';
26
26
  import '../chunk-ICSCSM5D.js';
27
- import '../chunk-DALV4HHP.js';
27
+ import '../chunk-DKXNKFKP.js';
28
28
  import '../chunk-MJHSLODD.js';
29
29
  import '../chunk-C3CAXQMA.js';
30
30
  import '../chunk-BOFL7GIF.js';
@@ -1,22 +1,22 @@
1
- export { SCAFFOLD_KINDS, canonicalEntryRef, createScaffold, deployAll, deployAsset, deployedAssetDrift, diffDeployedAgent, installTargetOf, removeAsset } from '../chunk-FH7W6TJ4.js';
2
- import '../chunk-CGYEHQOX.js';
3
- import '../chunk-HZXUXHIV.js';
4
- import '../chunk-ZCAJZ4B2.js';
5
- import '../chunk-PBBPZYVG.js';
1
+ export { SCAFFOLD_KINDS, canonicalEntryRef, createScaffold, deployAll, deployAsset, deployedAssetDrift, diffDeployedAgent, installTargetOf, removeAsset, removeExcludedLeftovers } from '../chunk-NJV5SLEK.js';
2
+ import '../chunk-NOA6EJXE.js';
3
+ import '../chunk-7QWQTA5S.js';
4
+ import '../chunk-6VLHITAM.js';
5
+ import '../chunk-T5TSLSRO.js';
6
6
  import '../chunk-4GY63JU6.js';
7
- import '../chunk-EDYHEMJA.js';
7
+ import '../chunk-SHQMPGOL.js';
8
8
  import '../chunk-PMECEZK3.js';
9
9
  import '../chunk-5BEFNLOR.js';
10
10
  import '../chunk-A2ULN3KX.js';
11
- import '../chunk-ALEYHUC5.js';
11
+ import '../chunk-PNOGX36L.js';
12
12
  import '../chunk-L5VSIPQD.js';
13
13
  import '../chunk-CPSIPIX7.js';
14
- import '../chunk-ZPWTOUTK.js';
14
+ import '../chunk-CTP3XBMF.js';
15
15
  import '../chunk-RVRB27AN.js';
16
- import '../chunk-SBSA3IQA.js';
17
- import '../chunk-BNMZVPYA.js';
16
+ import '../chunk-XTVSNWLL.js';
17
+ import '../chunk-PNTXHTBC.js';
18
18
  import '../chunk-ICSCSM5D.js';
19
- import '../chunk-DALV4HHP.js';
19
+ import '../chunk-DKXNKFKP.js';
20
20
  import '../chunk-MJHSLODD.js';
21
21
  import '../chunk-C3CAXQMA.js';
22
22
  import '../chunk-BOFL7GIF.js';
@@ -1,20 +1,20 @@
1
- export { AGENT_RENDERERS, CODEX_IDENTITY_DIR, claudeCodeRenderer, codexRenderer, driverTargetSupportsAgents, ompRenderer, renderAgentToFramework } from '../chunk-HZXUXHIV.js';
2
- import '../chunk-ZCAJZ4B2.js';
3
- import '../chunk-PBBPZYVG.js';
1
+ export { AGENT_RENDERERS, CODEX_IDENTITY_DIR, claudeCodeRenderer, codexRenderer, driverTargetSupportsAgents, ompRenderer, renderAgentToFramework } from '../chunk-7QWQTA5S.js';
2
+ import '../chunk-6VLHITAM.js';
3
+ import '../chunk-T5TSLSRO.js';
4
4
  import '../chunk-4GY63JU6.js';
5
- import '../chunk-EDYHEMJA.js';
5
+ import '../chunk-SHQMPGOL.js';
6
6
  import '../chunk-PMECEZK3.js';
7
7
  import '../chunk-5BEFNLOR.js';
8
8
  import '../chunk-A2ULN3KX.js';
9
- import '../chunk-ALEYHUC5.js';
9
+ import '../chunk-PNOGX36L.js';
10
10
  import '../chunk-L5VSIPQD.js';
11
11
  import '../chunk-CPSIPIX7.js';
12
- import '../chunk-ZPWTOUTK.js';
12
+ import '../chunk-CTP3XBMF.js';
13
13
  import '../chunk-RVRB27AN.js';
14
- import '../chunk-SBSA3IQA.js';
15
- import '../chunk-BNMZVPYA.js';
14
+ import '../chunk-XTVSNWLL.js';
15
+ import '../chunk-PNTXHTBC.js';
16
16
  import '../chunk-ICSCSM5D.js';
17
- import '../chunk-DALV4HHP.js';
17
+ import '../chunk-DKXNKFKP.js';
18
18
  import '../chunk-MJHSLODD.js';
19
19
  import '../chunk-C3CAXQMA.js';
20
20
  import '../chunk-BOFL7GIF.js';
@@ -55,6 +55,11 @@ export interface FragmentContext {
55
55
  agentsDir: string;
56
56
  /** Sub-agent names from `manifest.requires[]`. */
57
57
  subAgents: string[];
58
+ /**
59
+ * `true` when the agent is rendered to be called by another agent (a `delegate` sub-agent, or a
60
+ * `role`): it is told it is a sub-agent, not the workspace's only agent.
61
+ */
62
+ subAgent?: boolean;
58
63
  /** Connectors declared in `skaile.yaml`. */
59
64
  connectors: ConnectorRef[];
60
65
  /** Resolved ability refs (installed skills). */
@@ -1 +1 @@
1
- {"version":3,"file":"fragments.d.ts","sourceRoot":"","sources":["../../../asset-manager/src/fragments.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,sFAAsF;IACtF,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,EAAE,EAAE,MAAM,CAAC;IACX,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,yFAAyF;IACzF,SAAS,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,4CAA4C;IAC5C,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,gDAAgD;IAChD,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,2DAA2D;IAC3D,YAAY,EAAE,WAAW,EAAE,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,SAAS,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;AA0F1F;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,MAAM,GAAG,IAAI,CAK1F,CAAC;AAIF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,eAAe,EACpB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,GAAG,SAAS,EACvD,aAAa,EAAE,MAAM,GACpB,MAAM,EAAE,CA4BV;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CASjG"}
1
+ {"version":3,"file":"fragments.d.ts","sourceRoot":"","sources":["../../../asset-manager/src/fragments.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,sFAAsF;IACtF,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,EAAE,EAAE,MAAM,CAAC;IACX,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,yFAAyF;IACzF,SAAS,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4CAA4C;IAC5C,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,gDAAgD;IAChD,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,2DAA2D;IAC3D,YAAY,EAAE,WAAW,EAAE,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,SAAS,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;AAmG1F;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,MAAM,GAAG,IAAI,CAK1F,CAAC;AAIF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,eAAe,EACpB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,GAAG,SAAS,EACvD,aAAa,EAAE,MAAM,GACpB,MAAM,EAAE,CA4BV;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CASjG"}