@open-agent-toolkit/cli 0.3.3 → 0.3.5

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.
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "oatVersion": "0.3.3"
3
+ "oatVersion": "0.3.5"
4
4
  }
@@ -288,9 +288,13 @@ an unset adapter follows detection. Provider mappings and registered
288
288
  materialization extensions then determine the output: entry sync, native read,
289
289
  extension-owned role materialization, or explicit unsupported evidence.
290
290
 
291
- Core sync does not write extension-owned role paths. Codex and Cursor own their
292
- generated managed-role outputs through provider extensions, while other user
293
- agents continue through each active adapter's declared mapping. Per-asset sync
291
+ Core sync does not write extension-owned role paths. At user scope only Codex
292
+ owns the base `oat-phase-implementer` and `oat-reviewer` roles, because its
293
+ extension renders them as native `.toml` roles. Claude and Cursor extensions
294
+ generate only model- or effort-pinned variants, so core sync still projects
295
+ their base roles from `~/.agents/agents/` alongside those variants, exactly as it
296
+ does at project scope. Other user agents continue through each active adapter's
297
+ declared mapping. Per-asset sync
294
298
  results distinguish changed, current, missing, failed, unsupported, and unknown
295
299
  outcomes, so one failed or unsupported asset does not erase evidence for its
296
300
  siblings.
@@ -316,10 +320,11 @@ visibility, and recovery guidance. Human output names the provider on its own
316
320
  line and on any provider-attributed diagnostic. Reachability is never inferred
317
321
  from the presence of a provider directory on disk.
318
322
 
319
- The four inventory surfaces agree on managed user-scope roles. `list` and
320
- `info` resolve the same provider surface as `status` and `doctor`, so an
321
- active Codex or Cursor adapter that supplies managed roles suppresses the
322
- unmaterialized-user-agent report on all four rather than only two.
323
+ The four inventory surfaces agree on user-scope agent coverage. `list` and
324
+ `info` resolve the same provider surface as `status` and `doctor`, so any
325
+ active adapter that entry-syncs or natively reads user-scope agents — every
326
+ registered adapter does — suppresses the unmaterialized-user-agent report on
327
+ all four rather than only two.
323
328
 
324
329
  Each provider state maps to exactly one row below. Pack evidence status and
325
330
  the lifecycle exit code derive from the **severity** column, never from the
@@ -15,6 +15,7 @@ description: 'Provider-specific path mappings for Claude, Cursor, Copilot, Gemin
15
15
  - Managed effort-pinned phase implementers and reviewers use the exact generated candidate returned as `providers.claude.dispatchArgs.variant`; its frontmatter carries model and effort because Agent has no per-call effort field. Legacy model-only candidates retain `providers.claude.dispatchArgs.model`, and any model supplied alongside a variant must match its definition.
16
16
  - Generated names preserve the full normalized configured model ID after the provider token. A versioned ID such as `claude-opus-5-5` therefore produces the deterministic slug `oat-reviewer-claude-claude-opus-5-5-high`. This doubled `claude-` is the current managed-role contract, not a request to rename existing roles.
17
17
  - Project variants live under `.claude/agents/`; user variants live under `~/.claude/agents/`. Sync removes stale managed variants for the reconciled owner while preserving base roles and unmanaged agents.
18
+ - Base `oat-phase-implementer` and `oat-reviewer` roles sync like any other canonical agent at both scopes, so legacy model-only dispatch and base-role fallback resolve after a pack moves to user scope.
18
19
  - Claude's official subagent contract says existing agent directories are watched and changes load within seconds. It describes a conditional restart for the first agent added to a directory that was absent when the session started, for agents added through `--add-dir`, and when Claude starts with `--disable-slash-commands`. OAT cannot observe those session-start and launch-mode facts. After a successful provider-visible file change, the generic OAT repository policy therefore conservatively advises starting a new provider session; it does not claim that Claude hot-reloaded the file or that the application process must restart. The provider semantics were verified against [Claude Code subagent documentation](https://code.claude.com/docs/en/sub-agents) on 2026-08-31.
19
20
 
20
21
  === "Cursor"
@@ -25,7 +26,7 @@ description: 'Provider-specific path mappings for Claude, Cursor, Copilot, Gemin
25
26
  - Interactive `oat init` and `oat status` ask for an individual disposition for each unresolved Cursor-local skill: adopt it into `.agents/skills` or keep it Cursor-only and remember the exact path in sync config
26
27
  - Keep-local is blocked when a canonical skill has the same name because Cursor does not document a safe duplicate-resolution order
27
28
  - During upgrades, OAT removes only verified clean legacy managed skill views. Changed or replaced views are preserved, detached from manifest ownership, and offered for migration.
28
- - Sync materializes pinned Markdown definitions for both `oat-phase-implementer` and `oat-reviewer`. Each generated name keeps the configured flat ladder ID, while an explicit verified mapping writes the separate bracket-form frontmatter model. OAT never derives one form from the other.
29
+ - Sync materializes pinned Markdown definitions for both `oat-phase-implementer` and `oat-reviewer` in addition to the base roles, which sync like any other canonical agent at both scopes. Each generated name keeps the configured flat ladder ID, while an explicit verified mapping writes the separate bracket-form frontmatter model. OAT never derives one form from the other.
29
30
  - Generated definitions carry `supported-catalogue`, `project-config`, or `user-config` ownership. Project and supported output lives in the tracked `.cursor/agents` view; user-owned output lives under `~/.cursor/agents`. Cleanup reconciles only the applicable owner.
30
31
  - Managed dispatch requires `providers.cursor.dispatchArgs.variant` and launches that exact resolver-selected native agent type first. Skills do not pass a Task-level model argument or normalize Cursor model strings.
31
32
  - Cursor may silently fallback when a definition pin cannot be honored. Variant acceptance therefore establishes launcher-owned `configured` provenance only; runtime identity remains `not-reported` unless independently observed.
@@ -176,7 +177,7 @@ current-session catalog probe is still not proof of provider visibility.
176
177
 
177
178
  - Project scope: skills + agents + rules
178
179
  - User scope: skills plus capability-supported ordinary agents (provider mappings vary by adapter)
179
- - The two bundled managed roles separately participate in Codex and Cursor extension expansion for user-owned targets
180
+ - The two bundled managed roles separately participate in Codex, Cursor, and Claude extension expansion for user-owned targets. Only Codex renders the base roles itself; Claude and Cursor receive base roles through ordinary agent sync with generated variants alongside
180
181
  - Rules are project-scoped only in this release
181
182
  - Codex user-scope sync materializes user-config custom roles under `~/.codex`; project-config and supported-catalogue output remains project-scoped and version controlled
182
183
  - Cursor user-scope sync materializes user-config variants under `~/.cursor/agents`; project-config and supported-catalogue output remains project-scoped and version controlled
@@ -167,14 +167,17 @@ Both commands report managed pack state with a scoped recovery command:
167
167
  place and your edits are gone. The finding is informational and carries no
168
168
  recovery command for exactly that reason.
169
169
  - `user-agent-unmaterialized` — the pack installed canonical agents into
170
- `~/.agents/agents/`, but active native Codex/Cursor adapters materialize only
171
- the bundled managed role files at user scope. Other pack-owned agents remain
172
- unmaterialized; when neither adapter is active, the managed roles do too.
173
- Provider access to canonical instructions through loaded, user, and project
174
- reads is a separate contract and does not clear this native-role finding.
175
- `oat tools update` cannot fix it. Install the pack at project scope
176
- (`oat tools install <pack> --scope project`) when you need its native roles. See
177
- [Tool packs](../cli-utilities/tool-packs.md) for the full limitation.
170
+ `~/.agents/agents/`, but no active provider projects them at user scope.
171
+ Every registered adapter (Claude, Cursor, Codex, Gemini, Copilot) syncs or
172
+ natively reads user-scope agents, so while any of them is active for user
173
+ sync the finding is suppressed. It appears when no provider is enabled for
174
+ user sync, in which case every installed agent is listed. Provider access to
175
+ canonical instructions through loaded, user, and project reads is a separate
176
+ contract and does not clear this finding. `oat tools update` cannot fix it.
177
+ Enable a provider with `oat providers set --scope user --enabled <provider>`
178
+ and run `oat sync --scope user`; reinstalling at project scope is not
179
+ required. See [Tool packs](../cli-utilities/tool-packs.md) for how
180
+ user-scope agents reach each provider.
178
181
 
179
182
  ## `status` or `doctor` reports `packs:inventory`
180
183
 
@@ -1,6 +1,6 @@
1
1
  {
2
- "cli": "0.3.3",
3
- "docs-config": "0.3.3",
4
- "docs-theme": "0.3.3",
5
- "docs-transforms": "0.3.3"
2
+ "cli": "0.3.5",
3
+ "docs-config": "0.3.5",
4
+ "docs-theme": "0.3.5",
5
+ "docs-transforms": "0.3.5"
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAYhF,OAAO,EAGL,KAAK,UAAU,EAEhB,MAAM,eAAe,CAAC;AAWvB,OAAO,EAOL,KAAK,oBAAoB,EAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAI5C,OAAO,KAAK,EACV,aAAa,EAEb,uBAAuB,EAGxB,MAAM,cAAc,CAAC;AAEtB,KAAK,0BAA0B,GAAG,IAAI,CACpC,uBAAuB,EACvB,iBAAiB,GAAG,eAAe,CACpC,GAAG;IACF,aAAa,EAAE,CACb,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,EACpB,OAAO,CAAC,EAAE,SAAS,mBAAmB,EAAE,KACrC,UAAU,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC,CAAC;IAC1D,eAAe,EAAE,CACf,IAAI,EAAE,UAAU,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QAChE,sCAAsC,CAAC,EAAE,QAAQ,CAC/C,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAClC,CAAC;KACH,KACE,UAAU,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC5D,2BAA2B,CAAC,EAAE,CAAC,KAAK,EAAE;QACpC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,UAAU,CAAC;KACpB,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACrC,CAAC;AA2fF,wBAAgB,iBAAiB,CAC/B,SAAS,GAAE,OAAO,CAAC,0BAA0B,CAAM,GAClD,OAAO,CA+DT;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,cAAc,EACvB,MAAM,CAAC,EAAE;IACP,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;CAClC,EACD,SAAS,GAAE,OAAO,CAAC,0BAA0B,CAAM,GAClD,OAAO,CAAC,IAAI,CAAC,CAsBf"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAYhF,OAAO,EAGL,KAAK,UAAU,EAEhB,MAAM,eAAe,CAAC;AAWvB,OAAO,EAOL,KAAK,oBAAoB,EAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAI5C,OAAO,KAAK,EACV,aAAa,EAEb,uBAAuB,EAGxB,MAAM,cAAc,CAAC;AAEtB,KAAK,0BAA0B,GAAG,IAAI,CACpC,uBAAuB,EACvB,iBAAiB,GAAG,eAAe,CACpC,GAAG;IACF,aAAa,EAAE,CACb,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,EACpB,OAAO,CAAC,EAAE,SAAS,mBAAmB,EAAE,KACrC,UAAU,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC,CAAC;IAC1D,eAAe,EAAE,CACf,IAAI,EAAE,UAAU,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QAChE,sCAAsC,CAAC,EAAE,QAAQ,CAC/C,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAClC,CAAC;KACH,KACE,UAAU,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC5D,2BAA2B,CAAC,EAAE,CAAC,KAAK,EAAE;QACpC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,UAAU,CAAC;KACpB,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACrC,CAAC;AA6gBF,wBAAgB,iBAAiB,CAC/B,SAAS,GAAE,OAAO,CAAC,0BAA0B,CAAM,GAClD,OAAO,CA+DT;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,cAAc,EACvB,MAAM,CAAC,EAAE;IACP,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;CAClC,EACD,SAAS,GAAE,OAAO,CAAC,0BAA0B,CAAM,GAClD,OAAO,CAAC,IAAI,CAAC,CAsBf"}
@@ -243,10 +243,15 @@ async function computePlans(context, dependencies, canonicalFilter) {
243
243
  const managedAgents = scope === 'user'
244
244
  ? await dependencies.scanBundledManagedAgents({ scopeRoot })
245
245
  : [];
246
+ // A user-materializable pack agent resolves to its installed copy, which
247
+ // the canonical scan already found; planning it twice turns the second
248
+ // symlink create into a copy fallback.
249
+ const scannedCanonicalPaths = new Set(canonical.map(({ canonicalPath }) => canonicalPath));
246
250
  const ordinaryCanonical = scope === 'user'
247
251
  ? [
248
252
  ...canonical,
249
- ...managedAgents.filter(({ canonicalPath }) => isPathWithin(join(scopeRoot, '.agents', 'agents'), canonicalPath)),
253
+ ...managedAgents.filter(({ canonicalPath }) => !scannedCanonicalPaths.has(canonicalPath) &&
254
+ isPathWithin(join(scopeRoot, '.agents', 'agents'), canonicalPath)),
250
255
  ]
251
256
  : canonical;
252
257
  const materializationCanonical = scope === 'user'
@@ -263,7 +268,9 @@ async function computePlans(context, dependencies, canonicalFilter) {
263
268
  const enabledExtensions = (providerContext
264
269
  ? providerContext.registrations.flatMap(({ extensions }) => extensions)
265
270
  : dependencies.getMaterializationExtensions()).filter((extension) => activeAdapterNames.includes(extension.provider));
266
- const extensionOwnedCanonicalPathsByProvider = Object.fromEntries(enabledExtensions.map(({ provider }) => [
271
+ const extensionOwnedCanonicalPathsByProvider = Object.fromEntries(enabledExtensions
272
+ .filter(({ materializesBuiltInManagedRoles }) => materializesBuiltInManagedRoles === true)
273
+ .map(({ provider }) => [
267
274
  provider,
268
275
  USER_SCOPE_MANAGED_AGENT_FILES.map((name) => `.agents/agents/${name}`),
269
276
  ]));
@@ -1 +1 @@
1
- {"version":3,"file":"pack-inventory.d.ts","sourceRoot":"","sources":["../../../../src/commands/tools/shared/pack-inventory.ts"],"names":[],"mappings":"AAaA,OAAO,EAEL,KAAK,aAAa,EACnB,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,iFAAiF;IACjF,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;IACnB,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC;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;IAClB,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAC1C;AAmRD,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,mBAAmB,CAAC,CAwC9B;AAED,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,mBAAmB,GAC7B,OAAO,CAUT;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC7C,WAAW,EAAE,aAAa,EAAE,GAC3B,aAAa,EAAE,CAgEjB;AAED,wBAAsB,aAAa,CACjC,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,aAAa,CAAC,CAiDxB"}
1
+ {"version":3,"file":"pack-inventory.d.ts","sourceRoot":"","sources":["../../../../src/commands/tools/shared/pack-inventory.ts"],"names":[],"mappings":"AAaA,OAAO,EAEL,KAAK,aAAa,EACnB,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,iFAAiF;IACjF,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;IACnB,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC;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;IAClB,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAC1C;AAwRD,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,mBAAmB,CAAC,CAwC9B;AAED,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,mBAAmB,GAC7B,OAAO,CAUT;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC7C,WAAW,EAAE,aAAa,EAAE,GAC3B,aAAa,EAAE,CAgEjB;AAED,wBAAsB,aAAa,CACjC,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,aAAa,CAAC,CAiDxB"}
@@ -173,12 +173,15 @@ function intentDiagnostic(diagnostic) {
173
173
  }
174
174
  /**
175
175
  * User-scope canonical agents are installed into `~/.agents/agents/`, while
176
- * native provider-role materialization is caller-resolved from the active
177
- * config-aware adapter set. When that capability is active, it supplies the
176
+ * provider coverage is caller-resolved from the active config-aware adapter
177
+ * set. Callers suppress this diagnostic when an active provider entry-syncs or
178
+ * natively reads user agents, which every registered adapter does. It remains
179
+ * for two cases: no active provider covers user agents (every present agent is
180
+ * listed), or only extension-backed coverage is active, which supplies the
178
181
  * bundled managed role file set plus explicitly user-materializable pack
179
- * agents. Completeness alone therefore cannot describe native materialization,
180
- * so the remaining gap is named here instead of staying silent. Canonical
181
- * instruction-read availability is a separate contract.
182
+ * agents. Completeness alone cannot describe either gap, so it is named here
183
+ * instead of staying silent. Canonical instruction-read availability is a
184
+ * separate contract.
182
185
  */
183
186
  function userAgentMaterializationDiagnostics(pack, scope, assets, managedRoleMaterialization) {
184
187
  if (scope !== 'user')
@@ -194,7 +197,9 @@ function userAgentMaterializationDiagnostics(pack, scope, assets, managedRoleMat
194
197
  return [
195
198
  {
196
199
  code: 'user-agent-unmaterialized',
197
- message: `Pack ${pack} installs user-scope canonical agents without native provider-role materialization for the active provider set; canonical instruction reads are unaffected. Active Codex or Cursor materialization supplies only built-in managed roles and manifest-declared user-materializable agents. Install this pack at project scope to materialize the affected agents.`,
200
+ message: managedRoleMaterialization
201
+ ? `Pack ${pack} installs user-scope canonical agents that the active provider set does not project; canonical instruction reads are unaffected. The active providers cover user-scope agents only through materialization extensions, which supply built-in managed roles and manifest-declared user-materializable agents. Enable a provider that syncs or reads user-scope agents with \`oat providers set --scope user --enabled <provider>\`, then run \`oat sync --scope user\`.`
202
+ : `Pack ${pack} installs user-scope canonical agents, but no active provider projects user-scope agents; canonical instruction reads are unaffected. Enable a provider for user sync with \`oat providers set --scope user --enabled <provider>\`, then run \`oat sync --scope user\`.`,
198
203
  paths: unmaterialized.map(({ path }) => path),
199
204
  },
200
205
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"sync-extension.d.ts","sourceRoot":"","sources":["../../../../src/providers/codex/codec/sync-extension.ts"],"names":[],"mappings":"AAkBA,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AAKvB,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,KAAK,6BAA6B,EACnC,MAAM,mBAAmB,CAAC;AAsB3B,MAAM,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AACzD,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAErD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,4BAA6B,SAAQ,6BAA6B,CACjF,OAAO,EACP,oBAAoB,CACrB;IACC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB,CAC7D,OAAO,EACP,oBAAoB,EACpB,0BAA0B,CAC3B;IACC,UAAU,EAAE,4BAA4B,EAAE,CAAC;IAC3C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,0BAA0B;IACzC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,yBAAyB,GAAG,0BAA0B,CAAC;AAiBnE,MAAM,WAAW,iCAAiC;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAoiBD,wBAAsB,gCAAgC,CACpD,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,cAAc,EAAE,EAClC,qBAAqB,CAAC,EAAE,MAAM,EAAE,EAChC,OAAO,GAAE,iCAAsC,GAC9C,OAAO,CAAC,kBAAkB,CAAC,CAkL7B;AAED,wBAAsB,8BAA8B,CAClD,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,yBAAyB,CAAC,CA+DpC;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAE1E;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,kBAAkB,GAAG;IACjE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB,CAEA;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,kBAAkB,GACvB,uBAAuB,EAAE,CAQ3B;AAED,eAAO,MAAM,6BAA6B,EAAE,wBAAwB,CAClE,kBAAkB,EAClB,sBAAsB,CAAC,iCAAiC,CAAC,CAY1D,CAAC"}
1
+ {"version":3,"file":"sync-extension.d.ts","sourceRoot":"","sources":["../../../../src/providers/codex/codec/sync-extension.ts"],"names":[],"mappings":"AAkBA,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AAKvB,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACxB,KAAK,6BAA6B,EACnC,MAAM,mBAAmB,CAAC;AAsB3B,MAAM,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AACzD,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAErD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,4BAA6B,SAAQ,6BAA6B,CACjF,OAAO,EACP,oBAAoB,CACrB;IACC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB,CAC7D,OAAO,EACP,oBAAoB,EACpB,0BAA0B,CAC3B;IACC,UAAU,EAAE,4BAA4B,EAAE,CAAC;IAC3C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,0BAA0B;IACzC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,yBAAyB,GAAG,0BAA0B,CAAC;AAiBnE,MAAM,WAAW,iCAAiC;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAoiBD,wBAAsB,gCAAgC,CACpD,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,cAAc,EAAE,EAClC,qBAAqB,CAAC,EAAE,MAAM,EAAE,EAChC,OAAO,GAAE,iCAAsC,GAC9C,OAAO,CAAC,kBAAkB,CAAC,CAkL7B;AAED,wBAAsB,8BAA8B,CAClD,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,yBAAyB,CAAC,CA+DpC;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAE1E;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,kBAAkB,GAAG;IACjE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB,CAEA;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,kBAAkB,GACvB,uBAAuB,EAAE,CAQ3B;AAED,eAAO,MAAM,6BAA6B,EAAE,wBAAwB,CAClE,kBAAkB,EAClB,sBAAsB,CAAC,iCAAiC,CAAC,CAa1D,CAAC"}
@@ -594,6 +594,7 @@ export function toCodexExtensionOperations(plan) {
594
594
  }
595
595
  export const codexMaterializationExtension = {
596
596
  provider: 'codex',
597
+ materializesBuiltInManagedRoles: true,
597
598
  computePlan(context) {
598
599
  return computeCodexProjectExtensionPlan(context.scopeRoot, context.canonicalEntries, context.allowedCanonicalPaths, context.options);
599
600
  },
@@ -43,6 +43,13 @@ export interface MaterializationContext<TOptions = undefined> {
43
43
  }
44
44
  export interface MaterializationExtension<TPlan extends MaterializationPlan = MaterializationPlan, TContext extends MaterializationContext<unknown> = MaterializationContext<unknown>> {
45
45
  provider: TPlan['provider'];
46
+ /**
47
+ * True when this extension writes the provider's base built-in managed roles
48
+ * itself (for example Codex `oat-reviewer.toml`). Core user sync then skips
49
+ * those canonical roles for the provider. Extensions that only write model or
50
+ * effort variants leave this unset so core sync still projects the base role.
51
+ */
52
+ materializesBuiltInManagedRoles?: boolean;
46
53
  computePlan(context: TContext): Promise<TPlan>;
47
54
  applyPlan(scopeRoot: string, plan: TPlan): Promise<MaterializationApplyResult>;
48
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"materialization-extension.d.ts","sourceRoot":"","sources":["../../../src/providers/shared/materialization-extension.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"materialization-extension.d.ts","sourceRoot":"","sources":["../../../src/providers/shared/materialization-extension.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE5E,MAAM,WAAW,wBAAwB,CACvC,SAAS,SAAS,MAAM,GAAG,MAAM,EACjC,OAAO,SAAS,MAAM,GAAG,MAAM;IAE/B,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,6BAA6B,CAC5C,SAAS,SAAS,MAAM,GAAG,MAAM,EACjC,OAAO,SAAS,MAAM,GAAG,MAAM,CAC/B,SAAQ,wBAAwB,CAAC,SAAS,EAAE,OAAO,CAAC;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB,CAClC,SAAS,SAAS,MAAM,GAAG,MAAM,EACjC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC/B,SAAS,GAAG,OAAO;IAEnB,QAAQ,EAAE,SAAS,CAAC;IACpB,UAAU,EAAE,6BAA6B,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC;IAChE,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,UAAU,CAAC,EAAE,8BAA8B,EAAE,CAAC;CAC/C;AAED,MAAM,MAAM,8BAA8B,GACtC,SAAS,GACT,SAAS,GACT,SAAS,GACT,QAAQ,GACR,aAAa,GACb,SAAS,CAAC;AAEd,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,MAAM,EAAE,8BAA8B,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB,CAAC,QAAQ,GAAG,SAAS;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,cAAc,EAAE,CAAC;IACnC,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,OAAO,EAAE,QAAQ,CAAC;CACnB;AAED,MAAM,WAAW,wBAAwB,CACvC,KAAK,SAAS,mBAAmB,GAAG,mBAAmB,EACvD,QAAQ,SAAS,sBAAsB,CAAC,OAAO,CAAC,GAC9C,sBAAsB,CAAC,OAAO,CAAC;IAEjC,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC5B;;;;;OAKG;IACH,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,WAAW,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/C,SAAS,CACP,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,KAAK,GACV,OAAO,CAAC,0BAA0B,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,0BAA0B;IACzC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAE5E;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,mBAAmB,GACxB,0BAA0B,CAa5B;AAED,wBAAgB,2BAA2B,CACzC,SAAS,SAAS,MAAM,EACxB,OAAO,SAAS,MAAM,EAEtB,IAAI,EAAE,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,GACrD,wBAAwB,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAShD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-agent-toolkit/cli",
3
- "version": "0.3.3",
3
+ "version": "0.3.5",
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.3.3"
37
+ "@open-agent-toolkit/control-plane": "0.3.5"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@types/node": "^22.10.0",