agentwheel 0.21.0 → 0.21.3

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/README.md CHANGED
@@ -98,6 +98,7 @@ Fragments are Agentwheel composition inputs, not runtime file-drop targets.
98
98
  |---|---|
99
99
  | `agentwheel search <query>` | Search configured registries and the public enriched/Vercel catalogue; supports stable JSON output for agent reranking. |
100
100
  | `agentwheel add <source>` | Validate and save a package entry in `.agentwheel/config.json`; does not touch runtimes. |
101
+ | `agentwheel pin <alias> <commit>` | Change an existing pinned alias's exact commit, preserving its configuration; does not resolve sources or touch runtimes. |
101
102
  | `agentwheel plan [name-or-source]` | Preview what `install` would reconcile without writing; supports `--profile <name>` and `--json`. |
102
103
  | `agentwheel install` | Reconcile configured packages into the current target or selected fleet. Uses the graph lock as input by default. |
103
104
  | `agentwheel install <name-or-source>` | Ensure semantics: configured name/source scopes the install; a new source is added and installed. |
@@ -496,15 +497,27 @@ the same path with the same artifact identity move; the rest stay in the source
496
497
  listed. The current graph groups packages as install does, by installation type and adapter
497
498
  configuration, and the command refuses when they resolve to more than one install state or when
498
499
  `--installation-type`, `--adapter-config`, or `--adapter-module` differs from what install resolves.
499
- Runtime bytes must match the recorded hash unless `--carry-drift` keeps that hash, so the next
500
- install reports drift instead of overwriting local changes. A path another owner still claims blocks the
500
+ For plain entries, runtime bytes must match the recorded hash unless `--carry-drift` keeps that
501
+ hash, so the next install reports drift instead of overwriting local changes. A path another owner still claims blocks the
501
502
  plan. A duplicate claim by the same previous owner is listed only when it sits under another legacy
502
503
  key of that root with the same proof and the same recorded artifact and hashes; run the command
503
504
  again with that key to retire it. Any other duplicate, including one in that root's current state,
504
505
  blocks the plan. Apply only the emitted command. It writes the stable manifest first and the legacy
505
- manifest second, and changes nothing else. A pending apply journal blocks the command. If an apply
506
- stops after the stable manifest was written, run the dry-run again: paths already in the stable
507
- state are then retired from the legacy key.
506
+ manifest second without rewriting runtime artifacts. A pending apply journal blocks the command:
507
+ recover the journal before planning again. Once the stable phase has completed, a new reviewed
508
+ dry-run retires the exact source copy left under the legacy key.
509
+
510
+ Coherent managed instruction blocks are also supported. There must be one complete selected
511
+ marker pair with matching selector, marker digest and recorded body hash; duplicate, overlapping,
512
+ missing or drifted markers are refused. `--carry-drift` is forbidden when a managed block is selected.
513
+ The reviewed plan records the original body hash separately from the whole-file runtime hash,
514
+ prefix/suffix/block digests and byte/mode snapshot. The native phase journals bind these values and
515
+ the whole install-manifest inventory. Initial apply and interrupted recovery require exact reviewed
516
+ before/after state, preserving concurrent edits rather than overwriting them. Additional overlapping
517
+ claims are refused; only an exact source/destination copy from the two-phase transition may remain.
518
+ The runtime file, its prefix, suffix, block and permissions stay unchanged. Adoption preserves the
519
+ recorded source metadata; it does not establish historical Git availability or evaluate a later source
520
+ update. Run ordinary install planning separately for that decision.
508
521
 
509
522
  ## Core Ideas
510
523
 
@@ -571,6 +584,44 @@ agentwheel plan
571
584
  agentwheel install
572
585
  ```
573
586
 
587
+ Use `add --runtimes codex` to restrict a saved package to matching runtime adapters. The option
588
+ accepts comma-separated names and can be repeated. When replacing an existing package alias,
589
+ pass its runtime restrictions and selection again; `add` replaces the saved entry.
590
+
591
+ To change only an existing pinned alias's revision, use its exact configured name and a full
592
+ 40-hex commit SHA:
593
+
594
+ ```bash
595
+ agentwheel pin shared-pack 0123456789abcdef0123456789abcdef01234567 --fleet delivery --reason "Pin the reviewed source revision"
596
+ ```
597
+
598
+ `pin` preserves the source URL, driver, adapter, runtime restrictions, installation type (including
599
+ its absence), package order and other fields. It accepts the normal workspace selectors
600
+ `--fleet`, `--local`, `--user`, or `--target-root`, and uses the same mutation policy, durable
601
+ receipts and revision provider as other source mutations. Missing or duplicate aliases, tracking
602
+ packages and abbreviated or symbolic revisions are refused. No sources are fetched or rendered;
603
+ use the normal plan/dry-run before installing the new revision.
604
+
605
+ Omitting `--select` preserves the complete existing selection. Supplying repeatable or
606
+ comma-separated `--select type/name` replaces the complete selection, including any legacy
607
+ `skills` or imported `selection` field. An explicit empty selection is refused.
608
+
609
+ For one source mutation with several aliases, use `pin --pins-file reviewed-pins.json --fleet
610
+ delivery --reason "Pin the reviewed source set"`. The JSON file is a nonempty array of objects
611
+ containing only `alias`, `commit` and optional `select`:
612
+
613
+ ```json
614
+ [
615
+ { "alias": "shared-pack", "commit": "0123456789abcdef0123456789abcdef01234567" },
616
+ { "alias": "companion-pack", "commit": "abcdef0123456789abcdef0123456789abcdef01", "select": ["skills/companion"] }
617
+ ]
618
+ ```
619
+
620
+ The batch cannot be combined with positional pins or `--select`. Every entry is validated before
621
+ the config write; duplicate aliases and extra fields are refused. An omitted `select` preserves
622
+ that package's selection; an explicit list replaces only that package's complete selection. The
623
+ batch shares one durable receipt and revision-provider transaction.
624
+
574
625
  Package authors can mark artifacts as required. Required artifacts are always installed and cannot
575
626
  be deselected:
576
627