skaile-cli 5.7.0 → 5.9.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.
- package/CHANGELOG.md +118 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,123 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 5.9.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#1048](https://github.com/skaile-ai/workspaces/pull/1048) [`dde2065`](https://github.com/skaile-ai/workspaces/commit/dde20655e419552b9a2dc46bfaf26b758e0cc188) Thanks [@peteralbert](https://github.com/peteralbert)! - Typed platform blocks and a per-turn tool allowlist on the `prompt` command (protocol 4.18.0, runtime feature `platformBlocks.v1`). A host can attach `platformBlocks` (`{ kind, id, text, attrs? }`, kinds `platform_notice`, `skaile_research`, `platform_research_complete`) and a `toolAllowlist` to a prompt. The runner renders the blocks in reserved tags (`<PLATFORM_NOTICE>`, `<SKAILE_RESEARCH>`, `<PLATFORM_RESEARCH_COMPLETE>`) at the very start of the turn, each block id once per runner process, and escapes those tag names everywhere else it hands text to the agent (prompt text, a reply, a flow turn), so a message that imitates a platform block reaches the model visibly escaped. A new system-prompt section (`platform-blocks`) tells the agent that only those tags at the start of a turn come from Skaile. With a `toolAllowlist`, the Claude SDK driver lets that turn, and every subagent it starts, call only the listed tools, enforced in a `PreToolUse` hook because the query runs under `bypassPermissions`. A driver that cannot enforce an allowlist (every other built-in), an unknown tool name, or a flow-routed prompt refuses the prompt with a non-fatal `error` (`category: "validation"`) instead of running it unrestricted. `AgentClient.prompt` takes `{ platformBlocks, toolAllowlist }`, and a `SessionDispatcher` `transformPrompt` may return `{ prompt, platformBlocks, toolAllowlist }`. The runner now lists `platformBlocks.v1` in `protocol_info.runtimeFeatures` on every host.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [[`dde2065`](https://github.com/skaile-ai/workspaces/commit/dde20655e419552b9a2dc46bfaf26b758e0cc188)]:
|
|
12
|
+
- @skaile/workspaces@5.9.0
|
|
13
|
+
|
|
14
|
+
## 5.8.0
|
|
15
|
+
|
|
16
|
+
### Minor Changes
|
|
17
|
+
|
|
18
|
+
- [#1043](https://github.com/skaile-ai/workspaces/pull/1043) [`079877a`](https://github.com/skaile-ai/workspaces/commit/079877aafc91f60dc0aed2f4c80fbcaa848cf173) Thanks [@mortegro](https://github.com/mortegro)! - - `library create` and `asset import` refuse a kind and name that the manifest already lists under another directory (`create skill x --dir fun/skills2` while `fun/skills/x` exists). They exit 1, write nothing and name the existing root, so the first asset no longer drops out of the publish list. `library index` and `validate` report two directories with the same kind and name (exit 1).
|
|
19
|
+
|
|
20
|
+
- `asset import --publisher "a b"` / `"Bad Pub!"` exit 1 with the same hint as `library create`.
|
|
21
|
+
- `library init <name> --path <dir>` writes the resolved publisher into `skaile.manifest.yaml` before its first index, so the refs `search --local` shows right after `init` stay the same after the next `library index`.
|
|
22
|
+
- `library publish --dry-run` plans the version in the asset's own file (the source of truth) and prints the same version-mismatch warning as `validate`. The `skaile-author-asset` skill no longer teaches a per-asset version override.
|
|
23
|
+
- `library init Installed` / `INSTALLED` (also `rename`, `set name=`, `--path`) are refused like `installed`, which is the same folder on macOS and Windows.
|
|
24
|
+
- `library index` now reports a duplicate directory whatever its sort order: a copy at `fun/a-skills/x` next to the manifest's `fun/skills/x` exits 1 and is named, as the reverse order already was. In a fresh library with two copies of one asset, `index` skips both, names both and exits 1 instead of silently keeping one.
|
|
25
|
+
- `library init --path <dir>` is refused for a not-yet-existing directory inside `<libraries>/installed` also when `SKAILE_HOME` is reached through a symlink (`/tmp` → `/private/tmp`).
|
|
26
|
+
|
|
27
|
+
- [#1043](https://github.com/skaile-ai/workspaces/pull/1043) [`079877a`](https://github.com/skaile-ai/workspaces/commit/079877aafc91f60dc0aed2f4c80fbcaa848cf173) Thanks [@mortegro](https://github.com/mortegro)! - - `skaile library index` now drops a `skaile.manifest.yaml` entry whose kind is no longer registered (for example the `kind: bundle` entry of a 5.4.0 library) and prints a warning naming it. After `skaile migrate assets <dir> --write` the library lists only the `preset:` entry, not a second `bundle:` one.
|
|
28
|
+
|
|
29
|
+
- `skaile library index` and `skaile validate` warn about every leftover `*.bundle.yaml` file (they are not scanned) and name `skaile migrate assets <dir> --write` as the fix.
|
|
30
|
+
- The library upgrade steps in the docs now include the bundle → preset migration. The docs and the 5.7.0 migration entry list `preset`, not `bundle`, as a `library create` kind.
|
|
31
|
+
|
|
32
|
+
- [#1043](https://github.com/skaile-ai/workspaces/pull/1043) [`079877a`](https://github.com/skaile-ai/workspaces/commit/079877aafc91f60dc0aed2f4c80fbcaa848cf173) Thanks [@mortegro](https://github.com/mortegro)! - - A library asset can now depend on an asset of another publisher. `dependencies: ["skill:@skaile-ai/report-html"]` on a `skaile.manifest.yaml` entry used to pass `library index` and `validate` but was ignored; now `skaile add`, `install`, `info`, `check` and `doctor` all see it, and `add` deploys that asset from its library.
|
|
33
|
+
|
|
34
|
+
- `metadata.requires: "skill:@skaile-ai/report-html, speak-like-a-pirate"` in a SKILL.md no longer fails `add` with `invalid asset name "@skaile-ai/report-html" in ref "skill:@mortegro/@skaile-ai/report-html"`. `kind:@publisher/name` and `@publisher/name` (with an optional `#version`) are read as another publisher's asset; a bare name still means the asset's own publisher.
|
|
35
|
+
- `info` prints a cross-publisher requirement with its publisher (`skill:@skaile-ai/report-html`).
|
|
36
|
+
- The docs ([Declaring dependencies](docs/sections/discovery/author-manifest.md#declaring-dependencies)) list which forms `requires` and `dependencies` accept.
|
|
37
|
+
|
|
38
|
+
- [#1043](https://github.com/skaile-ai/workspaces/pull/1043) [`079877a`](https://github.com/skaile-ai/workspaces/commit/079877aafc91f60dc0aed2f4c80fbcaa848cf173) Thanks [@mortegro](https://github.com/mortegro)! - - `skaile why skill:@mortegro/speak-like-a-pirate` after `add skill:@mortegro/shanty-writer` prints the real chain (`speak-like-a-pirate ← shanty-writer ← direct (skaile.yaml)`). `direct (skaile.yaml)` now ends the chain only for assets `skaile.yaml` declares; an asset no declared dependency reaches says so. `skaile tree` nests each asset under the asset that requires it instead of listing everything at one level. Both read each locked asset's `requires` (and manifest `dependencies`, and a preset's items), so the lock file is unchanged.
|
|
39
|
+
|
|
40
|
+
- `skaile remove` also removes the dependencies the removal leaves orphaned: assets that nothing in `skaile.yaml` declares and no remaining locked asset requires any more. They are deleted from disk and the lock and listed in the output (`Removed skill:@mortegro/speak-like-a-pirate (no longer required by anything declared in skaile.yaml)`). This covers a preset's items too. A dependency that is still declared, or required by another asset, stays. `AssetManager.removeWithDependencies(ref)` is the programmatic form; `remove(ref)` still removes only the one asset.
|
|
41
|
+
- `skaile remove skill:speak-like-a-pirate`, `remove speak-like-a-pirate` and `remove skill:nope` no longer print a Node stack trace. A short ref that names exactly one declared, locked or deployed asset removes it; an unknown one prints `✗ Not deployed or declared`, and one that matches several (two publishers) prints one line naming them. All exit 1 on refusal.
|
|
42
|
+
|
|
43
|
+
- [#1043](https://github.com/skaile-ai/workspaces/pull/1043) [`079877a`](https://github.com/skaile-ai/workspaces/commit/079877aafc91f60dc0aed2f4c80fbcaa848cf173) Thanks [@mortegro](https://github.com/mortegro)! - Agents from a library bind as instances and deploy in one form.
|
|
44
|
+
|
|
45
|
+
- `agents.<id>.ref: agent:@acme/helper-bot` in `skaile.yaml` now resolves an agent you added with `skaile add`. `skaile validate` accepts it and `skaile install` renders the instance, so you no longer copy the agent to `agents/<dir>/` first. The agent's source is kept under `.skaile/cache/agents/<name>/` (not committed, rebuilt by `skaile install`, removed by `skaile remove`).
|
|
46
|
+
- `skaile add` of an `AGENT.md` agent now writes `.claude/agents/<name>.md`, the same file an `agent.yaml` agent gets, instead of `.claude/agents/<name>/AGENT.md` (a copy of the old layout is replaced on the next `add` / `install`). Codex and omp keep their layouts (`.codex/agents/<name>.toml`, `.omp/agents/<name>/`).
|
|
47
|
+
- `skaile library create agent <name>` scaffolds `agent.yaml` (spec 0.2) plus `SOUL.md` instead of `AGENT.md`. `skaile validate` and `library publish` still flag the untouched `SOUL.md` body and `TODO:` description as scaffold placeholders.
|
|
48
|
+
|
|
49
|
+
- [#1043](https://github.com/skaile-ai/workspaces/pull/1043) [`079877a`](https://github.com/skaile-ai/workspaces/commit/079877aafc91f60dc0aed2f4c80fbcaa848cf173) Thanks [@mortegro](https://github.com/mortegro)! - - `skaile add skill:@pub/name` from a library now copies every file under the asset's manifest `root:` — `build.py`, `template.html`, `example.data/` and the rest — not only `SKILL.md` (a regression since 5.6.0).
|
|
50
|
+
|
|
51
|
+
- `skaile diff <ref>` compares that whole file set, so an edited or deleted helper shows up instead of `No differences.`.
|
|
52
|
+
- `skaile check` fails when a library asset is deployed without one of its files and names the missing ones; `skaile install` and `skaile install --locked` restore them.
|
|
53
|
+
- An asset your library's `skaile.manifest.yaml` does not list deploys as before.
|
|
54
|
+
|
|
55
|
+
- [#1043](https://github.com/skaile-ai/workspaces/pull/1043) [`079877a`](https://github.com/skaile-ai/workspaces/commit/079877aafc91f60dc0aed2f4c80fbcaa848cf173) Thanks [@mortegro](https://github.com/mortegro)! - - `skaile library commit` works again as soon as a rebase is finished. It only refuses while git's rebase is really still in progress, so the `REBASE_HEAD` file that git leaves behind after `rebase --continue` no longer blocks it.
|
|
56
|
+
|
|
57
|
+
- `skaile library push` on diverged history prints one `✗` line that names `skaile library git <name> pull --rebase origin <branch>`, the same as `pull` and `sync`, instead of git's multi-line rejection.
|
|
58
|
+
- `skaile library pull` and `skaile library sync` re-index the library when they applied remote changes, so `search --local` and `asset show` show new or edited assets without a manual `skaile library index`. They only re-index: `skaile.manifest.yaml` is never edited, so the clone stays clean, `sync` has nothing unpushed, and the next fast-forward pull is not blocked. Problems in upstream content are warnings and do not make a successful pull exit 1.
|
|
59
|
+
|
|
60
|
+
- [#1043](https://github.com/skaile-ai/workspaces/pull/1043) [`079877a`](https://github.com/skaile-ai/workspaces/commit/079877aafc91f60dc0aed2f4c80fbcaa848cf173) Thanks [@mortegro](https://github.com/mortegro)! - `skaile install --locked` now fails on drift as documented, and `skaile add` no longer moves a pinned dependency:
|
|
61
|
+
|
|
62
|
+
- `install --locked` exits 1 with one `Missing:` line per gap, where it used to print `Nothing to install (already up to date)` and exit 0: a dependency declared in `skaile.yaml` that has no lock entry (or does not resolve), an installed asset's `requires` that is neither deployed nor locked (for example a project locked by 5.4.0 before `report-html` required six more skills), and a lock entry whose version contradicts a `#version` pin in `skaile.yaml`. Run `skaile install` once without `--locked` and commit the new lock.
|
|
63
|
+
- `skaile outdated` lists the same gaps as problem rows, and `skaile check` reports the same set. `check` also prints the `did you mean …` hint that `skaile add` prints when a ref missed because its publisher changed.
|
|
64
|
+
- `skaile add skill:@acme/shanty-writer` resolves its dependency `skill:@acme/speak-like-a-pirate` at the ref `skaile.yaml` already declares for it, pin included. It used to deploy and lock the newest version (0.8.0 from another library) over the declared `#0.1.0`. `install` and `lock` resolve a pinned dependency the same way.
|
|
65
|
+
|
|
66
|
+
- [#1043](https://github.com/skaile-ai/workspaces/pull/1043) [`079877a`](https://github.com/skaile-ai/workspaces/commit/079877aafc91f60dc0aed2f4c80fbcaa848cf173) Thanks [@mortegro](https://github.com/mortegro)! - Same-name assets no longer collide silently:
|
|
67
|
+
|
|
68
|
+
- `skaile add skill:@otherorg/x` in a project that already holds `skill:@mortegro/x` now refuses (exit 1, nothing written) with one line that names the shared folder (`.claude/skills/x`) and the asset that holds it. Before, the second asset overwrote the first and `list`/`check` reported both as installed. `skaile install` refuses a `skaile.yaml` that declares both, and `install --locked` refuses a lock that holds both. Run `skaile remove` on the first asset to switch.
|
|
69
|
+
- `skaile search --local` now prints one row per library when two libraries hold the same ref at the same version, and marks the row `skaile add` deploys with `(used by add)` in the library column. Before, it printed one row, sometimes naming the library `add` does not use.
|
|
70
|
+
|
|
71
|
+
- [#1043](https://github.com/skaile-ai/workspaces/pull/1043) [`079877a`](https://github.com/skaile-ai/workspaces/commit/079877aafc91f60dc0aed2f4c80fbcaa848cf173) Thanks [@mortegro](https://github.com/mortegro)! - - `skaile add preset:@pub/name` now exits 1 and records nothing when one of the preset's items does not resolve (for example the `skill:@your-publisher/example-skill` placeholder that `library create preset` writes). The error names the item.
|
|
72
|
+
|
|
73
|
+
- The items of a declared preset count as declared dependencies: `skaile check` exits 1, `skaile doctor` and `skaile list` report the unresolved item, and `skaile install --locked` fails instead of passing against a partial lock.
|
|
74
|
+
- A preset held by a library is expanded like a store preset: `skaile.lock.yaml` records only its items (no `preset:` row), `skaile install` prints `preset <ref>: N assets, M instance items skipped …`, and `skaile add` names the library when the preset deploys nothing instead of talking about the store cache. An older lock's `preset:` row for a library preset is dropped on the next `skaile install`.
|
|
75
|
+
|
|
76
|
+
- [#1043](https://github.com/skaile-ai/workspaces/pull/1043) [`079877a`](https://github.com/skaile-ai/workspaces/commit/079877aafc91f60dc0aed2f4c80fbcaa848cf173) Thanks [@mortegro](https://github.com/mortegro)! - - `skaile library publish` / `register` now apply the same checks to presets as to every other asset kind: a preset with a non-semver `version` or an empty or unparseable `*.preset.yaml` is refused with a one-line reason, and a preset that is still the `library create preset` scaffold is reported before anything is pushed.
|
|
77
|
+
|
|
78
|
+
- `skaile validate` prints the `manifest version … differs` warning for presets, and flags an untouched preset scaffold (`description` still `A curated set of assets`, an item still `skill:@your-publisher/example-skill`) as `[preset] … is still the scaffold placeholder`.
|
|
79
|
+
- The prompt scaffold warning reads `write the prompt` instead of `write the prompt prompt`.
|
|
80
|
+
- `skaile library publish` now publishes the version each asset file declares, as `--dry-run` already planned it. The store records the versions of the manifest in the pushed repo, so a stale `version` in `skaile.manifest.yaml` used to be published instead of the file's. `publish` rewrites such entries before it commits and prints `Updated the manifest: <ref>: manifest version <old> → <new>`; `--dry-run` lists them as `would update the manifest` and writes nothing. `skaile library register` pushes nothing, so it exits 1 (with `--dry-run` too) and points at `skaile library index <lib>` when an entry's version differs from its file.
|
|
81
|
+
|
|
82
|
+
- [#1043](https://github.com/skaile-ai/workspaces/pull/1043) [`079877a`](https://github.com/skaile-ai/workspaces/commit/079877aafc91f60dc0aed2f4c80fbcaa848cf173) Thanks [@mortegro](https://github.com/mortegro)! - - `skaile run <flow>` and `skaile run mvp` no longer print internal capability-registry events (raw JSON lines on stdout plus a second copy); they are debug-level now, visible with `SKAILE_LOG_LEVEL=debug`. The flow's own output is printed once.
|
|
83
|
+
|
|
84
|
+
- `skaile run --dry-run` no longer creates a session, so `skaile session list` does not fill with `running` dry runs.
|
|
85
|
+
- `skaile session delete <id>` and `skaile session switch <id>` on an unknown id now exit 1 with `✗ Session not found: <id>` (delete used to report success, switch printed a stack trace).
|
|
86
|
+
|
|
87
|
+
- [#1043](https://github.com/skaile-ai/workspaces/pull/1043) [`079877a`](https://github.com/skaile-ai/workspaces/commit/079877aafc91f60dc0aed2f4c80fbcaa848cf173) Thanks [@mortegro](https://github.com/mortegro)! - - `skaile source sync` and `skaile update` pull again after `skaile add` or `skaile install --locked` checked a source out at its locked commit. They put the shared clone back on its branch first, instead of printing git's `You are not currently on a branch` and skipping the source.
|
|
88
|
+
|
|
89
|
+
- A failed pull now prints one line (`<source>: git pull failed: <reason>`) and `skaile source sync` and `skaile update` exit 1. Before, `skaile update` printed `Synced 0/1 source(s) (1 failed)` and exited 0.
|
|
90
|
+
- `skaile outdated` and `skaile show` report new commits for a source when git rewrites its URL (`git config --global url.<other>.insteadOf <url>`). They used to say `All assets are up to date.`.
|
|
91
|
+
- Sources whose URL is not `<host>/<owner>/<repo>` (a `file://` path, a GitLab subgroup) get their own clone, `<repo>-<hash of the URL>`. Two repos with the same name no longer share one clone and index. Clones of such sources made by an older version are not reused: the next `skaile source sync` clones them again, moves the source's existing library row to the new clone (so `skaile add` does not warn that the asset exists in 2 libraries) and prints one line saying the old directory under `~/.skaile/cache/sources/` can be deleted. GitHub-shaped sources keep their clone.
|
|
92
|
+
|
|
93
|
+
- [#1043](https://github.com/skaile-ai/workspaces/pull/1043) [`079877a`](https://github.com/skaile-ai/workspaces/commit/079877aafc91f60dc0aed2f4c80fbcaa848cf173) Thanks [@mortegro](https://github.com/mortegro)! - `skaile install` no longer deletes an asset whose library is gone, and `update` says when it re-locks:
|
|
94
|
+
|
|
95
|
+
- When the only library that holds a declared, locked asset is removed or renamed, or its publisher changed, `skaile install` used to print `! Removed: skill:@acme/pirate#0.1.0`, delete the deployed skill and drop its lock entry while `skaile.yaml` still declared it. It now keeps the deployed files and the lock entry, still exits 1 and lists the ref as `Missing:`, and names the fix: `register library "x" again with skaile library init x --path <dir>`, or for a changed publisher `did you mean skill:@new/pirate?` with the new ref and `skaile library set x publisher=<old>`. A lock entry that `skaile.yaml` no longer declares is still pruned.
|
|
96
|
+
- The assets a kept asset requires are kept too. With `a` (requires `b`) and `c` declared from a library you then remove, `skaile install` used to keep `a` and `c` but print `! Removed: skill:@mortegro/b#0.1.0` and delete `b`, which `a` needs. `b` now stays deployed and locked, and `install` still lists only `a` and `c` as `Missing:`. A dependency nothing kept requires is still pruned.
|
|
97
|
+
- `skaile check` and `skaile outdated` print that same fix for such an asset instead of `run skaile install` (which cannot restore it). `outdated` no longer prints the `Run skaile install to restore or re-lock the broken assets` line when every problem row names its own fix.
|
|
98
|
+
- For a library asset whose files changed since the lock (`content changed since lock`), `skaile update` used to print `Nothing to update.` while it silently rewrote the lock hash. `skaile update` and `skaile install` now print `Re-locked <ref>` and `Lock file written` for every rewritten lock entry, and `outdated` says `Run skaile update to re-lock and re-deploy.`
|
|
99
|
+
|
|
100
|
+
- [#1041](https://github.com/skaile-ai/workspaces/pull/1041) [`fe426a5`](https://github.com/skaile-ai/workspaces/commit/fe426a5f824afb9c360c987a256e32c92d4c3a8f) Thanks [@mortegro](https://github.com/mortegro)! - New transient `reconfigure_rejected` agent event (protocol 4.17.0): a live `runner.reconfigure` the runner answered `ok` (the patch landed while a turn was running) and the harness then refused at the turn boundary. The event carries `fields`, `code`, `message` and the `model` the driver runs after the rollback. The runner drops the patch from its recreate state before it sends the event, so a recreate starts on the rolled-back settings, and omp no longer also emits an `error` event for the same refusal. A refusal while the session is idle is still answered on the capability call and sends no event. A host maps the event to its restart-required cue for the session.
|
|
101
|
+
|
|
102
|
+
### Patch Changes
|
|
103
|
+
|
|
104
|
+
- [#1041](https://github.com/skaile-ai/workspaces/pull/1041) [`fe426a5`](https://github.com/skaile-ai/workspaces/commit/fe426a5f824afb9c360c987a256e32c92d4c3a8f) Thanks [@mortegro](https://github.com/mortegro)! - Fix the SDK `AgentSession` state for a multi-question ask. The session stayed `waiting` only until the first `send()` and then reported `active` while the agent was still blocked on the other sub-questions. It now stays `waiting` until every sub-question has an answer, and tool or text events that follow the question no longer move it to `active`. The slot rule (a name from the ask binds to its own sub-question, anything else fills the oldest open one) is now one internal `AskSlots` class shared by the claude-sdk driver, `AgentStore` and `AgentSession`. Driver and store behaviour does not change.
|
|
105
|
+
|
|
106
|
+
- [#1041](https://github.com/skaile-ai/workspaces/pull/1041) [`fe426a5`](https://github.com/skaile-ai/workspaces/commit/fe426a5f824afb9c360c987a256e32c92d4c3a8f) Thanks [@mortegro](https://github.com/mortegro)! - `parseFlowDefinition` is now the only place the flow connector checks the static rules of a single flow; the engine no longer re-checks them at run time (ADR 0003). The reserved binding name check, the second tokenize/parse of each expression, and the output-schema compile catch are gone from run time. Expressions are tokenized, parsed and shape-checked once, cached, and reused by evaluation, which now raises only what depends on run data. A flow whose `output.schema` cannot be compiled and whose `output.bindings` resolve it is now refused at parse time (it used to fail only when the flow completed as a sub-flow). The inline sub-flow host parses each resolved child before the cross-flow output check, so a v1 child is compared as normalized v2. Code that builds a `FlowDefinition` in memory and calls the exported engine helpers directly must run it through `parseFlowDefinition` first.
|
|
107
|
+
|
|
108
|
+
- [#1041](https://github.com/skaile-ai/workspaces/pull/1041) [`fe426a5`](https://github.com/skaile-ai/workspaces/commit/fe426a5f824afb9c360c987a256e32c92d4c3a8f) Thanks [@mortegro](https://github.com/mortegro)! - `skaile flow list`, `flow show` and `run <flow-id>` now read the flows of registered libraries through one library-owned scan, `scanAuthoringLibraries(index, registry)` (exported from `@skaile/workspaces/library`). When two registered libraries declare the same flow id, the newest registration now wins. Before, the row order of `index.db` decided. A library with a missing path or a failing scan is skipped with a per-library error, and the other libraries still list. Source clones and `dev_paths` assets are still not listed, as before. The authoring-library filter moved from the CLI's `open-library` module into `@skaile/workspaces/library`, where it stays module-internal.
|
|
109
|
+
|
|
110
|
+
- [#1041](https://github.com/skaile-ai/workspaces/pull/1041) [`fe426a5`](https://github.com/skaile-ai/workspaces/commit/fe426a5f824afb9c360c987a256e32c92d4c3a8f) Thanks [@mortegro](https://github.com/mortegro)! - The library band of `skaile manage` now reads registered libraries through `scanAuthoringLibraries`, the same scan `library index` and `search --local` use. Three things change on screen:
|
|
111
|
+
|
|
112
|
+
- Publishers and refs match `search --local`. The band honours the per-asset publisher (manifest `assets[].publisher`, `publisher_overrides`, `publisher_default`) instead of showing one publisher for the whole library, so selecting a row installs the same asset `skaile add <ref>` installs for the ref `search --local` prints.
|
|
113
|
+
- Assets under a library's `dev_paths` no longer show.
|
|
114
|
+
- A library that fails to scan (for example, its path is gone) becomes one `[libraries]` note naming it. The other libraries stay listed. Before, a missing path was skipped silently.
|
|
115
|
+
|
|
116
|
+
`authoringLibraries` stays module-internal in `@skaile/workspaces/library` and is not exported.
|
|
117
|
+
|
|
118
|
+
- Updated dependencies [[`fe426a5`](https://github.com/skaile-ai/workspaces/commit/fe426a5f824afb9c360c987a256e32c92d4c3a8f), [`fe426a5`](https://github.com/skaile-ai/workspaces/commit/fe426a5f824afb9c360c987a256e32c92d4c3a8f), [`fe426a5`](https://github.com/skaile-ai/workspaces/commit/fe426a5f824afb9c360c987a256e32c92d4c3a8f), [`fe426a5`](https://github.com/skaile-ai/workspaces/commit/fe426a5f824afb9c360c987a256e32c92d4c3a8f), [`fe426a5`](https://github.com/skaile-ai/workspaces/commit/fe426a5f824afb9c360c987a256e32c92d4c3a8f), [`fe426a5`](https://github.com/skaile-ai/workspaces/commit/fe426a5f824afb9c360c987a256e32c92d4c3a8f), [`079877a`](https://github.com/skaile-ai/workspaces/commit/079877aafc91f60dc0aed2f4c80fbcaa848cf173), [`079877a`](https://github.com/skaile-ai/workspaces/commit/079877aafc91f60dc0aed2f4c80fbcaa848cf173), [`079877a`](https://github.com/skaile-ai/workspaces/commit/079877aafc91f60dc0aed2f4c80fbcaa848cf173), [`079877a`](https://github.com/skaile-ai/workspaces/commit/079877aafc91f60dc0aed2f4c80fbcaa848cf173), [`079877a`](https://github.com/skaile-ai/workspaces/commit/079877aafc91f60dc0aed2f4c80fbcaa848cf173), [`079877a`](https://github.com/skaile-ai/workspaces/commit/079877aafc91f60dc0aed2f4c80fbcaa848cf173), [`079877a`](https://github.com/skaile-ai/workspaces/commit/079877aafc91f60dc0aed2f4c80fbcaa848cf173), [`079877a`](https://github.com/skaile-ai/workspaces/commit/079877aafc91f60dc0aed2f4c80fbcaa848cf173), [`079877a`](https://github.com/skaile-ai/workspaces/commit/079877aafc91f60dc0aed2f4c80fbcaa848cf173), [`079877a`](https://github.com/skaile-ai/workspaces/commit/079877aafc91f60dc0aed2f4c80fbcaa848cf173), [`079877a`](https://github.com/skaile-ai/workspaces/commit/079877aafc91f60dc0aed2f4c80fbcaa848cf173), [`079877a`](https://github.com/skaile-ai/workspaces/commit/079877aafc91f60dc0aed2f4c80fbcaa848cf173), [`079877a`](https://github.com/skaile-ai/workspaces/commit/079877aafc91f60dc0aed2f4c80fbcaa848cf173), [`079877a`](https://github.com/skaile-ai/workspaces/commit/079877aafc91f60dc0aed2f4c80fbcaa848cf173), [`fe426a5`](https://github.com/skaile-ai/workspaces/commit/fe426a5f824afb9c360c987a256e32c92d4c3a8f), [`fe426a5`](https://github.com/skaile-ai/workspaces/commit/fe426a5f824afb9c360c987a256e32c92d4c3a8f), [`fe426a5`](https://github.com/skaile-ai/workspaces/commit/fe426a5f824afb9c360c987a256e32c92d4c3a8f), [`fe426a5`](https://github.com/skaile-ai/workspaces/commit/fe426a5f824afb9c360c987a256e32c92d4c3a8f)]:
|
|
119
|
+
- @skaile/workspaces@5.8.0
|
|
120
|
+
|
|
3
121
|
## 5.7.0
|
|
4
122
|
|
|
5
123
|
### Minor Changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skaile-cli",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.9.0",
|
|
4
4
|
"description": "Run the Skaile CLI via `npx skaile-cli` — thin wrapper around @skaile/workspaces",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"asset-manager"
|
|
26
26
|
],
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@skaile/workspaces": "5.
|
|
28
|
+
"@skaile/workspaces": "5.9.0"
|
|
29
29
|
},
|
|
30
30
|
"publishConfig": {
|
|
31
31
|
"access": "public"
|