agentwheel 0.17.0 → 0.18.1

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/AGENT.md CHANGED
@@ -18,7 +18,7 @@ plugin directories to complete an Agentwheel change.
18
18
  ## Standard Flow
19
19
 
20
20
  ```bash
21
- agentwheel add github:owner/agent-pack --adapter codex --installation-type local --mode tracking
21
+ agentwheel add github:owner/agent-pack --adapter codex --local --mode tracking
22
22
  agentwheel plan
23
23
  agentwheel install
24
24
  agentwheel status
@@ -35,9 +35,35 @@ Use explicit scope when the target matters:
35
35
  ```bash
36
36
  agentwheel install github:owner/agent-pack --adapter claude --user
37
37
  agentwheel install github:owner/agent-pack --adapter codex --local
38
- agentwheel install github:owner/agent-pack --adapter openclaw --installation-type local
38
+ agentwheel install --fleet example-fleet --profile daily --dry-run
39
39
  ```
40
40
 
41
+ `--user`, `--local`, and `--fleet <fleet-id>` select separate desired-state scopes. Named fleets
42
+ are optional. Do not merge scopes or assume a fleet has priority over user or local state.
43
+
44
+ Register and inspect a schema-v3 fleet only after its canonical root, matching `fleetId`, and
45
+ required packages exist:
46
+
47
+ ```bash
48
+ agentwheel fleet register example-fleet --root /srv/agentwheel/fleets/example-fleet --required-package core-agent-pack
49
+ agentwheel fleet list
50
+ agentwheel fleet show example-fleet
51
+ ```
52
+
53
+ If a configured runtime path is owned by another scope, stop and use the separate plan-first
54
+ normalization workflow. Review its digest before apply; matching content is not permission to take
55
+ ownership.
56
+
57
+ ```bash
58
+ agentwheel fleet normalize example-fleet --from user --package core-agent-pack --json
59
+ agentwheel fleet normalize example-fleet --from user --package core-agent-pack --plan-digest <reviewed-sha256> --apply
60
+ agentwheel fleet normalize example-fleet --from user --recover
61
+ ```
62
+
63
+ Named fleets require a schema-v3-capable CLI. Upgrade Agentwheel first and verify
64
+ `agentwheel fleet --help` before creating, registering, reading, or planning fleet state. Do not
65
+ downgrade the config, strip fleet fields, or run a planning/mutation command with the old CLI.
66
+
41
67
  ## Companion Skills
42
68
 
43
69
  Install the Agentwheel companion skill when the user wants Agentwheel guidance inside the runtime:
@@ -69,7 +95,7 @@ agentwheel install clawhub:@openclaw/package-name --adapter openclaw --local
69
95
  Use the catalogue for browsing and copy-ready commands:
70
96
 
71
97
  ```text
72
- https://nestdevlab.github.io/agentwheel/catalogue.html
98
+ https://www.nestdev.it/agentwheel/catalogue.html
73
99
  ```
74
100
 
75
101
  Draft a public catalogue submission without editing the registry by hand:
package/README.md CHANGED
@@ -26,7 +26,7 @@ forward explicitly; installs make the current declaration true.
26
26
  ```bash
27
27
  npm i -g agentwheel
28
28
  agentwheel init
29
- agentwheel add github:your-org/agent-pack --adapter codex --installation-type local --mode tracking
29
+ agentwheel add github:your-org/agent-pack --adapter codex --local --mode tracking
30
30
  agentwheel plan
31
31
  agentwheel install
32
32
  ```
@@ -65,10 +65,6 @@ agentwheel install github:NestDevLab/agentwheel --adapter codex --local --skill
65
65
  agentwheel install github:NestDevLab/agentwheel --adapter codex --local --skill agentwheel-discovery
66
66
  ```
67
67
 
68
- > **Status: early (v0.12).** The public CLI vocabulary is package-manager style:
69
- > `add`, `install`, `update`, and `uninstall`. A hidden `sync` shim remains for old bootstrapped
70
- > skills; use `install` in all new docs and scripts.
71
-
72
68
  ## Supported runtimes & resources
73
69
 
74
70
  agentwheel installs OpenPack resources into five built-in runtimes and into custom harnesses.
@@ -106,10 +102,10 @@ Fragments are Agentwheel composition inputs, not runtime file-drop targets.
106
102
  | `agentwheel install` | Reconcile configured packages into the current target or selected fleet. Uses the graph lock as input by default. |
107
103
  | `agentwheel install <name-or-source>` | Ensure semantics: configured name/source scopes the install; a new source is added and installed. |
108
104
  | `agentwheel update [name]` | Re-resolve tracking packages, then apply. A configured name preserves artifacts owned by other roots; `--dependency <name-or-source>` moves one tracking dependency while unrelated graph nodes stay locked. |
109
- | `agentwheel skill update <name>` | Resolve the owning configured package and reconcile only its closure; pinned owners install current source, tracking owners re-resolve. |
105
+ | `agentwheel skill update <name>` | Resolve the owning configured package and reconcile only that skill plus genuine transitive composition inputs; sibling artifacts stay byte-identical and retain manifest/lock state. |
110
106
  | `agentwheel uninstall <name-or-source>` | Remove a configured package from runtimes and config. |
111
107
  | `agentwheel uninstall <name> --keep-files` | Remove from config/manifest while leaving runtime files unmanaged. |
112
- | `agentwheel status` | Show configured packages, manifest/lock presence, and install state. Use `--profile <name>` for profile-managed fleets; `status --all` uses profile `all` when present. |
108
+ | `agentwheel status` | Show configured packages, manifest/lock presence, and install state. For a named fleet, use `--fleet <fleet-id> --profile <name>`; `--fleet <fleet-id> --all` uses profile `all` when present. |
113
109
  | `agentwheel ownership handoff <type/name>` | Transfer one manifest entry to a different workspace root after exact owner, hash, and revision checks; runtime content is not rewritten. |
114
110
  | `agentwheel mcp retire <package>` | Preview removal of one exact legacy MCP contribution under an explicitly selected install-state key; add `--apply` only after review. |
115
111
  | `agentwheel doctor` | Check runtime setup and suggest explicit companion/selected skill install commands when they are missing. |
@@ -314,45 +310,45 @@ agentwheel install github:your-org/agent-pack --adapter codex,claude
314
310
  ```
315
311
 
316
312
  Use `--local` for the current directory or `-t/--target-root <project>` for another
317
- project/workspace. Use `--user`, `--local`, or `-i/--installation-type <type>` when you want the
318
- scope to be explicit. For example, Codex local skills install into `.agents/skills`, while Codex user
319
- skills install into `~/.agents/skills`.
313
+ project/workspace. Use exactly one of `--user`, `--local`, or `--fleet <fleet-id>` when desired
314
+ state scope matters. `-i/--installation-type <type>` selects the runtime's install layout inside
315
+ that scope. For example, Codex local skills install into `.agents/skills`, while Codex user skills
316
+ install into `~/.agents/skills`. Named fleets are optional; ordinary user and local work does not
317
+ require a fleet registry.
320
318
 
321
319
  When adding a new source this way, Agentwheel saves one package entry per adapter so later installs
322
320
  do not collapse Codex and Claude state into the same config entry.
323
321
 
324
- For a control-plane setup, define named agents in config. Global config lives at
325
- `~/.agentwheel/config.json`; project config lives at `.agentwheel/config.json`; project values win.
322
+ For a control-plane setup, register a named fleet and define its agents and profiles in that fleet's
323
+ config. A fleet is selected explicitly with `--fleet <fleet-id>`; no fleet has global priority and
324
+ Agentwheel never merges desired state from user, local, and fleet scopes.
326
325
 
327
326
  ```jsonc
328
327
  {
328
+ "schemaVersion": 3,
329
+ "fleetId": "example-fleet",
330
+ "packages": [
331
+ {
332
+ "name": "core-agent-pack",
333
+ "source": "github:example-org/core-agent-pack",
334
+ "driver": "git",
335
+ "adapter": "codex",
336
+ "installationType": "local",
337
+ "mode": "tracking"
338
+ }
339
+ ],
329
340
  "agents": {
330
- "lab-openclaw": { "adapter": "openclaw", "installationType": "local", "root": "$HOME/.openclaw-home", "transport": "local" },
331
- "remote-codex": {
341
+ "lab-codex": {
332
342
  "adapter": "codex",
333
343
  "installationType": "local",
334
344
  "root": "/workspace/project",
335
- "transport": "ssh",
336
- "host": "agent-host.example",
337
- "user": "agent",
338
- "port": 22,
339
- "identityFile": "~/.ssh/id_ed25519"
340
- },
341
- "tirrenia": {
342
- "adapter": "openclaw",
343
- "installationType": "local",
344
- "root": "/home/openclaw-tirrenia",
345
- "transport": "ssh",
346
- "host": "ct110",
347
- "user": "openclaw-tirrenia",
348
- "reloadCommands": [["systemctl", "restart", "openclaw-gateway-tirrenia.service"]]
345
+ "transport": "local"
349
346
  }
350
347
  },
351
348
  "profiles": {
352
349
  "daily": {
353
350
  "runtimes": [
354
- { "agent": "lab-openclaw" },
355
- { "agent": "remote-codex" }
351
+ { "agent": "lab-codex" }
356
352
  ]
357
353
  }
358
354
  }
@@ -360,24 +356,41 @@ For a control-plane setup, define named agents in config. Global config lives at
360
356
  ```
361
357
 
362
358
  ```bash
363
- agentwheel install --agent lab-openclaw
364
- agentwheel install --all
365
- agentwheel update --profile daily --dry-run
366
- agentwheel install --profile daily
367
- agentwheel status --profile daily
359
+ agentwheel fleet register example-fleet \
360
+ --root /srv/agentwheel/fleets/example-fleet \
361
+ --required-package core-agent-pack
362
+ agentwheel fleet list
363
+ agentwheel fleet show example-fleet
364
+ agentwheel install --fleet example-fleet --agent lab-codex
365
+ agentwheel install --fleet example-fleet --all
366
+ agentwheel update --fleet example-fleet --profile daily --dry-run
367
+ agentwheel install --fleet example-fleet --profile daily
368
+ agentwheel status --fleet example-fleet --profile daily
368
369
  agentwheel install --all-detected
369
370
  ```
370
371
 
371
- SSH targets use the same manifest and drift model as local targets. Planning reads the remote
372
- install manifest and hashes remote files before deciding whether a file is up to date, drifted, or
373
- conflicting. SSH hosts need `ssh`, `tar`, and `node` available on `PATH`.
374
-
375
- To scaffold a control-plane example:
372
+ If another scope already owns an intended runtime path, the plan fails closed even when the bytes
373
+ match. Use the separate normalization command to preview an explicit ownership transfer, review its
374
+ plan digest, and apply only that same plan. Fleet selection never implies takeover.
376
375
 
377
376
  ```bash
378
- agentwheel init --fleet-example
377
+ agentwheel fleet normalize example-fleet --from user --package core-agent-pack --json
378
+ agentwheel fleet normalize example-fleet --from user --package core-agent-pack \
379
+ --plan-digest <reviewed-sha256> --apply
380
+ agentwheel fleet normalize example-fleet --from user --recover
379
381
  ```
380
382
 
383
+ Recovery restores the source side from a pending normalization journal after verifying that the
384
+ recorded configs, manifests, and graph locks have not changed outside the transaction.
385
+
386
+ Configuration with named fleets requires a schema-v3-capable Agentwheel CLI. Upgrade the CLI first,
387
+ verify `agentwheel --version` and `agentwheel fleet --help`, then create the fleet config and
388
+ register it. Do not edit the config to an older schema or run an older CLI against it.
389
+
390
+ SSH targets use the same manifest and drift model as local targets. Planning reads the remote
391
+ install manifest and hashes remote files before deciding whether a file is up to date, drifted, or
392
+ conflicting. SSH hosts need `ssh`, `tar`, and `node` available on `PATH`.
393
+
381
394
  Target resolution order is exact: `--target-root` wins, then `--agent`, then auto-detect from the
382
395
  current directory, then fallback to the current directory. `--all-detected` is an explicit escape hatch
383
396
  for applying to every runtime marker found in the current directory or `--target-root`; `--all` remains
@@ -742,7 +755,7 @@ Built-in runtime targets:
742
755
  - [`docs/fleet-config.md`](docs/fleet-config.md) — named agents, SSH targets, and profiles.
743
756
  - [`docs/design/federated-fleet-clusters.md`](docs/design/federated-fleet-clusters.md) — federating autonomous workspaces under one doctor/update control plane.
744
757
  - [`docs/design/artifact-harness-compatibility.md`](docs/design/artifact-harness-compatibility.md) — artifact/harness compatibility matrix and rule semantics.
745
- - Resource catalogue: https://nestdevlab.github.io/agentwheel/catalogue.html.
758
+ - Resource catalogue: https://www.nestdev.it/agentwheel/catalogue.html.
746
759
  - [`DESIGN.md`](DESIGN.md) — architecture and module layout.
747
760
  - [`LIFECYCLE.md`](LIFECYCLE.md) — publish, install, update, and customization model.
748
761
 
@@ -136,6 +136,7 @@ function resolveLocalPath(source) {
136
136
  export {
137
137
  pathExists,
138
138
  hashPath,
139
+ listFiles,
139
140
  isIgnoredGeneratedEntry,
140
141
  atomicCopy,
141
142
  writeJsonAtomic,
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  inferSourceDriverName,
4
4
  isExplicitSource
5
- } from "./chunk-24IUHC3D.js";
5
+ } from "./chunk-UQLRZV5W.js";
6
6
  export {
7
7
  inferSourceDriverName,
8
8
  isExplicitSource