@open-agent-toolkit/cli 0.2.2 → 0.2.4

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 (33) hide show
  1. package/assets/agents/oat-reviewer.md +59 -3
  2. package/assets/docs/cli-utilities/project-log.md +16 -0
  3. package/assets/docs/cli-utilities/workflow-gates.md +69 -8
  4. package/assets/docs/workflows/projects/autonomy.md +20 -6
  5. package/assets/docs/workflows/projects/implementation-execution.md +46 -0
  6. package/assets/docs/workflows/projects/lifecycle.md +29 -6
  7. package/assets/docs/workflows/projects/reviews.md +88 -1
  8. package/assets/public-package-versions.json +4 -4
  9. package/assets/skills/oat-dispatch-subagents/SKILL.md +90 -15
  10. package/assets/skills/oat-dispatch-subagents/references/provider-claude.md +21 -0
  11. package/assets/skills/oat-dispatch-subagents/references/provider-codex.md +22 -0
  12. package/assets/skills/oat-dispatch-subagents/references/provider-cursor.md +66 -15
  13. package/assets/skills/oat-dispatch-subagents/references/record-schema.md +63 -2
  14. package/assets/skills/oat-project-autonomous/references/gate-inventory.md +147 -139
  15. package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +147 -139
  16. package/assets/skills/oat-project-implement/SKILL.md +17 -6
  17. package/assets/skills/oat-project-implement/references/completion-and-closeout.md +387 -58
  18. package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +147 -139
  19. package/assets/skills/oat-project-implement/references/phase-execution.md +35 -2
  20. package/assets/skills/oat-project-next/SKILL.md +59 -18
  21. package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +147 -139
  22. package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +147 -139
  23. package/assets/skills/oat-project-review-provide/SKILL.md +38 -2
  24. package/assets/skills/oat-wave-execute/SKILL.md +16 -1
  25. package/assets/skills/oat-wave-program/SKILL.md +16 -1
  26. package/assets/templates/state.md +32 -0
  27. package/dist/commands/gate/index.d.ts +1 -0
  28. package/dist/commands/gate/index.d.ts.map +1 -1
  29. package/dist/commands/gate/index.js +5 -1
  30. package/dist/commands/shared/frontmatter.d.ts +1 -1
  31. package/dist/commands/shared/frontmatter.d.ts.map +1 -1
  32. package/dist/commands/shared/frontmatter.js +1 -0
  33. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-dispatch-subagents
3
- version: 1.1.4
3
+ version: 1.1.5
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
@@ -76,6 +76,19 @@ Require the caller to provide:
76
76
  - route-selection source for any non-native route;
77
77
  - optional resolved dispatch policy or named ceiling.
78
78
 
79
+ The caller may also provide `task_class`, `classification_source`, and
80
+ `classification_reason`. This task-class metadata is optional for existing
81
+ generic callers. When supplied, all three fields are required:
82
+
83
+ - `task_class`: `mechanical-recon`, `intelligent-recon`,
84
+ `default-implementation`, `hard-reasoning`, or `consequential`;
85
+ - `classification_source`: the literal `caller`; and
86
+ - `classification_reason`: a non-empty artifact-informed rationale.
87
+
88
+ The caller owns classification. `oat-reviewer` requires these fields for every
89
+ reviewer-local reconnaissance lane; other callers that omit them retain
90
+ role-based selection behavior and records without class-floor fields.
91
+
79
92
  Reject an over-broad request before selection. Every nontrivial request must
80
93
  state the exact objective, scope, expected output, verification evidence, and
81
94
  conditions that require escalation. Model routing never repairs poor
@@ -169,19 +182,55 @@ or a second launch.
169
182
 
170
183
  Specific role names are extensible, but map every dispatch to one class:
171
184
 
172
- | Class | Default contract |
173
- | -------------- | --------------------------------------------------------------------------------------------------------------------------------- |
174
- | `recon` | Read-only, bounded evidence collection. Select an explicit economical target; never silently inherit an expensive root model. |
175
- | `dossier-lead` | Reconcile dispersed evidence within one declared scope. May coordinate bounded recon only when nesting is supported and approved. |
176
- | `generator` | Produce a self-contained artifact within caller-declared authority. |
177
- | `worker` | Execute bounded work with explicit authority, outputs, and verification. |
178
- | `reviewer` | Perform independent or inherited review exactly as caller policy specifies. |
179
- | `coordinator` | Coordinate a caller-defined topology without taking over caller synthesis or user dialogue. |
185
+ | Class | Default contract |
186
+ | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
187
+ | `recon` | Read-only, bounded evidence collection. Meet any supplied `task_class` / `model_class_floor` at or above the floor; select an explicit economical target only when no task-class floor was supplied. Never silently inherit a root model. |
188
+ | `dossier-lead` | Reconcile dispersed evidence within one declared scope. May coordinate bounded recon only when nesting is supported and approved. |
189
+ | `generator` | Produce a self-contained artifact within caller-declared authority. |
190
+ | `worker` | Execute bounded work with explicit authority, outputs, and verification. |
191
+ | `reviewer` | Perform independent or inherited review exactly as caller policy specifies. |
192
+ | `coordinator` | Coordinate a caller-defined topology without taking over caller synthesis or user dialogue. |
180
193
 
181
194
  Use stronger workers when context, ambiguity, or consequence requires them,
182
195
  not merely because many files exist. Keep coherence-critical synthesis and
183
196
  cross-scope judgment in the root caller.
184
197
 
198
+ ## Task Classes and Model Floors
199
+
200
+ Role class and task class are independent. Role class controls authority and
201
+ output ownership; task class is the minimum model-capability floor for one
202
+ bounded objective. A `role.class: recon` worker remains read-only and advisory
203
+ at every task class.
204
+
205
+ Classify by deterministic verifiability, silent-miss risk, dispersed context,
206
+ ambiguity, and consequence, in that order. File count alone never justifies
207
+ escalation:
208
+
209
+ | Task class | Minimum capability contract |
210
+ | ------------------------ | ------------------------------------------------------------------------------------------------------- |
211
+ | `mechanical-recon` | Deterministic inventories, parity checks, or test/lint/format/build execution whose misses are visible. |
212
+ | `intelligent-recon` | Interpretation, unfamiliar-code auditing, or policy/semantic evidence where a miss could be silent. |
213
+ | `default-implementation` | Retain and reconcile dispersed context inside one independently bounded scope. |
214
+ | `hard-reasoning` | Ambiguity, novelty, architecture analysis, or competing interpretations dominate. |
215
+ | `consequential` | Security, release safety, irreversible impact, adversarial analysis, or expensive failure dominates. |
216
+
217
+ Mechanical workers may execute checks and return exact output. Interpretation
218
+ and policy judgment require a stronger class or stay with the root caller. When
219
+ uncertain between classes, use the stronger floor.
220
+
221
+ For unconstrained legacy recon with no `task_class` supplied, select an
222
+ explicit economical target rather than silently inheriting the root model.
223
+ Class-constrained recon must select a target at or above the supplied
224
+ `model_class_floor`; otherwise set `floor_satisfaction: unsatisfied` and return
225
+ the lane through `caller-inline`. An economical target is not a universal
226
+ baseline for the `recon` role.
227
+
228
+ 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.
233
+
185
234
  ## Catalog Evidence
186
235
 
187
236
  A catalog snapshot belongs to one dispatch context. A root native catalog does
@@ -206,9 +255,11 @@ cannot expose before selection. Record the visibility timing instead.
206
255
  For every dispatch:
207
256
 
208
257
  1. Validate the caller request and capability state.
209
- 2. Resolve provider, context, role class, policy, ceiling, and candidates.
258
+ 2. Resolve provider, context, role class, optional task class and model-class
259
+ floor, policy, ceiling, and candidates.
210
260
  3. Observe the launching dispatcher's relevant catalogs.
211
- 4. Compute the exact native intersection.
261
+ 4. Compute the exact native intersection at or above the supplied task-class
262
+ floor, when present.
212
263
  5. Prefer an eligible native route. Otherwise select one policy-resolved or
213
264
  explicitly authorized inherited, provider-CLI/programmatic, workflow, gate,
214
265
  or blocked route before launch.
@@ -239,14 +290,38 @@ flowchart TD
239
290
 
240
291
  ## Homogeneous Recon Waves
241
292
 
293
+ A homogeneous wave may share one record only when `task_class` and
294
+ `model_class_floor` match in addition to every existing dispatch axis.
242
295
  Multiple read-only recon lanes may share one selection record only when all of
243
296
  these axes are identical: provider, dispatch context, catalog snapshot,
244
297
  selected route, role class, role selector, model, effort, authority, deadline,
245
- retry limit, and fallback. Include a lane manifest with lane-specific scope,
246
- acceptance, and outcome.
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.
302
+
303
+ If any axis differs or either class field does not match, create separate
304
+ records and waves. The record-level scope is the aggregate wave boundary; each
305
+ lane may narrow that boundary.
306
+
307
+ ## Class-Constrained Fallback
308
+
309
+ For a request with task-class metadata, record `model_class_floor` equal to
310
+ `task_class` and set `floor_satisfaction` to `satisfied` or `unsatisfied`.
311
+ An unsatisfied floor blocks launch and returns control to the caller; it never
312
+ records a weaker selection as success.
313
+
314
+ Reviewer-local requests use:
315
+
316
+ ```yaml
317
+ fallback:
318
+ mode: caller-inline
319
+ allow_below_task_class_floor: false
320
+ ```
247
321
 
248
- If any axis differs, create separate records. The record-level scope is the
249
- aggregate wave boundary; each lane may narrow that boundary.
322
+ Below-floor selection is prohibited. The legacy `explicit-downgrade` fallback
323
+ remains available only to unconstrained callers without task-class metadata or
324
+ a declared class floor.
250
325
 
251
326
  ## Acceptance and Recovery
252
327
 
@@ -31,6 +31,27 @@ known role from the active contract when a pre-call role list is unavailable,
31
31
  and record visibility timing. Do not launch a diagnostic child solely to
32
32
  satisfy a universal catalog rule.
33
33
 
34
+ ## Task-Class Resolution
35
+
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:
40
+
41
+ - `mechanical-recon`: the fastest economical class suitable for deterministic
42
+ inventories, parity, and command execution;
43
+ - `intelligent-recon`: a stronger fast class that can interpret unfamiliar
44
+ code, semantics, and silent-miss-prone evidence;
45
+ - `default-implementation`: a context-retentive implementation class for
46
+ independently bounded dossier work;
47
+ - `hard-reasoning`: a strong reasoning class for ambiguity or architecture;
48
+ - `consequential`: the strongest allowed class for security, release safety,
49
+ irreversible impact, or expensive failure.
50
+
51
+ A stale or unavailable named example requires a newer eligible model meeting
52
+ the same class floor or a route one class up. Selection below the floor is
53
+ prohibited. Record the exact selector and `floor_satisfaction`.
54
+
34
55
  ## Surface-Aware Selection
35
56
 
36
57
  - Select an exact accepted alias from the native enum for native dispatch.
@@ -42,6 +42,28 @@ dispersed evidence, and to a stronger reasoning route when ambiguity,
42
42
  consequence, or adversarial analysis dominates. Do not escalate merely because
43
43
  many files must be searched.
44
44
 
45
+ ## Task-Class Resolution
46
+
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
+
52
+ - `mechanical-recon`: an economical class and effort suitable for
53
+ deterministic inventories, parity, and command execution;
54
+ - `intelligent-recon`: a stronger fast class for interpretation,
55
+ unfamiliar-code auditing, and silent-miss-prone evidence;
56
+ - `default-implementation`: a context-retentive implementation class for an
57
+ independently bounded dossier;
58
+ - `hard-reasoning`: a strong reasoning class for ambiguity or architecture;
59
+ - `consequential`: the strongest allowed class for security, release safety,
60
+ irreversible impact, or expensive failure.
61
+
62
+ A stale or unavailable named example requires a newer eligible model meeting
63
+ the same class floor or a route one class up. Selection below the floor is
64
+ prohibited. Keep model and reasoning effort as separate recorded axes, and
65
+ record `floor_satisfaction`.
66
+
45
67
  Native spawn acceptance is configured-invocation evidence. Missing runtime
46
68
  model identity does not invalidate an accepted configured payload.
47
69
 
@@ -15,15 +15,37 @@ volatile snapshot, never a durable inventory.
15
15
  Root and nested catalogs are independent, volatile observations. Equality in
16
16
  one run does not establish equality in another run or nesting boundary.
17
17
 
18
- ## Native Selection
19
-
20
- Managed Cursor dispatch resolves an opaque flat model ID through OAT's explicit
21
- mapping and returns `providers.cursor.dispatchArgs.variant`. The mapping owns
22
- the bracket-form model pin inside the materialized definition; skills must
23
- never parse, normalize, or reconstruct either model string.
24
-
25
- 1. Require a non-empty `providers.cursor.dispatchArgs.variant`.
26
- 2. Launch that exact resolver-selected native agent type first.
18
+ ## Task-Class Resolution
19
+
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:
24
+
25
+ - `mechanical-recon`: the fastest economical class suitable for deterministic
26
+ inventories, parity, and command execution;
27
+ - `intelligent-recon`: a stronger fast class for interpretation,
28
+ unfamiliar-code auditing, and silent-miss-prone evidence;
29
+ - `default-implementation`: a context-retentive implementation class for an
30
+ independently bounded dossier;
31
+ - `hard-reasoning`: a strong reasoning class for ambiguity or architecture;
32
+ - `consequential`: the strongest allowed class for security, release safety,
33
+ irreversible impact, or expensive failure.
34
+
35
+ A stale or unavailable example requires a newer eligible model meeting the
36
+ same class floor or a route one class up. Selection below the floor is
37
+ prohibited.
38
+
39
+ ## Outer Lifecycle Native Selection
40
+
41
+ Outer lifecycle implementer and reviewer dispatch uses the exact
42
+ `providers.cursor.dispatchArgs.variant` returned by the lifecycle resolver.
43
+ The resolver maps an opaque flat model ID and owns the bracket-form model pin
44
+ inside the materialized definition; skills never parse, normalize, or
45
+ reconstruct either model string.
46
+
47
+ 1. Require a non-empty resolver-returned variant for managed dispatch.
48
+ 2. Launch that exact native agent type first.
27
49
  3. Treat native launch acceptance plus the complete launcher payload as
28
50
  configured-invocation evidence, not observed runtime model identity.
29
51
  4. Permit a replacement route only after a recorded pre-start native
@@ -36,9 +58,34 @@ never parse, normalize, or reconstruct either model string.
36
58
  7. Record selected variant, mapped target, acceptance, outcome, and runtime
37
59
  identity separately.
38
60
 
61
+ ## Reviewer-Local Nested Selection
62
+
63
+ Reviewer-local recon uses `generalPurpose` with an
64
+ `exact-native-model-choice` selector.
65
+ Reviewer-local reconnaissance is a separate nested native surface. It does not
66
+ use the lifecycle resolver because no materialized lifecycle `recon` role
67
+ exists.
68
+
69
+ 1. Read the model choices advertised by the nested Task/Subagent dispatcher.
70
+ 2. Intersect those advertised model choices with active user and repository
71
+ model-class instructions, this provider reference, the supplied
72
+ policy/ceiling, and the requested `model_class_floor`.
73
+ 3. Use the native `generalPurpose` agent type and pass the exact model choice
74
+ advertised by the current nested dispatcher byte-for-byte.
75
+ 4. Record the selector as `model_selector` with
76
+ `model_selector_granularity: exact-native-model-choice`.
77
+ 5. Treat an omitted model as deliberate parent inheritance only for an
78
+ unconstrained caller whose recorded policy permits inheritance. A
79
+ class-constrained reviewer lane never omits the model.
80
+
81
+ This nested path does not call the lifecycle resolver, parse bracket-form
82
+ model pins, or reconstruct a lifecycle variant. If no exact nested selector
83
+ satisfies the floor, record `floor_satisfaction: unsatisfied` and return the
84
+ lane for caller-inline coverage without launching a weaker worker.
85
+
39
86
  Do not infer Cursor IDE behavior from a headless CLI surface. Keep bounded
40
- recon on economical explicit targets and reserve stronger targets for
41
- context-heavy or consequential work.
87
+ mechanical recon on economical explicit targets. Stronger lanes use a
88
+ floor-satisfying target when advertised or stay with the primary reviewer.
42
89
 
43
90
  ## Dispatch Mode and Liveness
44
91
 
@@ -63,13 +110,17 @@ verdict.
63
110
 
64
111
  ## Pre-Start CLI Routes
65
112
 
66
- When exact native role selection rejects the resolver-selected variant before
67
- launch, a caller may use a deliberate pre-start CLI route only when:
113
+ Any native mismatch is recorded before launch with the route, reason, and
114
+ candidate set.
115
+
116
+ When exact outer lifecycle role selection rejects the resolver-selected
117
+ 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:
68
119
 
69
120
  - the caller's fallback policy allows it;
70
121
  - the exact CLI selector exists in the account catalog;
71
- - the native mismatch, rejected variant, route, reason, and candidates are
72
- recorded before launch;
122
+ - the native mismatch, rejected variant when applicable, route, reason, and
123
+ candidates are recorded before launch;
73
124
  - the prompt is self-contained and authority-bounded.
74
125
 
75
126
  Verify current CLI help before use. A typical shape is:
@@ -37,6 +37,28 @@ escalate_when:
37
37
  `dispatch_policy` and `dispatch_ceiling` are optional resolved inputs. The
38
38
  general engine does not resolve their source.
39
39
 
40
+ Task-class metadata is also generic-optional. A class-constrained caller adds
41
+ all of these fields; `oat-reviewer` requires them for reviewer-local recon:
42
+
43
+ ```yaml
44
+ task_class: intelligent-recon
45
+ classification_source: caller
46
+ classification_reason: >-
47
+ Determining whether semantic tests pin safety boundaries requires
48
+ interpretation, and a silent miss would survive mechanical checks.
49
+ fallback:
50
+ mode: caller-inline
51
+ allow_below_task_class_floor: false
52
+ ```
53
+
54
+ `task_class` is one of `mechanical-recon`, `intelligent-recon`,
55
+ `default-implementation`, `hard-reasoning`, or `consequential`.
56
+ `classification_source` is the literal `caller`, and
57
+ `classification_reason` is non-empty. Legacy callers may omit all three and
58
+ retain the original role-based selection and fallback behavior. The legacy
59
+ `explicit-downgrade` example above is valid only for an unconstrained request
60
+ without task-class metadata or a declared class floor.
61
+
40
62
  ## Record
41
63
 
42
64
  ```yaml
@@ -76,6 +98,41 @@ diagnostics: []
76
98
  continuation_events: []
77
99
  ```
78
100
 
101
+ For a class-constrained dispatch, the record also includes:
102
+
103
+ ```yaml
104
+ task_class: intelligent-recon
105
+ model_class_floor: intelligent-recon
106
+ classification_source: caller
107
+ classification_reason: Semantic contract interpretation has silent-miss risk.
108
+ floor_satisfaction: satisfied
109
+ ```
110
+
111
+ `model_class_floor` equals the requested `task_class`.
112
+ `floor_satisfaction` is `satisfied` or `unsatisfied`. An unsatisfied floor
113
+ blocks launch and records no weaker selection as success. These five fields
114
+ remain absent when a legacy request omits task-class metadata.
115
+
116
+ For a Cursor reviewer-local request whose advertised nested model choices do
117
+ not satisfy the class floor, record the blocked selection without inventing a
118
+ selector:
119
+
120
+ ```yaml
121
+ role_selector: generalPurpose
122
+ model_selector: null
123
+ model_selector_granularity: exact-native-model-choice
124
+ floor_satisfaction: unsatisfied
125
+ fallback:
126
+ mode: caller-inline
127
+ allow_below_task_class_floor: false
128
+ launch_status: blocked-before-start
129
+ child_outcome: caller-inline-completed
130
+ ```
131
+
132
+ `exact-native-model-choice` means an exact model choice advertised by the
133
+ current nested dispatcher. It does not imply a stable enum or authorize
134
+ reconstruction of a materialized lifecycle variant.
135
+
79
136
  `role_selector` is the exact provider or harness agent-type selector, when that
80
137
  surface exists. Preserve opaque selectors byte-for-byte.
81
138
 
@@ -98,6 +155,8 @@ selection source.
98
155
  wave_id: repo-audit-wave-1
99
156
  scope: repo:packages/cli
100
157
  shared_dispatch_record: dispatch-unique-id
158
+ task_class: intelligent-recon
159
+ model_class_floor: intelligent-recon
101
160
  lanes:
102
161
  - lane_id: correctness
103
162
  scope: packages/cli/src
@@ -110,5 +169,7 @@ lanes:
110
169
  ```
111
170
 
112
171
  The wave scope is the aggregate boundary. Lane scope may narrow it. Use one
113
- shared record only when every dispatch axis listed in the main skill is
114
- identical.
172
+ shared record only when every dispatch axis listed in the main skill,
173
+ `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.