@skaile/workspaces 4.32.1 → 4.34.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 (248) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +3 -3
  3. package/dist/app-sdk/index.js +1 -1
  4. package/dist/{asset-feeds-TOJQTJYS.js → asset-feeds-EIHLRBUG.js} +11 -11
  5. package/dist/{asset-feeds-TOJQTJYS.js.map → asset-feeds-EIHLRBUG.js.map} +1 -1
  6. package/dist/asset-manager/catalog-deployer.js +5 -5
  7. package/dist/asset-manager/index.js +11 -11
  8. package/dist/asset-manager/installer.js +8 -8
  9. package/dist/asset-manager/renderers.js +2 -2
  10. package/dist/asset-manager/src/index.d.ts +30 -24
  11. package/dist/asset-manager/src/index.d.ts.map +1 -1
  12. package/dist/asset-manager/src/renderers.d.ts +2 -2
  13. package/dist/bridge/drivers/claude-sdk.js +10 -10
  14. package/dist/bridge/drivers/codex.js +8 -8
  15. package/dist/bridge/drivers/continue.js +10 -10
  16. package/dist/bridge/drivers/continue.js.map +1 -1
  17. package/dist/bridge/drivers/echo.js +3 -3
  18. package/dist/bridge/drivers/gemini.js +6 -6
  19. package/dist/bridge/drivers/goose.js +10 -10
  20. package/dist/bridge/drivers/goose.js.map +1 -1
  21. package/dist/bridge/drivers/omp.js +4 -4
  22. package/dist/bridge/drivers/omp.js.map +1 -1
  23. package/dist/bridge/drivers/opencode.js +11 -11
  24. package/dist/bridge/drivers/opencode.js.map +1 -1
  25. package/dist/bridge/drivers/qwen.js +6 -6
  26. package/dist/bridge/index.js +11 -11
  27. package/dist/bridge/src/capability-dispatch.d.ts +1 -1
  28. package/dist/bridge/src/drivers/_subprocess-cli.d.ts +3 -3
  29. package/dist/bridge/src/drivers/continue.d.ts +1 -1
  30. package/dist/bridge/src/drivers/gemini.d.ts +3 -3
  31. package/dist/bridge/src/drivers/goose.d.ts +1 -1
  32. package/dist/bridge/src/drivers/opencode.d.ts +1 -1
  33. package/dist/bridge/src/provider-materialize/continue-config-yaml.d.ts +2 -2
  34. package/dist/bridge/src/provider-materialize/credential-env.d.ts +4 -4
  35. package/dist/bridge/src/provider-materialize/env-drivers.d.ts +18 -18
  36. package/dist/bridge/src/provider-materialize/goose-custom-providers.d.ts +1 -1
  37. package/dist/bridge/src/provider-materialize/opencode-config.d.ts +1 -1
  38. package/dist/bridge/src/provider-materialize/session-config-home.d.ts +5 -5
  39. package/dist/bridge/src/registry.d.ts +10 -10
  40. package/dist/bridge/src/types.d.ts +9 -9
  41. package/dist/{chunk-JYWEWJ46.js → chunk-2EUW6NZD.js} +2 -2
  42. package/dist/{chunk-JYWEWJ46.js.map → chunk-2EUW6NZD.js.map} +1 -1
  43. package/dist/{chunk-WPISSDEI.js → chunk-3ELIPWCH.js} +6 -6
  44. package/dist/{chunk-WPISSDEI.js.map → chunk-3ELIPWCH.js.map} +1 -1
  45. package/dist/{chunk-HL6SZ7Z3.js → chunk-5YXKEM7Q.js} +7 -7
  46. package/dist/{chunk-HL6SZ7Z3.js.map → chunk-5YXKEM7Q.js.map} +1 -1
  47. package/dist/{chunk-ZRE4N6ZA.js → chunk-75LXFKQR.js} +4 -4
  48. package/dist/{chunk-ZRE4N6ZA.js.map → chunk-75LXFKQR.js.map} +1 -1
  49. package/dist/{chunk-GMXG2JGN.js → chunk-7ERHZQ7O.js} +3 -3
  50. package/dist/{chunk-GMXG2JGN.js.map → chunk-7ERHZQ7O.js.map} +1 -1
  51. package/dist/{chunk-JULFGNQN.js → chunk-7HJ6SFFF.js} +3 -3
  52. package/dist/{chunk-JULFGNQN.js.map → chunk-7HJ6SFFF.js.map} +1 -1
  53. package/dist/{chunk-DKCFWSVW.js → chunk-7LBPHRRP.js} +3 -3
  54. package/dist/chunk-7LBPHRRP.js.map +1 -0
  55. package/dist/{chunk-3GMRVUDA.js → chunk-AKBPLLFB.js} +5 -5
  56. package/dist/{chunk-3GMRVUDA.js.map → chunk-AKBPLLFB.js.map} +1 -1
  57. package/dist/{chunk-54A5QAIV.js → chunk-C3256F2F.js} +2 -2
  58. package/dist/{chunk-54A5QAIV.js.map → chunk-C3256F2F.js.map} +1 -1
  59. package/dist/{chunk-2JANXYTJ.js → chunk-DHLE66FV.js} +3 -3
  60. package/dist/{chunk-2JANXYTJ.js.map → chunk-DHLE66FV.js.map} +1 -1
  61. package/dist/{chunk-BR2IXOWX.js → chunk-DOF77WEV.js} +6 -6
  62. package/dist/{chunk-BR2IXOWX.js.map → chunk-DOF77WEV.js.map} +1 -1
  63. package/dist/{chunk-MENCWIHW.js → chunk-EB4ZTESQ.js} +4 -4
  64. package/dist/chunk-EB4ZTESQ.js.map +1 -0
  65. package/dist/{chunk-E2IZD74W.js → chunk-ENV5DDQ7.js} +6 -6
  66. package/dist/{chunk-E2IZD74W.js.map → chunk-ENV5DDQ7.js.map} +1 -1
  67. package/dist/{chunk-IXGNQP7Z.js → chunk-FDZL5QVZ.js} +3 -3
  68. package/dist/{chunk-IXGNQP7Z.js.map → chunk-FDZL5QVZ.js.map} +1 -1
  69. package/dist/{chunk-NJVXDRQY.js → chunk-GKTFGCQZ.js} +3 -3
  70. package/dist/chunk-GKTFGCQZ.js.map +1 -0
  71. package/dist/{chunk-CYESHAXV.js → chunk-JR2QQLAQ.js} +21 -21
  72. package/dist/{chunk-CYESHAXV.js.map → chunk-JR2QQLAQ.js.map} +1 -1
  73. package/dist/{chunk-5RHPNNWP.js → chunk-JRIU5GA7.js} +3 -3
  74. package/dist/{chunk-5RHPNNWP.js.map → chunk-JRIU5GA7.js.map} +1 -1
  75. package/dist/{chunk-OS4SXZTQ.js → chunk-JRSCSYRF.js} +6 -6
  76. package/dist/chunk-JRSCSYRF.js.map +1 -0
  77. package/dist/{chunk-34ZVTPDV.js → chunk-JS7DCCDA.js} +4 -4
  78. package/dist/{chunk-34ZVTPDV.js.map → chunk-JS7DCCDA.js.map} +1 -1
  79. package/dist/{chunk-F3HNW354.js → chunk-KIFJWSNC.js} +3 -3
  80. package/dist/{chunk-F3HNW354.js.map → chunk-KIFJWSNC.js.map} +1 -1
  81. package/dist/{chunk-TGLCW25T.js → chunk-LA7DCX2U.js} +4 -4
  82. package/dist/{chunk-TGLCW25T.js.map → chunk-LA7DCX2U.js.map} +1 -1
  83. package/dist/{chunk-DF7C3KZK.js → chunk-LRCSWOZO.js} +14 -14
  84. package/dist/chunk-LRCSWOZO.js.map +1 -0
  85. package/dist/{chunk-MVSF6AB4.js → chunk-MTWZ7KHZ.js} +3 -3
  86. package/dist/{chunk-MVSF6AB4.js.map → chunk-MTWZ7KHZ.js.map} +1 -1
  87. package/dist/{chunk-BU53MUL5.js → chunk-N2UGG6WV.js} +4 -4
  88. package/dist/{chunk-BU53MUL5.js.map → chunk-N2UGG6WV.js.map} +1 -1
  89. package/dist/{chunk-MNA22VPT.js → chunk-NVQLE4MK.js} +4 -4
  90. package/dist/{chunk-MNA22VPT.js.map → chunk-NVQLE4MK.js.map} +1 -1
  91. package/dist/{chunk-EOX3QH74.js → chunk-OS6256B2.js} +291 -27
  92. package/dist/chunk-OS6256B2.js.map +1 -0
  93. package/dist/{chunk-223FKFTC.js → chunk-OWN2W2IW.js} +109 -37
  94. package/dist/chunk-OWN2W2IW.js.map +1 -0
  95. package/dist/{chunk-U2I2BRCP.js → chunk-RHESVS7V.js} +9 -9
  96. package/dist/{chunk-U2I2BRCP.js.map → chunk-RHESVS7V.js.map} +1 -1
  97. package/dist/{chunk-G3N2ZCOJ.js → chunk-RR4PJZLK.js} +36 -35
  98. package/dist/chunk-RR4PJZLK.js.map +1 -0
  99. package/dist/{chunk-6GSZLKA5.js → chunk-T762W5CI.js} +3 -3
  100. package/dist/chunk-T762W5CI.js.map +1 -0
  101. package/dist/{chunk-3ZE7X5Y6.js → chunk-TB3LJ6NA.js} +3 -3
  102. package/dist/{chunk-3ZE7X5Y6.js.map → chunk-TB3LJ6NA.js.map} +1 -1
  103. package/dist/{chunk-N7B3LZ7V.js → chunk-TGE33MKN.js} +2 -2
  104. package/dist/{chunk-N7B3LZ7V.js.map → chunk-TGE33MKN.js.map} +1 -1
  105. package/dist/{chunk-3DZGPJU5.js → chunk-TGJIX77V.js} +11 -11
  106. package/dist/chunk-TGJIX77V.js.map +1 -0
  107. package/dist/{chunk-XVGB3K4B.js → chunk-TTITGVXV.js} +3 -3
  108. package/dist/{chunk-XVGB3K4B.js.map → chunk-TTITGVXV.js.map} +1 -1
  109. package/dist/{chunk-HGPSZXZP.js → chunk-VOXFI3XS.js} +3 -3
  110. package/dist/{chunk-HGPSZXZP.js.map → chunk-VOXFI3XS.js.map} +1 -1
  111. package/dist/{chunk-IT7ZHRCK.js → chunk-WFRVQ2RY.js} +10 -10
  112. package/dist/{chunk-IT7ZHRCK.js.map → chunk-WFRVQ2RY.js.map} +1 -1
  113. package/dist/{chunk-UNUQGYCW.js → chunk-Z2QI42YH.js} +3 -3
  114. package/dist/{chunk-UNUQGYCW.js.map → chunk-Z2QI42YH.js.map} +1 -1
  115. package/dist/{chunk-DMNYWLED.js → chunk-ZWTCXL3H.js} +3 -3
  116. package/dist/{chunk-DMNYWLED.js.map → chunk-ZWTCXL3H.js.map} +1 -1
  117. package/dist/cli/index.js +121 -121
  118. package/dist/cli/index.js.map +1 -1
  119. package/dist/cli/src/commands/catalog.d.ts +1 -1
  120. package/dist/cli/src/commands/integration.d.ts +2 -2
  121. package/dist/cli/src/commands/plugin/claude-code.d.ts +2 -2
  122. package/dist/cli/src/commands/plugin/codex.d.ts +2 -2
  123. package/dist/cli/src/commands/plugin/omp.d.ts +2 -2
  124. package/dist/cli/src/commands/plugin/types.d.ts +13 -13
  125. package/dist/cli/src/commands/plugin/types.d.ts.map +1 -1
  126. package/dist/cli/src/commands/run.d.ts +1 -1
  127. package/dist/connectors/config.js +3 -3
  128. package/dist/connectors/index.js +15 -15
  129. package/dist/connectors/src/watcher.d.ts +27 -0
  130. package/dist/connectors/src/watcher.d.ts.map +1 -1
  131. package/dist/connectors-shared/index.js +2 -2
  132. package/dist/core/driver-targets.js +1 -1
  133. package/dist/core/index.js +5 -5
  134. package/dist/core/runtime-assets.js +3 -3
  135. package/dist/core/src/driver-targets.d.ts +8 -8
  136. package/dist/core/src/index.d.ts +8 -2
  137. package/dist/core/src/index.d.ts.map +1 -1
  138. package/dist/core/src/settings.d.ts +1 -1
  139. package/dist/core/src/workspace-config.d.ts +16 -15
  140. package/dist/core/src/workspace-config.d.ts.map +1 -1
  141. package/dist/core/store.js +2 -2
  142. package/dist/core/workspace-config.js +2 -2
  143. package/dist/deploy/index.js +5 -5
  144. package/dist/discovery/index.js +2 -2
  145. package/dist/{ensure-sources-UJBLBTXI.js → ensure-sources-JR4QI2MY.js} +14 -14
  146. package/dist/{ensure-sources-UJBLBTXI.js.map → ensure-sources-JR4QI2MY.js.map} +1 -1
  147. package/dist/factory-assets/connectors/box.js +15 -15
  148. package/dist/factory-assets/connectors/deploy.js +15 -15
  149. package/dist/factory-assets/connectors/devserver.js +15 -15
  150. package/dist/factory-assets/connectors/flow/CONNECTOR.md +2 -2
  151. package/dist/factory-assets/connectors/flow/adapter.js +15 -15
  152. package/dist/factory-assets/connectors/flow/engine.js +6 -6
  153. package/dist/factory-assets/connectors/flow/run-flow.d.ts +1 -1
  154. package/dist/factory-assets/connectors/flow/run-flow.js +16 -16
  155. package/dist/factory-assets/connectors/flow/subprompt-runner.d.ts +3 -3
  156. package/dist/factory-assets/connectors/flow/subprompt-runner.d.ts.map +1 -1
  157. package/dist/factory-assets/connectors/flow.js +15 -15
  158. package/dist/factory-assets/connectors/git.js +15 -15
  159. package/dist/factory-assets/connectors/gmail.js +15 -15
  160. package/dist/factory-assets/connectors/googledrive.js +15 -15
  161. package/dist/factory-assets/connectors/local.js +15 -15
  162. package/dist/factory-assets/connectors/mattermost.js +15 -15
  163. package/dist/factory-assets/connectors/memory.js +15 -15
  164. package/dist/factory-assets/connectors/minio.js +15 -15
  165. package/dist/factory-assets/connectors/postgres.js +15 -15
  166. package/dist/factory-assets/connectors/s3.js +15 -15
  167. package/dist/factory-assets/connectors/sharepoint.js +15 -15
  168. package/dist/factory-assets/connectors/sqlite.js +15 -15
  169. package/dist/factory-assets/connectors/static-server.js +15 -15
  170. package/dist/factory-assets/connectors/tunnel.js +15 -15
  171. package/dist/factory-assets/connectors/webdav.js +15 -15
  172. package/dist/factory-assets/connectors/xstate-store.js +15 -15
  173. package/dist/factory-assets/connectors/xstate.js +15 -15
  174. package/dist/{flows-QTUSWYKY.js → flows-X7JFAVRR.js} +8 -8
  175. package/dist/{flows-QTUSWYKY.js.map → flows-X7JFAVRR.js.map} +1 -1
  176. package/dist/{helpers-QSRBM6LP.js → helpers-HTET53KB.js} +14 -14
  177. package/dist/{helpers-QSRBM6LP.js.map → helpers-HTET53KB.js.map} +1 -1
  178. package/dist/library/index.js +8 -8
  179. package/dist/{library-publish-JTS2PA2P.js → library-publish-T6KHQ3TE.js} +18 -18
  180. package/dist/{library-publish-JTS2PA2P.js.map → library-publish-T6KHQ3TE.js.map} +1 -1
  181. package/dist/{open-library-PIUYBOZI.js → open-library-O5I2DAEK.js} +16 -16
  182. package/dist/{open-library-PIUYBOZI.js.map → open-library-O5I2DAEK.js.map} +1 -1
  183. package/dist/{paths-IOOMNHTC.js → paths-OI5IIS22.js} +8 -8
  184. package/dist/{paths-IOOMNHTC.js.map → paths-OI5IIS22.js.map} +1 -1
  185. package/dist/plugin-registry/src/targets.d.ts +5 -5
  186. package/dist/plugin-registry/src/targets.d.ts.map +1 -1
  187. package/dist/{plugin-store-OIIPB2MQ.js → plugin-store-C67RLSPD.js} +7 -7
  188. package/dist/{plugin-store-OIIPB2MQ.js.map → plugin-store-C67RLSPD.js.map} +1 -1
  189. package/dist/{project-Y2BU3TSB.js → project-QIOXU2NS.js} +15 -15
  190. package/dist/{project-Y2BU3TSB.js.map → project-QIOXU2NS.js.map} +1 -1
  191. package/dist/resolver/index.js +5 -5
  192. package/dist/runner/index.js +20 -20
  193. package/dist/runner/src/external-mcp.d.ts +10 -0
  194. package/dist/runner/src/external-mcp.d.ts.map +1 -1
  195. package/dist/runner/src/lifecycle-handler.d.ts.map +1 -1
  196. package/dist/runner/src/logging-bootstrap.d.ts +5 -0
  197. package/dist/runner/src/logging-bootstrap.d.ts.map +1 -1
  198. package/dist/runner/src/manifest.d.ts +1 -1
  199. package/dist/runner/src/resources.d.ts.map +1 -1
  200. package/dist/runner/src/runner-capabilities.d.ts +2 -0
  201. package/dist/runner/src/runner-capabilities.d.ts.map +1 -1
  202. package/dist/runner/src/serve.d.ts +1 -1
  203. package/dist/runner/src/serve.d.ts.map +1 -1
  204. package/dist/runner/src/session-builder.d.ts +2 -2
  205. package/dist/runner/src/session.d.ts +1 -1
  206. package/dist/runner/src/session.d.ts.map +1 -1
  207. package/dist/runner/src/stall-watchdog.d.ts +53 -0
  208. package/dist/runner/src/stall-watchdog.d.ts.map +1 -0
  209. package/dist/sdk/asset-manager.js +11 -11
  210. package/dist/sdk/bridge.js +11 -11
  211. package/dist/sdk/core.js +5 -5
  212. package/dist/sdk/flow.js +6 -6
  213. package/dist/sdk/index.js +20 -20
  214. package/dist/sdk/resolver.js +5 -5
  215. package/dist/sdk/runner.js +20 -20
  216. package/dist/sdk/session.js +2 -2
  217. package/dist/sdk/types.js +1 -1
  218. package/dist/session/index.js +2 -2
  219. package/dist/{setup-VY5L44XZ.js → setup-SSGPDDWL.js} +20 -20
  220. package/dist/{setup-VY5L44XZ.js.map → setup-SSGPDDWL.js.map} +1 -1
  221. package/dist/{skills-DH75K326.js → skills-4YTVHMOH.js} +7 -7
  222. package/dist/{skills-DH75K326.js.map → skills-4YTVHMOH.js.map} +1 -1
  223. package/dist/{source-CKD4YPK4.js → source-NPU7ZWID.js} +17 -17
  224. package/dist/{source-CKD4YPK4.js.map → source-NPU7ZWID.js.map} +1 -1
  225. package/dist/{source-manifest-publish-KTSEBNHY.js → source-manifest-publish-4EYDVPR3.js} +19 -19
  226. package/dist/{source-manifest-publish-KTSEBNHY.js.map → source-manifest-publish-4EYDVPR3.js.map} +1 -1
  227. package/dist/tui/index.js +20 -20
  228. package/dist/types/index.js +1 -1
  229. package/dist/types/manifests.js +1 -1
  230. package/dist/types/src/manifests/agent.d.ts +4 -4
  231. package/dist/types/src/runtime.d.ts +4 -4
  232. package/dist/types/src/version.d.ts +10 -1
  233. package/dist/types/src/version.d.ts.map +1 -1
  234. package/dist/workspace-plugin/adapters/mcp.js +8 -8
  235. package/dist/workspace-plugin/adapters/omp.js +7 -7
  236. package/dist/workspace-plugin/index.js +1 -1
  237. package/dist/workspace-plugin/src/plugin.d.ts +1 -1
  238. package/package.json +1 -1
  239. package/dist/chunk-223FKFTC.js.map +0 -1
  240. package/dist/chunk-3DZGPJU5.js.map +0 -1
  241. package/dist/chunk-6GSZLKA5.js.map +0 -1
  242. package/dist/chunk-DF7C3KZK.js.map +0 -1
  243. package/dist/chunk-DKCFWSVW.js.map +0 -1
  244. package/dist/chunk-EOX3QH74.js.map +0 -1
  245. package/dist/chunk-G3N2ZCOJ.js.map +0 -1
  246. package/dist/chunk-MENCWIHW.js.map +0 -1
  247. package/dist/chunk-NJVXDRQY.js.map +0 -1
  248. package/dist/chunk-OS4SXZTQ.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # Changelog
2
2
 
3
+ ## 4.34.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#958](https://github.com/skaile-ai/workspaces/pull/958) [`1b00d09`](https://github.com/skaile-ai/workspaces/commit/1b00d09aef1d868f641fe544bfc62d58fc8a484b) Thanks [@mortegro](https://github.com/mortegro)! - Harness replaces backend as the word for a coding-agent product. Exported identifiers that said "backend" in that sense are renamed (`BackendDeclaredAsset` → `HarnessDeclaredAsset`, `AssetManagerOptions.backends` → `harnesses`, `resolveGlobalBackends` → `resolveGlobalHarnesses`, `globalBackendRoot` → `globalHarnessRoot`, with one-release `@deprecated` aliases for the removed package exports and the `backends` / `backend` options, `SkWorkspaceConfig.global_backends` → `global_harnesses`, `backendProviderName` / `backendModelSelector` → `harnessProviderName` / `harnessModelSelector`), the CLI option `--backend` on `skaile init`, `install`, `add`, `remove` and `list` is now `--harness` (no alias), and `~/.skaile/skaile.yaml` `global_backends:` is now `global_harnesses:` — the legacy spelling still parses and the CLI writes only the new one. `driver*` names are unchanged. See `MIGRATION.md`.
8
+
9
+ ## 4.33.0
10
+
11
+ ### Minor Changes
12
+
13
+ - [#957](https://github.com/skaile-ai/workspaces/pull/957) [`c3554ef`](https://github.com/skaile-ai/workspaces/commit/c3554ef6557a82fa94a6d871b5955b4ee451f430) Thanks [@Frozen666](https://github.com/Frozen666)! - `runner.lifecycle` `compact` takes an optional `trigger` (protocol 4.13.0). With `trigger: "hibernate"` the runner compacts and records the snapshot but does not reset the driver or prompt the agent to continue, so a pre-hibernate compaction no longer starts an agent turn while the container shuts down. Without the field, or with `"manual"`, a compaction behaves as before. A 4.12 runner refuses the field, so a host must check the protocol version first.
14
+
15
+ - [#955](https://github.com/skaile-ai/workspaces/pull/955) [`00caf65`](https://github.com/skaile-ai/workspaces/commit/00caf658a9d555b67530ea3792cae72816981def) Thanks [@Frozen666](https://github.com/Frozen666)! - The runner now accepts a secret reference as a remote MCP server's `url` (`url: mcp:<name>` in MCP.md) and resolves it in memory from the same `mcp:<name>` credential channel that header refs use. The platform needs this to store a URL that embeds a key as an encrypted secret instead of writing it into MCP.md. A plain URL keeps working unchanged. An unresolvable ref refuses the server before any request, and a resolved URL that does not parse fails with a fixed message that never contains the URL. Adds the shared `phase3b-mcp-url-ref-contract.md` fixture.
16
+
17
+ - [#952](https://github.com/skaile-ai/workspaces/pull/952) [`7ee7d9f`](https://github.com/skaile-ai/workspaces/commit/7ee7d9fe3c81add2b16e58d8bb4791b52d5b4d73) Thanks [@Frozen666](https://github.com/Frozen666)! - The runner logs a main-thread stall. A worker thread watches a heartbeat from the main event loop. When the loop has not run for more than 10 s (`SKAILE_RUNNER_STALL_WATCHDOG_MS`, `0` turns it off), the worker writes one `runner main thread stalled` warn into `logs.db` and stderr, naming the last recorded phase (driver restart, session rebuild step, `session_ready`, …). When the loop resumes, the runner logs `runner main thread stall ended` with the stall length.
18
+
19
+ ### Patch Changes
20
+
21
+ - [#956](https://github.com/skaile-ai/workspaces/pull/956) [`3f07bad`](https://github.com/skaile-ai/workspaces/commit/3f07bada09297726aea3cda2e529e2217ddefde8) Thanks [@Frozen666](https://github.com/Frozen666)! - The workspace file watcher (`createFsWatcher`) watches less. `.gitignore` patterns are now applied with git's anchoring rules to the absolute paths chokidar passes: a pattern such as `dist/` or `coverage/` used to be compiled as root-anchored and then never matched, so every nested build output stayed watched. Generated and cache directories (`.next`, `.turbo`, `.cache`, `storybook-static`, `.snapshots`, `__pycache__`, `.venv` and similar) are skipped at any depth even without a `.gitignore` entry. Each watcher logs its watched size when it is ready (a warning above 20,000 paths), and the first watcher warns when the runtime is a Bun older than 1.3.14, whose Linux `fs.watch` keeps one open fd per watched path and can spin a core after a burst of 128 or more events (oven-sh/bun#27667).
22
+
3
23
  ## 4.32.1
4
24
 
5
25
  ### Patch Changes
package/README.md CHANGED
@@ -10,7 +10,7 @@ published package. Every internal folder is exposed as a subpath export and the
10
10
  |---|---|---|
11
11
  | **core** | `@skaile/workspaces/core` | Shared types, manifest parsing, settings, store, framework config. Zero heavy deps. |
12
12
  | **types** | `@skaile/workspaces/types` | Unified message types, event types, and runtime interfaces. The shared contract. |
13
- | **bridge** | `@skaile/workspaces/bridge` | Pluggable agent driver abstraction. Backends: Claude SDK, Codex, OMP. |
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
16
  | **resolver** | `@skaile/workspaces/resolver` | Parses SKILL.md requirements (reads_from, writes_to), validates gates, generates agent preamble. |
@@ -68,7 +68,7 @@ cli (top-level CLI — orchestrates everything below)
68
68
  its interpolated instruction, resolved values and origins, reusable asset
69
69
  requirements, and predecessor context to the session agent.
70
70
 
71
- 4. **bridge** starts the LLM backend (Claude SDK or Codex in-process, or OMP as a subprocess) and streams `AgentEvent`s (defined in **types**) back to the runner.
71
+ 4. **bridge** starts the LLM harness (Claude SDK or Codex in-process, or OMP as a subprocess) and streams `AgentEvent`s (defined in **types**) back to the runner.
72
72
 
73
73
  5. If the workspace has connectors declared (`skaile.yaml` `connectors` section), **runner** uses **connectors** to connect, mount, and inject tools before each flow execution.
74
74
 
@@ -113,7 +113,7 @@ Node, or Python commands in the existing session workspace without a model
113
113
  turn, with resolved values exported as environment variables — a check's exit
114
114
  status is a pass/fail verdict rather than a plain success/failure. Subprompt
115
115
  nodes are `function`-shaped except for how the work runs: a second, isolated
116
- `AgentDriver` instance per call, with no Skaile system prompt, no MCP servers, no connector capabilities, and no access to the session conversation, bounded to a single turn. It does retain the backend's own native tool surface (a coding backend keeps its file and shell tools, rooted at the session workspace) — isolation here means a separate conversation, not a sandbox, resolving its declared `run.model` tier via a pure
116
+ `AgentDriver` instance per call, with no Skaile system prompt, no MCP servers, no connector capabilities, and no access to the session conversation, bounded to a single turn. It does retain the harness's own native tool surface (a coding harness keeps its file and shell tools, rooted at the session workspace) — isolation here means a separate conversation, not a sandbox, resolving its declared `run.model` tier via a pure
117
117
  `resolveModelTier` against per-provider built-in tiers, failing the node
118
118
  rather than substituting a model when a tier cannot be served. A declared output contract drives a JSON-response request and
119
119
  response parsing through the same consumed-output validation every kind uses;
@@ -1,4 +1,4 @@
1
- import { PROTOCOL_VERSION_STRING } from '../chunk-34ZVTPDV.js';
1
+ import { PROTOCOL_VERSION_STRING } from '../chunk-JS7DCCDA.js';
2
2
  import '../chunk-NSBPE2FW.js';
3
3
  import * as z from 'zod';
4
4
 
@@ -1,13 +1,13 @@
1
- import { assignDomain, buildDomainIndex, DOMAIN_MD_FILENAME, parseDomainMd } from './chunk-HGPSZXZP.js';
1
+ import { assignDomain, buildDomainIndex, DOMAIN_MD_FILENAME, parseDomainMd } from './chunk-VOXFI3XS.js';
2
2
  import './chunk-JXT46QFC.js';
3
- import './chunk-WPISSDEI.js';
3
+ import './chunk-3ELIPWCH.js';
4
4
  import './chunk-4GY63JU6.js';
5
- import { factoryAssetRoots } from './chunk-5RHPNNWP.js';
6
- import './chunk-F3HNW354.js';
5
+ import { factoryAssetRoots } from './chunk-JRIU5GA7.js';
6
+ import './chunk-KIFJWSNC.js';
7
7
  import './chunk-K5GBV4SA.js';
8
8
  import './chunk-QVZA2MDT.js';
9
- import { scanRepo } from './chunk-DF7C3KZK.js';
10
- import './chunk-MENCWIHW.js';
9
+ import { scanRepo } from './chunk-LRCSWOZO.js';
10
+ import './chunk-EB4ZTESQ.js';
11
11
  import './chunk-P4VHQA4N.js';
12
12
  import { walkDir, parseFrontmatter } from './chunk-2FBPAR2V.js';
13
13
  import './chunk-GEEW6SY2.js';
@@ -16,7 +16,7 @@ import './chunk-ICSCSM5D.js';
16
16
  import './chunk-MJHSLODD.js';
17
17
  import './chunk-C3CAXQMA.js';
18
18
  import './chunk-BOFL7GIF.js';
19
- import './chunk-N7B3LZ7V.js';
19
+ import './chunk-TGE33MKN.js';
20
20
  import './chunk-NSBPE2FW.js';
21
21
  import { existsSync, readFileSync } from 'fs';
22
22
  import * as path from 'path';
@@ -69,7 +69,7 @@ async function libraryAssets() {
69
69
  const domains = [];
70
70
  try {
71
71
  const [{ openLibraryManager }, { skaileHomeDir }, { getGlobalCacheDir }] = await Promise.all([
72
- import('./open-library-PIUYBOZI.js'),
72
+ import('./open-library-O5I2DAEK.js'),
73
73
  import('./library/index.js'),
74
74
  import('./core/index.js')
75
75
  ]);
@@ -102,7 +102,7 @@ async function libraryAssets() {
102
102
  async function storeAssets(projectDir) {
103
103
  const notes = [];
104
104
  try {
105
- const { resolveCatalogSource } = await import('./open-library-PIUYBOZI.js');
105
+ const { resolveCatalogSource } = await import('./open-library-O5I2DAEK.js');
106
106
  const { source, close } = await resolveCatalogSource({ projectDir });
107
107
  try {
108
108
  const assets = await source.listAssets();
@@ -206,5 +206,5 @@ function dedupeBySlug(domains) {
206
206
  }
207
207
 
208
208
  export { gatherAssetFeeds };
209
- //# sourceMappingURL=asset-feeds-TOJQTJYS.js.map
210
- //# sourceMappingURL=asset-feeds-TOJQTJYS.js.map
209
+ //# sourceMappingURL=asset-feeds-EIHLRBUG.js.map
210
+ //# sourceMappingURL=asset-feeds-EIHLRBUG.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../cli/src/asset-feeds.ts"],"names":[],"mappings":"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","file":"asset-feeds-TOJQTJYS.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` (filesystem\n * scan of each library's `path`).\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 { existsSync, readFileSync } from \"node:fs\";\nimport * as path from \"node:path\";\nimport {\n type AssetKind,\n type CatalogDomain,\n type CatalogEntry,\n factoryAssetRoots,\n parseFrontmatter,\n scanRepo,\n walkDir,\n} from \"@skaile/workspaces/core\";\nimport {\n assignDomain,\n buildDomainIndex,\n DOMAIN_MD_FILENAME,\n type DomainMd,\n parseDomainMd,\n} 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 /**\n * Display-only domain metadata, keyed (by the consumer) on `slug`. Populated\n * from the store's `catalog.listDomains` when the connected catalog source\n * exposes it; empty otherwise. The manage TUI joins `entry.domainSlug` → a\n * domain for grouping headers, descriptions, and relation badges.\n */\n domains: CatalogDomain[];\n notes: FeedNote[];\n}\n\n// ── Domain stamping (on-disk feeds) ──────────────────────────────────────────\n//\n// `scanRepo` (the source / library / factory scan path) does not read the\n// `DOMAIN.md` sidecars, so its entries arrive with no `domainSlug` and render\n// flat under their publisher band. We re-derive the grouping here from the\n// root's `DOMAIN.md` files (the same sidecars the remote store computes\n// server-side), and fall back to the repo/source name for any entry no domain\n// claims so it still groups instead of landing in the synthetic \"no domain\" pile.\n\n/** Repo-relative POSIX path (DOMAIN.md slugs are matched whole-segment, `/`-joined). */\nfunction toPosix(p: string): string {\n return p.split(path.sep).join(\"/\");\n}\n\n/** Parse every `DOMAIN.md` sidecar under `root` into a {@link DomainMd}. */\nasync function loadDomainMds(root: string): Promise<DomainMd[]> {\n const out: DomainMd[] = [];\n for await (const { path: filePath, name } of walkDir(root)) {\n if (name !== DOMAIN_MD_FILENAME) continue;\n try {\n const { data } = parseFrontmatter(readFileSync(filePath, \"utf8\"));\n out.push(parseDomainMd(toPosix(path.relative(root, filePath)), data));\n } catch {}\n }\n return out;\n}\n\n/**\n * Stamp `domainSlug` onto every entry scanned from `root` using the root's\n * `DOMAIN.md` sidecars. Returns the `CatalogDomain` registry for the real\n * domains, plus a synthetic fallback domain when any entry used the fallback.\n * Mutates `entries` in place (sets `entry.domainSlug`).\n *\n * `synthesizeFallback` (default true): entries no domain claims fall back to\n * `fallbackSlug` (the repo/source name). Pass `false` when the caller already\n * groups these entries one level up (e.g. the source feed groups by source\n * node) — unmatched entries then get no domain (`\"\"`) and hang directly under\n * that parent, instead of nesting under a same-named fallback domain.\n */\nasync function stampDomains(\n root: string,\n fallbackSlug: string,\n entries: CatalogEntry[],\n synthesizeFallback = true,\n): Promise<CatalogDomain[]> {\n const domainMds = await loadDomainMds(root);\n const assignables = entries.map((entry) => ({\n entry,\n ref: `${entry.kind}:${entry.name}`,\n relativePath: toPosix(path.relative(root, entry.source)),\n }));\n\n let usedFallback = false;\n for (const a of assignables) {\n const slug = assignDomain(a.relativePath, domainMds);\n if (slug) a.entry.domainSlug = slug;\n else if (synthesizeFallback) {\n a.entry.domainSlug = fallbackSlug;\n usedFallback = true;\n } else a.entry.domainSlug = \"\";\n }\n\n const { index } = buildDomainIndex(assignables, domainMds);\n const catalog: CatalogDomain[] = Object.values(index).map((d) => ({\n slug: d.slug,\n title: d.title,\n ...(d.description ? { description: d.description } : {}),\n ...(d.relation ? { relation: d.relation } : {}),\n ...(d.order !== undefined ? { order: d.order } : {}),\n ...(d.recommended[0] ? { recommendedRef: d.recommended[0] } : {}),\n }));\n if (usedFallback) catalog.push({ slug: fallbackSlug, title: fallbackSlug });\n return catalog;\n}\n\n/**\n * Pull assets from local libraries (the authoring places under\n * `~/.skaile/libraries/<name>/`, not the `~/.skaile/cache/sources/` cache). Each\n * library's `path` is scanned with `scanRepo` and grouped under the bare library\n * name (`group: <name>`) so the manage TUI shows a clean `<name>` band — no\n * `library:` prefix and no redundant same-named fallback domain (mirrors the\n * source feed).\n */\nasync function libraryAssets(): Promise<{\n entries: OriginEntry[];\n domains: CatalogDomain[];\n notes: FeedNote[];\n}> {\n const notes: FeedNote[] = [];\n const domains: CatalogDomain[] = [];\n try {\n const [{ openLibraryManager }, { skaileHomeDir }, { getGlobalCacheDir }] = await Promise.all([\n import(\"./open-library.ts\"),\n import(\"@skaile/workspaces/library\"),\n import(\"@skaile/workspaces/core\"),\n ]);\n const { manager, close } = await openLibraryManager();\n try {\n // Authoring libraries are the rows that are NOT source clones. index.db\n // rows predating the cache migration still carry the legacy\n // ~/.skaile/sources path, so exclude both roots.\n const newRoot = getGlobalCacheDir();\n const legacyRoot = path.join(skaileHomeDir(), \"sources\");\n const libs = (await manager.listLibraries()).filter(\n (l) => !l.path.startsWith(newRoot) && !l.path.startsWith(legacyRoot),\n );\n const entries: OriginEntry[] = [];\n for (const lib of libs) {\n if (!existsSync(lib.path)) continue;\n // Scan + group under the bare library name. `synthesizeFallback: false`\n // (as the source feed does) keeps domainless assets directly under the\n // library band instead of a redundant same-named fallback domain.\n const libEntries = [...(await scanRepo(lib.path, lib.name))];\n domains.push(...(await stampDomains(lib.path, lib.name, libEntries, false)));\n for (const entry of libEntries) entries.push({ origin: \"library\", entry, group: lib.name });\n }\n return { entries, domains, 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: [], domains, 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 domains: CatalogDomain[];\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 const assets = await source.listAssets();\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 domainSlug: a.domainSlug,\n category: a.category,\n version: a.version,\n requires: [],\n dependencies: [],\n }));\n // Domains are optional on the catalog source — only the store backend\n // (post Part 4 `catalog.listDomains`) exposes them. Duck-type the call so\n // older sources and the local catalog degrade to no domains, not an error.\n const domains = await loadDomains(source);\n return { entries, domains, 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: [], domains: [], notes };\n }\n}\n\n/** Optional `listDomains` capability — returns `[]` when the source lacks it. */\nasync function loadDomains(source: unknown): Promise<CatalogDomain[]> {\n const fn = (source as { listDomains?: () => Promise<CatalogDomain[]> }).listDomains;\n if (typeof fn !== \"function\") return [];\n const domains = await fn.call(source);\n return Array.isArray(domains) ? domains : [];\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 now merges\n * `skaile.yaml`'s `sources:` field into the repositories map, then stamps\n * `DOMAIN.md`-derived domain grouping onto the scanned entries via\n * `searchRepoRoots()`.\n */\nasync function sourceAssets(\n am: AssetManagerLike,\n): Promise<{ entries: OriginEntry[]; domains: CatalogDomain[] }> {\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 const domains: CatalogDomain[] = [];\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 + stamp 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 // No synthetic fallback domain — the source node already groups these, so a\n // same-named fallback would just nest the source under itself.\n domains.push(...(await stampDomains(root, sourceName, owned, false)));\n for (const entry of owned) entries.push({ origin: \"source\", entry, group: sourceName });\n }\n return { entries, domains };\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 domains: CatalogDomain[];\n notes: FeedNote[];\n}> {\n const notes: FeedNote[] = [];\n const domains: CatalogDomain[] = [];\n try {\n const entries: CatalogEntry[] = [];\n for (const root of factoryAssetRoots()) {\n const rootEntries = [...(await scanRepo(root, \"skaile-factory\"))];\n domains.push(...(await stampDomains(root, \"skaile-factory\", rootEntries)));\n entries.push(...rootEntries);\n }\n return { entries, domains, notes };\n } catch (err) {\n notes.push({\n feed: \"factory\",\n message: err instanceof Error ? err.message : String(err),\n });\n return { entries: [], domains, 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.entries,\n ...libs.entries,\n ...tag(\"factory\", factory.entries),\n ...tag(\"store\", store.entries),\n ],\n // Store domains first (server-curated), then the on-disk feeds; dedupe by\n // slug, first-wins, so a store-served domain shadows a same-slug local one.\n domains: dedupeBySlug([...store.domains, ...src.domains, ...libs.domains, ...factory.domains]),\n notes: [...libs.notes, ...store.notes, ...factory.notes],\n };\n}\n\n/** First-wins dedupe of a domain list by `slug`. */\nfunction dedupeBySlug(domains: CatalogDomain[]): CatalogDomain[] {\n const seen = new Set<string>();\n const out: CatalogDomain[] = [];\n for (const d of domains) {\n if (seen.has(d.slug)) continue;\n seen.add(d.slug);\n out.push(d);\n }\n return out;\n}\n"]}
1
+ {"version":3,"sources":["../cli/src/asset-feeds.ts"],"names":[],"mappings":"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","file":"asset-feeds-EIHLRBUG.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` (filesystem\n * scan of each library's `path`).\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 { existsSync, readFileSync } from \"node:fs\";\nimport * as path from \"node:path\";\nimport {\n type AssetKind,\n type CatalogDomain,\n type CatalogEntry,\n factoryAssetRoots,\n parseFrontmatter,\n scanRepo,\n walkDir,\n} from \"@skaile/workspaces/core\";\nimport {\n assignDomain,\n buildDomainIndex,\n DOMAIN_MD_FILENAME,\n type DomainMd,\n parseDomainMd,\n} 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 /**\n * Display-only domain metadata, keyed (by the consumer) on `slug`. Populated\n * from the store's `catalog.listDomains` when the connected catalog source\n * exposes it; empty otherwise. The manage TUI joins `entry.domainSlug` → a\n * domain for grouping headers, descriptions, and relation badges.\n */\n domains: CatalogDomain[];\n notes: FeedNote[];\n}\n\n// ── Domain stamping (on-disk feeds) ──────────────────────────────────────────\n//\n// `scanRepo` (the source / library / factory scan path) does not read the\n// `DOMAIN.md` sidecars, so its entries arrive with no `domainSlug` and render\n// flat under their publisher band. We re-derive the grouping here from the\n// root's `DOMAIN.md` files (the same sidecars the remote store computes\n// server-side), and fall back to the repo/source name for any entry no domain\n// claims so it still groups instead of landing in the synthetic \"no domain\" pile.\n\n/** Repo-relative POSIX path (DOMAIN.md slugs are matched whole-segment, `/`-joined). */\nfunction toPosix(p: string): string {\n return p.split(path.sep).join(\"/\");\n}\n\n/** Parse every `DOMAIN.md` sidecar under `root` into a {@link DomainMd}. */\nasync function loadDomainMds(root: string): Promise<DomainMd[]> {\n const out: DomainMd[] = [];\n for await (const { path: filePath, name } of walkDir(root)) {\n if (name !== DOMAIN_MD_FILENAME) continue;\n try {\n const { data } = parseFrontmatter(readFileSync(filePath, \"utf8\"));\n out.push(parseDomainMd(toPosix(path.relative(root, filePath)), data));\n } catch {}\n }\n return out;\n}\n\n/**\n * Stamp `domainSlug` onto every entry scanned from `root` using the root's\n * `DOMAIN.md` sidecars. Returns the `CatalogDomain` registry for the real\n * domains, plus a synthetic fallback domain when any entry used the fallback.\n * Mutates `entries` in place (sets `entry.domainSlug`).\n *\n * `synthesizeFallback` (default true): entries no domain claims fall back to\n * `fallbackSlug` (the repo/source name). Pass `false` when the caller already\n * groups these entries one level up (e.g. the source feed groups by source\n * node) — unmatched entries then get no domain (`\"\"`) and hang directly under\n * that parent, instead of nesting under a same-named fallback domain.\n */\nasync function stampDomains(\n root: string,\n fallbackSlug: string,\n entries: CatalogEntry[],\n synthesizeFallback = true,\n): Promise<CatalogDomain[]> {\n const domainMds = await loadDomainMds(root);\n const assignables = entries.map((entry) => ({\n entry,\n ref: `${entry.kind}:${entry.name}`,\n relativePath: toPosix(path.relative(root, entry.source)),\n }));\n\n let usedFallback = false;\n for (const a of assignables) {\n const slug = assignDomain(a.relativePath, domainMds);\n if (slug) a.entry.domainSlug = slug;\n else if (synthesizeFallback) {\n a.entry.domainSlug = fallbackSlug;\n usedFallback = true;\n } else a.entry.domainSlug = \"\";\n }\n\n const { index } = buildDomainIndex(assignables, domainMds);\n const catalog: CatalogDomain[] = Object.values(index).map((d) => ({\n slug: d.slug,\n title: d.title,\n ...(d.description ? { description: d.description } : {}),\n ...(d.relation ? { relation: d.relation } : {}),\n ...(d.order !== undefined ? { order: d.order } : {}),\n ...(d.recommended[0] ? { recommendedRef: d.recommended[0] } : {}),\n }));\n if (usedFallback) catalog.push({ slug: fallbackSlug, title: fallbackSlug });\n return catalog;\n}\n\n/**\n * Pull assets from local libraries (the authoring places under\n * `~/.skaile/libraries/<name>/`, not the `~/.skaile/cache/sources/` cache). Each\n * library's `path` is scanned with `scanRepo` and grouped under the bare library\n * name (`group: <name>`) so the manage TUI shows a clean `<name>` band — no\n * `library:` prefix and no redundant same-named fallback domain (mirrors the\n * source feed).\n */\nasync function libraryAssets(): Promise<{\n entries: OriginEntry[];\n domains: CatalogDomain[];\n notes: FeedNote[];\n}> {\n const notes: FeedNote[] = [];\n const domains: CatalogDomain[] = [];\n try {\n const [{ openLibraryManager }, { skaileHomeDir }, { getGlobalCacheDir }] = await Promise.all([\n import(\"./open-library.ts\"),\n import(\"@skaile/workspaces/library\"),\n import(\"@skaile/workspaces/core\"),\n ]);\n const { manager, close } = await openLibraryManager();\n try {\n // Authoring libraries are the rows that are NOT source clones. index.db\n // rows predating the cache migration still carry the legacy\n // ~/.skaile/sources path, so exclude both roots.\n const newRoot = getGlobalCacheDir();\n const legacyRoot = path.join(skaileHomeDir(), \"sources\");\n const libs = (await manager.listLibraries()).filter(\n (l) => !l.path.startsWith(newRoot) && !l.path.startsWith(legacyRoot),\n );\n const entries: OriginEntry[] = [];\n for (const lib of libs) {\n if (!existsSync(lib.path)) continue;\n // Scan + group under the bare library name. `synthesizeFallback: false`\n // (as the source feed does) keeps domainless assets directly under the\n // library band instead of a redundant same-named fallback domain.\n const libEntries = [...(await scanRepo(lib.path, lib.name))];\n domains.push(...(await stampDomains(lib.path, lib.name, libEntries, false)));\n for (const entry of libEntries) entries.push({ origin: \"library\", entry, group: lib.name });\n }\n return { entries, domains, 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: [], domains, 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 domains: CatalogDomain[];\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 const assets = await source.listAssets();\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 domainSlug: a.domainSlug,\n category: a.category,\n version: a.version,\n requires: [],\n dependencies: [],\n }));\n // Domains are optional on the catalog source — only the store backend\n // (post Part 4 `catalog.listDomains`) exposes them. Duck-type the call so\n // older sources and the local catalog degrade to no domains, not an error.\n const domains = await loadDomains(source);\n return { entries, domains, 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: [], domains: [], notes };\n }\n}\n\n/** Optional `listDomains` capability — returns `[]` when the source lacks it. */\nasync function loadDomains(source: unknown): Promise<CatalogDomain[]> {\n const fn = (source as { listDomains?: () => Promise<CatalogDomain[]> }).listDomains;\n if (typeof fn !== \"function\") return [];\n const domains = await fn.call(source);\n return Array.isArray(domains) ? domains : [];\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 now merges\n * `skaile.yaml`'s `sources:` field into the repositories map, then stamps\n * `DOMAIN.md`-derived domain grouping onto the scanned entries via\n * `searchRepoRoots()`.\n */\nasync function sourceAssets(\n am: AssetManagerLike,\n): Promise<{ entries: OriginEntry[]; domains: CatalogDomain[] }> {\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 const domains: CatalogDomain[] = [];\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 + stamp 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 // No synthetic fallback domain — the source node already groups these, so a\n // same-named fallback would just nest the source under itself.\n domains.push(...(await stampDomains(root, sourceName, owned, false)));\n for (const entry of owned) entries.push({ origin: \"source\", entry, group: sourceName });\n }\n return { entries, domains };\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 domains: CatalogDomain[];\n notes: FeedNote[];\n}> {\n const notes: FeedNote[] = [];\n const domains: CatalogDomain[] = [];\n try {\n const entries: CatalogEntry[] = [];\n for (const root of factoryAssetRoots()) {\n const rootEntries = [...(await scanRepo(root, \"skaile-factory\"))];\n domains.push(...(await stampDomains(root, \"skaile-factory\", rootEntries)));\n entries.push(...rootEntries);\n }\n return { entries, domains, notes };\n } catch (err) {\n notes.push({\n feed: \"factory\",\n message: err instanceof Error ? err.message : String(err),\n });\n return { entries: [], domains, 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.entries,\n ...libs.entries,\n ...tag(\"factory\", factory.entries),\n ...tag(\"store\", store.entries),\n ],\n // Store domains first (server-curated), then the on-disk feeds; dedupe by\n // slug, first-wins, so a store-served domain shadows a same-slug local one.\n domains: dedupeBySlug([...store.domains, ...src.domains, ...libs.domains, ...factory.domains]),\n notes: [...libs.notes, ...store.notes, ...factory.notes],\n };\n}\n\n/** First-wins dedupe of a domain list by `slug`. */\nfunction dedupeBySlug(domains: CatalogDomain[]): CatalogDomain[] {\n const seen = new Set<string>();\n const out: CatalogDomain[] = [];\n for (const d of domains) {\n if (seen.has(d.slug)) continue;\n seen.add(d.slug);\n out.push(d);\n }\n return out;\n}\n"]}
@@ -1,12 +1,12 @@
1
1
  export { WORKSPACE_MOUNT_ENV_VAR, deployAll, deployCatalogEntry, findAiAssetsRoot, isUnderWorkspaceMount, resolveFlowSkills, undeployCatalogEntry, workspaceMountDirs } from '../chunk-Q6NDQ6BH.js';
2
- import '../chunk-WPISSDEI.js';
2
+ import '../chunk-3ELIPWCH.js';
3
3
  import '../chunk-4GY63JU6.js';
4
- import '../chunk-5RHPNNWP.js';
5
- import '../chunk-F3HNW354.js';
4
+ import '../chunk-JRIU5GA7.js';
5
+ import '../chunk-KIFJWSNC.js';
6
6
  import '../chunk-K5GBV4SA.js';
7
7
  import '../chunk-QVZA2MDT.js';
8
- import '../chunk-DF7C3KZK.js';
9
- import '../chunk-MENCWIHW.js';
8
+ import '../chunk-LRCSWOZO.js';
9
+ import '../chunk-EB4ZTESQ.js';
10
10
  import '../chunk-P4VHQA4N.js';
11
11
  import '../chunk-2FBPAR2V.js';
12
12
  import '../chunk-GEEW6SY2.js';
@@ -1,19 +1,19 @@
1
- export { AssetManager, FACTORY_SOURCE_URL, MissingManifestError, NON_DEPLOYABLE_KINDS, normalizeRepoUrl, parseCanonicalLockKey, parseRefTolerant, renderMcpServerConfig, softDepName } from '../chunk-G3N2ZCOJ.js';
2
- import '../chunk-BR2IXOWX.js';
3
- import '../chunk-HGPSZXZP.js';
1
+ export { AssetManager, FACTORY_SOURCE_URL, MissingManifestError, NON_DEPLOYABLE_KINDS, normalizeRepoUrl, parseCanonicalLockKey, parseRefTolerant, renderMcpServerConfig, softDepName } from '../chunk-RR4PJZLK.js';
2
+ import '../chunk-DOF77WEV.js';
3
+ import '../chunk-VOXFI3XS.js';
4
4
  import '../chunk-VOEBLPXO.js';
5
5
  import '../chunk-R7FOF242.js';
6
6
  import '../chunk-JXT46QFC.js';
7
- export { createScaffold, deployAll, installAgent, removeAsset } from '../chunk-HL6SZ7Z3.js';
7
+ export { createScaffold, deployAll, installAgent, removeAsset } from '../chunk-5YXKEM7Q.js';
8
8
  export { BUILT_IN_FRAGMENTS, loadPromptExtensions, resolveFragments } from '../chunk-CGYEHQOX.js';
9
- import '../chunk-WPISSDEI.js';
9
+ import '../chunk-3ELIPWCH.js';
10
10
  import '../chunk-4GY63JU6.js';
11
- import '../chunk-5RHPNNWP.js';
12
- import '../chunk-F3HNW354.js';
11
+ import '../chunk-JRIU5GA7.js';
12
+ import '../chunk-KIFJWSNC.js';
13
13
  import '../chunk-K5GBV4SA.js';
14
14
  import '../chunk-QVZA2MDT.js';
15
- import '../chunk-DF7C3KZK.js';
16
- import '../chunk-MENCWIHW.js';
15
+ import '../chunk-LRCSWOZO.js';
16
+ import '../chunk-EB4ZTESQ.js';
17
17
  import '../chunk-P4VHQA4N.js';
18
18
  import '../chunk-2FBPAR2V.js';
19
19
  import '../chunk-GEEW6SY2.js';
@@ -24,8 +24,8 @@ import '../chunk-C3CAXQMA.js';
24
24
  import '../chunk-BOFL7GIF.js';
25
25
  export { appendHistory, clearHistory, getRecentHistory, loadHistory } from '../chunk-KTBKW2FI.js';
26
26
  import '../chunk-UQ6LFBPZ.js';
27
- export { AGENT_RENDERERS, claudeCodeRenderer, codexRenderer, driverTargetSupportsAgents, ompRenderer, renderAgentToFramework } from '../chunk-DKCFWSVW.js';
28
- import '../chunk-N7B3LZ7V.js';
27
+ export { AGENT_RENDERERS, claudeCodeRenderer, codexRenderer, driverTargetSupportsAgents, ompRenderer, renderAgentToFramework } from '../chunk-7LBPHRRP.js';
28
+ import '../chunk-TGE33MKN.js';
29
29
  import '../chunk-NSBPE2FW.js';
30
30
  //# sourceMappingURL=index.js.map
31
31
  //# sourceMappingURL=index.js.map
@@ -1,13 +1,13 @@
1
- export { createScaffold, deployAll, deployAsset, removeAsset } from '../chunk-HL6SZ7Z3.js';
1
+ export { createScaffold, deployAll, deployAsset, removeAsset } from '../chunk-5YXKEM7Q.js';
2
2
  import '../chunk-CGYEHQOX.js';
3
- import '../chunk-WPISSDEI.js';
3
+ import '../chunk-3ELIPWCH.js';
4
4
  import '../chunk-4GY63JU6.js';
5
- import '../chunk-5RHPNNWP.js';
6
- import '../chunk-F3HNW354.js';
5
+ import '../chunk-JRIU5GA7.js';
6
+ import '../chunk-KIFJWSNC.js';
7
7
  import '../chunk-K5GBV4SA.js';
8
8
  import '../chunk-QVZA2MDT.js';
9
- import '../chunk-DF7C3KZK.js';
10
- import '../chunk-MENCWIHW.js';
9
+ import '../chunk-LRCSWOZO.js';
10
+ import '../chunk-EB4ZTESQ.js';
11
11
  import '../chunk-P4VHQA4N.js';
12
12
  import '../chunk-2FBPAR2V.js';
13
13
  import '../chunk-GEEW6SY2.js';
@@ -16,8 +16,8 @@ import '../chunk-ICSCSM5D.js';
16
16
  import '../chunk-MJHSLODD.js';
17
17
  import '../chunk-C3CAXQMA.js';
18
18
  import '../chunk-BOFL7GIF.js';
19
- import '../chunk-DKCFWSVW.js';
20
- import '../chunk-N7B3LZ7V.js';
19
+ import '../chunk-7LBPHRRP.js';
20
+ import '../chunk-TGE33MKN.js';
21
21
  import '../chunk-NSBPE2FW.js';
22
22
  //# sourceMappingURL=installer.js.map
23
23
  //# sourceMappingURL=installer.js.map
@@ -1,5 +1,5 @@
1
- export { AGENT_RENDERERS, claudeCodeRenderer, codexRenderer, driverTargetSupportsAgents, ompRenderer, renderAgentToFramework } from '../chunk-DKCFWSVW.js';
2
- import '../chunk-N7B3LZ7V.js';
1
+ export { AGENT_RENDERERS, claudeCodeRenderer, codexRenderer, driverTargetSupportsAgents, ompRenderer, renderAgentToFramework } from '../chunk-7LBPHRRP.js';
2
+ import '../chunk-TGE33MKN.js';
3
3
  import '../chunk-NSBPE2FW.js';
4
4
  //# sourceMappingURL=renderers.js.map
5
5
  //# sourceMappingURL=renderers.js.map
@@ -84,14 +84,16 @@ export interface DeclaredAsset {
84
84
  }
85
85
  /**
86
86
  * A global declared dependency from `~/.skaile/skaile.yaml`, reconciled against
87
- * **one** backend's global deploy dir. The same ref yields one entry per global
88
- * backend (see {@link AssetManager.globalState}) so an asset can read `installed`
87
+ * **one** harness's global deploy dir. The same ref yields one entry per global
88
+ * harness (see {@link AssetManager.globalState}) so an asset can read `installed`
89
89
  * for `claude-code` and `drift`/`declared` for `codex` simultaneously.
90
90
  */
91
- export interface BackendDeclaredAsset extends DeclaredAsset {
92
- /** The global backend this state was reconciled against. */
93
- backend: DriverTarget;
91
+ export interface HarnessDeclaredAsset extends DeclaredAsset {
92
+ /** The global harness this state was reconciled against. */
93
+ harness: DriverTarget;
94
94
  }
95
+ /** @deprecated Use {@link HarnessDeclaredAsset}; the `backend` field is now `harness`. Removed in the next major. */
96
+ export type BackendDeclaredAsset = HarnessDeclaredAsset;
95
97
  /**
96
98
  * A body-link soft-dependency edge: asset `from` references target `to` in its
97
99
  * body (not its typed `requires`). `toRef` is the parseable `skaile add` ref when
@@ -293,19 +295,21 @@ export interface AssetManagerOptions {
293
295
  */
294
296
  driverTarget?: DriverTarget;
295
297
  /**
296
- * When `true`, the manager operates in **global cross-backend** mode: config
298
+ * When `true`, the manager operates in **global cross-harness** mode: config
297
299
  * SSOT, lock, cache, and history root at `~/.skaile` (not the project), the
298
300
  * `dependencies:` manifest edits target `~/.skaile/skaile.yaml`, and deploy
299
- * fans out to every backend in {@link backends}. When `false` (default),
301
+ * fans out to every harness in {@link harnesses}. When `false` (default),
300
302
  * everything is project-scoped against the single {@link driverTarget}.
301
303
  */
302
304
  global?: boolean;
303
305
  /**
304
- * Global-mode backend set the deploy fans out to. When omitted in global mode,
305
- * resolved from `~/.skaile/skaile.yaml` `global_backends:` else auto-detection
306
- * (`resolveGlobalBackends`). Ignored in project mode. A `--backend` filter
306
+ * Global-mode harness set the deploy fans out to. When omitted in global mode,
307
+ * resolved from `~/.skaile/skaile.yaml` `global_harnesses:` else auto-detection
308
+ * (`resolveGlobalHarnesses`). Ignored in project mode. A `--harness` filter
307
309
  * narrows this to a subset.
308
310
  */
311
+ harnesses?: DriverTarget[];
312
+ /** @deprecated Use `harnesses`. Honoured only when `harnesses` is absent; removed in the next major. */
309
313
  backends?: DriverTarget[];
310
314
  /**
311
315
  * Catalog read-protocol fetcher used to resolve store-published assets. When
@@ -370,8 +374,8 @@ export declare class AssetManager {
370
374
  readonly driverTarget: DriverTarget;
371
375
  /** Whether this instance operates in global-install mode. */
372
376
  readonly global: boolean;
373
- /** Explicit global-backend override (global mode only); else auto-resolved. */
374
- private readonly backendsOverride?;
377
+ /** Explicit global-harness override (global mode only); else auto-resolved. */
378
+ private readonly harnessesOverride?;
375
379
  /** Injected catalog fetcher (tests / custom); falls back to a built one. */
376
380
  private readonly injectedStoreFetcher?;
377
381
  /** Injected byte fetcher for store staging; falls back to GitHub. */
@@ -383,17 +387,17 @@ export declare class AssetManager {
383
387
  constructor(opts: AssetManagerOptions);
384
388
  /**
385
389
  * Root for this manager's **state** — config SSOT, lock, cache, history.
386
- * `~/.skaile` in global mode (the cross-backend SSOT), else the project dir.
390
+ * `~/.skaile` in global mode (the cross-harness SSOT), else the project dir.
387
391
  * Deploy dirs are unaffected; they come from `DRIVER_TARGETS[target]`.
388
392
  */
389
393
  private get stateRoot();
390
394
  /**
391
- * The backends a global deploy fans out to: the explicit `backends` override
392
- * (a `--backend` filter), else `resolveGlobalBackends()`. In project mode this
395
+ * The harnesses a global deploy fans out to: the explicit `harnesses` override
396
+ * (a `--harness` filter), else `resolveGlobalHarnesses()`. In project mode this
393
397
  * is exactly `[driverTarget]`, so the shared fan-out loop degenerates to the
394
398
  * single-target path.
395
399
  */
396
- private targetBackends;
400
+ private targetHarnesses;
397
401
  private get storeCacheDir();
398
402
  private get reposDir();
399
403
  /**
@@ -407,7 +411,7 @@ export declare class AssetManager {
407
411
  };
408
412
  private get lockPath();
409
413
  private get patchDir();
410
- /** Deploy options for one backend. In global mode, `driverTarget` is the
414
+ /** Deploy options for one harness. In global mode, `driverTarget` is the
411
415
  * fan-out target (not the constructor's `driverTarget`, which is project-only). */
412
416
  private deployOptsFor;
413
417
  /**
@@ -751,10 +755,10 @@ export declare class AssetManager {
751
755
  */
752
756
  listDeclared(kind?: string): Promise<DeclaredAsset[]>;
753
757
  /**
754
- * Per-backend reconciliation of the **global** declared deps
755
- * (`~/.skaile/skaile.yaml`) against each global backend's deploy dir. The
758
+ * Per-harness reconciliation of the **global** declared deps
759
+ * (`~/.skaile/skaile.yaml`) against each global harness's deploy dir. The
756
760
  * global twin of {@link listDeclared}: the same `declared` / `installed` /
757
- * `drift` / `invalid` vocabulary, but one row **per (ref, backend)** so an
761
+ * `drift` / `invalid` vocabulary, but one row **per (ref, harness)** so an
758
762
  * asset can be `installed` for `claude-code` and `drift`/`declared` for
759
763
  * `codex` at once.
760
764
  *
@@ -762,16 +766,18 @@ export declare class AssetManager {
762
766
  * the manager with `global: true`. Unlike `listDeclared`, a missing SSOT is
763
767
  * **not** an error: it yields an empty list (a fresh machine has no globals).
764
768
  *
765
- * @param opts.backend - Reconcile against this one backend only (the
766
- * `--backend` filter); omit for every backend in {@link targetBackends}.
769
+ * @param opts.harness - Reconcile against this one harness only (the
770
+ * `--harness` filter); omit for every harness in {@link targetHarnesses}.
767
771
  * @param opts.kind - Filter by asset kind.
768
- * @returns One {@link BackendDeclaredAsset} per declared dep × backend.
772
+ * @returns One {@link HarnessDeclaredAsset} per declared dep × harness.
769
773
  * @throws {Error} on legacy keys in `~/.skaile/skaile.yaml` (migration hint).
770
774
  */
771
775
  globalState(opts?: {
776
+ harness?: DriverTarget;
777
+ /** @deprecated Use `harness`. Honoured only when `harness` is absent; removed in the next major. */
772
778
  backend?: DriverTarget;
773
779
  kind?: string;
774
- }): BackendDeclaredAsset[];
780
+ }): HarnessDeclaredAsset[];
775
781
  /**
776
782
  * Build an aggregated workspace overview with domain grouping and sync status.
777
783
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../asset-manager/src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../asset-manager/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAcH,OAAO,KAAK,EAEV,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,QAAQ,EAQR,YAAY,EACb,MAAM,yBAAyB,CAAC;AA4CjC,OAAO,KAAK,EAAmB,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAMhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAMjD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQpD;AAqDD;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,aAM/B,CAAC;AAoFH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAqBA;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK/C;AAsCD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAc7D;AA0BD;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;AAE3E;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,sEAAsE;IACtE,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,aAAa,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,4DAA4D;IAC5D,OAAO,EAAE,YAAY,CAAC;CACvB;AAED,qHAAqH;AACrH,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,CAAC;AAExD;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM;gBAAlB,UAAU,EAAE,MAAM;CAIxC;AAED,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EACL,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,WAAW,GACZ,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACxE,YAAY,EACV,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,YAAY,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAOxD;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,kHAAkH;IAClH,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACpC,qDAAqD;IACrD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACpC,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,QAAQ,EAAE,OAAO,CAAC;IAClB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,kEAAkE;IAClE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,uFAAuF;IACvF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,yDAAyD;IACzD,WAAW,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,cAAc,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,GAAG,EAAE,MAAM,CAAC;IACZ,qDAAqD;IACrD,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,uGAAuG;IACvG,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,uFAAuF;IACvF,MAAM,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;;OAOG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,gGAAgG;IAChG,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IACvC,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAID;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,oFAAoF;IACpF,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC;IAC3B,wGAAwG;IACxG,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B;;;;OAIG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;;;OAIG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;4EAE4E;AAC5E,eAAO,MAAM,kBAAkB,2CAA2C,CAAC;AAmD3E;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,YAAY;IACvB,oDAAoD;IACpD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,oEAAoE;IACpE,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,6DAA6D;IAC7D,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,+EAA+E;IAC/E,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAiB;IACpD,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAe;IACrD,qEAAqE;IACrE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAe;IACrD,8EAA8E;IAC9E,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAS;IAC7C,8EAA8E;IAC9E,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAS;gBAEhC,IAAI,EAAE,mBAAmB;IAWrC;;;;OAIG;IACH,OAAO,KAAK,SAAS,GAEpB;IAED;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAMvB,OAAO,KAAK,aAAa,GAMxB;IAED,OAAO,KAAK,QAAQ,GAMnB;IAED;;;;OAIG;IACH,IAAI,gBAAgB,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAEzD;IAED,OAAO,KAAK,QAAQ,GAEnB;IAED,OAAO,KAAK,QAAQ,GAEnB;IAED;uFACmF;IACnF,OAAO,CAAC,aAAa;IAIrB;;;;;;;;;OASG;YACW,qBAAqB;IAanC,OAAO,CAAC,UAAU;IAsDlB,2EAA2E;IAC3E,OAAO,CAAC,WAAW;IAqBnB;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAwD/B;;;;;;;;;;;;;;;;OAgBG;YACW,qBAAqB;IA2DnC,iFAAiF;IACjF,OAAO,CAAC,YAAY;IAIpB;;;;;;;OAOG;YACW,iBAAiB;IAqC/B,6EAA6E;IAC7E,OAAO,CAAC,eAAe;IAIvB;;;;OAIG;YACW,mBAAmB;IAejC;;;;;;OAMG;YACW,mBAAmB;IAgBjC;;;;;;;OAOG;YACW,gBAAgB;IAoD9B,0EAA0E;IAC1E,OAAO,CAAC,kBAAkB;IAO1B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;;;;;;;;OASG;IACH,OAAO,CAAC,sBAAsB;IAe9B,wEAAwE;IACxE,OAAO,CAAC,sBAAsB;IAuB9B;;;;;;;;;;;;;OAaG;IACG,OAAO,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,CAAC;IA8DlF;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAuB1B;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAe/B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IA2B9B,+EAA+E;IAC/E,OAAO,CAAC,oBAAoB;IAmB5B,6EAA6E;IAC7E,OAAO,CAAC,WAAW;IAQnB,gFAAgF;IAChF,OAAO,CAAC,iBAAiB;IA0CzB;;;;;;;;OAQG;YACW,uBAAuB;YAiCvB,aAAa;IA+E3B;;;;;;;;;;;;;OAaG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA6EpE;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,cAAc,CAClB,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAQ/D;;;;;;;;;;;OAWG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAKxD;;;;;;;OAOG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAO7D;;;;;;;;;;;;;;OAcG;IACG,6BAA6B,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAuD/E;;;;;OAKG;YACW,aAAa;IAgB3B;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAuBvB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAUvB;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAUnB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAsB5B;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAoBtB;;;;;;;;OAQG;IACG,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAoBpE;;;;;;OAMG;IACH,eAAe,IAAI;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE;IAUvD;;;;;;;;;OASG;IACG,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAsBrD;;;;;;;;OAQG;IACH,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE;IA6C3C;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IA+E3D;;;;;;;;;;;;;;;;;OAiBG;IACH,WAAW,CAAC,IAAI,CAAC,EAAE;QACjB,OAAO,CAAC,EAAE,YAAY,CAAC;QACvB,oGAAoG;QACpG,OAAO,CAAC,EAAE,YAAY,CAAC;QACvB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,oBAAoB,EAAE;IA4C1B;;;;;;;OAOG;IACH,QAAQ,IAAI,cAAc;IA4B1B,+EAA+E;IAC/E,OAAO,CAAC,iBAAiB;IAiBzB;;;;;;OAMG;IACH,IAAI,IAAI,cAAc;IAYtB;;;;;;OAMG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;IAgB1B;;;;;;;OAOG;IACH,QAAQ,IAAI,aAAa,EAAE;IA4B3B;;;;;;;;;OASG;IACG,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAiB/C;;;;;;;OAOG;IACG,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC;IAoB/B;;;;;;;;;OASG;IACG,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMzC;;;;;;;;;OASG;IACG,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmB/C;;;;;;;;OAQG;IACG,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB7C;;;;OAIG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAc9B;;;;;;;;OAQG;IACG,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAuCnC;;;;;;;;OAQG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAalF;;;;;OAKG;IACH,OAAO,CAAC,KAAK,SAAK,GAAG,YAAY,EAAE;IAInC;;OAEG;IACH,YAAY,IAAI,IAAI;IAMpB;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,IAAI,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG;QAC/B,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAChD,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB;IAYD;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IA2BjC;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAoB9B,qFAAqF;IACrF,OAAO,CAAC,qBAAqB;IAyB7B;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAgB7B;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IA2BlC,OAAO,CAAC,cAAc;CAqBvB;AAID,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIlD,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACzF,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,0BAA0B,EAC1B,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAIxB,YAAY,EACV,UAAU,EACV,YAAY,EACZ,WAAW,EACX,eAAe,EACf,UAAU,GACX,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -4,7 +4,7 @@
4
4
  * Each renderer transforms a parsed GitAgent package (agent.yaml + SOUL.md + RULES.md)
5
5
  * into the native file format that the target agent framework natively reads.
6
6
  *
7
- * Only backends with a full bridge driver (runtime execution) are included:
7
+ * Only harnesses with a full bridge driver (runtime execution) are included:
8
8
  * claude-code → .claude/agents/<name>.md (YAML frontmatter + markdown body)
9
9
  * omp → .omp/agents/<name>/ (directory with agent.yaml + SOUL.md)
10
10
  * codex → .codex/agents/<name>.toml (TOML)
@@ -108,7 +108,7 @@ export declare function renderAgentToFramework(input: AgentRenderInput, driverTa
108
108
  /**
109
109
  * Registry mapping framework IDs to their {@link AgentRenderer} functions.
110
110
  *
111
- * Only backends with a full bridge driver are registered. Add new entries
111
+ * Only harnesses with a full bridge driver are registered. Add new entries
112
112
  * when a bridge driver is implemented in `workspaces/bridge/src/drivers/`.
113
113
  *
114
114
  * @docLink packages/asset-manager/api-reference#renderers
@@ -1,21 +1,21 @@
1
1
  import { formatDroppedToolsNotice, filterInProcessMcpServerTools, checkToolPropertyKeys } from '../../chunk-X5O56UO4.js';
2
2
  import { scrubPoisonedTranscript, transcriptStoreForRuntime, resolveClaudeConfigDir, claudeEndpointMode, buildClaudeEndpointEnv } from '../../chunk-LX3FKVLL.js';
3
3
  import { scopeReconfigureModel } from '../../chunk-EINLFFP6.js';
4
- import { dispatchCapability } from '../../chunk-XVGB3K4B.js';
5
- import { fetchProviderModels } from '../../chunk-ZRE4N6ZA.js';
4
+ import { dispatchCapability } from '../../chunk-TTITGVXV.js';
5
+ import { fetchProviderModels } from '../../chunk-75LXFKQR.js';
6
6
  import { AuthError, stripRunnerPrivateEnv, classifyClaudeSdkError, reclassifyAuthAsAccountUnavailable, AccountUnavailableError, isLongContextEntitlementRejection, LONG_CONTEXT_CREDITS_API_ERROR } from '../../chunk-XBSQ4KMC.js';
7
7
  import { agentExecRequested, wrapAgentCommand, resolveAgentExec } from '../../chunk-YROR332M.js';
8
- import { BUILTIN_DRIVER_CATALOG, AgentDriver, getBridgeLogger, entryCredentialValue, registryDriverConfig } from '../../chunk-MVSF6AB4.js';
8
+ import { BUILTIN_DRIVER_CATALOG, AgentDriver, getBridgeLogger, entryCredentialValue, registryDriverConfig } from '../../chunk-MTWZ7KHZ.js';
9
9
  import '../../chunk-6E6PKKAD.js';
10
- import { withActivityLabelShape } from '../../chunk-34ZVTPDV.js';
11
- import '../../chunk-WPISSDEI.js';
10
+ import { withActivityLabelShape } from '../../chunk-JS7DCCDA.js';
11
+ import '../../chunk-3ELIPWCH.js';
12
12
  import '../../chunk-4GY63JU6.js';
13
- import '../../chunk-5RHPNNWP.js';
14
- import '../../chunk-F3HNW354.js';
13
+ import '../../chunk-JRIU5GA7.js';
14
+ import '../../chunk-KIFJWSNC.js';
15
15
  import '../../chunk-K5GBV4SA.js';
16
16
  import '../../chunk-QVZA2MDT.js';
17
- import '../../chunk-DF7C3KZK.js';
18
- import '../../chunk-MENCWIHW.js';
17
+ import '../../chunk-LRCSWOZO.js';
18
+ import '../../chunk-EB4ZTESQ.js';
19
19
  import '../../chunk-P4VHQA4N.js';
20
20
  import '../../chunk-2FBPAR2V.js';
21
21
  import '../../chunk-GEEW6SY2.js';
@@ -24,7 +24,7 @@ import '../../chunk-ICSCSM5D.js';
24
24
  import { mergeRegistries, parseModelRef, isEntryEnabled, resolveEntryBaseUrl } from '../../chunk-MJHSLODD.js';
25
25
  import '../../chunk-C3CAXQMA.js';
26
26
  import { createLogger } from '../../chunk-BOFL7GIF.js';
27
- import '../../chunk-N7B3LZ7V.js';
27
+ import '../../chunk-TGE33MKN.js';
28
28
  import '../../chunk-NSBPE2FW.js';
29
29
  import { spawnSync, spawn } from 'child_process';
30
30
  import { readFileSync, existsSync } from 'fs';
@@ -1,19 +1,19 @@
1
1
  import { CodexAppServerClient } from '../../chunk-K4O6L3WH.js';
2
2
  import { managedCodexRegistryViolation, parseCodexCredential, prepareNativePolicy, prepareCodexInstance, codexInstanceEnvironment, isNativeApprovalPolicyActive, activateNativeApprovalPolicy, parseCodexRefreshResult, allowsNativeApprovalPath } from '../../chunk-HCYS7GFP.js';
3
3
  import { CodexNativeStateUnavailable } from '../../chunk-LOO5CB5M.js';
4
- import { fetchProviderModels } from '../../chunk-ZRE4N6ZA.js';
4
+ import { fetchProviderModels } from '../../chunk-75LXFKQR.js';
5
5
  import { stripRunnerPrivateEnv, classifyGenericErrorMessage } from '../../chunk-XBSQ4KMC.js';
6
6
  import '../../chunk-YROR332M.js';
7
- import { BUILTIN_DRIVER_CATALOG, AgentDriver, getBridgeLogger, registryCredentialEnv, entryCredentialValue, registryDriverConfig, getProviderPreset, providerCredentialEnvName } from '../../chunk-MVSF6AB4.js';
7
+ import { BUILTIN_DRIVER_CATALOG, AgentDriver, getBridgeLogger, registryCredentialEnv, entryCredentialValue, registryDriverConfig, getProviderPreset, providerCredentialEnvName } from '../../chunk-MTWZ7KHZ.js';
8
8
  import '../../chunk-6E6PKKAD.js';
9
- import '../../chunk-WPISSDEI.js';
9
+ import '../../chunk-3ELIPWCH.js';
10
10
  import '../../chunk-4GY63JU6.js';
11
- import '../../chunk-5RHPNNWP.js';
12
- import '../../chunk-F3HNW354.js';
11
+ import '../../chunk-JRIU5GA7.js';
12
+ import '../../chunk-KIFJWSNC.js';
13
13
  import '../../chunk-K5GBV4SA.js';
14
14
  import '../../chunk-QVZA2MDT.js';
15
- import { globalSkaileDir } from '../../chunk-DF7C3KZK.js';
16
- import '../../chunk-MENCWIHW.js';
15
+ import { globalSkaileDir } from '../../chunk-LRCSWOZO.js';
16
+ import '../../chunk-EB4ZTESQ.js';
17
17
  import '../../chunk-P4VHQA4N.js';
18
18
  import '../../chunk-2FBPAR2V.js';
19
19
  import '../../chunk-GEEW6SY2.js';
@@ -22,7 +22,7 @@ import '../../chunk-ICSCSM5D.js';
22
22
  import { resolveEntryBaseUrl, registryEntries, parseModelRef, isEntryEnabled } from '../../chunk-MJHSLODD.js';
23
23
  import '../../chunk-C3CAXQMA.js';
24
24
  import '../../chunk-BOFL7GIF.js';
25
- import '../../chunk-N7B3LZ7V.js';
25
+ import '../../chunk-TGE33MKN.js';
26
26
  import '../../chunk-NSBPE2FW.js';
27
27
  import { join, dirname, isAbsolute, relative } from 'path';
28
28
  import { isDeepStrictEqual } from 'util';