@skaile/workspaces 0.22.0-beta.1 → 0.22.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 (164) hide show
  1. package/CHANGELOG.md +380 -0
  2. package/dist/{asset-feeds-QXCSAJRN.js → asset-feeds-Y2CDCM3W.js} +13 -14
  3. package/dist/asset-feeds-Y2CDCM3W.js.map +1 -0
  4. package/dist/asset-manager/index.js +7 -7
  5. package/dist/asset-manager/installer.js +6 -6
  6. package/dist/asset-manager/src/index.d.ts.map +1 -1
  7. package/dist/base-assets/connectors/deploy.js +7 -7
  8. package/dist/base-assets/connectors/devserver.js +7 -7
  9. package/dist/base-assets/connectors/flow/adapter.js +7 -7
  10. package/dist/base-assets/connectors/flow/run-flow.js +8 -8
  11. package/dist/base-assets/connectors/flow.js +7 -7
  12. package/dist/base-assets/connectors/git/driver.d.ts.map +1 -1
  13. package/dist/base-assets/connectors/git.js +7 -7
  14. package/dist/base-assets/connectors/gmail.js +7 -7
  15. package/dist/base-assets/connectors/googledrive.js +7 -7
  16. package/dist/base-assets/connectors/local.js +7 -7
  17. package/dist/base-assets/connectors/mattermost.js +7 -7
  18. package/dist/base-assets/connectors/memory.js +7 -7
  19. package/dist/base-assets/connectors/minio.js +7 -7
  20. package/dist/base-assets/connectors/postgres.js +7 -7
  21. package/dist/base-assets/connectors/s3.js +7 -7
  22. package/dist/base-assets/connectors/sharepoint.js +7 -7
  23. package/dist/base-assets/connectors/sqlite.js +7 -7
  24. package/dist/base-assets/connectors/static-server.js +7 -7
  25. package/dist/base-assets/connectors/tunnel.js +7 -7
  26. package/dist/base-assets/connectors/webdav.js +7 -7
  27. package/dist/base-assets/connectors/xstate-store.js +7 -7
  28. package/dist/base-assets/connectors/xstate.js +7 -7
  29. package/dist/{chunk-PTIHB2TV.js → chunk-2RYQERIT.js} +4 -4
  30. package/dist/{chunk-PTIHB2TV.js.map → chunk-2RYQERIT.js.map} +1 -1
  31. package/dist/chunk-32NA4TVC.js +30 -0
  32. package/dist/chunk-32NA4TVC.js.map +1 -0
  33. package/dist/{chunk-DKGDOALM.js → chunk-53UNDY6K.js} +5 -5
  34. package/dist/{chunk-DKGDOALM.js.map → chunk-53UNDY6K.js.map} +1 -1
  35. package/dist/{chunk-VCYXVP2S.js → chunk-7HSXUKNB.js} +24 -13
  36. package/dist/chunk-7HSXUKNB.js.map +1 -0
  37. package/dist/chunk-7QBNJTTQ.js +3 -0
  38. package/dist/{chunk-W2O5LWYU.js.map → chunk-7QBNJTTQ.js.map} +1 -1
  39. package/dist/{chunk-UMOENHVH.js → chunk-ETMUGBHF.js} +3 -3
  40. package/dist/{chunk-UMOENHVH.js.map → chunk-ETMUGBHF.js.map} +1 -1
  41. package/dist/{chunk-7PTP3SQJ.js → chunk-GTS2FODO.js} +32 -7
  42. package/dist/chunk-GTS2FODO.js.map +1 -0
  43. package/dist/{chunk-D7K72XEY.js → chunk-JN2CUVSU.js} +3 -3
  44. package/dist/{chunk-D7K72XEY.js.map → chunk-JN2CUVSU.js.map} +1 -1
  45. package/dist/{chunk-3ECS5PFD.js → chunk-K2HDYSAM.js} +4 -4
  46. package/dist/{chunk-3ECS5PFD.js.map → chunk-K2HDYSAM.js.map} +1 -1
  47. package/dist/{chunk-4AZKT2BU.js → chunk-K7WPR77X.js} +33 -50
  48. package/dist/chunk-K7WPR77X.js.map +1 -0
  49. package/dist/{chunk-JHF66MCK.js → chunk-MNAHNDUI.js} +5 -3
  50. package/dist/chunk-MNAHNDUI.js.map +1 -0
  51. package/dist/{chunk-APAOQLPT.js → chunk-NBJ5TOEC.js} +3 -3
  52. package/dist/{chunk-APAOQLPT.js.map → chunk-NBJ5TOEC.js.map} +1 -1
  53. package/dist/{chunk-NJLHHZIW.js → chunk-NDD5VMN5.js} +2 -2
  54. package/dist/{chunk-NJLHHZIW.js.map → chunk-NDD5VMN5.js.map} +1 -1
  55. package/dist/{chunk-LT4DLEYE.js → chunk-OJN25VJO.js} +24 -8
  56. package/dist/chunk-OJN25VJO.js.map +1 -0
  57. package/dist/{chunk-GFNW72LW.js → chunk-PFOXL4SH.js} +4 -4
  58. package/dist/{chunk-GFNW72LW.js.map → chunk-PFOXL4SH.js.map} +1 -1
  59. package/dist/{chunk-V3QMSM5I.js → chunk-SKXCTV55.js} +13 -14
  60. package/dist/chunk-SKXCTV55.js.map +1 -0
  61. package/dist/{chunk-J3VKAEQP.js → chunk-V5TBKO5Q.js} +64 -14
  62. package/dist/chunk-V5TBKO5Q.js.map +1 -0
  63. package/dist/{chunk-I3UEM3FX.js → chunk-VUCPJBAG.js} +9 -4
  64. package/dist/chunk-VUCPJBAG.js.map +1 -0
  65. package/dist/{chunk-XIHFJVOD.js → chunk-WH2EB2SF.js} +3 -3
  66. package/dist/{chunk-XIHFJVOD.js.map → chunk-WH2EB2SF.js.map} +1 -1
  67. package/dist/{chunk-PBWMV5GM.js → chunk-WQ7DE5UC.js} +18 -4
  68. package/dist/chunk-WQ7DE5UC.js.map +1 -0
  69. package/dist/cli/index.js +199 -200
  70. package/dist/cli/index.js.map +1 -1
  71. package/dist/cli/src/commands/manage.d.ts +23 -32
  72. package/dist/cli/src/commands/manage.d.ts.map +1 -1
  73. package/dist/cli/src/commands/npx.d.ts +5 -3
  74. package/dist/cli/src/commands/npx.d.ts.map +1 -1
  75. package/dist/cli/src/commands/source.d.ts +7 -0
  76. package/dist/cli/src/commands/source.d.ts.map +1 -1
  77. package/dist/connectors/config.js +6 -6
  78. package/dist/connectors/index.js +7 -7
  79. package/dist/core/index.js +5 -5
  80. package/dist/core/manifest.js +2 -2
  81. package/dist/core/models.js +1 -1
  82. package/dist/core/runtime-assets.js +4 -4
  83. package/dist/core/src/index.d.ts +2 -2
  84. package/dist/core/src/index.d.ts.map +1 -1
  85. package/dist/core/src/manifest.d.ts +16 -0
  86. package/dist/core/src/manifest.d.ts.map +1 -1
  87. package/dist/core/src/models.d.ts +8 -2
  88. package/dist/core/src/models.d.ts.map +1 -1
  89. package/dist/core/src/repo-manager.d.ts +17 -2
  90. package/dist/core/src/repo-manager.d.ts.map +1 -1
  91. package/dist/core/src/walker.d.ts +4 -0
  92. package/dist/core/src/walker.d.ts.map +1 -1
  93. package/dist/core/src/workspace-config.d.ts +14 -0
  94. package/dist/core/src/workspace-config.d.ts.map +1 -1
  95. package/dist/core/workspace-config.js +3 -3
  96. package/dist/deploy/index.js +138 -42
  97. package/dist/deploy/index.js.map +1 -1
  98. package/dist/deploy/src/index.d.ts +4 -3
  99. package/dist/deploy/src/index.d.ts.map +1 -1
  100. package/dist/deploy/src/targets/container-runtime.d.ts.map +1 -1
  101. package/dist/deploy/src/targets/local.d.ts.map +1 -1
  102. package/dist/deploy/src/targets/nix.d.ts +36 -0
  103. package/dist/deploy/src/targets/nix.d.ts.map +1 -0
  104. package/dist/deploy/src/targets/process-handle.d.ts +34 -0
  105. package/dist/deploy/src/targets/process-handle.d.ts.map +1 -0
  106. package/dist/discovery/index.js +3 -3
  107. package/dist/{ensure-sources-SL2S4UEX.js → ensure-sources-REWWBH2K.js} +9 -9
  108. package/dist/{ensure-sources-SL2S4UEX.js.map → ensure-sources-REWWBH2K.js.map} +1 -1
  109. package/dist/library/index.js +4 -4
  110. package/dist/open-library-CT4VVESU.js +13 -0
  111. package/dist/{open-library-M4DB3D3J.js.map → open-library-CT4VVESU.js.map} +1 -1
  112. package/dist/plugin-registry/src/context.d.ts +30 -1
  113. package/dist/plugin-registry/src/context.d.ts.map +1 -1
  114. package/dist/plugin-registry/src/index.d.ts +1 -1
  115. package/dist/plugin-registry/src/index.d.ts.map +1 -1
  116. package/dist/{plugin-store-AJ3FGXIC.js → plugin-store-QS7TC5HY.js} +7 -7
  117. package/dist/{plugin-store-AJ3FGXIC.js.map → plugin-store-QS7TC5HY.js.map} +1 -1
  118. package/dist/plugins/src/catalog-source.d.ts +5 -0
  119. package/dist/plugins/src/catalog-source.d.ts.map +1 -1
  120. package/dist/runner/index.js +13 -12
  121. package/dist/runner/src/serve.d.ts +7 -0
  122. package/dist/runner/src/serve.d.ts.map +1 -1
  123. package/dist/sdk/asset-manager.js +7 -7
  124. package/dist/sdk/core.js +5 -5
  125. package/dist/sdk/index.js +13 -12
  126. package/dist/sdk/index.js.map +1 -1
  127. package/dist/sdk/runner.js +13 -12
  128. package/dist/sdk/transport/ws/client.js +2 -1
  129. package/dist/sdk/transport/ws/server.js +2 -1
  130. package/dist/sdk/transport/ws.js +4 -3
  131. package/dist/sdk/transport.js +4 -3
  132. package/dist/{setup-GBSQX7JF.js → setup-F6DGKL7J.js} +7 -7
  133. package/dist/{setup-GBSQX7JF.js.map → setup-F6DGKL7J.js.map} +1 -1
  134. package/dist/store-client-JP642EEI.js +14 -0
  135. package/dist/{store-client-5WBRUC5U.js.map → store-client-JP642EEI.js.map} +1 -1
  136. package/dist/transport/index.js +4 -3
  137. package/dist/transport/src/ws/auth.d.ts +34 -0
  138. package/dist/transport/src/ws/auth.d.ts.map +1 -0
  139. package/dist/transport/src/ws/client.d.ts +4 -0
  140. package/dist/transport/src/ws/client.d.ts.map +1 -1
  141. package/dist/transport/src/ws/index.d.ts +3 -2
  142. package/dist/transport/src/ws/index.d.ts.map +1 -1
  143. package/dist/transport/src/ws/server.d.ts +5 -0
  144. package/dist/transport/src/ws/server.d.ts.map +1 -1
  145. package/dist/transport/ws/client.js +2 -1
  146. package/dist/transport/ws/server.js +2 -1
  147. package/dist/transport/ws.js +4 -3
  148. package/dist/tui/index.js +13 -12
  149. package/dist/tui/index.js.map +1 -1
  150. package/dist/workspace-plugin/index.js +1 -1
  151. package/package.json +1 -1
  152. package/dist/asset-feeds-QXCSAJRN.js.map +0 -1
  153. package/dist/chunk-4AZKT2BU.js.map +0 -1
  154. package/dist/chunk-7PTP3SQJ.js.map +0 -1
  155. package/dist/chunk-I3UEM3FX.js.map +0 -1
  156. package/dist/chunk-J3VKAEQP.js.map +0 -1
  157. package/dist/chunk-JHF66MCK.js.map +0 -1
  158. package/dist/chunk-LT4DLEYE.js.map +0 -1
  159. package/dist/chunk-PBWMV5GM.js.map +0 -1
  160. package/dist/chunk-V3QMSM5I.js.map +0 -1
  161. package/dist/chunk-VCYXVP2S.js.map +0 -1
  162. package/dist/chunk-W2O5LWYU.js +0 -3
  163. package/dist/open-library-M4DB3D3J.js +0 -13
  164. package/dist/store-client-5WBRUC5U.js +0 -14
package/CHANGELOG.md CHANGED
@@ -1,5 +1,385 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.22.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#70](https://github.com/skaile-ai/workspaces/pull/70) [`f44674b`](https://github.com/skaile-ai/workspaces/commit/f44674bd72f9231f1d429152ba683ae1e4dc20df) Thanks [@Frozen666](https://github.com/Frozen666)! - Add `network: NetworkPolicy` field on `AgentPermissions` (modes `open` /
8
+ `off` / `allowlist`). Consumed by the platform's per-session egress
9
+ firewall; the codec is permissive (round-trips unknown shapes) and emits
10
+ warning diagnostics for unrecognized `mode` values and for `allowlist`
11
+ entries set under non-`allowlist` modes.
12
+
13
+ - [`cd5b3b3`](https://github.com/skaile-ai/workspaces/commit/cd5b3b39ed6e65f0124d5cda81fc791ddd1c25e5) Thanks [@mortegro](https://github.com/mortegro)! - Asset display: regroup the `skaile manage` TUI as **publisher → repo → asset**.
14
+
15
+ The derived `domain` axis (first-level directory of a scanned repo) is replaced
16
+ by `repo` — the real `"<org>/<repo>"` GitHub coordinate. `category` is demoted
17
+ out of the tree to a row badge.
18
+
19
+ - `plugins` — `CatalogAsset` gains optional `repo?`.
20
+ - `core` — `CatalogEntry` drops `domain`, gains `repo?` and `category?`.
21
+ `entryFromRaw` reads `repo` with a one-release legacy-`domain` read-fallback
22
+ (stale `catalog.yaml` caches self-heal on next write). `scanRepo` derives
23
+ `repo` once from the scanned root's git remote (`repoSlugFromGitRemote`) and
24
+ stamps it onto every entry; `scanDirectory` no longer emits a per-asset
25
+ `domain`.
26
+ - `library` — `RemoteCatalogSource` threads the store's `repo` through.
27
+ - `cli` — `manage` regroups to publisher → repo → asset with category badges;
28
+ the `asset-feeds` store mapping now carries `publisher`/`repo`/`category`
29
+ (fixing the bug that mis-shelved every remote asset under `other`).
30
+
31
+ Local libraries with no git remote (and non-GitHub sources) have no `repo`;
32
+ their assets group directly under the publisher.
33
+
34
+ - [#71](https://github.com/skaile-ai/workspaces/pull/71) [`fb32a60`](https://github.com/skaile-ai/workspaces/commit/fb32a6028ce1c0639c3339e8561ba72dcd24388f) Thanks [@mortegro](https://github.com/mortegro)! - Deploy contract: add a generic per-session injection channel and a built-in
35
+ `nix` target, so a host (e.g. skaile-platform) can drive every deploy target
36
+ uniformly without forking the decision in its own code.
37
+
38
+ - `DeployContext` gains optional `mounts` / `labels` / `resources`
39
+ (`@skaile/workspaces/plugin-registry`, with new `DeployMount` / `DeployResources`
40
+ types). Container built-ins (`docker` / `podman`) map them to `-v` / `--label`
41
+ / `--cpus` / `--memory` / `--pids-limit`; the process built-ins ignore mounts.
42
+ Target-specific policy (apparmor, FUSE, fleet binds, …) stays in each target's
43
+ own `configSchema` — it never enters this shared context.
44
+ - `local` now also merges `ctx.env` into the spawned process env (`config.env`
45
+ still wins).
46
+ - New built-in `nixDeployTarget` (id `nix`) runs `skaile serve` inside a
47
+ `nix shell` over `ws://127.0.0.1:<port>`; registered by
48
+ `registerBuiltinDeployTargets()`. Exports `nixDeployTarget` + the pure
49
+ `buildNixArgs()` from `@skaile/workspaces/deploy`. Generic on purpose
50
+ (`flakeRef` + `stackAttr` only).
51
+
52
+ - [`ce3f33f`](https://github.com/skaile-ai/workspaces/commit/ce3f33f5b85f81d1c80689a99a8e63cf0c2afc07) Thanks [@mortegro](https://github.com/mortegro)! - Fix deploy-handle readiness timeout + dedupe deploy-target helpers.
53
+
54
+ - **Fix:** `DeployHandle.waitReady(timeoutMs)` silently ignored its `timeoutMs`
55
+ argument in the fly / k8s / vercel-sandbox targets, always using a hard-coded
56
+ internal deadline. The caller's timeout is now honored.
57
+ - **Fix (`@skaile/provider-fly`):** `deleteMachine` swallowed _all_ errors while
58
+ only intending to ignore a 404, so `stop()` could falsely report success on a
59
+ still-running (still-billing) machine. Non-404 errors now propagate.
60
+ - **Added (`@skaile/workspaces/plugin-registry`):** shared deploy helpers —
61
+ `buildStrategySchema` / `BuildStrategy`, abort-aware `sleep`, generic
62
+ `pollUntil`, and the `makeDeployHandle` factory — replacing the per-provider
63
+ copies of the sleep loop, handle wrapper, and build-strategy enum.
64
+
65
+ - [#65](https://github.com/skaile-ai/workspaces/pull/65) [`2af2e52`](https://github.com/skaile-ai/workspaces/commit/2af2e525588648e45a14fb8acdfde72f1ebb57e8) Thanks [@mortegro](https://github.com/mortegro)! - Add `listDeployTargets()` / `getDeployTarget()` to
66
+ `@skaile/workspaces/plugin-registry`, the symmetric counterparts to
67
+ `listDrivers()` / `listConnectors()` so UIs can enumerate all three plugin kinds
68
+ uniformly. Both default to the process-wide `pluginRegistry`;
69
+ `listDeployTargets()` returns lightweight `{ id, displayName }` rows and
70
+ `getDeployTarget(id)` returns the full target without the override/yaml/default
71
+ precedence `resolveDeployTarget` applies.
72
+
73
+ Docs (`docs/deploy/`): documented the container-target image lifecycle — that
74
+ `buildStrategy: "local"` is bring-your-own-image (`create()` never builds), how
75
+ `pullPolicy` interacts with a locally-built vs. registry-published image, that
76
+ `workspace.container.{packages,agent_clis,stack,nix}` are image-build inputs
77
+ distinct from the deploy `config.image` (with skaile-platform's
78
+ `skaile-vm-agent:thin` / Nix-stack model as the reference), and that the
79
+ in-process runtime is deliberately out of scope for the deploy abstraction
80
+ (no `wsUrl`).
81
+
82
+ - [#67](https://github.com/skaile-ai/workspaces/pull/67) [`c67a381`](https://github.com/skaile-ai/workspaces/commit/c67a381f1029bec547531e238d235636eef16740) Thanks [@mortegro](https://github.com/mortegro)! - Canonical-identity manifest architecture (BREAKING).
83
+
84
+ Schema:
85
+
86
+ - `skaile.yaml` top-level keys `repositories:` and `ai_resources:` are removed
87
+ and now throw a parse error pointing at `docs/concepts/manifest-schema.md` and
88
+ the `migrate-skaile-manifest` skill.
89
+ - New publication half: `publisher`, `version`, `assets[]`.
90
+ - New consumption half: collapsed `sources:[{url, pin?}]` (no `name`),
91
+ `stores:[{url}]`, `dependencies:[<kind>:<name>@<publisher>[#pin]]`,
92
+ `overrides:[{ref, source, reason}]` with required `reason:`.
93
+
94
+ Dep ref grammar:
95
+
96
+ - Canonical form `kind:name@<publisher>[#pin]`. `publisher` is required and
97
+ GitHub-shaped. Pins accept SemVer constraints (^, ~, x), exact SemVer, a
98
+ 40-char SHA, or absent. Floating refs (main/latest/HEAD) throw.
99
+
100
+ Resolution:
101
+
102
+ - The resolver collects candidates from every source clone (via the new
103
+ provenance-index walker) and optionally every store. Divergent sha256 at the
104
+ same (publisher, kind, name, version) is a hard error
105
+ (`CanonicalRefConflictError`) with a dep-chain walk. `overrides[]` pin a
106
+ chosen source and flag `override_applied: true` on the lock entry. A cheap
107
+ `catalog.getCanonicalDigest` probe cross-checks source vs store at the same
108
+ version. `resolveAll` is now async.
109
+
110
+ Lock file:
111
+
112
+ - Schema v2. Keys are canonical refs `<publisher>/<kind>:<name>@<version>`;
113
+ values carry `sha256`, `source.{url, commit}`, `files[]`, `override_applied`.
114
+ Top-level `sources:` records every contributing URL+commit. Old v1 lockfiles
115
+ must be deleted and regenerated; the reader emits a clear error.
116
+
117
+ Types:
118
+
119
+ - `AssetRef.repository` → `AssetRef.publisher` (and `CatalogEntry.publisher`).
120
+ - `RepositoryDeclaration` → `SourceDeclaration`.
121
+ - `LockEntry` reshaped; new `LockSourceEntry`, `LockFileEntry`,
122
+ `StoreEntry`, `AssetEntry`, `OverrideEntry`.
123
+ - `RemoteCatalogSource.getCanonicalDigest(ref)` added.
124
+
125
+ Migration:
126
+
127
+ - No `skaile manifest migrate` CLI command. The transform is performed by the
128
+ `migrate-skaile-manifest` skill (lives in `ai-assets`).
129
+
130
+ - [#53](https://github.com/skaile-ai/workspaces/pull/53) [`4e3c2b2`](https://github.com/skaile-ai/workspaces/commit/4e3c2b27ed6a004e7b9c3d60b0ae3754a8192eb5) Thanks [@peteralbert](https://github.com/peteralbert)! - Support the BYO-flake recipe form on `AssetRecipe`.
131
+
132
+ - `AssetRecipe` gains optional `flake` (the asset's own flake: `"."` or a flake URL) and
133
+ `publisher` fields; `attr` is now optional and defaults to `"default"` for the flake form
134
+ (the legacy `{ attr }` platform-flake form is unchanged and still requires `attr`).
135
+ - New `validateAssetRecipeFlake` validates the flake source shape (`"."`, `github:`,
136
+ `git+https://`, `git+ssh://`, `path:`; rejects bare paths, traversal, unknown schemes, and
137
+ shell metacharacters). Exported alongside `DEFAULT_RECIPE_ATTR`.
138
+ - `mcpDeclFromCatalogEntry` carries `flake`/`publisher` onto the decl; an invalid flake drops
139
+ the whole recipe (no silent fall back to a platform-flake attr).
140
+ - The runner resolves a flake-sourced recipe by `mcps.<id>` (the recipe id) rather than `attr`,
141
+ since BYO-flake recipes all build `#default` and `attr` is not a unique map key.
142
+
143
+ - [`edaca8f`](https://github.com/skaile-ai/workspaces/commit/edaca8f351dd4d044bc2034c8f10b394a8ab9f43) Thanks [@mortegro](https://github.com/mortegro)! - Restore transitive bundle-member expansion in the canonical-identity resolver.
144
+
145
+ The resolver rewrite dropped the requires/dependencies recursion, so adding a
146
+ bundle resolved only the bundle marker and deployed **zero** members. The
147
+ provenance walker now populates `ProvenanceCandidate.deps` for bundle
148
+ candidates (parsed from the `.bundle.yaml` / `BUNDLE.md` `requires` +
149
+ `dependencies`), and `resolveAll` recurses into them — so a tier bundle pulls
150
+ its full inheritance chain and every leaf skill (arbitrary depth, deduped via
151
+ the existing `seen` set). Bare transitive refs inherit the parent bundle's
152
+ publisher.
153
+
154
+ - `core/manifest` — new `bundleDepRefs(filePath)` returns a bundle's raw
155
+ canonical dep refs (publisher/pin preserved; unlike `parseRequires`).
156
+ - `core/walker` — `ProvenanceCandidate` gains `deps?: string[]`, populated for
157
+ bundles in both the manifest and filename-convention walk paths.
158
+ - `core/repo-manager` — `resolveAll.visit` recurses into `chosen.deps`,
159
+ qualifying bare refs with the parent publisher.
160
+
161
+ Non-bundle candidates are unaffected (no `deps`), so legacy skill frontmatter
162
+ `requires` are not auto-expanded.
163
+
164
+ - [`e219bf1`](https://github.com/skaile-ai/workspaces/commit/e219bf1a483538b2e6a8538ab87bda8c5063ad21) Thanks [@mortegro](https://github.com/mortegro)! - CLI: `skaile source add` now accepts GitHub shorthand — a bare `<name>`
165
+ resolves to `git@github.com:skaile-ai/<name>.git` and `<owner>/<repo>` to
166
+ `git@github.com:<owner>/<repo>.git`; full URLs and scp-style specs pass through
167
+ unchanged.
168
+
169
+ CLI: fixed `skaile npx skills add <url> --skill <name>` (the npx compatibility
170
+ shim) under the canonical-identity model. It now clones into the canonical
171
+ sources cache (`~/.skaile/sources/<slug>`), registers the source in the
172
+ project's `skaile.yaml` `sources[]`, builds a publisher-qualified ref
173
+ (`skill:<name>@<publisher>`, publisher from the source's `skaile.yaml` or its
174
+ GitHub org), and maps a requested SKILL.md `name:` to the directory the
175
+ canonical resolver keys by.
176
+
177
+ - [#54](https://github.com/skaile-ai/workspaces/pull/54) [`7bdaf11`](https://github.com/skaile-ai/workspaces/commit/7bdaf115c251136288a94a7f880b3a0f52145be8) Thanks [@mortegro](https://github.com/mortegro)! - Unified plugin registry + deploy providers.
178
+
179
+ **Breaking**
180
+
181
+ - Removed the external `registerDriver` / `registerConnector` APIs. Register a
182
+ typed target via `pluginRegistry.register(kind, target)` instead
183
+ (`@skaile/workspaces/plugin-registry`). `createDriver` / `getConnector` /
184
+ `listConnectors` survive as resolve-only wrappers.
185
+ - Dropped `ioredis` and `yjs` runtime deps and the bundled `redis` / `yjs`
186
+ connectors. Install `@skaile/connector-redis` / `@skaile/connector-yjs` via
187
+ `skaile plugin install`.
188
+ - Renamed the coding-agent adapter command `skaile plugin` →
189
+ `skaile integration` (install/uninstall/enable/disable/status/hook). The
190
+ `skaile plugin` name now manages registry plugins.
191
+
192
+ **Added**
193
+
194
+ - `@skaile/workspaces/plugin-registry` — one process-wide `pluginRegistry` with
195
+ three kinds (driver / connector / deployTarget), the Target contracts,
196
+ `DeployHandle` / `DeployContext`, and `resolveDeployTarget` (override > yaml >
197
+ default precedence).
198
+ - `@skaile/workspaces/deploy` — built-in `local` / `docker` / `podman` deploy
199
+ targets (loopback-only), `registerBuiltinDeployTargets()`, and the
200
+ `.skaile/deploy/handle.json` store.
201
+ - `@skaile/workspaces/connectors-shared` — minimal public connector API for
202
+ extracted connector plugins.
203
+ - `skaile.yaml` gains `plugins:` (project-local plugin store) and `deploy:`
204
+ blocks; `skaile.lock.yaml` gains a `plugins:` slice.
205
+ - CLI: `skaile deploy [up|down|status|logs]` and `skaile plugin
206
+ [install|remove|list]`.
207
+ - `DRIVER_CATALOG` → `BUILTIN_DRIVER_CATALOG` (old name kept as an alias); new
208
+ `BUILTIN_CONNECTOR_CATALOG`.
209
+
210
+ See `docs/migration-v2-to-v3.md`.
211
+ </content>
212
+
213
+ - [#71](https://github.com/skaile-ai/workspaces/pull/71) [`fb32a60`](https://github.com/skaile-ai/workspaces/commit/fb32a6028ce1c0639c3339e8561ba72dcd24388f) Thanks [@mortegro](https://github.com/mortegro)! - WebSocket transport: enforce a bearer auth token end-to-end so a deploy target's
214
+ issued `wsAuth` actually gates the socket.
215
+
216
+ - `WebSocketServerTransport` accepts `authToken`. When set, every upgrade must
217
+ present the matching token via the `skaile-bearer.<base64url>` subprotocol or
218
+ the handshake is rejected with HTTP 401 (before any command handler runs).
219
+ When unset, behaviour is unchanged (back-compatible).
220
+ - `WebSocketClientTransport` accepts `auth`; sends it as the WS subprotocol
221
+ (the one handshake field a browser client can populate).
222
+ - `startAgentServer` threads `opts.authToken ?? SKAILE_WS_AUTH_TOKEN` into the
223
+ default server, so `skaile serve` enforces the token from the environment.
224
+ - New `@skaile/workspaces/transport` exports: `encodeBearerSubprotocol`,
225
+ `decodeBearerFromHeader`, `tokensEqual`, `BEARER_SUBPROTOCOL_PREFIX`.
226
+ - Robustness fix: `WebSocketClientTransport.connect()` now rejects when the
227
+ socket closes or errors before opening (a rejected auth upgrade, or a refused
228
+ port) instead of hanging until the connect timeout.
229
+
230
+ ### Patch Changes
231
+
232
+ - [#60](https://github.com/skaile-ai/workspaces/pull/60) [`69f9924`](https://github.com/skaile-ai/workspaces/commit/69f99243cff137da1f835777e298e0779dec45e2) Thanks [@peteralbert](https://github.com/peteralbert)! - Emit sidecar `.d.ts` files next to each tsup `.js` output so consumers and
233
+ tools that look for a declaration file adjacent to the `.js` (classic node
234
+ resolution, some bundlers, IDE quick-lookups, ad-hoc `grep` audits) find one.
235
+
236
+ Previously, tsup emitted JS at `dist/<entry>.js` (e.g.
237
+ `dist/core/workspace-config.js`) while `tsc` emitted `.d.ts` at the
238
+ source-preserving path `dist/<src>/<entry>.d.ts` (e.g.
239
+ `dist/core/src/workspace-config.d.ts`). The package.json `exports` map
240
+ bridged these with separate `types` and `import` conditions — correct for
241
+ node16/nodenext/bundler resolvers, but invisible to anything looking
242
+ adjacent to the `.js`. A new post-build step (`build:dts-sidecars`) writes a
243
+ thin re-export shim at the tsup output path that points at the canonical
244
+ tsc-emitted declaration, eliminating the apparent stale-types mismatch
245
+ reported on `@skaile/workspaces/core/workspace-config`.
246
+
247
+ - [#66](https://github.com/skaile-ai/workspaces/pull/66) [`90a2c61`](https://github.com/skaile-ai/workspaces/commit/90a2c61564b4dd91ff54a96d3dcff213c35e465f) Thanks [@mortegro](https://github.com/mortegro)! - deploy(container): make `isRunning()` async so the docker/podman `inspect` round-trip stays off the event loop. Previously `health()`/`restore()` called a synchronous `portableSpawnSync` inspect, freezing log pumps and other connections on each status poll.
248
+
249
+ - [#73](https://github.com/skaile-ai/workspaces/pull/73) [`6aaac33`](https://github.com/skaile-ai/workspaces/commit/6aaac33e1ccf98c846c51b6ae57b305ebb558cf8) Thanks [@mortegro](https://github.com/mortegro)! - Fix `skaile manage` TUI row overflow when assets carry a `category`.
250
+
251
+ The category badge (`[category] `) sits between the asset name and the
252
+ description but its visible width was never subtracted from the description's
253
+ truncation budget, so categorized rows ran past the terminal width and wrapped.
254
+ The desc budget now accounts for the badge width.
255
+
256
+ - [#68](https://github.com/skaile-ai/workspaces/pull/68) [`4073406`](https://github.com/skaile-ai/workspaces/commit/407340687ce038c9ae8a71cc8b80e237545a4db9) Thanks [@Frozen666](https://github.com/Frozen666)! - fix(base-assets/git): recurse into submodules on clone and pull. Git mounts cloned without `--recurse-submodules` and never ran `submodule update`, leaving submodule directories empty or stale on upstream pointer bumps. A `syncSubmodules()` helper now runs after every ref-changing operation (clone, bootstrap, session-branch checkout, sync pull, merge-on-close, periodic auto-pull/rebase); it no-ops when `.gitmodules` is absent and swallows submodule failures so a broken submodule remote can't abort the parent mount.
257
+
258
+ - [#64](https://github.com/skaile-ai/workspaces/pull/64) [`f1b14f3`](https://github.com/skaile-ai/workspaces/commit/f1b14f3f9bed870efe6f8c7de2819cfbeeb444a2) Thanks [@mortegro](https://github.com/mortegro)! - fix(sdk): InProcessTransport now tracks real readiness and never drops commands
259
+
260
+ `InProcessTransport.connected` previously returned a hard-coded `true`, so
261
+ `LocalRuntime.isRunning` reported `true` even before `start()`. It now reflects
262
+ whether a command handler is actually registered.
263
+
264
+ `inject()` also silently dropped commands sent before the runner wired its
265
+ `onCommand` handler (e.g. a `debug`/`prompt` issued during the ~50ms `start()`
266
+ window, or against a lazily-started runtime), which made debug queries hang
267
+ until their own timeout. Such commands are now buffered and flushed to the
268
+ first handler, so none are lost.
269
+
270
+ `LocalRuntime` gains `whenReady()`, a promise resolved once `startAgentServer`
271
+ returns, so consumers can await wiring before issuing reply-expecting commands.
272
+
273
+ - [`03d1b69`](https://github.com/skaile-ai/workspaces/commit/03d1b6986fed2b586aede659c702575040cecfa3) Thanks [@mortegro](https://github.com/mortegro)! - Fix `skaile manage` TUI emitting publisher-less asset refs that crash on apply.
274
+
275
+ `assetRefOf` built `kind:name`, dropping the entry's publisher. Under the
276
+ canonical-identity schema `parseAssetRef` requires a publisher, so applying a
277
+ selection called `AssetManager.add("bundle:complex-app")` and threw
278
+ _"publisher required in asset ref"_. It now emits the canonical
279
+ `kind:name@<publisher>` via `assetRefToStr`. Entries with no publisher have no
280
+ canonical identity and are no longer selectable (returns `null`) instead of
281
+ producing a ref that throws; `repoAssetRefs`/`sourceAssetRefs` filter those out.
282
+
283
+ - [#60](https://github.com/skaile-ai/workspaces/pull/60) [`69f9924`](https://github.com/skaile-ai/workspaces/commit/69f99243cff137da1f835777e298e0779dec45e2) Thanks [@peteralbert](https://github.com/peteralbert)! - Add `unregister(kind, id)` to `PluginRegistry` so tests can swap a built-in
284
+ target (e.g. the real `local` / `git` connector) for a fake within the
285
+ process-wide singleton. Production callers should rarely reach for it —
286
+ built-ins and loaded plugins register once at startup and live for the
287
+ process — but the hook is needed for test isolation across describe blocks
288
+ that share the registry.
289
+
290
+ - [`cd3bee2`](https://github.com/skaile-ai/workspaces/commit/cd3bee27bd6e182b4d8f8d08f1816820edd2b0a7) Thanks [@mortegro](https://github.com/mortegro)! - Auto-clone url-backed source caches on miss. `ensureRepo` now clones a remote
291
+ source into its managed `~/.skaile/sources/<slug>` cache dir when the clone is
292
+ absent, instead of throwing `Local repository path not found` — so `skaile
293
+ install` works without a pre-populated clone. The source pin is no longer
294
+ mis-encoded as a clone `--branch` (tag/SHA pins now reach `checkoutPin`), and a
295
+ clone/auth failure surfaces as `missing: ["source:<slug> (<reason>)"]` rather
296
+ than a bare slug.
297
+
298
+ ## 0.22.0-beta.2
299
+
300
+ ### Minor Changes
301
+
302
+ - [`cd5b3b3`](https://github.com/skaile-ai/workspaces/commit/cd5b3b39ed6e65f0124d5cda81fc791ddd1c25e5) Thanks [@mortegro](https://github.com/mortegro)! - Asset display: regroup the `skaile manage` TUI as **publisher → repo → asset**.
303
+
304
+ The derived `domain` axis (first-level directory of a scanned repo) is replaced
305
+ by `repo` — the real `"<org>/<repo>"` GitHub coordinate. `category` is demoted
306
+ out of the tree to a row badge.
307
+
308
+ - `plugins` — `CatalogAsset` gains optional `repo?`.
309
+ - `core` — `CatalogEntry` drops `domain`, gains `repo?` and `category?`.
310
+ `entryFromRaw` reads `repo` with a one-release legacy-`domain` read-fallback
311
+ (stale `catalog.yaml` caches self-heal on next write). `scanRepo` derives
312
+ `repo` once from the scanned root's git remote (`repoSlugFromGitRemote`) and
313
+ stamps it onto every entry; `scanDirectory` no longer emits a per-asset
314
+ `domain`.
315
+ - `library` — `RemoteCatalogSource` threads the store's `repo` through.
316
+ - `cli` — `manage` regroups to publisher → repo → asset with category badges;
317
+ the `asset-feeds` store mapping now carries `publisher`/`repo`/`category`
318
+ (fixing the bug that mis-shelved every remote asset under `other`).
319
+
320
+ Local libraries with no git remote (and non-GitHub sources) have no `repo`;
321
+ their assets group directly under the publisher.
322
+
323
+ - [#71](https://github.com/skaile-ai/workspaces/pull/71) [`fb32a60`](https://github.com/skaile-ai/workspaces/commit/fb32a6028ce1c0639c3339e8561ba72dcd24388f) Thanks [@mortegro](https://github.com/mortegro)! - Deploy contract: add a generic per-session injection channel and a built-in
324
+ `nix` target, so a host (e.g. skaile-platform) can drive every deploy target
325
+ uniformly without forking the decision in its own code.
326
+
327
+ - `DeployContext` gains optional `mounts` / `labels` / `resources`
328
+ (`@skaile/workspaces/plugin-registry`, with new `DeployMount` / `DeployResources`
329
+ types). Container built-ins (`docker` / `podman`) map them to `-v` / `--label`
330
+ / `--cpus` / `--memory` / `--pids-limit`; the process built-ins ignore mounts.
331
+ Target-specific policy (apparmor, FUSE, fleet binds, …) stays in each target's
332
+ own `configSchema` — it never enters this shared context.
333
+ - `local` now also merges `ctx.env` into the spawned process env (`config.env`
334
+ still wins).
335
+ - New built-in `nixDeployTarget` (id `nix`) runs `skaile serve` inside a
336
+ `nix shell` over `ws://127.0.0.1:<port>`; registered by
337
+ `registerBuiltinDeployTargets()`. Exports `nixDeployTarget` + the pure
338
+ `buildNixArgs()` from `@skaile/workspaces/deploy`. Generic on purpose
339
+ (`flakeRef` + `stackAttr` only).
340
+
341
+ - [`e219bf1`](https://github.com/skaile-ai/workspaces/commit/e219bf1a483538b2e6a8538ab87bda8c5063ad21) Thanks [@mortegro](https://github.com/mortegro)! - CLI: `skaile source add` now accepts GitHub shorthand — a bare `<name>`
342
+ resolves to `git@github.com:skaile-ai/<name>.git` and `<owner>/<repo>` to
343
+ `git@github.com:<owner>/<repo>.git`; full URLs and scp-style specs pass through
344
+ unchanged.
345
+
346
+ CLI: fixed `skaile npx skills add <url> --skill <name>` (the npx compatibility
347
+ shim) under the canonical-identity model. It now clones into the canonical
348
+ sources cache (`~/.skaile/sources/<slug>`), registers the source in the
349
+ project's `skaile.yaml` `sources[]`, builds a publisher-qualified ref
350
+ (`skill:<name>@<publisher>`, publisher from the source's `skaile.yaml` or its
351
+ GitHub org), and maps a requested SKILL.md `name:` to the directory the
352
+ canonical resolver keys by.
353
+
354
+ - [#71](https://github.com/skaile-ai/workspaces/pull/71) [`fb32a60`](https://github.com/skaile-ai/workspaces/commit/fb32a6028ce1c0639c3339e8561ba72dcd24388f) Thanks [@mortegro](https://github.com/mortegro)! - WebSocket transport: enforce a bearer auth token end-to-end so a deploy target's
355
+ issued `wsAuth` actually gates the socket.
356
+
357
+ - `WebSocketServerTransport` accepts `authToken`. When set, every upgrade must
358
+ present the matching token via the `skaile-bearer.<base64url>` subprotocol or
359
+ the handshake is rejected with HTTP 401 (before any command handler runs).
360
+ When unset, behaviour is unchanged (back-compatible).
361
+ - `WebSocketClientTransport` accepts `auth`; sends it as the WS subprotocol
362
+ (the one handshake field a browser client can populate).
363
+ - `startAgentServer` threads `opts.authToken ?? SKAILE_WS_AUTH_TOKEN` into the
364
+ default server, so `skaile serve` enforces the token from the environment.
365
+ - New `@skaile/workspaces/transport` exports: `encodeBearerSubprotocol`,
366
+ `decodeBearerFromHeader`, `tokensEqual`, `BEARER_SUBPROTOCOL_PREFIX`.
367
+ - Robustness fix: `WebSocketClientTransport.connect()` now rejects when the
368
+ socket closes or errors before opening (a rejected auth upgrade, or a refused
369
+ port) instead of hanging until the connect timeout.
370
+
371
+ ### Patch Changes
372
+
373
+ - [#68](https://github.com/skaile-ai/workspaces/pull/68) [`4073406`](https://github.com/skaile-ai/workspaces/commit/407340687ce038c9ae8a71cc8b80e237545a4db9) Thanks [@Frozen666](https://github.com/Frozen666)! - fix(base-assets/git): recurse into submodules on clone and pull. Git mounts cloned without `--recurse-submodules` and never ran `submodule update`, leaving submodule directories empty or stale on upstream pointer bumps. A `syncSubmodules()` helper now runs after every ref-changing operation (clone, bootstrap, session-branch checkout, sync pull, merge-on-close, periodic auto-pull/rebase); it no-ops when `.gitmodules` is absent and swallows submodule failures so a broken submodule remote can't abort the parent mount.
374
+
375
+ - [`cd3bee2`](https://github.com/skaile-ai/workspaces/commit/cd3bee27bd6e182b4d8f8d08f1816820edd2b0a7) Thanks [@mortegro](https://github.com/mortegro)! - Auto-clone url-backed source caches on miss. `ensureRepo` now clones a remote
376
+ source into its managed `~/.skaile/sources/<slug>` cache dir when the clone is
377
+ absent, instead of throwing `Local repository path not found` — so `skaile
378
+ install` works without a pre-populated clone. The source pin is no longer
379
+ mis-encoded as a clone `--branch` (tag/SHA pins now reach `checkoutPin`), and a
380
+ clone/auth failure surfaces as `missing: ["source:<slug> (<reason>)"]` rather
381
+ than a bare slug.
382
+
3
383
  ## 0.22.0-beta.1
4
384
 
5
385
  ### Minor Changes
@@ -1,10 +1,10 @@
1
- import './chunk-UMOENHVH.js';
1
+ import './chunk-ETMUGBHF.js';
2
2
  import './chunk-K5GBV4SA.js';
3
3
  import './chunk-KLNL7QHN.js';
4
- import './chunk-GFNW72LW.js';
5
- import { scanRepo } from './chunk-J3VKAEQP.js';
6
- import './chunk-4AZKT2BU.js';
7
- import './chunk-I3UEM3FX.js';
4
+ import './chunk-PFOXL4SH.js';
5
+ import { scanRepo } from './chunk-V5TBKO5Q.js';
6
+ import './chunk-K7WPR77X.js';
7
+ import './chunk-VUCPJBAG.js';
8
8
  import './chunk-JKNWJ64A.js';
9
9
  import './chunk-O4JH3KUE.js';
10
10
  import './chunk-24UIWON4.js';
@@ -16,15 +16,13 @@ async function libraryAssets() {
16
16
  const notes = [];
17
17
  try {
18
18
  const [{ openLibraryManager }, { skaileHomeDir }] = await Promise.all([
19
- import('./open-library-M4DB3D3J.js'),
19
+ import('./open-library-CT4VVESU.js'),
20
20
  import('./library/index.js')
21
21
  ]);
22
22
  const { manager, close } = await openLibraryManager();
23
23
  try {
24
24
  const sourcesDir = path.join(skaileHomeDir(), "sources");
25
- const libs = (await manager.listLibraries()).filter(
26
- (l) => !l.path.startsWith(sourcesDir)
27
- );
25
+ const libs = (await manager.listLibraries()).filter((l) => !l.path.startsWith(sourcesDir));
28
26
  const entries = [];
29
27
  for (const lib of libs) {
30
28
  if (!existsSync(lib.path)) continue;
@@ -47,7 +45,7 @@ async function libraryAssets() {
47
45
  async function storeAssets(projectDir) {
48
46
  const notes = [];
49
47
  try {
50
- const { resolveCatalogSource } = await import('./open-library-M4DB3D3J.js');
48
+ const { resolveCatalogSource } = await import('./open-library-CT4VVESU.js');
51
49
  const { source, close } = await resolveCatalogSource({ projectDir });
52
50
  try {
53
51
  const assets = await source.listAssets();
@@ -56,8 +54,9 @@ async function storeAssets(projectDir) {
56
54
  kind: a.kind ?? "skill",
57
55
  description: a.description ?? "",
58
56
  source: `store://${a.id}`,
59
- repository: "store",
60
- domain: a.publisher,
57
+ publisher: a.publisher,
58
+ repo: a.repo,
59
+ category: a.category,
61
60
  version: a.version,
62
61
  requires: [],
63
62
  dependencies: []
@@ -86,5 +85,5 @@ async function gatherAssetFeeds(am, projectDir) {
86
85
  }
87
86
 
88
87
  export { gatherAssetFeeds, sourceAssets };
89
- //# sourceMappingURL=asset-feeds-QXCSAJRN.js.map
90
- //# sourceMappingURL=asset-feeds-QXCSAJRN.js.map
88
+ //# sourceMappingURL=asset-feeds-Y2CDCM3W.js.map
89
+ //# sourceMappingURL=asset-feeds-Y2CDCM3W.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../cli/src/asset-feeds.ts"],"names":[],"mappings":"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","file":"asset-feeds-Y2CDCM3W.js","sourcesContent":["/**\n * asset-feeds.ts — gather installable assets from every feed the manage TUI\n * surfaces.\n *\n * Three 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 * - **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 } from \"node:fs\";\nimport * as path from \"node:path\";\nimport { type AssetKind, type CatalogEntry, scanRepo } from \"@skaile/workspaces/core\";\n\n/** One non-fatal note returned to the caller for surfacing in the UI. */\nexport interface FeedNote {\n feed: \"sources\" | \"libraries\" | \"store\";\n message: string;\n}\n\nexport interface AssetFeedResult {\n entries: CatalogEntry[];\n notes: FeedNote[];\n}\n\n/**\n * Pull assets from local libraries (the authoring places under\n * `~/.skaile/libraries/<name>/`, not the `~/.skaile/sources/` cache). Each\n * library's `path` is scanned with `scanRepo` and tagged with\n * `repository = \"library:<name>\"` so the manage TUI groups them into their\n * own headers.\n */\nasync function libraryAssets(): Promise<{ entries: CatalogEntry[]; notes: FeedNote[] }> {\n const notes: FeedNote[] = [];\n try {\n const [{ openLibraryManager }, { skaileHomeDir }] = await Promise.all([\n import(\"./open-library.ts\"),\n import(\"@skaile/workspaces/library\"),\n ]);\n const { manager, close } = await openLibraryManager();\n try {\n const sourcesDir = path.join(skaileHomeDir(), \"sources\");\n const libs = (await manager.listLibraries()).filter((l) => !l.path.startsWith(sourcesDir));\n const entries: CatalogEntry[] = [];\n for (const lib of libs) {\n if (!existsSync(lib.path)) continue;\n for (const e of scanRepo(lib.path, `library:${lib.name}`)) {\n entries.push(e);\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 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 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/**\n * Project-source feed: leans on `AssetManager.search()`, which now merges\n * `skaile.yaml`'s `sources:` field into the repositories map. Provided as a\n * function rather than an inline call so the caller can supply a fresh\n * `AssetManager` instance.\n */\nexport function sourceAssets(am: { search: () => CatalogEntry[] }): CatalogEntry[] {\n return am.search();\n}\n\n/**\n * Run all three 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.\n */\nexport async function gatherAssetFeeds(\n am: { search: () => CatalogEntry[] },\n projectDir: string,\n): Promise<AssetFeedResult> {\n const [libs, store] = await Promise.all([libraryAssets(), storeAssets(projectDir)]);\n return {\n entries: [...sourceAssets(am), ...libs.entries, ...store.entries],\n notes: [...libs.notes, ...store.notes],\n };\n}\n"]}
@@ -1,12 +1,12 @@
1
- export { AssetManager } from '../chunk-VCYXVP2S.js';
2
- export { createScaffold, deployAll, installAgent, removeAsset } from '../chunk-PTIHB2TV.js';
3
- import '../chunk-UMOENHVH.js';
1
+ export { AssetManager } from '../chunk-7HSXUKNB.js';
2
+ export { createScaffold, deployAll, installAgent, removeAsset } from '../chunk-2RYQERIT.js';
3
+ import '../chunk-ETMUGBHF.js';
4
4
  import '../chunk-K5GBV4SA.js';
5
5
  import '../chunk-KLNL7QHN.js';
6
- import '../chunk-GFNW72LW.js';
7
- import '../chunk-J3VKAEQP.js';
8
- import '../chunk-4AZKT2BU.js';
9
- import '../chunk-I3UEM3FX.js';
6
+ import '../chunk-PFOXL4SH.js';
7
+ import '../chunk-V5TBKO5Q.js';
8
+ import '../chunk-K7WPR77X.js';
9
+ import '../chunk-VUCPJBAG.js';
10
10
  import '../chunk-JKNWJ64A.js';
11
11
  import '../chunk-O4JH3KUE.js';
12
12
  import '../chunk-24UIWON4.js';
@@ -1,11 +1,11 @@
1
- export { createScaffold, deployAll, deployAsset, removeAsset } from '../chunk-PTIHB2TV.js';
2
- import '../chunk-UMOENHVH.js';
1
+ export { createScaffold, deployAll, deployAsset, removeAsset } from '../chunk-2RYQERIT.js';
2
+ import '../chunk-ETMUGBHF.js';
3
3
  import '../chunk-K5GBV4SA.js';
4
4
  import '../chunk-KLNL7QHN.js';
5
- import '../chunk-GFNW72LW.js';
6
- import '../chunk-J3VKAEQP.js';
7
- import '../chunk-4AZKT2BU.js';
8
- import '../chunk-I3UEM3FX.js';
5
+ import '../chunk-PFOXL4SH.js';
6
+ import '../chunk-V5TBKO5Q.js';
7
+ import '../chunk-K7WPR77X.js';
8
+ import '../chunk-VUCPJBAG.js';
9
9
  import '../chunk-JKNWJ64A.js';
10
10
  import '../chunk-O4JH3KUE.js';
11
11
  import '../chunk-24UIWON4.js';
@@ -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":"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"}
@@ -1,18 +1,18 @@
1
- export { DeployConnector, createConnector19 as createConnector } from '../../chunk-LT4DLEYE.js';
2
- import '../../chunk-APAOQLPT.js';
1
+ export { DeployConnector, createConnector19 as createConnector } from '../../chunk-OJN25VJO.js';
2
+ import '../../chunk-NBJ5TOEC.js';
3
3
  import '../../chunk-6MB7CRME.js';
4
4
  import '../../chunk-QAVZOJCV.js';
5
5
  import '../../chunk-6E6PKKAD.js';
6
6
  import '../../chunk-ICS76R4T.js';
7
7
  import '../../chunk-GZWJGNNN.js';
8
8
  import '../../chunk-FVTV7M76.js';
9
- import '../../chunk-UMOENHVH.js';
9
+ import '../../chunk-ETMUGBHF.js';
10
10
  import '../../chunk-K5GBV4SA.js';
11
11
  import '../../chunk-KLNL7QHN.js';
12
- import '../../chunk-GFNW72LW.js';
13
- import '../../chunk-J3VKAEQP.js';
14
- import '../../chunk-4AZKT2BU.js';
15
- import '../../chunk-I3UEM3FX.js';
12
+ import '../../chunk-PFOXL4SH.js';
13
+ import '../../chunk-V5TBKO5Q.js';
14
+ import '../../chunk-K7WPR77X.js';
15
+ import '../../chunk-VUCPJBAG.js';
16
16
  import '../../chunk-JKNWJ64A.js';
17
17
  import '../../chunk-O4JH3KUE.js';
18
18
  import '../../chunk-24UIWON4.js';
@@ -1,18 +1,18 @@
1
- export { DevServerConnector, createConnector16 as createConnector } from '../../chunk-LT4DLEYE.js';
2
- import '../../chunk-APAOQLPT.js';
1
+ export { DevServerConnector, createConnector16 as createConnector } from '../../chunk-OJN25VJO.js';
2
+ import '../../chunk-NBJ5TOEC.js';
3
3
  import '../../chunk-6MB7CRME.js';
4
4
  import '../../chunk-QAVZOJCV.js';
5
5
  import '../../chunk-6E6PKKAD.js';
6
6
  import '../../chunk-ICS76R4T.js';
7
7
  import '../../chunk-GZWJGNNN.js';
8
8
  import '../../chunk-FVTV7M76.js';
9
- import '../../chunk-UMOENHVH.js';
9
+ import '../../chunk-ETMUGBHF.js';
10
10
  import '../../chunk-K5GBV4SA.js';
11
11
  import '../../chunk-KLNL7QHN.js';
12
- import '../../chunk-GFNW72LW.js';
13
- import '../../chunk-J3VKAEQP.js';
14
- import '../../chunk-4AZKT2BU.js';
15
- import '../../chunk-I3UEM3FX.js';
12
+ import '../../chunk-PFOXL4SH.js';
13
+ import '../../chunk-V5TBKO5Q.js';
14
+ import '../../chunk-K7WPR77X.js';
15
+ import '../../chunk-VUCPJBAG.js';
16
16
  import '../../chunk-JKNWJ64A.js';
17
17
  import '../../chunk-O4JH3KUE.js';
18
18
  import '../../chunk-24UIWON4.js';
@@ -1,18 +1,18 @@
1
- export { FlowAdapter, createConnector } from '../../../chunk-LT4DLEYE.js';
2
- import '../../../chunk-APAOQLPT.js';
1
+ export { FlowAdapter, createConnector } from '../../../chunk-OJN25VJO.js';
2
+ import '../../../chunk-NBJ5TOEC.js';
3
3
  import '../../../chunk-6MB7CRME.js';
4
4
  import '../../../chunk-QAVZOJCV.js';
5
5
  import '../../../chunk-6E6PKKAD.js';
6
6
  export { isBlocking } from '../../../chunk-ICS76R4T.js';
7
7
  import '../../../chunk-GZWJGNNN.js';
8
8
  import '../../../chunk-FVTV7M76.js';
9
- import '../../../chunk-UMOENHVH.js';
9
+ import '../../../chunk-ETMUGBHF.js';
10
10
  import '../../../chunk-K5GBV4SA.js';
11
11
  import '../../../chunk-KLNL7QHN.js';
12
- import '../../../chunk-GFNW72LW.js';
13
- import '../../../chunk-J3VKAEQP.js';
14
- import '../../../chunk-4AZKT2BU.js';
15
- import '../../../chunk-I3UEM3FX.js';
12
+ import '../../../chunk-PFOXL4SH.js';
13
+ import '../../../chunk-V5TBKO5Q.js';
14
+ import '../../../chunk-K7WPR77X.js';
15
+ import '../../../chunk-VUCPJBAG.js';
16
16
  import '../../../chunk-JKNWJ64A.js';
17
17
  import '../../../chunk-O4JH3KUE.js';
18
18
  import '../../../chunk-24UIWON4.js';