@skaile/workspaces 0.22.0-beta.2 → 0.23.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 (132) hide show
  1. package/CHANGELOG.md +387 -0
  2. package/dist/{asset-feeds-2M6UKEJ7.js → asset-feeds-WKIKSZ6Z.js} +9 -9
  3. package/dist/{asset-feeds-2M6UKEJ7.js.map → asset-feeds-WKIKSZ6Z.js.map} +1 -1
  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 +15 -0
  7. package/dist/asset-manager/src/index.d.ts.map +1 -1
  8. package/dist/base-assets/connectors/deploy.js +8 -8
  9. package/dist/base-assets/connectors/devserver.js +8 -8
  10. package/dist/base-assets/connectors/flow/adapter.js +8 -8
  11. package/dist/base-assets/connectors/flow/run-flow.js +9 -9
  12. package/dist/base-assets/connectors/flow.js +8 -8
  13. package/dist/base-assets/connectors/git.js +8 -8
  14. package/dist/base-assets/connectors/gmail.js +8 -8
  15. package/dist/base-assets/connectors/googledrive/driver.d.ts.map +1 -1
  16. package/dist/base-assets/connectors/googledrive.js +8 -8
  17. package/dist/base-assets/connectors/local.js +8 -8
  18. package/dist/base-assets/connectors/mattermost.js +8 -8
  19. package/dist/base-assets/connectors/memory.js +8 -8
  20. package/dist/base-assets/connectors/minio.js +8 -8
  21. package/dist/base-assets/connectors/postgres.js +8 -8
  22. package/dist/base-assets/connectors/s3.js +8 -8
  23. package/dist/base-assets/connectors/sharepoint/driver.d.ts.map +1 -1
  24. package/dist/base-assets/connectors/sharepoint.js +8 -8
  25. package/dist/base-assets/connectors/sqlite.js +8 -8
  26. package/dist/base-assets/connectors/static-server.js +8 -8
  27. package/dist/base-assets/connectors/tunnel.js +8 -8
  28. package/dist/base-assets/connectors/webdav/driver.d.ts.map +1 -1
  29. package/dist/base-assets/connectors/webdav.js +8 -8
  30. package/dist/base-assets/connectors/xstate-store.js +8 -8
  31. package/dist/base-assets/connectors/xstate.js +8 -8
  32. package/dist/{chunk-I5SGBFMM.js → chunk-2F3RUZXC.js} +3 -3
  33. package/dist/{chunk-I5SGBFMM.js.map → chunk-2F3RUZXC.js.map} +1 -1
  34. package/dist/{chunk-LDLZFYLR.js → chunk-2RFOFHSM.js} +4 -4
  35. package/dist/{chunk-LDLZFYLR.js.map → chunk-2RFOFHSM.js.map} +1 -1
  36. package/dist/{chunk-UBLTUFFI.js → chunk-46COM7M5.js} +5 -5
  37. package/dist/{chunk-UBLTUFFI.js.map → chunk-46COM7M5.js.map} +1 -1
  38. package/dist/{chunk-LDYPQVRU.js → chunk-542K7SR6.js} +96 -39
  39. package/dist/chunk-542K7SR6.js.map +1 -0
  40. package/dist/{chunk-74GTZ4TJ.js → chunk-5ESCS2OS.js} +4 -4
  41. package/dist/{chunk-74GTZ4TJ.js.map → chunk-5ESCS2OS.js.map} +1 -1
  42. package/dist/{chunk-FVZLCBSX.js → chunk-AFLH7B64.js} +3 -3
  43. package/dist/{chunk-FVZLCBSX.js.map → chunk-AFLH7B64.js.map} +1 -1
  44. package/dist/{chunk-TWQPDBHB.js → chunk-BTAC2VYT.js} +19 -18
  45. package/dist/chunk-BTAC2VYT.js.map +1 -0
  46. package/dist/{chunk-NQL3T75I.js → chunk-DH4N5AW4.js} +33 -9
  47. package/dist/chunk-DH4N5AW4.js.map +1 -0
  48. package/dist/{chunk-NICAMYPV.js → chunk-DZCFFTAX.js} +9 -9
  49. package/dist/{chunk-NICAMYPV.js.map → chunk-DZCFFTAX.js.map} +1 -1
  50. package/dist/{chunk-6SA2SIOU.js → chunk-E4UJ7CVK.js} +31 -126
  51. package/dist/chunk-E4UJ7CVK.js.map +1 -0
  52. package/dist/{chunk-CEUHU3C4.js → chunk-LJ52ZKIU.js} +3 -3
  53. package/dist/{chunk-CEUHU3C4.js.map → chunk-LJ52ZKIU.js.map} +1 -1
  54. package/dist/{chunk-M5JDVO6D.js → chunk-ODPII24X.js} +3 -3
  55. package/dist/{chunk-M5JDVO6D.js.map → chunk-ODPII24X.js.map} +1 -1
  56. package/dist/{chunk-FIHVQFXB.js → chunk-OVQZ5OKL.js} +2 -2
  57. package/dist/{chunk-FIHVQFXB.js.map → chunk-OVQZ5OKL.js.map} +1 -1
  58. package/dist/{chunk-6MB7CRME.js → chunk-QMONOHXT.js} +268 -37
  59. package/dist/chunk-QMONOHXT.js.map +1 -0
  60. package/dist/{chunk-3KLWGHDE.js → chunk-QTWA6BZK.js} +5 -5
  61. package/dist/{chunk-3KLWGHDE.js.map → chunk-QTWA6BZK.js.map} +1 -1
  62. package/dist/{chunk-4NDWKA64.js → chunk-WSZAFRQL.js} +8 -3
  63. package/dist/chunk-WSZAFRQL.js.map +1 -0
  64. package/dist/{chunk-VUCPJBAG.js → chunk-YX3UWPJ5.js} +53 -28
  65. package/dist/chunk-YX3UWPJ5.js.map +1 -0
  66. package/dist/{chunk-P4FYHEHW.js → chunk-Z3M5K67G.js} +8 -8
  67. package/dist/chunk-Z3M5K67G.js.map +1 -0
  68. package/dist/cli/index.js +49 -44
  69. package/dist/cli/index.js.map +1 -1
  70. package/dist/cli/src/commands/manage.d.ts +1 -1
  71. package/dist/cli/src/commands/manage.d.ts.map +1 -1
  72. package/dist/cli/src/helpers.d.ts +7 -0
  73. package/dist/cli/src/helpers.d.ts.map +1 -1
  74. package/dist/connectors/config.js +6 -6
  75. package/dist/connectors/index.js +8 -8
  76. package/dist/connectors/rclone.js +2 -1
  77. package/dist/connectors/src/rclone-process-manager.d.ts +91 -3
  78. package/dist/connectors/src/rclone-process-manager.d.ts.map +1 -1
  79. package/dist/connectors/src/watcher.d.ts +6 -0
  80. package/dist/connectors/src/watcher.d.ts.map +1 -1
  81. package/dist/core/index.js +5 -5
  82. package/dist/core/manifest.js +2 -2
  83. package/dist/core/models.js +1 -1
  84. package/dist/core/runtime-assets.js +4 -4
  85. package/dist/core/src/index.d.ts +2 -2
  86. package/dist/core/src/index.d.ts.map +1 -1
  87. package/dist/core/src/lock.d.ts +6 -6
  88. package/dist/core/src/manifest.d.ts +16 -0
  89. package/dist/core/src/manifest.d.ts.map +1 -1
  90. package/dist/core/src/models.d.ts +25 -18
  91. package/dist/core/src/models.d.ts.map +1 -1
  92. package/dist/core/src/repo-manager.d.ts +8 -2
  93. package/dist/core/src/repo-manager.d.ts.map +1 -1
  94. package/dist/core/src/walker.d.ts +4 -0
  95. package/dist/core/src/walker.d.ts.map +1 -1
  96. package/dist/core/src/workspace-config.d.ts +14 -0
  97. package/dist/core/src/workspace-config.d.ts.map +1 -1
  98. package/dist/core/workspace-config.js +3 -3
  99. package/dist/deploy/index.js +5 -5
  100. package/dist/discovery/index.js +3 -3
  101. package/dist/{ensure-sources-ALTI5PXR.js → ensure-sources-OJUBGX6Z.js} +10 -10
  102. package/dist/{ensure-sources-ALTI5PXR.js.map → ensure-sources-OJUBGX6Z.js.map} +1 -1
  103. package/dist/helpers-LTN3HMD3.js +4 -0
  104. package/dist/{helpers-I3SREIC3.js.map → helpers-LTN3HMD3.js.map} +1 -1
  105. package/dist/library/index.js +4 -4
  106. package/dist/open-library-67FSSQWE.js +13 -0
  107. package/dist/{open-library-EEGG6RDN.js.map → open-library-67FSSQWE.js.map} +1 -1
  108. package/dist/{plugin-store-G277ZX3B.js → plugin-store-IZ5SCRAV.js} +7 -7
  109. package/dist/{plugin-store-G277ZX3B.js.map → plugin-store-IZ5SCRAV.js.map} +1 -1
  110. package/dist/runner/index.js +10 -10
  111. package/dist/sdk/asset-manager.js +7 -7
  112. package/dist/sdk/core.js +5 -5
  113. package/dist/sdk/index.js +10 -10
  114. package/dist/sdk/runner.js +10 -10
  115. package/dist/{setup-REX4I5NE.js → setup-J7CYEQOF.js} +7 -7
  116. package/dist/{setup-REX4I5NE.js.map → setup-J7CYEQOF.js.map} +1 -1
  117. package/dist/store-client-AEI6Y3KD.js +14 -0
  118. package/dist/{store-client-IX3Y67NK.js.map → store-client-AEI6Y3KD.js.map} +1 -1
  119. package/dist/tui/index.js +10 -10
  120. package/dist/workspace-plugin/index.js +1 -1
  121. package/package.json +1 -1
  122. package/dist/chunk-4NDWKA64.js.map +0 -1
  123. package/dist/chunk-6MB7CRME.js.map +0 -1
  124. package/dist/chunk-6SA2SIOU.js.map +0 -1
  125. package/dist/chunk-LDYPQVRU.js.map +0 -1
  126. package/dist/chunk-NQL3T75I.js.map +0 -1
  127. package/dist/chunk-P4FYHEHW.js.map +0 -1
  128. package/dist/chunk-TWQPDBHB.js.map +0 -1
  129. package/dist/chunk-VUCPJBAG.js.map +0 -1
  130. package/dist/helpers-I3SREIC3.js +0 -4
  131. package/dist/open-library-EEGG6RDN.js +0 -13
  132. package/dist/store-client-IX3Y67NK.js +0 -14
package/CHANGELOG.md CHANGED
@@ -1,5 +1,392 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.23.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#77](https://github.com/skaile-ai/workspaces/pull/77) [`9e6fbdf`](https://github.com/skaile-ai/workspaces/commit/9e6fbdfd73705ac734da9eb195096394cbd51122) Thanks [@peteralbert](https://github.com/peteralbert)! - fix(connectors): stabilize-before-upload for the rclone-backed connectors (sharepoint/webdav/googledrive)
8
+
9
+ rclone repeatedly failed to upload a file the agent was actively rewriting: the
10
+ upload started mid-write, the source grew during transfer, and rclone aborted
11
+ with `corrupted on transfer: sizes differ` and retried indefinitely — invisible
12
+ to sibling sessions that only share state through the remote. Three guards in
13
+ `RcloneProcessManager` address the race:
14
+
15
+ - `--vfs-write-back` is now a connector option (`options.vfsWriteBack`, plumbed
16
+ via `RcloneSpawnConfig.vfsWriteBack`) with its default raised from a
17
+ hard-coded `5s` to `30s`, so a rapidly-rewritten file settles before upload.
18
+ - `flush()` now waits for the VFS cache dir to go quiescent (no write within a
19
+ stability window, bounded by a timeout) before issuing `/vfs/refresh`, so a
20
+ close/hibernate-triggered flush never snapshots a half-written file.
21
+ - A sustained upload failure (the same object failing `K=3` times in a row) now
22
+ surfaces an error-level `sync_status`/`phase:error` log through the
23
+ `<driver>+rclone` subkind instead of retrying silently forever.
24
+
25
+ - [`0f4dcf2`](https://github.com/skaile-ai/workspaces/commit/0f4dcf28878590dee416dd57084e374c35d85d8c) Thanks [@mortegro](https://github.com/mortegro)! - feat(core): migrate asset-ref grammar to npm-style scope `kind:@publisher/name[#version]`
26
+
27
+ The canonical asset-ref grammar changes from `kind:name@<publisher>[#pin]` to
28
+ `kind:@<publisher>/name[#version]` — `@` is now exclusively the scope sigil and
29
+ `#` the version sigil, so `@publisher/name` reads as an npm scoped package. The
30
+ lock key is now a fully-pinned ref of this exact shape
31
+ (`kind:@<publisher>/name#version`), collapsing the graph ref, lock key, and store
32
+ install coordinate into one grammar.
33
+
34
+ **Lock files must be regenerated.** The lock `schema_version` is bumped `2 → 3`.
35
+ An older lock is rejected with a clear regenerate error before any key is parsed:
36
+
37
+ ```
38
+ rm skaile.lock.yaml && skaile install
39
+ ```
40
+
41
+ **Deprecation window.** Legacy `kind:name@<publisher>` refs and a trailing
42
+ `@version` (pure-npm shape) still parse for this release, each emitting a one-time
43
+ deprecation warning. Both are removed in the next release, after which they throw
44
+ with a `migrate-skaile-manifest` hint. Run the `migrate-skaile-manifest` skill to
45
+ rewrite authored manifests now.
46
+
47
+ ### Patch Changes
48
+
49
+ - [#76](https://github.com/skaile-ai/workspaces/pull/76) [`3d93dba`](https://github.com/skaile-ai/workspaces/commit/3d93dba7e84c980bbb1d4cefab3cd8cf2647fc92) Thanks [@mortegro](https://github.com/mortegro)! - fix(cli): stop long asset names overflowing the `skaile manage` row
50
+
51
+ `renderAssetRow` padded the name to 30 columns but never truncated it, so a
52
+ name longer than 30 chars pushed the badge/description past the row width (the
53
+ desc budget assumes name is exactly 30 wide). The Sources/Libraries rows had the
54
+ same `padEnd`-only bug on their name columns. Added a `fitWidth` helper
55
+ (truncate-with-`…` then pad) and used it for every fixed-width name column.
56
+
57
+ - [#74](https://github.com/skaile-ai/workspaces/pull/74) [`f514c6b`](https://github.com/skaile-ai/workspaces/commit/f514c6b870a2555e41bb9641826fd27d715d3cd0) Thanks [@mortegro](https://github.com/mortegro)! - fix(core): align manage-TUI listing with `add` resolution
58
+
59
+ Two divergences let `skaile manage` offer assets that `add` then failed to
60
+ resolve with `Asset not found`:
61
+
62
+ - `scanRepo`/`scanDirectory` stamped `CatalogEntry.publisher` with the source's
63
+ config key (slug), while `resolveAll` keys the provenance index by the
64
+ source's declared `skaile.yaml` `publisher` (GitHub-org fallback). When the
65
+ two differ, the TUI emitted `name@<slug>` refs the resolver couldn't find.
66
+ `scanRepo` now derives the publisher the same way the walker does.
67
+ - The provenance fallback (`walkFilenameConvention`, used when a source has no
68
+ `assets[]`) only scanned top-level `<kind-plural>/<name>/` dirs, while the TUI
69
+ scanner (`scanDirectory`) recurses the whole tree. A nested asset
70
+ (e.g. `flows/x/x.bundle.yaml`) was listed but unresolvable. The fallback now
71
+ reuses `scanDirectory`, so both paths discover the same assets by
72
+ construction.
73
+
74
+ - [#78](https://github.com/skaile-ai/workspaces/pull/78) [`cd5ecf9`](https://github.com/skaile-ai/workspaces/commit/cd5ecf95d3f2d7bf8f71cc9afe333c7b184afe24) Thanks [@peteralbert](https://github.com/peteralbert)! - fix(connectors): add SharePoint `ignoreSizeCheck` option for server-side byte mutation
75
+
76
+ SharePoint Online normalises some text uploads server-side (observed: `*.html`
77
+ with `LF` rewritten to `CRLF`), so the stored object ends up a different byte
78
+ size and checksum than the local source. rclone's post-transfer verification
79
+ correctly flags this as `corrupted on transfer: sizes differ`, deletes the
80
+ just-uploaded object ("Removing failed copy"), and retries indefinitely — so
81
+ the affected file never durably lands on the remote and sibling sessions in the
82
+ same project never see it. Sibling `*.md` / `*.mjs` uploads are unaffected
83
+ because they aren't normalised.
84
+
85
+ Adds an off-by-default `options.ignoreSizeCheck` to the SharePoint connector.
86
+ When `true`, it appends `--ignore-size --ignore-checksum` to that mount's
87
+ `rclone mount` invocation (both flags are needed — a byte change shifts size
88
+ _and_ hash), so rclone accepts the upload despite the drift. This trades
89
+ integrity verification for sync-ability and is scoped to the SharePoint driver
90
+ only — it is not a global rclone flag and is not exposed by the other
91
+ rclone-backed connectors. The rclone arg construction is factored into the
92
+ exported pure helper `_buildRcloneMountArgs` so the conditional flags are
93
+ unit-tested without spawning rclone.
94
+
95
+ ## 0.22.0
96
+
97
+ ### Minor Changes
98
+
99
+ - [#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` /
100
+ `off` / `allowlist`). Consumed by the platform's per-session egress
101
+ firewall; the codec is permissive (round-trips unknown shapes) and emits
102
+ warning diagnostics for unrecognized `mode` values and for `allowlist`
103
+ entries set under non-`allowlist` modes.
104
+
105
+ - [`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**.
106
+
107
+ The derived `domain` axis (first-level directory of a scanned repo) is replaced
108
+ by `repo` — the real `"<org>/<repo>"` GitHub coordinate. `category` is demoted
109
+ out of the tree to a row badge.
110
+
111
+ - `plugins` — `CatalogAsset` gains optional `repo?`.
112
+ - `core` — `CatalogEntry` drops `domain`, gains `repo?` and `category?`.
113
+ `entryFromRaw` reads `repo` with a one-release legacy-`domain` read-fallback
114
+ (stale `catalog.yaml` caches self-heal on next write). `scanRepo` derives
115
+ `repo` once from the scanned root's git remote (`repoSlugFromGitRemote`) and
116
+ stamps it onto every entry; `scanDirectory` no longer emits a per-asset
117
+ `domain`.
118
+ - `library` — `RemoteCatalogSource` threads the store's `repo` through.
119
+ - `cli` — `manage` regroups to publisher → repo → asset with category badges;
120
+ the `asset-feeds` store mapping now carries `publisher`/`repo`/`category`
121
+ (fixing the bug that mis-shelved every remote asset under `other`).
122
+
123
+ Local libraries with no git remote (and non-GitHub sources) have no `repo`;
124
+ their assets group directly under the publisher.
125
+
126
+ - [#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
127
+ `nix` target, so a host (e.g. skaile-platform) can drive every deploy target
128
+ uniformly without forking the decision in its own code.
129
+
130
+ - `DeployContext` gains optional `mounts` / `labels` / `resources`
131
+ (`@skaile/workspaces/plugin-registry`, with new `DeployMount` / `DeployResources`
132
+ types). Container built-ins (`docker` / `podman`) map them to `-v` / `--label`
133
+ / `--cpus` / `--memory` / `--pids-limit`; the process built-ins ignore mounts.
134
+ Target-specific policy (apparmor, FUSE, fleet binds, …) stays in each target's
135
+ own `configSchema` — it never enters this shared context.
136
+ - `local` now also merges `ctx.env` into the spawned process env (`config.env`
137
+ still wins).
138
+ - New built-in `nixDeployTarget` (id `nix`) runs `skaile serve` inside a
139
+ `nix shell` over `ws://127.0.0.1:<port>`; registered by
140
+ `registerBuiltinDeployTargets()`. Exports `nixDeployTarget` + the pure
141
+ `buildNixArgs()` from `@skaile/workspaces/deploy`. Generic on purpose
142
+ (`flakeRef` + `stackAttr` only).
143
+
144
+ - [`ce3f33f`](https://github.com/skaile-ai/workspaces/commit/ce3f33f5b85f81d1c80689a99a8e63cf0c2afc07) Thanks [@mortegro](https://github.com/mortegro)! - Fix deploy-handle readiness timeout + dedupe deploy-target helpers.
145
+
146
+ - **Fix:** `DeployHandle.waitReady(timeoutMs)` silently ignored its `timeoutMs`
147
+ argument in the fly / k8s / vercel-sandbox targets, always using a hard-coded
148
+ internal deadline. The caller's timeout is now honored.
149
+ - **Fix (`@skaile/provider-fly`):** `deleteMachine` swallowed _all_ errors while
150
+ only intending to ignore a 404, so `stop()` could falsely report success on a
151
+ still-running (still-billing) machine. Non-404 errors now propagate.
152
+ - **Added (`@skaile/workspaces/plugin-registry`):** shared deploy helpers —
153
+ `buildStrategySchema` / `BuildStrategy`, abort-aware `sleep`, generic
154
+ `pollUntil`, and the `makeDeployHandle` factory — replacing the per-provider
155
+ copies of the sleep loop, handle wrapper, and build-strategy enum.
156
+
157
+ - [#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
158
+ `@skaile/workspaces/plugin-registry`, the symmetric counterparts to
159
+ `listDrivers()` / `listConnectors()` so UIs can enumerate all three plugin kinds
160
+ uniformly. Both default to the process-wide `pluginRegistry`;
161
+ `listDeployTargets()` returns lightweight `{ id, displayName }` rows and
162
+ `getDeployTarget(id)` returns the full target without the override/yaml/default
163
+ precedence `resolveDeployTarget` applies.
164
+
165
+ Docs (`docs/deploy/`): documented the container-target image lifecycle — that
166
+ `buildStrategy: "local"` is bring-your-own-image (`create()` never builds), how
167
+ `pullPolicy` interacts with a locally-built vs. registry-published image, that
168
+ `workspace.container.{packages,agent_clis,stack,nix}` are image-build inputs
169
+ distinct from the deploy `config.image` (with skaile-platform's
170
+ `skaile-vm-agent:thin` / Nix-stack model as the reference), and that the
171
+ in-process runtime is deliberately out of scope for the deploy abstraction
172
+ (no `wsUrl`).
173
+
174
+ - [#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).
175
+
176
+ Schema:
177
+
178
+ - `skaile.yaml` top-level keys `repositories:` and `ai_resources:` are removed
179
+ and now throw a parse error pointing at `docs/concepts/manifest-schema.md` and
180
+ the `migrate-skaile-manifest` skill.
181
+ - New publication half: `publisher`, `version`, `assets[]`.
182
+ - New consumption half: collapsed `sources:[{url, pin?}]` (no `name`),
183
+ `stores:[{url}]`, `dependencies:[<kind>:<name>@<publisher>[#pin]]`,
184
+ `overrides:[{ref, source, reason}]` with required `reason:`.
185
+
186
+ Dep ref grammar:
187
+
188
+ - Canonical form `kind:name@<publisher>[#pin]`. `publisher` is required and
189
+ GitHub-shaped. Pins accept SemVer constraints (^, ~, x), exact SemVer, a
190
+ 40-char SHA, or absent. Floating refs (main/latest/HEAD) throw.
191
+
192
+ Resolution:
193
+
194
+ - The resolver collects candidates from every source clone (via the new
195
+ provenance-index walker) and optionally every store. Divergent sha256 at the
196
+ same (publisher, kind, name, version) is a hard error
197
+ (`CanonicalRefConflictError`) with a dep-chain walk. `overrides[]` pin a
198
+ chosen source and flag `override_applied: true` on the lock entry. A cheap
199
+ `catalog.getCanonicalDigest` probe cross-checks source vs store at the same
200
+ version. `resolveAll` is now async.
201
+
202
+ Lock file:
203
+
204
+ - Schema v2. Keys are canonical refs `<publisher>/<kind>:<name>@<version>`;
205
+ values carry `sha256`, `source.{url, commit}`, `files[]`, `override_applied`.
206
+ Top-level `sources:` records every contributing URL+commit. Old v1 lockfiles
207
+ must be deleted and regenerated; the reader emits a clear error.
208
+
209
+ Types:
210
+
211
+ - `AssetRef.repository` → `AssetRef.publisher` (and `CatalogEntry.publisher`).
212
+ - `RepositoryDeclaration` → `SourceDeclaration`.
213
+ - `LockEntry` reshaped; new `LockSourceEntry`, `LockFileEntry`,
214
+ `StoreEntry`, `AssetEntry`, `OverrideEntry`.
215
+ - `RemoteCatalogSource.getCanonicalDigest(ref)` added.
216
+
217
+ Migration:
218
+
219
+ - No `skaile manifest migrate` CLI command. The transform is performed by the
220
+ `migrate-skaile-manifest` skill (lives in `ai-assets`).
221
+
222
+ - [#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`.
223
+
224
+ - `AssetRecipe` gains optional `flake` (the asset's own flake: `"."` or a flake URL) and
225
+ `publisher` fields; `attr` is now optional and defaults to `"default"` for the flake form
226
+ (the legacy `{ attr }` platform-flake form is unchanged and still requires `attr`).
227
+ - New `validateAssetRecipeFlake` validates the flake source shape (`"."`, `github:`,
228
+ `git+https://`, `git+ssh://`, `path:`; rejects bare paths, traversal, unknown schemes, and
229
+ shell metacharacters). Exported alongside `DEFAULT_RECIPE_ATTR`.
230
+ - `mcpDeclFromCatalogEntry` carries `flake`/`publisher` onto the decl; an invalid flake drops
231
+ the whole recipe (no silent fall back to a platform-flake attr).
232
+ - The runner resolves a flake-sourced recipe by `mcps.<id>` (the recipe id) rather than `attr`,
233
+ since BYO-flake recipes all build `#default` and `attr` is not a unique map key.
234
+
235
+ - [`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.
236
+
237
+ The resolver rewrite dropped the requires/dependencies recursion, so adding a
238
+ bundle resolved only the bundle marker and deployed **zero** members. The
239
+ provenance walker now populates `ProvenanceCandidate.deps` for bundle
240
+ candidates (parsed from the `.bundle.yaml` / `BUNDLE.md` `requires` +
241
+ `dependencies`), and `resolveAll` recurses into them — so a tier bundle pulls
242
+ its full inheritance chain and every leaf skill (arbitrary depth, deduped via
243
+ the existing `seen` set). Bare transitive refs inherit the parent bundle's
244
+ publisher.
245
+
246
+ - `core/manifest` — new `bundleDepRefs(filePath)` returns a bundle's raw
247
+ canonical dep refs (publisher/pin preserved; unlike `parseRequires`).
248
+ - `core/walker` — `ProvenanceCandidate` gains `deps?: string[]`, populated for
249
+ bundles in both the manifest and filename-convention walk paths.
250
+ - `core/repo-manager` — `resolveAll.visit` recurses into `chosen.deps`,
251
+ qualifying bare refs with the parent publisher.
252
+
253
+ Non-bundle candidates are unaffected (no `deps`), so legacy skill frontmatter
254
+ `requires` are not auto-expanded.
255
+
256
+ - [`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>`
257
+ resolves to `git@github.com:skaile-ai/<name>.git` and `<owner>/<repo>` to
258
+ `git@github.com:<owner>/<repo>.git`; full URLs and scp-style specs pass through
259
+ unchanged.
260
+
261
+ CLI: fixed `skaile npx skills add <url> --skill <name>` (the npx compatibility
262
+ shim) under the canonical-identity model. It now clones into the canonical
263
+ sources cache (`~/.skaile/sources/<slug>`), registers the source in the
264
+ project's `skaile.yaml` `sources[]`, builds a publisher-qualified ref
265
+ (`skill:<name>@<publisher>`, publisher from the source's `skaile.yaml` or its
266
+ GitHub org), and maps a requested SKILL.md `name:` to the directory the
267
+ canonical resolver keys by.
268
+
269
+ - [#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.
270
+
271
+ **Breaking**
272
+
273
+ - Removed the external `registerDriver` / `registerConnector` APIs. Register a
274
+ typed target via `pluginRegistry.register(kind, target)` instead
275
+ (`@skaile/workspaces/plugin-registry`). `createDriver` / `getConnector` /
276
+ `listConnectors` survive as resolve-only wrappers.
277
+ - Dropped `ioredis` and `yjs` runtime deps and the bundled `redis` / `yjs`
278
+ connectors. Install `@skaile/connector-redis` / `@skaile/connector-yjs` via
279
+ `skaile plugin install`.
280
+ - Renamed the coding-agent adapter command `skaile plugin` →
281
+ `skaile integration` (install/uninstall/enable/disable/status/hook). The
282
+ `skaile plugin` name now manages registry plugins.
283
+
284
+ **Added**
285
+
286
+ - `@skaile/workspaces/plugin-registry` — one process-wide `pluginRegistry` with
287
+ three kinds (driver / connector / deployTarget), the Target contracts,
288
+ `DeployHandle` / `DeployContext`, and `resolveDeployTarget` (override > yaml >
289
+ default precedence).
290
+ - `@skaile/workspaces/deploy` — built-in `local` / `docker` / `podman` deploy
291
+ targets (loopback-only), `registerBuiltinDeployTargets()`, and the
292
+ `.skaile/deploy/handle.json` store.
293
+ - `@skaile/workspaces/connectors-shared` — minimal public connector API for
294
+ extracted connector plugins.
295
+ - `skaile.yaml` gains `plugins:` (project-local plugin store) and `deploy:`
296
+ blocks; `skaile.lock.yaml` gains a `plugins:` slice.
297
+ - CLI: `skaile deploy [up|down|status|logs]` and `skaile plugin
298
+ [install|remove|list]`.
299
+ - `DRIVER_CATALOG` → `BUILTIN_DRIVER_CATALOG` (old name kept as an alias); new
300
+ `BUILTIN_CONNECTOR_CATALOG`.
301
+
302
+ See `docs/migration-v2-to-v3.md`.
303
+ </content>
304
+
305
+ - [#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
306
+ issued `wsAuth` actually gates the socket.
307
+
308
+ - `WebSocketServerTransport` accepts `authToken`. When set, every upgrade must
309
+ present the matching token via the `skaile-bearer.<base64url>` subprotocol or
310
+ the handshake is rejected with HTTP 401 (before any command handler runs).
311
+ When unset, behaviour is unchanged (back-compatible).
312
+ - `WebSocketClientTransport` accepts `auth`; sends it as the WS subprotocol
313
+ (the one handshake field a browser client can populate).
314
+ - `startAgentServer` threads `opts.authToken ?? SKAILE_WS_AUTH_TOKEN` into the
315
+ default server, so `skaile serve` enforces the token from the environment.
316
+ - New `@skaile/workspaces/transport` exports: `encodeBearerSubprotocol`,
317
+ `decodeBearerFromHeader`, `tokensEqual`, `BEARER_SUBPROTOCOL_PREFIX`.
318
+ - Robustness fix: `WebSocketClientTransport.connect()` now rejects when the
319
+ socket closes or errors before opening (a rejected auth upgrade, or a refused
320
+ port) instead of hanging until the connect timeout.
321
+
322
+ ### Patch Changes
323
+
324
+ - [#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
325
+ tools that look for a declaration file adjacent to the `.js` (classic node
326
+ resolution, some bundlers, IDE quick-lookups, ad-hoc `grep` audits) find one.
327
+
328
+ Previously, tsup emitted JS at `dist/<entry>.js` (e.g.
329
+ `dist/core/workspace-config.js`) while `tsc` emitted `.d.ts` at the
330
+ source-preserving path `dist/<src>/<entry>.d.ts` (e.g.
331
+ `dist/core/src/workspace-config.d.ts`). The package.json `exports` map
332
+ bridged these with separate `types` and `import` conditions — correct for
333
+ node16/nodenext/bundler resolvers, but invisible to anything looking
334
+ adjacent to the `.js`. A new post-build step (`build:dts-sidecars`) writes a
335
+ thin re-export shim at the tsup output path that points at the canonical
336
+ tsc-emitted declaration, eliminating the apparent stale-types mismatch
337
+ reported on `@skaile/workspaces/core/workspace-config`.
338
+
339
+ - [#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.
340
+
341
+ - [#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`.
342
+
343
+ The category badge (`[category] `) sits between the asset name and the
344
+ description but its visible width was never subtracted from the description's
345
+ truncation budget, so categorized rows ran past the terminal width and wrapped.
346
+ The desc budget now accounts for the badge width.
347
+
348
+ - [#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.
349
+
350
+ - [#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
351
+
352
+ `InProcessTransport.connected` previously returned a hard-coded `true`, so
353
+ `LocalRuntime.isRunning` reported `true` even before `start()`. It now reflects
354
+ whether a command handler is actually registered.
355
+
356
+ `inject()` also silently dropped commands sent before the runner wired its
357
+ `onCommand` handler (e.g. a `debug`/`prompt` issued during the ~50ms `start()`
358
+ window, or against a lazily-started runtime), which made debug queries hang
359
+ until their own timeout. Such commands are now buffered and flushed to the
360
+ first handler, so none are lost.
361
+
362
+ `LocalRuntime` gains `whenReady()`, a promise resolved once `startAgentServer`
363
+ returns, so consumers can await wiring before issuing reply-expecting commands.
364
+
365
+ - [`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.
366
+
367
+ `assetRefOf` built `kind:name`, dropping the entry's publisher. Under the
368
+ canonical-identity schema `parseAssetRef` requires a publisher, so applying a
369
+ selection called `AssetManager.add("bundle:complex-app")` and threw
370
+ _"publisher required in asset ref"_. It now emits the canonical
371
+ `kind:name@<publisher>` via `assetRefToStr`. Entries with no publisher have no
372
+ canonical identity and are no longer selectable (returns `null`) instead of
373
+ producing a ref that throws; `repoAssetRefs`/`sourceAssetRefs` filter those out.
374
+
375
+ - [#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
376
+ target (e.g. the real `local` / `git` connector) for a fake within the
377
+ process-wide singleton. Production callers should rarely reach for it —
378
+ built-ins and loaded plugins register once at startup and live for the
379
+ process — but the hook is needed for test isolation across describe blocks
380
+ that share the registry.
381
+
382
+ - [`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
383
+ source into its managed `~/.skaile/sources/<slug>` cache dir when the clone is
384
+ absent, instead of throwing `Local repository path not found` — so `skaile
385
+ install` works without a pre-populated clone. The source pin is no longer
386
+ mis-encoded as a clone `--branch` (tag/SHA pins now reach `checkoutPin`), and a
387
+ clone/auth failure surfaces as `missing: ["source:<slug> (<reason>)"]` rather
388
+ than a bare slug.
389
+
3
390
  ## 0.22.0-beta.2
4
391
 
5
392
  ### Minor Changes
@@ -1,10 +1,10 @@
1
- import './chunk-P4FYHEHW.js';
1
+ import './chunk-Z3M5K67G.js';
2
2
  import './chunk-K5GBV4SA.js';
3
3
  import './chunk-KLNL7QHN.js';
4
- import './chunk-74GTZ4TJ.js';
5
- import { scanRepo } from './chunk-LDYPQVRU.js';
6
- import './chunk-NQL3T75I.js';
7
- import './chunk-VUCPJBAG.js';
4
+ import './chunk-5ESCS2OS.js';
5
+ import { scanRepo } from './chunk-542K7SR6.js';
6
+ import './chunk-DH4N5AW4.js';
7
+ import './chunk-YX3UWPJ5.js';
8
8
  import './chunk-JKNWJ64A.js';
9
9
  import './chunk-O4JH3KUE.js';
10
10
  import './chunk-24UIWON4.js';
@@ -16,7 +16,7 @@ async function libraryAssets() {
16
16
  const notes = [];
17
17
  try {
18
18
  const [{ openLibraryManager }, { skaileHomeDir }] = await Promise.all([
19
- import('./open-library-EEGG6RDN.js'),
19
+ import('./open-library-67FSSQWE.js'),
20
20
  import('./library/index.js')
21
21
  ]);
22
22
  const { manager, close } = await openLibraryManager();
@@ -45,7 +45,7 @@ async function libraryAssets() {
45
45
  async function storeAssets(projectDir) {
46
46
  const notes = [];
47
47
  try {
48
- const { resolveCatalogSource } = await import('./open-library-EEGG6RDN.js');
48
+ const { resolveCatalogSource } = await import('./open-library-67FSSQWE.js');
49
49
  const { source, close } = await resolveCatalogSource({ projectDir });
50
50
  try {
51
51
  const assets = await source.listAssets();
@@ -85,5 +85,5 @@ async function gatherAssetFeeds(am, projectDir) {
85
85
  }
86
86
 
87
87
  export { gatherAssetFeeds, sourceAssets };
88
- //# sourceMappingURL=asset-feeds-2M6UKEJ7.js.map
89
- //# sourceMappingURL=asset-feeds-2M6UKEJ7.js.map
88
+ //# sourceMappingURL=asset-feeds-WKIKSZ6Z.js.map
89
+ //# sourceMappingURL=asset-feeds-WKIKSZ6Z.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../cli/src/asset-feeds.ts"],"names":[],"mappings":"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","file":"asset-feeds-2M6UKEJ7.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
+ {"version":3,"sources":["../cli/src/asset-feeds.ts"],"names":[],"mappings":"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","file":"asset-feeds-WKIKSZ6Z.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-TWQPDBHB.js';
2
- export { createScaffold, deployAll, installAgent, removeAsset } from '../chunk-LDLZFYLR.js';
3
- import '../chunk-P4FYHEHW.js';
1
+ export { AssetManager, parseCanonicalLockKey } from '../chunk-BTAC2VYT.js';
2
+ export { createScaffold, deployAll, installAgent, removeAsset } from '../chunk-2RFOFHSM.js';
3
+ import '../chunk-Z3M5K67G.js';
4
4
  import '../chunk-K5GBV4SA.js';
5
5
  import '../chunk-KLNL7QHN.js';
6
- import '../chunk-74GTZ4TJ.js';
7
- import '../chunk-LDYPQVRU.js';
8
- import '../chunk-NQL3T75I.js';
9
- import '../chunk-VUCPJBAG.js';
6
+ import '../chunk-5ESCS2OS.js';
7
+ import '../chunk-542K7SR6.js';
8
+ import '../chunk-DH4N5AW4.js';
9
+ import '../chunk-YX3UWPJ5.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-LDLZFYLR.js';
2
- import '../chunk-P4FYHEHW.js';
1
+ export { createScaffold, deployAll, deployAsset, removeAsset } from '../chunk-2RFOFHSM.js';
2
+ import '../chunk-Z3M5K67G.js';
3
3
  import '../chunk-K5GBV4SA.js';
4
4
  import '../chunk-KLNL7QHN.js';
5
- import '../chunk-74GTZ4TJ.js';
6
- import '../chunk-LDYPQVRU.js';
7
- import '../chunk-NQL3T75I.js';
8
- import '../chunk-VUCPJBAG.js';
5
+ import '../chunk-5ESCS2OS.js';
6
+ import '../chunk-542K7SR6.js';
7
+ import '../chunk-DH4N5AW4.js';
8
+ import '../chunk-YX3UWPJ5.js';
9
9
  import '../chunk-JKNWJ64A.js';
10
10
  import '../chunk-O4JH3KUE.js';
11
11
  import '../chunk-24UIWON4.js';
@@ -12,6 +12,21 @@
12
12
  import type { CatalogEntry, LockFile } from "@skaile/workspaces/core";
13
13
  import type { DriverTarget } from "@skaile/workspaces/core";
14
14
  import type { HistoryEntry } from "./history.js";
15
+ /**
16
+ * Parse a canonical lock key (`<kind>:@<publisher>/<name>#<version>`) into its
17
+ * parts. The lock key is now a canonical asset ref, so this delegates to the one
18
+ * ref parser; `AssetRef.pin` is exposed as `version` so the callers' destructuring
19
+ * is unchanged. Stays total — callers rely on `{}`-then-`continue`, but
20
+ * `parseAssetRef` throws, so a malformed key is caught and returned as `{}`.
21
+ *
22
+ * @internal Exported for unit tests; not part of the stable public surface.
23
+ */
24
+ export declare function parseCanonicalLockKey(key: string): {
25
+ publisher?: string;
26
+ kind?: string;
27
+ name?: string;
28
+ version?: string;
29
+ };
15
30
  export type { DeployOptions } from "./installer.js";
16
31
  export type { Log } from "./renderers.js";
17
32
  export type { HistoryEntry } from "./history.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-6SA2SIOU.js';
2
- import '../../chunk-M5JDVO6D.js';
3
- import '../../chunk-6MB7CRME.js';
1
+ export { DeployConnector, createConnector19 as createConnector } from '../../chunk-E4UJ7CVK.js';
2
+ import '../../chunk-ODPII24X.js';
3
+ import '../../chunk-QMONOHXT.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-P4FYHEHW.js';
9
+ import '../../chunk-Z3M5K67G.js';
10
10
  import '../../chunk-K5GBV4SA.js';
11
11
  import '../../chunk-KLNL7QHN.js';
12
- import '../../chunk-74GTZ4TJ.js';
13
- import '../../chunk-LDYPQVRU.js';
14
- import '../../chunk-NQL3T75I.js';
15
- import '../../chunk-VUCPJBAG.js';
12
+ import '../../chunk-5ESCS2OS.js';
13
+ import '../../chunk-542K7SR6.js';
14
+ import '../../chunk-DH4N5AW4.js';
15
+ import '../../chunk-YX3UWPJ5.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-6SA2SIOU.js';
2
- import '../../chunk-M5JDVO6D.js';
3
- import '../../chunk-6MB7CRME.js';
1
+ export { DevServerConnector, createConnector16 as createConnector } from '../../chunk-E4UJ7CVK.js';
2
+ import '../../chunk-ODPII24X.js';
3
+ import '../../chunk-QMONOHXT.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-P4FYHEHW.js';
9
+ import '../../chunk-Z3M5K67G.js';
10
10
  import '../../chunk-K5GBV4SA.js';
11
11
  import '../../chunk-KLNL7QHN.js';
12
- import '../../chunk-74GTZ4TJ.js';
13
- import '../../chunk-LDYPQVRU.js';
14
- import '../../chunk-NQL3T75I.js';
15
- import '../../chunk-VUCPJBAG.js';
12
+ import '../../chunk-5ESCS2OS.js';
13
+ import '../../chunk-542K7SR6.js';
14
+ import '../../chunk-DH4N5AW4.js';
15
+ import '../../chunk-YX3UWPJ5.js';
16
16
  import '../../chunk-JKNWJ64A.js';
17
17
  import '../../chunk-O4JH3KUE.js';
18
18
  import '../../chunk-24UIWON4.js';