skaile-cli 5.10.0 → 5.11.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 (2) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,55 @@
1
1
  # Changelog
2
2
 
3
+ ## 5.11.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#1055](https://github.com/skaile-ai/workspaces/pull/1055) [`3c15671`](https://github.com/skaile-ai/workspaces/commit/3c1567160077b7e0e0ca888c02c2e7bf0bf02358) Thanks [@mortegro](https://github.com/mortegro)! - `validate`, `library index` and `library publish --dry-run` now give one verdict for every asset kind.
8
+
9
+ - `library create flow` and `library create preset` write the `TODO: describe this <kind>.` description when `--description` is missing, as the other kinds do. An unedited flow or preset (the `TODO:` description, `nodes: []`, the example preset item) fails all three commands with exit 1. It was a warning before.
10
+ - A manifest `dependencies:` entry with an invalid publisher fails `publish --dry-run` with the same message as `validate` and `index`.
11
+ - A missing `version` reads as `0.1.0` for all six kinds, and an empty `metadata:` as no metadata. A version that is present but not a string says `set version: 0.1.0` (`set metadata.version: 0.1.0` for skill, prompt and contract) instead of raw schema text.
12
+ - An asset name over 64 characters fails `library create`, `validate`, `index` and `publish --dry-run` with the asset-name rule. `library create skill <300-char name>` no longer ends in `ENAMETOOLONG` with a stack trace. `isValidAssetName` applies the 64-character limit.
13
+ - `library publish --ref` and `library register --ref` exit 1 before the plan when the ref is not a valid git ref name, or is not a branch, tag or commit of the library repo.
14
+ - `references/dependency-standard.md` of the `authoring-skaile-manifests` skill says the asset file's own version wins.
15
+
16
+ - [#1055](https://github.com/skaile-ai/workspaces/pull/1055) [`3c15671`](https://github.com/skaile-ai/workspaces/commit/3c1567160077b7e0e0ca888c02c2e7bf0bf02358) Thanks [@mortegro](https://github.com/mortegro)! - A locked asset is now identified by kind, publisher, name and the library its lock entry names.
17
+
18
+ - `skaile remove skill:@acme/x` no longer deletes the deployed copy of `skill:@mortegro/x` when only the mortegro one was added. It prints `Not deployed or declared` and exits 1. The deployed copy, the lock and `skaile.yaml` stay as they are.
19
+ - `skaile install` keeps a locked library asset on the library its lock entry names, also after `library default <other>` or when another library holds the same ref. `skaile update` and `skaile add` still pick the library by the default rules, and a pin moves an asset to the library that holds it. A move prints `! <ref> moved from <a> to <b>`. `AssetManager.install` takes `moveLibraries` (set by `update`), `InstallResult` has `moved`, and `AssetManager.add` takes `onLibraryMoved`.
20
+ - A `#0.1.0` pin resolves for an `AGENT.md` agent that has no version in its frontmatter, in `skaile add agent:@acme/x#0.1.0` and in a `skaile.yaml` dependency. The pin matches the version in the library manifest, as the lock key does.
21
+
22
+ - [#1055](https://github.com/skaile-ai/workspaces/pull/1055) [`3c15671`](https://github.com/skaile-ai/workspaces/commit/3c1567160077b7e0e0ca888c02c2e7bf0bf02358) Thanks [@mortegro](https://github.com/mortegro)! - The lock changes only when an entry changes, and a hand-edited deployed copy is no longer invisible.
23
+
24
+ - `skaile.lock.yaml` is written in one canonical order (`schema_version` and `locked_at` first, then every key sorted). `add`, `install` and `update` write nothing when only the order or `locked_at` differs, so the first `install` after `add`, and a `library rename` matched by URL, leave a committed lock byte-identical and print no `Lock file written`.
25
+ - `skaile check`, `doctor` and `outdated` exit 1 when a deployed file was edited by hand or an asset folder holds a file the asset does not ship, including a file a harness or agent wrote there after deploy. `skaile install --locked`, `install` and `update` overwrite or remove it and print `Restored <file>` (or `Removed <file> (not part of <ref>)`). `diff` shows the edit and keeps exit 0.
26
+ - `.venv/`, `venv/`, `.pytest_cache/`, `.mypy_cache/`, `.ruff_cache/`, `.idea/`, `.vscode/`, `*.pyo`, `Thumbs.db`, `.env` and `.env.*` in an asset folder are neither deployed nor hashed, so running `pytest` in a library no longer makes the lock drift. The templates `.env.example`, `.env.sample`, `.env.template` and `.env.dist` stay part of the asset. `skaile add` warns once per other `.env` file it finds in an asset folder.
27
+
28
+ - [#1055](https://github.com/skaile-ai/workspaces/pull/1055) [`3c15671`](https://github.com/skaile-ai/workspaces/commit/3c1567160077b7e0e0ca888c02c2e7bf0bf02358) Thanks [@mortegro](https://github.com/mortegro)! - A `skaile.yaml` that does not parse (a duplicate key, bad YAML, a root that is not a mapping) now stops `install`, `update`, `check`, `doctor`, `outdated`, `diff`, `add` and `remove` with `skaile.yaml — parse error: <reason>` and exit 1, before anything is deployed, undeployed or locked. Before, `install` read the broken file as "nothing declared", deleted every deployed asset and emptied the lock. `resolveSkWorkspaceConfig` and `resolveGlobalSkWorkspaceConfig` throw that error instead of returning `{}`. Outside a project, `check`, `doctor`, `outdated`, `install`, `update` and `diff` exit 1 with `No skaile.yaml found. Run skaile init to create one.` and write nothing, as `add` does.
29
+
30
+ - [#1055](https://github.com/skaile-ai/workspaces/pull/1055) [`3c15671`](https://github.com/skaile-ai/workspaces/commit/3c1567160077b7e0e0ca888c02c2e7bf0bf02358) Thanks [@mortegro](https://github.com/mortegro)! - `skaile run` and `skaile repl` end with the driver's error and exit 1 when the omp bridge does not start. Before, they ended on an unsettled top-level await with exit code 13 and no message (p137). `OmpDriver.start()` now rejects when omp exits before it is ready, and the CLI ends any command that has nothing left to wait for with one line and exit 1.
31
+
32
+ `skaile repl` no longer prints log records as raw JSON on stdout. They go to the project's log database; only warnings and errors print, on stderr (p47).
33
+
34
+ The README quick start and tutorial 01 name the optional SDK to install per driver: `@anthropic-ai/claude-agent-sdk` for `claude-sdk`, `@openai/codex-sdk` for `codex` (p138).
35
+
36
+ - [#1055](https://github.com/skaile-ai/workspaces/pull/1055) [`3c15671`](https://github.com/skaile-ai/workspaces/commit/3c1567160077b7e0e0ca888c02c2e7bf0bf02358) Thanks [@mortegro](https://github.com/mortegro)! - A command now ends with the verdict it printed.
37
+
38
+ - `skaile diff <ref>` of a locked asset whose library is not registered, or that has an unresolvable requirement, prints the state problem only and exits 1. It no longer prints `No differences.` first. A plain difference (edited copy, changed library files) still shows the diff and exits 0.
39
+ - `skaile update` ends with `Failed` and exit 1 (never `Done`) when a declared asset is missing, a source pull failed, an agent instance cannot be rendered or a library is not registered. `Nothing to update.` is no longer printed after a failure.
40
+ - `skaile add <ref>` of an asset whose requirement no registered library or source holds exits 1 with `<ref> requires <dep> (not found — register the library that holds it with skaile library init <name> --path <dir>, or remove the requirement from the asset's manifest) — nothing was added`. It was exit 0 with `was added without unresolved dependencies`, which left a project that `check`, `install` and `diff` all fail. `skaile.yaml`, the lock and the deployed files stay as they were. `AssetManager.add` throws instead of warning, so `skaile update <name>`, `skaile manage` and `skaile npx` fail the same way.
41
+
42
+ ### Patch Changes
43
+
44
+ - [#1055](https://github.com/skaile-ai/workspaces/pull/1055) [`3c15671`](https://github.com/skaile-ai/workspaces/commit/3c1567160077b7e0e0ca888c02c2e7bf0bf02358) Thanks [@mortegro](https://github.com/mortegro)! - `skaile manage` ticks a library group only when the group's own rows are installed: with the same ref in two libraries, only the group that holds the installed copy gets the tick. `skaile diff preset:<ref>` of an installed preset says `preset has no files of its own` and exits 0, and `skaile why preset:<ref>` finds the preset in the lock instead of printing `not found in lock file`. `AssetManager.diff()` can return the new status `no-files`.
45
+
46
+ - [#1055](https://github.com/skaile-ai/workspaces/pull/1055) [`3c15671`](https://github.com/skaile-ai/workspaces/commit/3c1567160077b7e0e0ca888c02c2e7bf0bf02358) Thanks [@mortegro](https://github.com/mortegro)! - `library rename` of a local library no longer breaks projects that lock it: the rename is recorded, and `install --locked`, `check` and `install` find the library under its new name. `library rename` and `library show` of a library whose folder is gone print the missing-directory line and exit 1, with no raw `ENOENT`. `library pull`, `sync` and `push` print `merge in progress; resolve the conflicts, then git commit` and exit 1 while a merge is unfinished, like they do for a rebase.
47
+
48
+ - [#1055](https://github.com/skaile-ai/workspaces/pull/1055) [`3c15671`](https://github.com/skaile-ai/workspaces/commit/3c1567160077b7e0e0ca888c02c2e7bf0bf02358) Thanks [@mortegro](https://github.com/mortegro)! - Every command now gives the fix text of the shared project state. For a declared ref that no library or source holds, `install`, `install --locked`, `update` and `why` print the `check` fix (`register the library ... or drop it with skaile remove`). They no longer say `run skaile install first` for a ref that `install` cannot resolve. `outdated` no longer advises `skaile install` for a requirement whose locked library is not registered; it names `library init` or `remove`. `run skaile add agent:... first` is printed only when a registered library holds the agent; otherwise the advice names `library init` or the binding to drop. `check`, `doctor` and `outdated` print the requiring asset as `kind:@publisher/name`. `LockGap.asset` of a `requires` gap now carries the publisher.
49
+
50
+ - Updated dependencies [[`87945dd`](https://github.com/skaile-ai/workspaces/commit/87945ddc111f3cdd5c2e354d387170ce2f6ca6a5), [`3c15671`](https://github.com/skaile-ai/workspaces/commit/3c1567160077b7e0e0ca888c02c2e7bf0bf02358), [`3c15671`](https://github.com/skaile-ai/workspaces/commit/3c1567160077b7e0e0ca888c02c2e7bf0bf02358), [`3c15671`](https://github.com/skaile-ai/workspaces/commit/3c1567160077b7e0e0ca888c02c2e7bf0bf02358), [`3c15671`](https://github.com/skaile-ai/workspaces/commit/3c1567160077b7e0e0ca888c02c2e7bf0bf02358), [`3c15671`](https://github.com/skaile-ai/workspaces/commit/3c1567160077b7e0e0ca888c02c2e7bf0bf02358), [`3c15671`](https://github.com/skaile-ai/workspaces/commit/3c1567160077b7e0e0ca888c02c2e7bf0bf02358), [`3c15671`](https://github.com/skaile-ai/workspaces/commit/3c1567160077b7e0e0ca888c02c2e7bf0bf02358), [`3c15671`](https://github.com/skaile-ai/workspaces/commit/3c1567160077b7e0e0ca888c02c2e7bf0bf02358), [`3c15671`](https://github.com/skaile-ai/workspaces/commit/3c1567160077b7e0e0ca888c02c2e7bf0bf02358)]:
51
+ - @skaile/workspaces@5.11.0
52
+
3
53
  ## 5.10.0
4
54
 
5
55
  ### Minor Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skaile-cli",
3
- "version": "5.10.0",
3
+ "version": "5.11.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.10.0"
28
+ "@skaile/workspaces": "5.11.0"
29
29
  },
30
30
  "publishConfig": {
31
31
  "access": "public"