@open-agent-toolkit/cli 0.2.13 → 0.2.15

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 (79) hide show
  1. package/assets/agents/oat-phase-implementer.md +5 -2
  2. package/assets/agents/oat-reviewer.md +2 -2
  3. package/assets/docs/cli-utilities/config-and-local-state.md +14 -1
  4. package/assets/docs/cli-utilities/configuration.md +23 -2
  5. package/assets/docs/cli-utilities/tool-packs.md +68 -24
  6. package/assets/docs/contributing/skills.md +17 -10
  7. package/assets/docs/provider-sync/providers.md +26 -0
  8. package/assets/docs/reference/cli-reference.md +1 -1
  9. package/assets/docs/reference/troubleshooting.md +42 -0
  10. package/assets/docs/workflows/projects/lifecycle.md +2 -2
  11. package/assets/docs/workflows/projects/orchestration-model.md +14 -7
  12. package/assets/docs/workflows/projects/programmatic-execution.md +1 -1
  13. package/assets/docs/workflows/projects/reviews.md +18 -11
  14. package/assets/docs/workflows/skills/index.md +2 -0
  15. package/assets/docs/workflows/skills/repo-improve.md +13 -1
  16. package/assets/public-package-versions.json +4 -4
  17. package/assets/skills/oat-agent-instructions-analyze/SKILL.md +2 -2
  18. package/assets/skills/oat-brainstorm/SKILL.md +8 -8
  19. package/assets/skills/oat-brainstorm/references/destinations.md +3 -3
  20. package/assets/skills/oat-cursor-cloud-projects/SKILL.md +12 -5
  21. package/assets/skills/oat-dispatch-subagents/SKILL.md +81 -24
  22. package/assets/skills/oat-dispatch-subagents/references/provider-claude.md +10 -7
  23. package/assets/skills/oat-dispatch-subagents/references/provider-codex.md +18 -13
  24. package/assets/skills/oat-dispatch-subagents/references/provider-cursor.md +30 -23
  25. package/assets/skills/oat-dispatch-subagents/references/record-schema.md +86 -2
  26. package/assets/skills/oat-project-autonomous/references/gate-inventory.md +4 -4
  27. package/assets/skills/oat-project-dispatch-subagents/SKILL.md +8 -3
  28. package/assets/skills/oat-project-document/SKILL.md +4 -4
  29. package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +4 -4
  30. package/assets/skills/oat-project-implement/SKILL.md +9 -5
  31. package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +4 -4
  32. package/assets/skills/oat-project-plan-writing/SKILL.md +9 -5
  33. package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +4 -4
  34. package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +4 -4
  35. package/assets/skills/oat-project-summary/SKILL.md +9 -9
  36. package/assets/skills/oat-repo-improve/SKILL.md +9 -2
  37. package/assets/skills/subagent-orchestration/SKILL.md +109 -0
  38. package/assets/skills/subagent-orchestration/references/evidence-and-refresh.md +103 -0
  39. package/assets/skills/subagent-orchestration/references/model-selection-principles.md +105 -0
  40. package/assets/skills/subagent-orchestration/references/provider-claude.md +81 -0
  41. package/assets/skills/subagent-orchestration/references/provider-codex.md +63 -0
  42. package/assets/skills/subagent-orchestration/references/provider-cursor.md +78 -0
  43. package/dist/commands/init/tools/brainstorm/index.d.ts +0 -3
  44. package/dist/commands/init/tools/brainstorm/index.d.ts.map +1 -1
  45. package/dist/commands/init/tools/brainstorm/index.js +0 -12
  46. package/dist/commands/init/tools/index.d.ts.map +1 -1
  47. package/dist/commands/init/tools/index.js +46 -25
  48. package/dist/commands/init/tools/shared/skill-manifest.d.ts +1 -1
  49. package/dist/commands/init/tools/shared/skill-manifest.d.ts.map +1 -1
  50. package/dist/commands/init/tools/shared/skill-manifest.js +1 -0
  51. package/dist/commands/init/tools/utility/index.d.ts.map +1 -1
  52. package/dist/commands/init/tools/utility/index.js +16 -2
  53. package/dist/commands/tools/has/has-pack.d.ts +18 -0
  54. package/dist/commands/tools/has/has-pack.d.ts.map +1 -0
  55. package/dist/commands/tools/has/has-pack.js +33 -0
  56. package/dist/commands/tools/has/index.d.ts +4 -0
  57. package/dist/commands/tools/has/index.d.ts.map +1 -0
  58. package/dist/commands/tools/has/index.js +57 -0
  59. package/dist/commands/tools/index.d.ts.map +1 -1
  60. package/dist/commands/tools/index.js +2 -0
  61. package/dist/commands/tools/remove/index.d.ts.map +1 -1
  62. package/dist/commands/tools/remove/index.js +10 -20
  63. package/dist/commands/tools/shared/project-tools-config.d.ts +16 -0
  64. package/dist/commands/tools/shared/project-tools-config.d.ts.map +1 -0
  65. package/dist/commands/tools/shared/project-tools-config.js +59 -0
  66. package/dist/commands/tools/update/index.d.ts.map +1 -1
  67. package/dist/commands/tools/update/index.js +11 -22
  68. package/dist/engine/compute-plan.d.ts.map +1 -1
  69. package/dist/engine/compute-plan.js +8 -2
  70. package/dist/engine/execute-plan.d.ts +5 -1
  71. package/dist/engine/execute-plan.d.ts.map +1 -1
  72. package/dist/engine/execute-plan.js +23 -1
  73. package/dist/engine/index.d.ts +1 -0
  74. package/dist/engine/index.d.ts.map +1 -1
  75. package/dist/engine/index.js +1 -0
  76. package/dist/engine/provider-path-safety.d.ts +2 -0
  77. package/dist/engine/provider-path-safety.d.ts.map +1 -0
  78. package/dist/engine/provider-path-safety.js +54 -0
  79. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-brainstorm
3
- version: 1.1.0
3
+ version: 1.1.1
4
4
  description: Use when the user explicitly invokes the `brainstorm` verb, including `/oat-brainstorm`, "let's brainstorm", "brainstorm this", "can we brainstorm X", or "help me brainstorm X". For ambiguous exploratory phrasing ("I've been thinking", "what if", "help me think through"), do NOT auto-enter; respond conversationally and offer mode only after ≥2 sustained exploratory turns. Do NOT use for review, debug, PR, status, implementation, or active-workflow questions.
5
5
  disable-model-invocation: false
6
6
  user-invocable: true
@@ -97,7 +97,7 @@ These messages get a direct response, not a workflow takeover. If the model has
97
97
 
98
98
  - Free-form exploratory conversation, one question at a time, multiple-choice when possible, 2-3 distinct approaches with a recommendation.
99
99
  - Per-question visual-companion routing (browser for visual content, terminal for text).
100
- - Pack and active-project detection at convergence time (`oat config get tools.<pack>` / `oat config get activeProject`).
100
+ - Pack and active-project detection at convergence time (`oat tools has <pack>` / `oat config get activeProject`).
101
101
  - Reading downstream skill files (`oat-idea-*`, `oat-pjm-add-backlog-item`, `oat-project-*`) and following their process inline using the synthesized payload as pre-filled answers.
102
102
  - Rendering the doc-to-path artifact from `templates/brainstorm-doc.md`.
103
103
  - Active-project fold-back: appending synthesis to the chosen upstream artifact and committing — only after the safety contract (preflight, scoped staging, conditional handoff print) is satisfied.
@@ -135,7 +135,7 @@ These indicators apply only on Hard Activation (see `## Activation Contract`). O
135
135
  - `Activating brainstorm mode…`
136
136
  - `Asserting mode (blocked / allowed)…`
137
137
  - `Assessing visual need…`
138
- - `Detecting installed packs and active project…`
138
+ - `Detecting available packs and active project…`
139
139
  - `Free brainstorming (Superpowers cadence)…`
140
140
  - `Watching for destination signals…`
141
141
  - `Satisfaction check…`
@@ -156,7 +156,7 @@ Apply the **Activation Contract**. The full Process flow (Steps 2-9) only runs o
156
156
 
157
157
  When Hard Activation triggers, the user has not already named a destination skill or artifact type. Do not route those blank-slate brainstorms to `oat-idea-ideate` merely because they may later become an idea, backlog item, project, or document.
158
158
 
159
- There are no preconditions to check at activation — pack detection and active-project detection happen at step 4, after visual-need assessment, so this skill works in any repo regardless of which OAT packs are installed.
159
+ There are no preconditions to check at activation — pack detection and active-project detection happen at step 4, after visual-need assessment, so this skill works in any repo regardless of which OAT packs are available.
160
160
 
161
161
  **Soft Exploratory Path** (per Activation Contract): respond conversationally with brainstorm-quality structure (options, tradeoffs, open questions, no premature implementation, no destination guess). Do not print the banner, assert mode, run pack detection, or offer the visual companion. Track an exploratory-turn counter for the thread; on the 2nd+ consecutive exploratory turn with no concrete action requested, append the soft offer once: "If you want, I can switch into structured brainstorm mode for this." If the user accepts, transition to Hard Activation and re-enter Step 2.
162
162
 
@@ -216,9 +216,9 @@ The `active`, `declined`, and `unavailable` decisions apply for the rest of the
216
216
  Run pack-detection and active-project resolution **once** per session, before the conversation starts. Mirrors the convention used by `oat-project-document`.
217
217
 
218
218
  ```bash
219
- IDEAS_INSTALLED=$(oat config get tools.ideas 2>/dev/null || echo "false")
220
- PJM_INSTALLED=$(oat config get tools.project-management 2>/dev/null || echo "false")
221
- WORKFLOWS_INSTALLED=$(oat config get tools.workflows 2>/dev/null || echo "false")
219
+ IDEAS_INSTALLED=$(oat tools has ideas 2>/dev/null || echo "false")
220
+ PJM_INSTALLED=$(oat tools has project-management 2>/dev/null || echo "false")
221
+ WORKFLOWS_INSTALLED=$(oat tools has workflows 2>/dev/null || echo "false")
222
222
  ACTIVE_PROJECT=$(oat config get activeProject 2>/dev/null || echo "")
223
223
 
224
224
  ACTIVE_PROJECT_VALID="false"
@@ -626,7 +626,7 @@ End mode assertion when the split handoff completes or reports its own blocker.
626
626
  - ✅ Phase banner `OAT ▸ BRAINSTORM` is printed exactly once at activation; mode assertion follows immediately.
627
627
  - ✅ Visual-companion offer is conditional on visual need, not Node availability alone. Text-likely brainstorms set `VISUAL_COMPANION = "deferred"` and continue without mentioning the companion.
628
628
  - ✅ When a visual-companion offer is made, it is its own message with no other content. The offer is suppressed entirely (no message printed) when `node` is not on PATH.
629
- - ✅ Pack and active-project detection (`oat config get tools.<pack>` and `oat config get activeProject`) runs once per session at step 4, before the conversation starts.
629
+ - ✅ Pack and active-project detection (`oat tools has <pack>` and `oat config get activeProject`) runs once per session at step 4, before the conversation starts.
630
630
  - ✅ Conversation cadence holds the Superpowers contract: one question at a time, multiple-choice preferred, 2-3 distinct approaches with a recommendation, per-question visual-companion routing.
631
631
  - ✅ Destination is identified via either trigger-phrase opportunistic surfacing (loose substring + paraphrase tolerance, not regex; ambiguity → ask) or convergence cue (pack-filtered terminal-state picker).
632
632
  - ✅ The terminal-state picker conditionally includes `Promote to N projects` only when `oat project split evaluate-signals` reports `triggered: true`; small-scope convergence keeps the option hidden.
@@ -47,7 +47,7 @@ Always honor an explicit user-supplied path over the suggestion. Brainstorm docs
47
47
 
48
48
  ### Destination: Capture as new idea
49
49
 
50
- **Pack required:** `ideas` (i.e., `oat config get tools.ideas` returns `true`)
50
+ **Pack required:** `ideas` (i.e., `oat tools has ideas` returns `true`)
51
51
  **Trigger phrases:** "capture as an idea", "this is an idea worth keeping", "let's track this as an idea", "save this as an idea", "make a new idea for this".
52
52
  **Required template fields:** `title` (slug-friendly), `summary`, `motivation` (Why Is It Interesting?), `vision` (What Would It Look Like?), `transcriptSessionNote`. Template: `.oat/templates/ideas/idea-discovery.md` (consumed via `oat-idea-new`).
53
53
  **Optional template fields:** `approachesConsidered`, `chosenDirection`, `openQuestions`, `nextSteps`.
@@ -83,7 +83,7 @@ Always honor an explicit user-supplied path over the suggestion. Brainstorm docs
83
83
 
84
84
  ### Destination: Scoped backlog item
85
85
 
86
- **Pack required:** `project-management` (i.e., `oat config get tools.project-management` returns `true`)
86
+ **Pack required:** `project-management` (i.e., `oat tools has project-management` returns `true`)
87
87
  **Trigger phrases:** "track this as a backlog item", "make a ticket", "log this", "open a backlog entry", "add this to the backlog", "create a backlog item for this".
88
88
  **Required template fields:** `title` (1-line summary), `description` (problem + proposed approach), `acceptance criteria` (bullet list), `scope` (xs / s / m / l / xl), `priority` (p0 / p1 / p2 / p3). Template: `.oat/templates/backlog-item.md` (consumed via `oat-pjm-add-backlog-item`).
89
89
  **Optional template fields:** related items, target release, owner.
@@ -112,7 +112,7 @@ Confirm to write this to a new backlog item file, or tell me what to change.
112
112
 
113
113
  ### Destination: Promote to new OAT project
114
114
 
115
- **Pack required:** `workflows` (i.e., `oat config get tools.workflows` returns `true`)
115
+ **Pack required:** `workflows` (i.e., `oat tools has workflows` returns `true`)
116
116
  **Trigger phrases:** "let's make this a project", "promote this to a project", "scaffold a project for this", "this is project-sized — let's start one".
117
117
  **Required template fields:** `title`, `summary` (Initial Request), `approachesConsidered` (Solution Space), `chosenDirection` (Chosen Direction), key decisions, `openQuestions`. Template: `.oat/templates/discovery.md` (consumed via `oat project new`).
118
118
  **Optional template fields:** `motivation`, `vision`, `nextSteps`.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-cursor-cloud-projects
3
- version: 1.0.1
3
+ version: 1.0.2
4
4
  description: Use when OAT work is mentioned in a Cursor Cloud environment. Orients agents to cloud detection, repo-rooted project homes, user-first assets, CLI availability, and Cursor dispatch context without owning lifecycle execution.
5
5
  disable-model-invocation: false
6
6
  user-invocable: true
@@ -236,10 +236,17 @@ For Cursor review/worker dispatch:
236
236
 
237
237
  1. Read `references/cursor-cloud-mechanics.md`.
238
238
  2. Resolve and read the selected user-scope
239
- `oat-dispatch-subagents/references/provider-cursor.md` by absolute path,
240
- falling back to repo/bundled tiers only when the user skill is absent.
241
- 3. Let `oat-project-dispatch-subagents` adapt lifecycle scope and policy.
242
- 4. Let `oat-dispatch-subagents` own capability, catalog, route, launch,
239
+ `oat-dispatch-subagents/SKILL.md` by absolute path, falling back to
240
+ repo/bundled tiers only when the user skill is absent.
241
+ 3. Resolve and read the selected user-scope
242
+ `subagent-orchestration/references/model-selection-principles.md` and
243
+ `subagent-orchestration/references/provider-cursor.md` by absolute path,
244
+ with the same fallback rule.
245
+ 4. Resolve and read the selected user-scope
246
+ `oat-dispatch-subagents/references/provider-cursor.md` mechanics reference
247
+ by absolute path, with the same fallback rule.
248
+ 5. Let `oat-project-dispatch-subagents` adapt lifecycle scope and policy.
249
+ 6. Let `oat-dispatch-subagents` own capability, catalog, route, launch,
243
250
  recovery, and generic evidence.
244
251
 
245
252
  This skill supplies identity and catalog context only. Do not restate or alter
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-dispatch-subagents
3
- version: 1.1.5
3
+ version: 1.2.1
4
4
  description: Use when an OAT skill or workflow needs provider-neutral selection, launch, recovery, or evidence for bounded subagent work without project lifecycle policy.
5
5
  disable-model-invocation: true
6
6
  user-invocable: false
@@ -39,7 +39,7 @@ This skill owns:
39
39
 
40
40
  - capability and authorization probing;
41
41
  - live catalog evidence and candidate intersection;
42
- - model, effort, role, route, authority, and deadline selection;
42
+ - model, effort, reasoning mode, service tier, role, route, authority, and deadline selection;
43
43
  - launch acceptance, continuation, recovery, and dispatch records.
44
44
 
45
45
  Do not read OAT project state, interpret `pNN-tNN` identifiers, or add phase,
@@ -49,16 +49,35 @@ contract.
49
49
 
50
50
  ## Required Loading
51
51
 
52
- Read this file before every OAT-managed subagent dispatch. Resolve the active
53
- provider first, then read exactly one provider reference:
54
-
55
- - Claude: `references/provider-claude.md`
56
- - Codex: `references/provider-codex.md`
57
- - Cursor: `references/provider-cursor.md`
58
-
59
- Do not merge provider references into one policy. For an unsupported provider,
60
- apply this provider-neutral contract and fail closed when exact launch controls
61
- cannot be established.
52
+ Model-selection policy lives in the `subagent-orchestration` skill (same
53
+ pack); this skill owns launch mechanics. Read this file before every
54
+ OAT-managed subagent dispatch, then read
55
+ `.agents/skills/subagent-orchestration/references/model-selection-principles.md`.
56
+ Resolve the active provider and read exactly one selection reference from
57
+ that skill plus the matching mechanics reference from this one:
58
+
59
+ - Claude: `subagent-orchestration/references/provider-claude.md`, then
60
+ `references/provider-claude.md`
61
+ - Codex or direct OpenAI: `subagent-orchestration/references/provider-codex.md`,
62
+ then `references/provider-codex.md`
63
+ - Cursor: `subagent-orchestration/references/provider-cursor.md`, then
64
+ `references/provider-cursor.md`
65
+
66
+ Do not merge provider references into one policy. The principles file contains
67
+ the durable task-class contract; the selection reference contains dated model
68
+ mappings; the mechanics reference contains surface-specific launch controls.
69
+ For an unsupported provider, apply the provider-neutral contract and fail
70
+ closed when exact launch controls cannot be established.
71
+
72
+ If the `subagent-orchestration` skill is not installed, treat model guidance
73
+ as unresolved: fail closed for class-constrained dispatch, and for
74
+ unconstrained dispatch select only through active user and repository
75
+ instructions intersected with the live catalog.
76
+
77
+ Read `subagent-orchestration/references/evidence-and-refresh.md` when
78
+ selection guidance is review-required or stale, when a newer model or unknown
79
+ control is observed, or when a consequential dispatch depends on evidence that
80
+ is not current.
62
81
 
63
82
  Read `references/record-schema.md` only when constructing or validating a
64
83
  dispatch request, dispatch record, or homogeneous recon-wave record.
@@ -150,10 +169,17 @@ Keep these controls independent in selection and evidence:
150
169
  workflow, gate, or blocked;
151
170
  - role or agent definition;
152
171
  - model selector and selector granularity;
153
- - effort or reasoning selector, when exposed;
172
+ - provider-native effort or reasoning selector, when exposed;
173
+ - reasoning mode when exposed independently of effort;
174
+ - service tier, including fast or priority variants;
154
175
  - inheritance source and context-fork controls;
155
176
  - authority, writable roots, deadline, and retry limit;
156
- - route and fallback policy.
177
+ - route and fallback policy;
178
+ - provider-guidance version, verification date, and freshness state.
179
+
180
+ Do not normalize effort labels across providers. A fast or priority tier is a
181
+ latency control unless current provider documentation explicitly establishes a
182
+ capability difference; it never satisfies a higher task-class floor.
157
183
 
158
184
  A materialized role may package defaults, but its record must preserve each
159
185
  configured axis separately.
@@ -226,10 +252,35 @@ the lane through `caller-inline`. An economical target is not a universal
226
252
  baseline for the `recon` role.
227
253
 
228
254
  Resolve current class examples through active user and repository instructions
229
- first, then the active-provider reference and live catalog, all constrained by
230
- the supplied policy and ceiling. Provider-reference model names are dated
231
- examples, not canonical requirements. Select an exact eligible target at or
232
- above the requested floor; never silently downgrade.
255
+ first, then the active-provider selection reference and live catalog, all
256
+ constrained by the supplied policy and ceiling. Named models in the guidance
257
+ layer are dated examples, not canonical requirements. Select an exact eligible
258
+ target at or above the requested floor; never silently downgrade.
259
+
260
+ ## Dated Guidance and Candidate Qualification
261
+
262
+ Task-class contracts are durable. Named models in the selection references are
263
+ dated examples. A newer model is a candidate, not an automatic upgrade.
264
+
265
+ Before using a provider mapping, determine its guidance state from the
266
+ selection-reference frontmatter and
267
+ `subagent-orchestration/references/evidence-and-refresh.md`:
268
+
269
+ - `fresh`: use the mapping after live catalog intersection;
270
+ - `review-required`: inspect current official controls and relevant evidence
271
+ before changing the incumbent;
272
+ - `stale`: do not rely on the named mapping without requalification. Retain a
273
+ known-good incumbent only when still available and floor-satisfying, or route
274
+ one class up.
275
+
276
+ A replacement must satisfy the class floor, be exactly selectable in the
277
+ launching harness, have understood effort and service-tier semantics, avoid a
278
+ material regression on relevant evidence, and fit the route's cost, latency,
279
+ tool, context, and safeguard requirements. When evidence is incomplete, keep
280
+ the incumbent or route one class up. Never silently select below the floor.
281
+
282
+ Record the guidance version, verification date, freshness state, and the reason
283
+ for any incumbent change.
233
284
 
234
285
  ## Catalog Evidence
235
286
 
@@ -265,7 +316,8 @@ For every dispatch:
265
316
  or blocked route before launch.
266
317
  6. Build the complete redacted payload.
267
318
  7. Record route, selection source, selection reason, candidates, catalog
268
- source, authority, and deadline.
319
+ source, model, effort, reasoning mode, service tier, guidance version,
320
+ authority, and deadline.
269
321
  8. Launch once.
270
322
  9. Record launch acceptance separately from child outcome and runtime identity.
271
323
 
@@ -294,11 +346,16 @@ A homogeneous wave may share one record only when `task_class` and
294
346
  `model_class_floor` match in addition to every existing dispatch axis.
295
347
  Multiple read-only recon lanes may share one selection record only when all of
296
348
  these axes are identical: provider, dispatch context, catalog snapshot,
297
- selected route, role class, role selector, model, effort, authority, deadline,
298
- retry limit, fallback, `task_class`, and `model_class_floor`. Include a lane
299
- manifest with lane-specific scope, acceptance, and outcome. A recon-wave record
300
- repeats the shared `task_class` and `model_class_floor` beside
301
- `shared_dispatch_record`; lane entries do not redefine them.
349
+ selected route, role class, role selector, model, effort, reasoning mode
350
+ (`reasoning_mode_selector`), service tier (`service_tier_selector`), guidance
351
+ reference (`guidance_reference`), guidance version (`guidance_version`),
352
+ guidance verification date (`guidance_verified_at`), guidance status
353
+ (`guidance_status`), authority, deadline, retry limit, fallback, `task_class`,
354
+ and `model_class_floor`. Optional model-guidance fields must be identically
355
+ present or absent across all lanes and, when present, have identical values.
356
+ Include a lane manifest with lane-specific scope, acceptance, and outcome. A
357
+ recon-wave record repeats the shared `task_class` and `model_class_floor`
358
+ beside `shared_dispatch_record`; lane entries do not redefine them.
302
359
 
303
360
  If any axis differs or either class field does not match, create separate
304
361
  records and waves. The record-level scope is the aggregate wave boundary; each
@@ -1,7 +1,8 @@
1
- # Claude Subagent Dispatch
1
+ # Claude Dispatch Mechanics
2
2
 
3
- Load this reference only when the active provider is Claude. Current
4
- user-level or repository instructions override model examples in this file.
3
+ Load this reference only when the active provider is Claude. Model-selection
4
+ policy for this provider lives in
5
+ `subagent-orchestration/references/provider-claude.md`; read it first.
5
6
 
6
7
  ## Control Surfaces
7
8
 
@@ -33,10 +34,10 @@ satisfy a universal catalog rule.
33
34
 
34
35
  ## Task-Class Resolution
35
36
 
36
- Apply active user and repository instructions first; they override the dated
37
- model-family examples in this provider reference. Intersect the resulting
38
- class guidance with the live native model enum and the supplied policy and
39
- ceiling. Select one exact accepted alias at or above the requested floor:
37
+ Apply active user and repository instructions first, then the dated class
38
+ guidance from the active provider selection reference. Intersect the resulting
39
+ guidance with the live native model enum and the supplied policy and ceiling.
40
+ Select one exact accepted alias at or above the requested floor:
40
41
 
41
42
  - `mechanical-recon`: the fastest economical class suitable for deterministic
42
43
  inventories, parity, and command execution;
@@ -59,7 +60,9 @@ prohibited. Record the exact selector and `floor_satisfaction`.
59
60
  required and native controls cannot express it.
60
61
  - Record selector granularity such as `tier-alias` or `exact-model-id`.
61
62
  - Record native effort as `not-exposed`, not globally `not-applicable`.
63
+ - Record service tier separately; fast Claude routes are latency purchases.
62
64
  - Keep acceptance, outcome, runtime identity, and continuation separate.
65
+ - Record the provider-guidance version and freshness state.
63
66
 
64
67
  Verify current `claude --help` before using a CLI route. Preserve the caller's
65
68
  authority and construct a self-contained bounded prompt.
@@ -1,20 +1,23 @@
1
- # Codex Subagent Dispatch
1
+ # Codex Dispatch Mechanics
2
2
 
3
- Load this reference only when the active provider is Codex. Current user-level
4
- or repository instructions override model examples in this file.
3
+ Load this reference only when the active provider is Codex or a direct OpenAI
4
+ API route. Model-selection policy for this provider lives in
5
+ `subagent-orchestration/references/provider-codex.md`; read it first.
5
6
 
6
7
  ## Independent Controls
7
8
 
8
9
  Codex may expose independent native controls for:
9
10
 
10
11
  - registered agent type;
11
- - model and reasoning effort;
12
+ - exact model and `reasoning.effort`;
13
+ - `reasoning.mode`, including `pro` where supported;
12
14
  - service tier and forked context;
13
15
  - maximum nesting depth;
14
16
  - sandbox and scoped writable roots.
15
17
 
16
18
  A materialized role may package defaults, but preserve role, model, effort,
17
- service tier, fork behavior, and authority as separate configured axes.
19
+ reasoning mode, service tier, fork behavior, and authority as separate
20
+ configured axes.
18
21
 
19
22
  ## Native Topology
20
23
 
@@ -28,13 +31,14 @@ grant filesystem authority.
28
31
 
29
32
  ## Exact Native Selection
30
33
 
31
- 1. Read live registered roles and model/effort selectors.
34
+ 1. Read live registered roles and model, effort, service-tier, and reasoning-mode selectors.
32
35
  2. Read effective depth and sandbox configuration.
33
36
  3. Resolve one configured candidate allowed by policy and ceiling.
34
37
  4. Use the exact registered role as `agent_type` only when guaranteed by the
35
38
  live host.
36
39
  5. Use the fork mode allowed by the live schema for explicit overrides.
37
40
  6. Record materialized configuration and live schema as distinct sources.
41
+ 7. Record the provider-guidance version and freshness state.
38
42
 
39
43
  Prefer economical high-effort workers for narrow, independently verifiable
40
44
  recon. Move to a context-heavier worker when success depends on reconciling
@@ -44,10 +48,10 @@ many files must be searched.
44
48
 
45
49
  ## Task-Class Resolution
46
50
 
47
- Apply active user and repository instructions first; they override the dated
48
- model-family examples in this provider reference. Intersect that guidance with
49
- the live model/effort selectors, registered roles, supplied policy and ceiling,
50
- and requested class floor:
51
+ Apply active user and repository instructions first, then the dated class
52
+ guidance from the active provider selection reference. Intersect that guidance
53
+ with the live model/effort selectors, registered roles, supplied policy and
54
+ ceiling, and requested class floor:
51
55
 
52
56
  - `mechanical-recon`: an economical class and effort suitable for
53
57
  deterministic inventories, parity, and command execution;
@@ -102,6 +106,7 @@ codex exec \
102
106
  '<self-contained bounded prompt>'
103
107
  ```
104
108
 
105
- Honor the caller's authorization boundary. Record model, effort, sandbox, and
106
- route as configured invocation evidence; do not infer runtime identity from a
107
- successful process alone.
109
+ Add a service tier or reasoning mode only through controls shown by the current
110
+ CLI/schema. Honor the caller's authorization boundary. Record every selector
111
+ as configured invocation evidence; do not infer runtime identity from process
112
+ success alone.
@@ -1,8 +1,10 @@
1
- # Cursor Subagent Dispatch
1
+ # Cursor Dispatch Mechanics
2
2
 
3
- Load this reference only when the active provider is Cursor. Cursor IDE and
4
- Cursor CLI are separate harness contexts. Treat every observed catalog as a
5
- volatile snapshot, never a durable inventory.
3
+ Load this reference only when the active provider is Cursor. Cursor IDE, CLI,
4
+ and SDK are related but distinct dispatch contexts. Model-selection policy for
5
+ this provider lives in `subagent-orchestration/references/provider-cursor.md`;
6
+ read it first. Treat every observed catalog as a volatile snapshot, never a
7
+ durable inventory.
6
8
 
7
9
  ## Control Surfaces
8
10
 
@@ -10,17 +12,21 @@ volatile snapshot, never a durable inventory.
10
12
  | ---------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- |
11
13
  | Native Task/Subagent schema | Agent types available for that dispatcher invocation | CLI account eligibility or another dispatcher's native catalog |
12
14
  | `cursor-agent --list-models` | Opaque flat model IDs accepted by the account CLI and resolver | Native Task eligibility or definition-pin acceptance |
15
+ | Cursor SDK catalog/schema | Models accepted by that SDK context | IDE or nested-native eligibility |
13
16
  | Cursor UI role configuration | User-selected defaults and role settings | Live root or nested schema without a new observation |
14
17
 
15
18
  Root and nested catalogs are independent, volatile observations. Equality in
16
19
  one run does not establish equality in another run or nesting boundary.
17
20
 
21
+ Record the model selector and the service tier separately even when Cursor
22
+ encodes both in one opaque alias.
23
+
18
24
  ## Task-Class Resolution
19
25
 
20
- Apply active user and repository instructions first; they override the dated
21
- model-family examples in this provider reference. Intersect that guidance with
22
- the exact model choices advertised by the dispatcher, the supplied policy and
23
- ceiling, and the requested class floor:
26
+ Apply active user and repository instructions first, then the dated class
27
+ guidance from the active provider selection reference. Intersect that guidance
28
+ with the exact model choices advertised by the dispatcher, the supplied policy
29
+ and ceiling, and the requested class floor:
24
30
 
25
31
  - `mechanical-recon`: the fastest economical class suitable for deterministic
26
32
  inventories, parity, and command execution;
@@ -55,8 +61,8 @@ reconstruct either model string.
55
61
  fallback or replacement.
56
62
  6. Treat an omitted variant as deliberate parent inheritance only when the
57
63
  resolver selected no managed target.
58
- 7. Record selected variant, mapped target, acceptance, outcome, and runtime
59
- identity separately.
64
+ 7. Record selected variant, mapped target, service tier, acceptance, outcome,
65
+ runtime identity, and guidance version separately.
60
66
 
61
67
  ## Reviewer-Local Nested Selection
62
68
 
@@ -68,7 +74,7 @@ exists.
68
74
 
69
75
  1. Read the model choices advertised by the nested Task/Subagent dispatcher.
70
76
  2. Intersect those advertised model choices with active user and repository
71
- model-class instructions, this provider reference, the supplied
77
+ model-class instructions, the selection reference, the supplied
72
78
  policy/ceiling, and the requested `model_class_floor`.
73
79
  3. Use the native `generalPurpose` agent type and pass the exact model choice
74
80
  advertised by the current nested dispatcher byte-for-byte.
@@ -83,8 +89,8 @@ model pins, or reconstruct a lifecycle variant. If no exact nested selector
83
89
  satisfies the floor, record `floor_satisfaction: unsatisfied` and return the
84
90
  lane for caller-inline coverage without launching a weaker worker.
85
91
 
86
- Do not infer Cursor IDE behavior from a headless CLI surface. Keep bounded
87
- mechanical recon on economical explicit targets. Stronger lanes use a
92
+ Do not infer Cursor IDE behavior from a headless CLI or SDK surface. Keep
93
+ bounded mechanical recon on economical explicit targets. Stronger lanes use a
88
94
  floor-satisfying target when advertised or stay with the primary reviewer.
89
95
 
90
96
  ## Dispatch Mode and Liveness
@@ -108,14 +114,15 @@ liveness, stat that specific file's mtime and size rather than inferring from a
108
114
  directory. Metadata change is observable activity evidence, not a health
109
115
  verdict.
110
116
 
111
- ## Pre-Start CLI Routes
117
+ ## Pre-Start CLI or SDK Routes
112
118
 
113
119
  Any native mismatch is recorded before launch with the route, reason, and
114
120
  candidate set.
115
121
 
116
122
  When exact outer lifecycle role selection rejects the resolver-selected
117
123
  variant before launch, or a generic caller's current native intersection is
118
- unsatisfactory, a caller may use a deliberate pre-start CLI route only when:
124
+ unsatisfactory, a caller may use a deliberate pre-start CLI or SDK route only
125
+ when:
119
126
 
120
127
  - the caller's fallback policy allows it;
121
128
  - the exact CLI selector exists in the account catalog;
@@ -123,7 +130,7 @@ unsatisfactory, a caller may use a deliberate pre-start CLI route only when:
123
130
  candidates are recorded before launch;
124
131
  - the prompt is self-contained and authority-bounded.
125
132
 
126
- Verify current CLI help before use. A typical shape is:
133
+ Verify current CLI or SDK help/schema before use. A typical CLI shape is:
127
134
 
128
135
  ```sh
129
136
  cursor-agent \
@@ -133,13 +140,13 @@ cursor-agent \
133
140
  '<self-contained bounded prompt>'
134
141
  ```
135
142
 
136
- CLI completion proves configured invocation completion. It does not prove an
137
- inner native selection or runtime model identity.
143
+ CLI or SDK completion proves configured invocation completion. It does not
144
+ prove an inner native selection or runtime model identity.
138
145
 
139
146
  ## Catalog-Mismatch Advisory
140
147
 
141
- Report configured candidates missing from the current native catalog, nearby
142
- native candidates as possible ladder additions, selected route, and the exact
143
- observation boundary. Do not remove CLI-capable candidates solely because the
144
- native surface cannot pin them, and do not write observed catalogs into durable
145
- configuration without explicit user choice.
148
+ Report configured candidates missing from the current catalog, nearby native
149
+ candidates, the selected route, and the exact observation boundary. Do not
150
+ remove CLI- or SDK-capable candidates solely because another native surface
151
+ cannot pin them. Do not persist an observed catalog without explicit user
152
+ choice.
@@ -19,6 +19,8 @@ provider: codex
19
19
  dispatch_context: root-native
20
20
  dispatch_policy: economy
21
21
  dispatch_ceiling: high
22
+ service_tier: standard
23
+ reasoning_mode: null
22
24
  authority: read-only
23
25
  expected_output: structured-findings
24
26
  verification_evidence: file-line-references
@@ -34,6 +36,14 @@ escalate_when:
34
36
  - security impact is consequential
35
37
  ```
36
38
 
39
+ `reasoning_mode` and `service_tier` are normalized caller-intent fields. During
40
+ selection, map `reasoning_mode` to the resolved
41
+ `reasoning_mode_selector` record field and `service_tier` to the resolved
42
+ `service_tier_selector` record field. The selector fields are launch evidence,
43
+ not blind copies of request values: they must contain the exact
44
+ provider-native controls actually selected, or `null` when no independent
45
+ control was selected or exposed.
46
+
37
47
  `dispatch_policy` and `dispatch_ceiling` are optional resolved inputs. The
38
48
  general engine does not resolve their source.
39
49
 
@@ -59,6 +69,47 @@ retain the original role-based selection and fallback behavior. The legacy
59
69
  `explicit-downgrade` example above is valid only for an unconstrained request
60
70
  without task-class metadata or a declared class floor.
61
71
 
72
+ ## Legacy Record
73
+
74
+ This baseline Record remains valid without optional model-guidance evidence:
75
+
76
+ ```yaml
77
+ request_id: dispatch-legacy-id
78
+ caller: oat-repo-improve
79
+ scope: repo:packages/cli
80
+ objective: Audit CLI correctness hotspots
81
+ action: analysis
82
+ role_name: repo-audit-scout
83
+ role_class: recon
84
+ provider: codex
85
+ dispatch_context: root-native
86
+ dispatch_policy: economy
87
+ dispatch_ceiling: high
88
+ catalog_snapshot:
89
+ id: root-native-legacy-1
90
+ source: tool-schema
91
+ observed_at: 2026-07-12T00:00:00Z
92
+ authority: read-only
93
+ role_selector: oat-recon-worker
94
+ model_selector: opaque-provider-selector
95
+ model_selector_granularity: opaque
96
+ effort_selector: economical
97
+ selection_source: native-default
98
+ candidates_considered:
99
+ - opaque-provider-selector
100
+ selection_reason: native-catalog
101
+ selected_route: native
102
+ deadline_seconds: 300
103
+ retry_limit: 1
104
+ payload: {}
105
+ launch_status: accepted
106
+ child_outcome: completed
107
+ configured_invocation_evidence: []
108
+ runtime_confirmation: not-reported
109
+ diagnostics: []
110
+ continuation_events: []
111
+ ```
112
+
62
113
  ## Record
63
114
 
64
115
  ```yaml
@@ -82,6 +133,12 @@ role_selector: oat-recon-worker
82
133
  model_selector: opaque-provider-selector
83
134
  model_selector_granularity: opaque
84
135
  effort_selector: economical
136
+ reasoning_mode_selector: null
137
+ service_tier_selector: standard
138
+ guidance_reference: subagent-orchestration/references/provider-codex.md
139
+ guidance_version: 2026-07-21
140
+ guidance_verified_at: 2026-07-21
141
+ guidance_status: fresh
85
142
  selection_source: native-default
86
143
  candidates_considered:
87
144
  - opaque-provider-selector
@@ -171,5 +228,32 @@ lanes:
171
228
  The wave scope is the aggregate boundary. Lane scope may narrow it. Use one
172
229
  shared record only when every dispatch axis listed in the main skill,
173
230
  `task_class`, and `model_class_floor` are identical. Lane entries do not
174
- redefine the shared class fields. Mixed classes require separate records and
175
- waves.
231
+ redefine the shared class fields. In particular, `reasoning_mode_selector`,
232
+ `service_tier_selector`, `guidance_reference`, `guidance_version`,
233
+ `guidance_verified_at`, and `guidance_status` must be identically present or
234
+ absent across lanes and, when present, have identical values. Mixed classes or
235
+ different model-guidance controls require separate records and waves.
236
+
237
+ ## Optional Model-Guidance Evidence
238
+
239
+ The following fields are optional for legacy callers and required when the
240
+ launch surface exposes the corresponding control or when dated provider
241
+ mapping influenced selection:
242
+
243
+ ```yaml
244
+ reasoning_mode_selector: null # e.g. pro, when independent of effort
245
+ service_tier_selector: standard # e.g. standard, fast, priority
246
+ guidance_reference: subagent-orchestration/references/provider-codex.md
247
+ guidance_version: 2026-07-21
248
+ guidance_verified_at: 2026-07-21
249
+ guidance_status: fresh # fresh | review-required | stale
250
+ ```
251
+
252
+ Keep `model_selector`, `effort_selector`, `reasoning_mode_selector`, and
253
+ `service_tier_selector` separate even when a provider encodes several axes in
254
+ one opaque alias. Preserve that exact alias in `model_selector` and also record
255
+ the interpreted service tier when known.
256
+
257
+ A service tier never changes `model_class_floor` or `floor_satisfaction`.
258
+ Unknown tier semantics must be recorded as a diagnostic and may block a
259
+ consequential route.