@open-agent-toolkit/cli 0.2.45 → 0.2.46
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/assets/bundle-metadata.json +1 -1
- package/assets/docs/cli-utilities/tool-packs.md +55 -9
- package/assets/docs/reference/troubleshooting.md +18 -11
- package/assets/public-package-versions.json +4 -4
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +4 -1
- package/dist/commands/init/tools/index.d.ts +1 -0
- package/dist/commands/init/tools/index.d.ts.map +1 -1
- package/dist/commands/init/tools/index.js +37 -9
- package/dist/commands/tools/shared/pack-inventory.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-inventory.js +71 -11
- package/dist/commands/tools/shared/project-tools-config.d.ts +6 -2
- package/dist/commands/tools/shared/project-tools-config.d.ts.map +1 -1
- package/dist/commands/tools/shared/project-tools-config.js +7 -5
- package/dist/commands/tools/update/index.d.ts.map +1 -1
- package/dist/commands/tools/update/index.js +18 -4
- package/package.json +2 -2
|
@@ -140,6 +140,12 @@ Two independent facts describe a pack:
|
|
|
140
140
|
release manifest declares for that pack and scope, its presence, and its
|
|
141
141
|
version or content digest.
|
|
142
142
|
|
|
143
|
+
Versioned skills and agents must match on both version metadata and canonical
|
|
144
|
+
content. A same-version content change is therefore reported as outdated rather
|
|
145
|
+
than current. Content comparison ignores the executable-bit normalization OAT
|
|
146
|
+
intentionally applies while materializing managed scripts, but still detects
|
|
147
|
+
file content, entry-type, and symlink-target changes.
|
|
148
|
+
|
|
143
149
|
Commands report both. `oat tools list` and `oat tools info` show placement,
|
|
144
150
|
intent source, and completeness. `oat status` and `oat doctor` report drift
|
|
145
151
|
between intent and inventory with a scoped recovery command.
|
|
@@ -182,11 +188,12 @@ without qualification. Install the pack at **project scope** when you need its
|
|
|
182
188
|
agents; `oat tools update` cannot repair this, because it is a scope limitation
|
|
183
189
|
rather than drift.
|
|
184
190
|
|
|
185
|
-
Repository templates under `.oat/templates/` are **owner
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
191
|
+
Repository templates under `.oat/templates/` are **owner-owned seeds**. OAT
|
|
192
|
+
compares a source-backed seed with its bundled default: a byte-equivalent copy
|
|
193
|
+
is reported as current, while an edited copy is retained and reported as a
|
|
194
|
+
`retained-override`. OAT will not rewrite the retained copy. Delete a repository
|
|
195
|
+
template only when you intentionally want the bundled default seeded again;
|
|
196
|
+
never delete edited mutable seed content merely to clear the diagnostic.
|
|
190
197
|
|
|
191
198
|
### Evolving pack membership
|
|
192
199
|
|
|
@@ -454,8 +461,15 @@ Key behavior:
|
|
|
454
461
|
- Every pack's fresh-install default is user scope (`defaultScope` in the release manifest); existing installs keep their current placement on re-install, so a re-install never moves a pack between scopes or creates a second copy at the other one. This applies to the per-pack subcommands too: a bare `oat tools install docs` in a repository where `docs` is already at project scope stays at project scope, and only an explicit `--scope` overrides that
|
|
455
462
|
- Removing a pack from a scope happens only when you explicitly choose a narrower end-state in the interactive flow (e.g. a pack at `both` set to `project` only). All staged removals are shown in a single change summary and applied only after one batch confirmation — declining makes no changes
|
|
456
463
|
- Non-interactive installs (including `--scope project`, `--scope user`, and the default pack set) are strictly additive and never remove a pack from a scope. Removal is interactive-only
|
|
457
|
-
- Tracks installed
|
|
464
|
+
- Tracks installed versus bundled skill and agent versions and canonical
|
|
465
|
+
content, reporting same-version content drift as outdated while ignoring
|
|
466
|
+
expected executable-bit normalization
|
|
458
467
|
- Writes pack intent into the config file for the scope you installed into: a project install sets `tools.<pack>: true` in `.oat/config.json`, and a user install sets it in `~/.oat/config.json`. A user-only install never writes repository config
|
|
468
|
+
- When a project install discovers existing project-scoped packs whose intent
|
|
469
|
+
is missing, it writes those exact intents in canonical pack order. Human
|
|
470
|
+
output prints `Adopted project tool pack: <pack>` once per adopted pack;
|
|
471
|
+
JSON output adds `adoptedPacks` only when the list is non-empty. This is pack
|
|
472
|
+
intent reconciliation, not repository PJM adoption
|
|
459
473
|
- A user-only install needs no Git repository and performs no repository writes
|
|
460
474
|
- Refreshes the managed `OAT tools` section in the repository-root `AGENTS.md` **only for project-scope runs of the aggregate `oat tools install`**. The per-pack subcommands (`oat tools install workflows`, `oat tools install docs`, and the rest) never write `AGENTS.md`, at either scope
|
|
461
475
|
- Repository `AGENTS.md` guidance for project management is owned by adoption, not by pack placement. Installing the `project-management` pack no longer upserts a managed `OAT project-management` section; `oat pjm init` writes that repository guidance when the repository actually adopts PJM
|
|
@@ -474,12 +488,17 @@ Key behavior:
|
|
|
474
488
|
|
|
475
489
|
- Accepts a tool name, `--pack <pack>`, or `--all` (mutually exclusive)
|
|
476
490
|
- With no target, exits without mutation and suggests the explicit bulk command `oat tools update --all`; invalid packs and conflicting targets keep their own targeted diagnostics
|
|
477
|
-
- Compares installed versions against bundled
|
|
491
|
+
- Compares installed versions and canonical content against bundled assets and
|
|
492
|
+
copies updates; equal version metadata does not hide content drift
|
|
478
493
|
- For `--pack <pack>` and `--all`, an already-installed pack is reconciled to the **current** release membership in the scopes where it is installed, adding newly bundled skills, agents, templates, and scripts
|
|
479
494
|
- A pack whose managed assets are all missing but whose intent is still declared is repaired from intent rather than skipped
|
|
480
495
|
- Managed template and script companions are refreshed at **user** scope. A project-scope repository template is an owner override and is left alone
|
|
481
496
|
- Non-versioned assets are compared by content digest, so an identical refresh is a no-op instead of a rewrite
|
|
482
497
|
- Update persists inferred legacy intent only after a successful explicit mutation, so a read never rewrites your config
|
|
498
|
+
- A successful project-scope update reports the exact newly adopted legacy pack
|
|
499
|
+
intents in canonical order. Human output uses
|
|
500
|
+
`Adopted project tool pack: <pack>`; JSON output adds the optional
|
|
501
|
+
`adoptedPacks` array only when at least one intent was written
|
|
483
502
|
- `--scope all` outside a Git repository completes the user-scope work instead of failing. Unlike `oat status` and `oat doctor`, update skips project scope silently and does not name it in the result; an explicitly requested `--scope project` outside a repository is still a hard failure
|
|
484
503
|
- Dry-run mode with `--dry-run`; auto-sync after mutations by default
|
|
485
504
|
- Use `--no-sync` to skip auto-sync
|
|
@@ -735,8 +754,9 @@ Removal and migration use the symmetric contract: the follow-up sync prunes exac
|
|
|
735
754
|
User-scope tool packs and explicit PJM adoption changed several defaults and
|
|
736
755
|
exit codes. Nothing here is data-destructive, and legacy config keeps working —
|
|
737
756
|
`tools.<pack>: false` still parses, complete pre-adoption PJM scaffolds are
|
|
738
|
-
grandfathered as `inferred-legacy`, and
|
|
739
|
-
several commands you already run
|
|
757
|
+
grandfathered as `inferred-legacy`, and existing installs remain additive. One
|
|
758
|
+
inert per-pack install flag was removed, and several commands you already run
|
|
759
|
+
behave differently.
|
|
740
760
|
|
|
741
761
|
### Install scope defaults flipped to user
|
|
742
762
|
|
|
@@ -781,6 +801,26 @@ is not installed. Test for a truthy value instead. Legacy `false` values that
|
|
|
781
801
|
already exist in a config file are still read (see
|
|
782
802
|
[Legacy `false` intent](#legacy-false-intent)) — they are just never written.
|
|
783
803
|
|
|
804
|
+
Direct config writes now enforce the same true-or-absent contract.
|
|
805
|
+
`oat config set tools.<pack> false` exits `1` without changing the config. To
|
|
806
|
+
remove a project-scoped pack and clear its intent, run:
|
|
807
|
+
|
|
808
|
+
```bash
|
|
809
|
+
oat tools remove --pack <pack> --scope project
|
|
810
|
+
```
|
|
811
|
+
|
|
812
|
+
Existing legacy `false` values remain readable migration input.
|
|
813
|
+
|
|
814
|
+
### Per-pack install `--force` was removed
|
|
815
|
+
|
|
816
|
+
`oat tools install <pack> --force` is now rejected as an unknown option. The
|
|
817
|
+
flag was inert in the unified additive lifecycle. To reconcile installed
|
|
818
|
+
assets, use the scoped update command instead:
|
|
819
|
+
|
|
820
|
+
```bash
|
|
821
|
+
oat tools update --pack <pack> --scope <scope>
|
|
822
|
+
```
|
|
823
|
+
|
|
784
824
|
### Per-pack install `--json` changed shape
|
|
785
825
|
|
|
786
826
|
The per-pack subcommands (`oat tools install docs`, `oat tools install
|
|
@@ -803,6 +843,12 @@ above. The previous single-scope payload's `scope`, `targetRoot`, `assetsRoot`,
|
|
|
803
843
|
keying on them reads `undefined` rather than failing. Read `scopes` for the
|
|
804
844
|
scopes acted on, and `results[].request.scopeRoot` for the target root of each.
|
|
805
845
|
|
|
846
|
+
When a project-scope aggregate install, direct pack install, or update adopts
|
|
847
|
+
missing legacy pack intents, the same single payload also contains
|
|
848
|
+
`"adoptedPacks": ["docs", "workflows"]`. The field is omitted when nothing was
|
|
849
|
+
adopted, and entries follow the manifest's canonical pack order. Human output
|
|
850
|
+
reports the same set as one `Adopted project tool pack: <pack>` line per pack.
|
|
851
|
+
|
|
806
852
|
### Other behavior changes worth knowing
|
|
807
853
|
|
|
808
854
|
- `oat tools remove --pack <pack>` deletes every managed asset the release
|
|
@@ -77,8 +77,10 @@ Use [Instruction Sync](../provider-sync/instruction-sync.md) for the full strate
|
|
|
77
77
|
|
|
78
78
|
- Run `oat init tools` to install/update bundled OAT tool packs.
|
|
79
79
|
- In TTY mode, select which outdated skills to update when prompted.
|
|
80
|
-
- In non-interactive mode,
|
|
81
|
-
|
|
80
|
+
- In non-interactive mode, run the scoped command doctor prints:
|
|
81
|
+
`oat tools update --pack <pack> --scope <scope>`.
|
|
82
|
+
- Per-pack install commands no longer accept the previously inert `--force`
|
|
83
|
+
option.
|
|
82
84
|
|
|
83
85
|
## `sync` reports an unsafe provider parent
|
|
84
86
|
|
|
@@ -147,18 +149,23 @@ Both commands report managed pack state with a scoped recovery command:
|
|
|
147
149
|
|
|
148
150
|
- `partial` — some managed assets are missing, or intent is declared with none
|
|
149
151
|
installed. Fix with `oat tools update --pack <pack> --scope <scope>`.
|
|
150
|
-
- `stale` — installed assets are behind the bundled release
|
|
152
|
+
- `stale` — installed assets are behind the bundled release, or a managed skill
|
|
153
|
+
or agent has the bundled version metadata but different canonical content.
|
|
154
|
+
Expected executable-bit normalization on managed scripts is ignored. Fix with
|
|
155
|
+
the same scoped update command.
|
|
151
156
|
- `newer` — installed assets are ahead of the bundle. This is informational and
|
|
152
157
|
usually means the CLI is older than the assets; update the CLI rather than
|
|
153
158
|
downgrading the pack.
|
|
154
|
-
- `retained-override` —
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
159
|
+
- `retained-override` — a source-backed owner-owned seed differs from its
|
|
160
|
+
bundled default, so OAT retains the edited copy instead of overwriting it. A
|
|
161
|
+
bundle-equal seed is current and does not produce this finding. Retained
|
|
162
|
+
overrides cover repository templates under `.oat/templates/` **and** seeded
|
|
163
|
+
content such as `.oat/ideas/backlog.md` and `.oat/ideas/scratchpad.md`.
|
|
164
|
+
Deleting the file is the right move only for a **template** you intentionally
|
|
165
|
+
want OAT to seed from the bundle again; never delete seeded content you have
|
|
166
|
+
edited, because the next install or update reseeds the bundled default in its
|
|
167
|
+
place and your edits are gone. The finding is informational and carries no
|
|
168
|
+
recovery command for exactly that reason.
|
|
162
169
|
- `user-agent-unmaterialized` — the pack installed canonical agents into
|
|
163
170
|
`~/.agents/agents/`, but user scope materializes no provider view for them
|
|
164
171
|
beyond the bundled managed role files. `oat tools update` cannot fix this.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGhF,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,iCAAiC,CAAC;AAmBzC,OAAO,EAML,KAAK,SAAS,EACd,KAAK,cAAc,EAGnB,KAAK,UAAU,EAgBhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAGL,KAAK,8BAA8B,EACnC,KAAK,yBAAyB,EAC/B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,mCAAmC,EACnC,0BAA0B,EAC3B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0GpC,UAAU,yBAAyB;IACjC,mBAAmB,EAAE,CACnB,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAC/C,cAAc,CAAC;IACpB,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACxD,kCAAkC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7E,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAClE,mBAAmB,EAAE,CACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,KACnB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,cAAc,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/D,eAAe,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,mBAAmB,EAAE,CACnB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,CAAC,UAAU,KACnB,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,sBAAsB,EAAE,CACtB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,CAAC,UAAU,KACnB,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7B,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,kBAAkB,EAAE,CAClB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,yBAAyB,KAC/B,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC7C,mCAAmC,EAAE,OAAO,mCAAmC,CAAC;IAChF,0BAA0B,EAAE,OAAO,0BAA0B,CAAC;IAC9D,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC;CAC/B;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGhF,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,iCAAiC,CAAC;AAmBzC,OAAO,EAML,KAAK,SAAS,EACd,KAAK,cAAc,EAGnB,KAAK,UAAU,EAgBhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAGL,KAAK,8BAA8B,EACnC,KAAK,yBAAyB,EAC/B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,mCAAmC,EACnC,0BAA0B,EAC3B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0GpC,UAAU,yBAAyB;IACjC,mBAAmB,EAAE,CACnB,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAC/C,cAAc,CAAC;IACpB,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACxD,kCAAkC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7E,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAClE,mBAAmB,EAAE,CACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,KACnB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,cAAc,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/D,eAAe,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,mBAAmB,EAAE,CACnB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,CAAC,UAAU,KACnB,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,sBAAsB,EAAE,CACtB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,CAAC,UAAU,KACnB,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7B,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,kBAAkB,EAAE,CAClB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,yBAAyB,KAC/B,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC7C,mCAAmC,EAAE,OAAO,mCAAmC,CAAC;IAChF,0BAA0B,EAAE,OAAO,0BAA0B,CAAC;IAC9D,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC;CAC/B;AAqkFD,wBAAgB,mBAAmB,CACjC,SAAS,GAAE,OAAO,CAAC,yBAAyB,CAAM,GACjD,OAAO,CAsKT"}
|
|
@@ -1701,8 +1701,11 @@ async function setConfigValue(repoRoot, userConfigDir, key, rawValue, surface, d
|
|
|
1701
1701
|
}
|
|
1702
1702
|
if (key.startsWith('tools.')) {
|
|
1703
1703
|
const packName = key.slice('tools.'.length);
|
|
1704
|
+
if (rawValue.trim().toLowerCase() !== 'true') {
|
|
1705
|
+
throw new Error(`Pack intent '${key}' can only be declared with true. To remove the pack and clear its intent, run: oat tools remove --pack ${packName} --scope project`);
|
|
1706
|
+
}
|
|
1704
1707
|
const tools = { ...config.tools };
|
|
1705
|
-
tools[packName] =
|
|
1708
|
+
tools[packName] = true;
|
|
1706
1709
|
await dependencies.writeOatConfig(repoRoot, {
|
|
1707
1710
|
...config,
|
|
1708
1711
|
tools,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/init/tools/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/init/tools/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -411,15 +411,19 @@ function buildPackEndStateChoices(pack, currentLocation, defaultEndState) {
|
|
|
411
411
|
const rest = annotated.filter((choice) => choice.value !== defaultEndState);
|
|
412
412
|
return defaultChoice ? [defaultChoice, ...rest] : annotated;
|
|
413
413
|
}
|
|
414
|
-
function reportSuccess(context, packs, syncScopes) {
|
|
414
|
+
function reportSuccess(context, packs, syncScopes, adoptedPacks) {
|
|
415
415
|
if (context.json) {
|
|
416
416
|
context.logger.json({
|
|
417
417
|
status: 'ok',
|
|
418
418
|
installedPacks: packs,
|
|
419
419
|
syncScopes,
|
|
420
|
+
...(adoptedPacks.length > 0 ? { adoptedPacks } : {}),
|
|
420
421
|
});
|
|
421
422
|
return;
|
|
422
423
|
}
|
|
424
|
+
for (const pack of adoptedPacks) {
|
|
425
|
+
context.logger.info(`Adopted project tool pack: ${pack}`);
|
|
426
|
+
}
|
|
423
427
|
context.logger.info(`Installed tool packs: ${packs.map(({ pack, scope }) => `${pack} (${formatInstalledLocation(scope)})`).join(', ')}`);
|
|
424
428
|
syncScopes.forEach((scope, index) => {
|
|
425
429
|
context.logger.info(`${index === 0 ? 'Run' : 'Also run'}: oat sync --scope ${scope}`);
|
|
@@ -515,7 +519,11 @@ export async function runInitTools(context, dependencies) {
|
|
|
515
519
|
selectedPacks.push('project-management');
|
|
516
520
|
}
|
|
517
521
|
if (selectedPacks.length === 0) {
|
|
518
|
-
lastRunInitToolsMetadata = {
|
|
522
|
+
lastRunInitToolsMetadata = {
|
|
523
|
+
affectedScopes: [],
|
|
524
|
+
appliedScopes: [],
|
|
525
|
+
adoptedPacks: [],
|
|
526
|
+
};
|
|
519
527
|
if (!context.json) {
|
|
520
528
|
context.logger.info('No tool packs selected.');
|
|
521
529
|
}
|
|
@@ -838,11 +846,19 @@ export async function runInitTools(context, dependencies) {
|
|
|
838
846
|
const appliedScopes = [
|
|
839
847
|
...new Set(packScopeInfo.flatMap(({ scope }) => scopesForEndState(scope))),
|
|
840
848
|
];
|
|
849
|
+
const adoptedPacks = projectRoot && appliedScopes.includes('project')
|
|
850
|
+
? (await reconcileProjectToolsConfig({
|
|
851
|
+
repoRoot: projectRoot,
|
|
852
|
+
cwd: context.cwd,
|
|
853
|
+
home: context.home,
|
|
854
|
+
}, dependencies)).adoptedPacks
|
|
855
|
+
: [];
|
|
841
856
|
lastRunInitToolsMetadata = {
|
|
842
857
|
affectedScopes: affectedScopesList,
|
|
843
858
|
appliedScopes,
|
|
859
|
+
adoptedPacks,
|
|
844
860
|
};
|
|
845
|
-
reportSuccess(context, packScopeInfo, affectedScopesList);
|
|
861
|
+
reportSuccess(context, packScopeInfo, affectedScopesList, adoptedPacks);
|
|
846
862
|
process.exitCode = 0;
|
|
847
863
|
return selectedPacks;
|
|
848
864
|
}
|
|
@@ -912,7 +928,7 @@ function createReconciledPackCommand(pack, dependencies) {
|
|
|
912
928
|
const base = new Command(pack).description(descriptions[pack]);
|
|
913
929
|
const packCommand = pack === 'core' ? base : withScopeOption(base);
|
|
914
930
|
return packCommand
|
|
915
|
-
.
|
|
931
|
+
.allowUnknownOption(false)
|
|
916
932
|
.action(async (_options, command) => {
|
|
917
933
|
const context = dependencies.buildCommandContext(readGlobalOptions(command));
|
|
918
934
|
try {
|
|
@@ -946,15 +962,26 @@ function createReconciledPackCommand(pack, dependencies) {
|
|
|
946
962
|
// Project-scope placement installs capability only. The
|
|
947
963
|
// project-management and decisions AGENTS sections are written by the
|
|
948
964
|
// explicit adoption action (`oat pjm init`), never by pack placement.
|
|
965
|
+
const adoptedPacks = scopes.includes('project')
|
|
966
|
+
? (await reconcileProjectToolsConfig({
|
|
967
|
+
repoRoot: await dependencies.resolveProjectRoot(context.cwd),
|
|
968
|
+
cwd: context.cwd,
|
|
969
|
+
home: context.home,
|
|
970
|
+
}, dependencies)).adoptedPacks
|
|
971
|
+
: [];
|
|
949
972
|
if (context.json) {
|
|
950
973
|
context.logger.json({
|
|
951
974
|
status: 'ok',
|
|
952
975
|
pack,
|
|
953
976
|
scopes,
|
|
954
977
|
results,
|
|
978
|
+
...(adoptedPacks.length > 0 ? { adoptedPacks } : {}),
|
|
955
979
|
});
|
|
956
980
|
}
|
|
957
981
|
else {
|
|
982
|
+
for (const adoptedPack of adoptedPacks) {
|
|
983
|
+
context.logger.info(`Adopted project tool pack: ${adoptedPack}`);
|
|
984
|
+
}
|
|
958
985
|
context.logger.info(`Installed ${pack} tool pack.`);
|
|
959
986
|
for (const result of results) {
|
|
960
987
|
context.logger.info(`Scope: ${result.request.scope}`);
|
|
@@ -1045,10 +1072,12 @@ export function createInitToolsCommand(overrides = {}) {
|
|
|
1045
1072
|
scanTools: dependencies.scanTools,
|
|
1046
1073
|
}),
|
|
1047
1074
|
];
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1075
|
+
if (!dependencies.reconcilePacks) {
|
|
1076
|
+
for (const packCommand of packCommands) {
|
|
1077
|
+
packCommand.hook('postAction', async (_thisCommand, actionCommand) => {
|
|
1078
|
+
await reconcileAfterInstall(actionCommand);
|
|
1079
|
+
});
|
|
1080
|
+
}
|
|
1052
1081
|
}
|
|
1053
1082
|
const command = new Command('tools').description('Install OAT tool packs (core, ideas, docs, workflows, utility, project-management, research, brainstorm)');
|
|
1054
1083
|
for (const packCommand of packCommands) {
|
|
@@ -1059,7 +1088,6 @@ export function createInitToolsCommand(overrides = {}) {
|
|
|
1059
1088
|
const selectedPacks = await runInitTools(context, dependencies);
|
|
1060
1089
|
appliedScopesByCommand.set(actionCommand, lastRunInitToolsMetadata?.appliedScopes ?? []);
|
|
1061
1090
|
setInstalledCanonicalPaths(actionCommand, canonicalPathsForPacks(selectedPacks));
|
|
1062
|
-
await reconcileAfterInstall(actionCommand);
|
|
1063
1091
|
});
|
|
1064
1092
|
return command;
|
|
1065
1093
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pack-inventory.d.ts","sourceRoot":"","sources":["../../../../src/commands/tools/shared/pack-inventory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pack-inventory.d.ts","sourceRoot":"","sources":["../../../../src/commands/tools/shared/pack-inventory.ts"],"names":[],"mappings":"AAaA,OAAO,EACL,KAAK,aAAa,EAEnB,MAAM,eAAe,CAAC;AAIvB,OAAO,EAEL,KAAK,gBAAgB,EAEtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,QAAQ,EACT,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,mBAAmB,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;IACxB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EACA,uBAAuB,GACvB,iBAAiB,GACjB,0BAA0B,GAC1B,2BAA2B,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,gBAAgB,CAAC;IACzB,YAAY,EAAE,gBAAgB,CAAC;IAC/B,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,WAAW,EAAE,cAAc,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC;IACvD,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,WAAW,EAAE,cAAc,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA8QD,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,mBAAmB,CAAC,CAmC9B;AAED,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,mBAAmB,GAC7B,OAAO,CAUT;AAED,wBAAsB,aAAa,CACjC,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,aAAa,CAAC,CA0DxB"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { lstat } from 'node:fs/promises';
|
|
1
|
+
import { lstat, readdir, readlink } from 'node:fs/promises';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
3
|
import { compareVersions } from '../../init/tools/shared/version.js';
|
|
4
4
|
import { getAgentVersion, getSkillVersion } from '../../shared/frontmatter.js';
|
|
5
5
|
import { readOatConfig } from '../../../config/oat-config.js';
|
|
6
|
-
import { resolveManagedScopeRoots, validateManagedPath, } from '../../../fs/paths.js';
|
|
6
|
+
import { resolveManagedScopeRoots, validateManagedPath, validateRealPathWithinScope, } from '../../../fs/paths.js';
|
|
7
7
|
import { USER_SCOPE_MANAGED_AGENT_FILES, } from '../../../shared/types.js';
|
|
8
8
|
import { digestDirectory, digestFile } from './content-digest.js';
|
|
9
9
|
import { getPackDefinition } from './pack-manifest.js';
|
|
@@ -29,14 +29,62 @@ async function inventoryVersionedAsset(definition, installedPath, bundledPath) {
|
|
|
29
29
|
readVersion(installedPath),
|
|
30
30
|
readVersion(bundledPath),
|
|
31
31
|
]);
|
|
32
|
+
const versionStatus = compareVersions(installedVersion, bundledVersion);
|
|
33
|
+
const contentMatches = versionStatus !== 'current'
|
|
34
|
+
? null
|
|
35
|
+
: definition.kind === 'skill'
|
|
36
|
+
? await canonicalDirectoryMatches(installedPath, bundledPath)
|
|
37
|
+
: await canonicalFileMatches(installedPath, bundledPath);
|
|
32
38
|
return {
|
|
33
39
|
definition,
|
|
34
40
|
path: installedPath,
|
|
35
|
-
status:
|
|
41
|
+
status: versionStatus === 'current' && !contentMatches
|
|
42
|
+
? 'outdated'
|
|
43
|
+
: versionStatus,
|
|
36
44
|
installedVersion,
|
|
37
45
|
bundledVersion,
|
|
38
46
|
};
|
|
39
47
|
}
|
|
48
|
+
async function canonicalFileMatches(installedPath, bundledPath) {
|
|
49
|
+
const [installedDigest, bundledDigest] = await Promise.all([
|
|
50
|
+
digestFile(installedPath, 0o644),
|
|
51
|
+
digestFile(bundledPath, 0o644),
|
|
52
|
+
]);
|
|
53
|
+
return installedDigest === bundledDigest;
|
|
54
|
+
}
|
|
55
|
+
async function canonicalDirectoryMatches(installedRoot, bundledRoot) {
|
|
56
|
+
const entries = await readdir(bundledRoot, { withFileTypes: true });
|
|
57
|
+
for (const entry of entries) {
|
|
58
|
+
const installedPath = join(installedRoot, entry.name);
|
|
59
|
+
const bundledPath = join(bundledRoot, entry.name);
|
|
60
|
+
if (!(await pathExists(installedPath)))
|
|
61
|
+
return false;
|
|
62
|
+
const installedMetadata = await lstat(installedPath);
|
|
63
|
+
if (entry.isDirectory()) {
|
|
64
|
+
if (!installedMetadata.isDirectory() ||
|
|
65
|
+
!(await canonicalDirectoryMatches(installedPath, bundledPath))) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
if (entry.isFile()) {
|
|
71
|
+
if (!installedMetadata.isFile() ||
|
|
72
|
+
!(await canonicalFileMatches(installedPath, bundledPath))) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
if (entry.isSymbolicLink()) {
|
|
78
|
+
if (!installedMetadata.isSymbolicLink() ||
|
|
79
|
+
(await readlink(installedPath)) !== (await readlink(bundledPath))) {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
throw new Error(`Unsupported filesystem entry in pack asset: ${bundledPath}`);
|
|
85
|
+
}
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
40
88
|
async function inventoryStaticAsset(definition, installedPath, bundledPath) {
|
|
41
89
|
const [installedDigest, bundledDigest] = definition.kind === 'directory'
|
|
42
90
|
? await Promise.all([
|
|
@@ -72,28 +120,40 @@ async function inventoryAsset(definition, scope, scopeRoot, assetsRoot, managedR
|
|
|
72
120
|
};
|
|
73
121
|
}
|
|
74
122
|
if (definition.ownership[scope] === 'seed-if-missing') {
|
|
75
|
-
if (definition.generation
|
|
76
|
-
|
|
123
|
+
if (definition.generation) {
|
|
124
|
+
if (definition.generation === 'projects-config-default') {
|
|
125
|
+
const config = await readOatConfig(scopeRoot);
|
|
126
|
+
return {
|
|
127
|
+
definition,
|
|
128
|
+
path: installedPath,
|
|
129
|
+
status: config.projects?.root?.trim() ? 'present' : 'outdated',
|
|
130
|
+
installedVersion: null,
|
|
131
|
+
bundledVersion: null,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
77
134
|
return {
|
|
78
135
|
definition,
|
|
79
136
|
path: installedPath,
|
|
80
|
-
status:
|
|
137
|
+
status: 'present',
|
|
81
138
|
installedVersion: null,
|
|
82
139
|
bundledVersion: null,
|
|
83
140
|
};
|
|
84
141
|
}
|
|
142
|
+
if (!definition.source) {
|
|
143
|
+
throw new Error(`Seeded pack asset ${definition.id} has no materialized source`);
|
|
144
|
+
}
|
|
145
|
+
const { realPath: bundledPath } = await validateRealPathWithinScope(join(assetsRoot, definition.source), assetsRoot);
|
|
146
|
+
const inventory = await inventoryStaticAsset(definition, realPath, bundledPath);
|
|
85
147
|
return {
|
|
86
|
-
|
|
148
|
+
...inventory,
|
|
87
149
|
path: installedPath,
|
|
88
|
-
status: 'present',
|
|
89
|
-
installedVersion: null,
|
|
90
|
-
bundledVersion: null,
|
|
150
|
+
status: inventory.status === 'current' ? 'current' : 'present',
|
|
91
151
|
};
|
|
92
152
|
}
|
|
93
153
|
if (!definition.source) {
|
|
94
154
|
throw new Error(`Managed pack asset ${definition.id} has no materialized source`);
|
|
95
155
|
}
|
|
96
|
-
const bundledPath = join(assetsRoot, definition.source);
|
|
156
|
+
const { realPath: bundledPath } = await validateRealPathWithinScope(join(assetsRoot, definition.source), assetsRoot);
|
|
97
157
|
if (definition.kind === 'skill' || definition.kind === 'agent') {
|
|
98
158
|
const inventory = await inventoryVersionedAsset(definition, realPath, bundledPath);
|
|
99
159
|
return { ...inventory, path: installedPath };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type OatConfig } from '../../../config/oat-config.js';
|
|
2
2
|
import { type ScanToolsOptions } from './scan-tools.js';
|
|
3
|
-
import type { ToolInfo } from './types.js';
|
|
3
|
+
import type { PackName, ToolInfo } from './types.js';
|
|
4
4
|
export interface ReconcileProjectToolsOptions {
|
|
5
5
|
repoRoot: string;
|
|
6
6
|
cwd: string;
|
|
@@ -12,5 +12,9 @@ export interface ProjectToolsConfigDependencies {
|
|
|
12
12
|
readOatConfig: (repoRoot: string) => Promise<OatConfig>;
|
|
13
13
|
writeOatConfig: (repoRoot: string, config: OatConfig) => Promise<void>;
|
|
14
14
|
}
|
|
15
|
-
export
|
|
15
|
+
export interface ReconcileProjectToolsResult {
|
|
16
|
+
action: 'written' | 'unchanged';
|
|
17
|
+
adoptedPacks: PackName[];
|
|
18
|
+
}
|
|
19
|
+
export declare function reconcileProjectToolsConfig(options: ReconcileProjectToolsOptions, dependencies?: ProjectToolsConfigDependencies): Promise<ReconcileProjectToolsResult>;
|
|
16
20
|
//# sourceMappingURL=project-tools-config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-tools-config.d.ts","sourceRoot":"","sources":["../../../../src/commands/tools/shared/project-tools-config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EAIf,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"project-tools-config.d.ts","sourceRoot":"","sources":["../../../../src/commands/tools/shared/project-tools-config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EAIf,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAa,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAElD,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,8BAA8B;IAC7C,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,SAAS,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9D,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACxD,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxE;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC;IAChC,YAAY,EAAE,QAAQ,EAAE,CAAC;CAC1B;AASD,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,4BAA4B,EACrC,YAAY,GAAE,8BAAoD,GACjE,OAAO,CAAC,2BAA2B,CAAC,CA6BtC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { readOatConfig, writeOatConfig, } from '../../../config/oat-config.js';
|
|
2
2
|
import { resolveAssetsRoot } from '../../../fs/assets.js';
|
|
3
|
+
import { PACK_NAMES } from './pack-manifest.js';
|
|
3
4
|
import { scanTools } from './scan-tools.js';
|
|
4
5
|
const defaultDependencies = {
|
|
5
6
|
resolveAssetsRoot,
|
|
@@ -16,18 +17,19 @@ export async function reconcileProjectToolsConfig(options, dependencies = defaul
|
|
|
16
17
|
});
|
|
17
18
|
const config = await dependencies.readOatConfig(options.repoRoot);
|
|
18
19
|
const tools = { ...config.tools };
|
|
19
|
-
|
|
20
|
+
const adopted = new Set();
|
|
20
21
|
for (const tool of projectTools) {
|
|
21
22
|
if (tool.scope === 'project' &&
|
|
22
23
|
tool.pack !== 'custom' &&
|
|
23
24
|
tools[tool.pack] !== true) {
|
|
24
25
|
tools[tool.pack] = true;
|
|
25
|
-
|
|
26
|
+
adopted.add(tool.pack);
|
|
26
27
|
}
|
|
27
28
|
}
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
const adoptedPacks = PACK_NAMES.filter((pack) => adopted.has(pack));
|
|
30
|
+
if (adoptedPacks.length === 0) {
|
|
31
|
+
return { action: 'unchanged', adoptedPacks };
|
|
30
32
|
}
|
|
31
33
|
await dependencies.writeOatConfig(options.repoRoot, { ...config, tools });
|
|
32
|
-
return 'written';
|
|
34
|
+
return { action: 'written', adoptedPacks };
|
|
33
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/tools/update/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,kCAAkC,CAAC;AAK1C,OAAO,KAAK,EAAY,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAKvE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAE7B,MAAM,gBAAgB,CAAC;AAmBxB,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAA;CAAE,GAClD,MAAM,EAAE,CAaV;AAgCD,wBAAgB,wBAAwB,CACtC,YAAY,GAAE,uBAA6C,EAC3D,gBAAgB,GAAE,oBAA8C,GAC/D,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/tools/update/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,kCAAkC,CAAC;AAK1C,OAAO,KAAK,EAAY,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAKvE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAE7B,MAAM,gBAAgB,CAAC;AAmBxB,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAA;CAAE,GAClD,MAAM,EAAE,CAaV;AAgCD,wBAAgB,wBAAwB,CACtC,YAAY,GAAE,uBAA6C,EAC3D,gBAAgB,GAAE,oBAA8C,GAC/D,OAAO,CA8MT;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAS7E;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,YAAY,GACnB,OAAO,CAOT;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,OAAO,GACd,MAAM,CAMR"}
|
|
@@ -130,11 +130,12 @@ export function createToolsUpdateCommand(dependencies = defaultDependencies, syn
|
|
|
130
130
|
const changedProjectScope = [...result.updated, ...result.current, ...result.newer].some(({ scope }) => scope === 'project') ||
|
|
131
131
|
result.assetRefreshes.some(({ scope }) => scope === 'project') ||
|
|
132
132
|
result.plans.some(({ scope }) => scope === 'project');
|
|
133
|
+
let adoptedPacks = [];
|
|
133
134
|
if (assetsRoot &&
|
|
134
135
|
result.notInstalled.length === 0 &&
|
|
135
136
|
changedProjectScope) {
|
|
136
137
|
const repoRoot = await resolveProjectRoot(context.cwd);
|
|
137
|
-
await reconcileProjectToolsConfig({
|
|
138
|
+
adoptedPacks = (await reconcileProjectToolsConfig({
|
|
138
139
|
repoRoot,
|
|
139
140
|
cwd: context.cwd,
|
|
140
141
|
home: context.home,
|
|
@@ -143,11 +144,16 @@ export function createToolsUpdateCommand(dependencies = defaultDependencies, syn
|
|
|
143
144
|
scanTools: dependencies.scanTools,
|
|
144
145
|
readOatConfig,
|
|
145
146
|
writeOatConfig,
|
|
146
|
-
});
|
|
147
|
+
})).adoptedPacks;
|
|
147
148
|
}
|
|
148
149
|
if (result.notInstalled.length > 0) {
|
|
149
150
|
if (context.json) {
|
|
150
|
-
logger.json({
|
|
151
|
+
logger.json({
|
|
152
|
+
target: describeTarget(target),
|
|
153
|
+
dryRun,
|
|
154
|
+
result,
|
|
155
|
+
...(adoptedPacks.length > 0 ? { adoptedPacks } : {}),
|
|
156
|
+
});
|
|
151
157
|
}
|
|
152
158
|
else {
|
|
153
159
|
logger.error(`Tool '${result.notInstalled[0]}' not found.`);
|
|
@@ -170,9 +176,17 @@ export function createToolsUpdateCommand(dependencies = defaultDependencies, syn
|
|
|
170
176
|
}
|
|
171
177
|
}
|
|
172
178
|
if (context.json) {
|
|
173
|
-
logger.json({
|
|
179
|
+
logger.json({
|
|
180
|
+
target: describeTarget(target),
|
|
181
|
+
dryRun,
|
|
182
|
+
result,
|
|
183
|
+
...(adoptedPacks.length > 0 ? { adoptedPacks } : {}),
|
|
184
|
+
});
|
|
174
185
|
return;
|
|
175
186
|
}
|
|
187
|
+
for (const pack of adoptedPacks) {
|
|
188
|
+
logger.info(`Adopted project tool pack: ${pack}`);
|
|
189
|
+
}
|
|
176
190
|
if (result.updated.length > 0) {
|
|
177
191
|
for (const tool of result.updated) {
|
|
178
192
|
logger.success(formatUpdatedToolMessage(tool, dryRun));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-agent-toolkit/cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.46",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Open Agent Toolkit CLI",
|
|
6
6
|
"homepage": "https://github.com/voxmedia/open-agent-toolkit/tree/main/packages/cli",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"ora": "^9.0.0",
|
|
35
35
|
"yaml": "2.8.2",
|
|
36
36
|
"zod": "^3.25.76",
|
|
37
|
-
"@open-agent-toolkit/control-plane": "0.2.
|
|
37
|
+
"@open-agent-toolkit/control-plane": "0.2.46"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/node": "^22.10.0",
|