@open-agent-toolkit/cli 0.1.45 → 0.1.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/agents/oat-phase-implementer.md +202 -191
- package/assets/agents/oat-reviewer.md +12 -2
- package/assets/config/dispatch-matrix-recommendation.json +120 -13
- package/assets/docs/cli-utilities/config-and-local-state.md +7 -0
- package/assets/docs/cli-utilities/configuration.md +183 -84
- package/assets/docs/cli-utilities/workflow-gates.md +161 -27
- package/assets/docs/contributing/skills.md +14 -8
- package/assets/docs/provider-sync/config.md +5 -1
- package/assets/docs/provider-sync/manifest-and-drift.md +6 -1
- package/assets/docs/provider-sync/providers.md +42 -5
- package/assets/docs/provider-sync/scope-and-surface.md +3 -2
- package/assets/docs/reference/cli-reference.md +3 -1
- package/assets/docs/reference/oat-directory-structure.md +27 -26
- package/assets/docs/workflows/projects/artifacts.md +31 -1
- package/assets/docs/workflows/projects/dispatch-ceiling.md +235 -174
- package/assets/docs/workflows/projects/implementation-execution.md +283 -253
- package/assets/docs/workflows/projects/lifecycle.md +26 -5
- package/assets/docs/workflows/projects/reviews.md +27 -2
- package/assets/migration/pjm-restructure.md +1 -1
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-project-implement/SKILL.md +347 -178
- package/assets/skills/oat-project-import-plan/SKILL.md +173 -16
- package/assets/skills/oat-project-next/SKILL.md +2 -2
- package/assets/skills/oat-project-plan/SKILL.md +122 -92
- package/assets/skills/oat-project-plan-writing/SKILL.md +246 -15
- package/assets/skills/oat-project-quick-start/SKILL.md +156 -94
- package/assets/skills/oat-project-review-provide/SKILL.md +94 -22
- package/dist/commands/config/index.d.ts +2 -2
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +129 -53
- package/dist/commands/doctor/index.d.ts +2 -2
- package/dist/commands/doctor/index.d.ts.map +1 -1
- package/dist/commands/doctor/index.js +102 -31
- package/dist/commands/gate/index.d.ts +7 -1
- package/dist/commands/gate/index.d.ts.map +1 -1
- package/dist/commands/gate/index.js +544 -67
- package/dist/commands/gate/review-verdict.d.ts +16 -0
- package/dist/commands/gate/review-verdict.d.ts.map +1 -1
- package/dist/commands/gate/review-verdict.js +72 -9
- package/dist/commands/project/dispatch-ceiling/index.d.ts.map +1 -1
- package/dist/commands/project/dispatch-ceiling/index.js +586 -23
- package/dist/commands/providers/codex/index.d.ts +4 -0
- package/dist/commands/providers/codex/index.d.ts.map +1 -0
- package/dist/commands/providers/codex/index.js +7 -0
- package/dist/commands/providers/codex/materialize.d.ts +5 -0
- package/dist/commands/providers/codex/materialize.d.ts.map +1 -0
- package/dist/commands/providers/codex/materialize.js +157 -0
- package/dist/commands/providers/index.d.ts +2 -2
- package/dist/commands/providers/index.d.ts.map +1 -1
- package/dist/commands/providers/index.js +4 -2
- package/dist/commands/providers/providers.types.d.ts +23 -0
- package/dist/commands/providers/providers.types.d.ts.map +1 -1
- package/dist/commands/shared/codex-strays.d.ts.map +1 -1
- package/dist/commands/shared/codex-strays.js +11 -1
- package/dist/commands/shared/frontmatter.d.ts +4 -0
- package/dist/commands/shared/frontmatter.d.ts.map +1 -1
- package/dist/commands/shared/frontmatter.js +23 -0
- package/dist/commands/status/index.d.ts +5 -1
- package/dist/commands/status/index.d.ts.map +1 -1
- package/dist/commands/status/index.js +10 -4
- package/dist/commands/sync/index.d.ts.map +1 -1
- package/dist/commands/sync/index.js +10 -3
- package/dist/commands/sync/sync.types.d.ts +5 -1
- package/dist/commands/sync/sync.types.d.ts.map +1 -1
- package/dist/config/dispatch-ceiling-preset.d.ts +4 -0
- package/dist/config/dispatch-ceiling-preset.d.ts.map +1 -1
- package/dist/config/dispatch-ceiling-preset.js +3 -0
- package/dist/config/dispatch-policy-options.d.ts +20 -0
- package/dist/config/dispatch-policy-options.d.ts.map +1 -0
- package/dist/config/dispatch-policy-options.js +96 -0
- package/dist/config/oat-config.d.ts +25 -2
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +154 -24
- package/dist/config/resolve.d.ts +8 -0
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +66 -2
- package/dist/engine/index.d.ts +1 -1
- package/dist/engine/index.d.ts.map +1 -1
- package/dist/engine/index.js +1 -1
- package/dist/engine/scanner.d.ts +1 -0
- package/dist/engine/scanner.d.ts.map +1 -1
- package/dist/engine/scanner.js +17 -1
- package/dist/fs/paths.d.ts +4 -0
- package/dist/fs/paths.d.ts.map +1 -1
- package/dist/fs/paths.js +18 -1
- package/dist/providers/ceiling/registry.d.ts +8 -5
- package/dist/providers/ceiling/registry.d.ts.map +1 -1
- package/dist/providers/ceiling/registry.js +25 -7
- package/dist/providers/codex/codec/catalog.d.ts +14 -0
- package/dist/providers/codex/codec/catalog.d.ts.map +1 -0
- package/dist/providers/codex/codec/catalog.js +21 -0
- package/dist/providers/codex/codec/config-merge.d.ts +6 -0
- package/dist/providers/codex/codec/config-merge.d.ts.map +1 -1
- package/dist/providers/codex/codec/config-merge.js +7 -0
- package/dist/providers/codex/codec/materialize.d.ts +16 -0
- package/dist/providers/codex/codec/materialize.d.ts.map +1 -0
- package/dist/providers/codex/codec/materialize.js +58 -0
- package/dist/providers/codex/codec/shared.d.ts +20 -0
- package/dist/providers/codex/codec/shared.d.ts.map +1 -1
- package/dist/providers/codex/codec/shared.js +107 -6
- package/dist/providers/codex/codec/sync-extension.d.ts +7 -1
- package/dist/providers/codex/codec/sync-extension.d.ts.map +1 -1
- package/dist/providers/codex/codec/sync-extension.js +299 -52
- package/dist/providers/identity/availability.d.ts +24 -1
- package/dist/providers/identity/availability.d.ts.map +1 -1
- package/dist/providers/identity/availability.js +253 -19
- package/dist/providers/identity/stamp.d.ts.map +1 -1
- package/dist/providers/identity/stamp.js +4 -0
- package/dist/shared/types.d.ts +1 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js +4 -0
- package/package.json +2 -2
|
@@ -86,12 +86,31 @@ This distinction matters during completion: `oat-project-complete` can skip the
|
|
|
86
86
|
|
|
87
87
|
When `workflow.autoReviewAtHillCheckpoints` is enabled or `plan.md` frontmatter sets `oat_auto_review_at_hill_checkpoints`, completing a HiLL checkpoint automatically runs the extra lifecycle review scoped to every implementation phase not already covered by a passed whole-phase code review, through the just-completed checkpoint. Mid-implementation multi-phase reviews use inclusive phase-range scopes such as `p02-p03`; the final implementation checkpoint uses `code final`. The review uses auto-disposition mode (minors auto-converted to fix tasks, no user prompts). Disabled by default. Legacy `autoReviewAtCheckpoints` and `oat_auto_review_at_checkpoints` are still read as fallbacks. This does not control Tier 1 per-phase `oat-reviewer` gates.
|
|
88
88
|
|
|
89
|
+
### Phase-review setup during planning
|
|
90
|
+
|
|
91
|
+
Spec-driven, quick, and import planning run one shared setup after stable phase
|
|
92
|
+
IDs exist and before the plan artifact review. The target probe qualifies only
|
|
93
|
+
an explicitly configured, enabled, and available review target, then offers all
|
|
94
|
+
phases, selected phases, or disabled. Existing explicit
|
|
95
|
+
`oat_phase_review_gate` values are preserved unchanged without re-prompting.
|
|
96
|
+
Probe failure, no qualifying target, non-interactive execution, or user decline
|
|
97
|
+
leaves phase review disabled. Provider native plan mode inherits this behavior
|
|
98
|
+
through the import-plan lane.
|
|
99
|
+
|
|
89
100
|
## Implementation modes
|
|
90
101
|
|
|
91
102
|
`oat-project-implement` v2.0 dispatches one subagent per phase (not per task). Capability detection at skill start selects a tier, locked for the run:
|
|
92
103
|
|
|
93
104
|
- **Tier 1 (subagents):** native subagent dispatch via Claude Code, Cursor, or Codex with spawn authorization.
|
|
94
|
-
- **Tier 2 (
|
|
105
|
+
- **Tier 2 (guarded sequential execution):** orchestrator reads the agent files and uses a target-preserving route when native subagents are unavailable or authorization is declined.
|
|
106
|
+
|
|
107
|
+
A concrete managed reviewer remains bound across both tiers. Codex uses the
|
|
108
|
+
exact registered role or a child pinned to the resolved model and effort;
|
|
109
|
+
Claude and Cursor pass the exact resolver-returned `dispatchArgs.model` in the
|
|
110
|
+
actual provider invocation, including retries. Tier 2 does not authorize a
|
|
111
|
+
target downgrade. Inline review is allowed only with verified equivalent host
|
|
112
|
+
controls, or for explicit inherit/default behavior or the documented
|
|
113
|
+
managed-uncapped reviewer base-role exception; otherwise the review blocks.
|
|
95
114
|
|
|
96
115
|
Within either tier, parallelism is expressed as plan metadata:
|
|
97
116
|
|
|
@@ -143,10 +162,12 @@ legacy `workflow.dispatchCeiling.providers.<provider>` config and
|
|
|
143
162
|
`oat_dispatch_ceiling` frontmatter remain compatibility inputs for capped
|
|
144
163
|
managed policies. If no policy is configured and the session is interactive,
|
|
145
164
|
planning asks once and stores the answer as `oat_dispatch_policy`;
|
|
146
|
-
non-interactive planning
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
165
|
+
non-interactive planning with an unresolved policy is not implementation-ready
|
|
166
|
+
and blocks at the planning boundary until the resolver succeeds. Implementation
|
|
167
|
+
preflight retains the same defensive check, but it is not the first place an
|
|
168
|
+
unresolved plan fails. `Uncapped` is explicit managed selection with no maximum
|
|
169
|
+
cap; `Inherit Host Defaults` is separate and means OAT does not select model or
|
|
170
|
+
effort controls.
|
|
150
171
|
|
|
151
172
|
### Quick lane
|
|
152
173
|
|
|
@@ -101,6 +101,15 @@ Status progression in `plan.md` Reviews table:
|
|
|
101
101
|
|
|
102
102
|
When `workflow.autoReviewAtHillCheckpoints` is enabled (for example, `oat config set workflow.autoReviewAtHillCheckpoints true --user`) or per-project `plan.md` frontmatter sets `oat_auto_review_at_hill_checkpoints`, completing a HiLL checkpoint automatically runs the extra lifecycle review. The review scope covers every implementation phase not already covered by a passed whole-phase code review, through the just-completed checkpoint. Mid-implementation multi-phase checkpoint reviews use inclusive phase-range scopes such as `p02-p03`. The final phase checkpoint triggers a `code final` review.
|
|
103
103
|
|
|
104
|
+
Producer-aware gate routing treats those range and final scopes as aggregate
|
|
105
|
+
subjects. It considers every valid in-scope implementer/fix dispatch stamp,
|
|
106
|
+
avoids the stable union of claimable model families, and reports contributor
|
|
107
|
+
scope/count metadata in `diversity.producer`. Claimable exact phase/task stamps
|
|
108
|
+
with a known family remain exact `stamp` identities; legacy or otherwise
|
|
109
|
+
non-claimable exact stamps resolve to an unknown producer. An explicit
|
|
110
|
+
`--producer-identity` flag takes precedence. An aggregate never presents its
|
|
111
|
+
latest stamp as the producer for the whole scope.
|
|
112
|
+
|
|
104
113
|
This is separate from Tier 1 phase gate reviews. Tier 1 implementation always runs `oat-reviewer` after each phase; `workflow.autoReviewAtHillCheckpoints` only controls the additional lifecycle review when a HiLL checkpoint is reached. Legacy `autoReviewAtCheckpoints` and `oat_auto_review_at_checkpoints` are still read as fallbacks.
|
|
105
114
|
|
|
106
115
|
Auto-triggered reviews use `oat_review_invocation: auto` in the review artifact frontmatter. In auto mode, `oat-project-review-receive` auto-converts all findings to fix tasks without user prompts (Minor findings that are clearly out of scope are deferred with a note).
|
|
@@ -111,9 +120,25 @@ This feature is opt-in and disabled by default. When disabled, the manual `oat-p
|
|
|
111
120
|
|
|
112
121
|
The phase review gate is an optional, **non-pausing** external review gate that runs after a phase's standard per-phase reviewer passes and the phase bookkeeping is committed. Where the Tier 1 reviewer is an in-session self-review, the gate calls `oat gate review` against the configured cross-provider target, adding an independent perspective before implementation moves to the next phase. It is enabled per-project through `plan.md` frontmatter (`oat_phase_review_gate`; see [Project Artifacts](artifacts.md#oat_phase_review_gate) for the field shape and validation).
|
|
113
122
|
|
|
123
|
+
Plan-producing workflows run the shared setup after stable phase IDs exist and
|
|
124
|
+
before the plan artifact review. A read-only probe requires an explicitly
|
|
125
|
+
configured, enabled, and available target before it offers all phases, selected
|
|
126
|
+
phases, or disabled. Existing explicit `oat_phase_review_gate` values are
|
|
127
|
+
preserved unchanged without re-prompting, including resumed and imported plans.
|
|
128
|
+
Probe failure, no qualifying target, non-interactive execution, or user decline
|
|
129
|
+
leaves the gate disabled.
|
|
130
|
+
|
|
114
131
|
It is independent of [HiLL checkpoints](hill-checkpoints.md): a passing gate does not pause, and the gate never touches `oat_hill_completed`, `oat_plan_hill_phases`, or `oat_auto_review_at_hill_checkpoints`.
|
|
115
132
|
|
|
116
|
-
Gate-produced review artifacts use `oat_review_invocation: gate` in frontmatter (the third invocation marker alongside `manual` and `auto`). The gate verdict — controlled by `exit_nonzero_on` (default `important`) — decides whether the **phase stops**; it does not decide whether sub-threshold findings are ignored.
|
|
133
|
+
Gate-produced review artifacts use `oat_review_invocation: gate` in frontmatter (the third invocation marker alongside `manual` and `auto`). The gate verdict — controlled by `exit_nonzero_on` (default `important`) — decides whether the **phase stops**; it does not decide whether sub-threshold findings are ignored. Before invoking `oat-project-review-receive`, the result must satisfy all three eligibility conditions: `status` is `ok` or `blocked`, `receiveEligible` is `true`, and `handoff` is non-null. A missing or contradictory field is an operational failure even when `artifactPath` is present. Once eligibility is established, the produced artifact is consumed autonomously and without user prompts, so findings never evaporate:
|
|
134
|
+
|
|
135
|
+
The gate prompt provides six additional frontmatter values: `oat_gate_run_id`,
|
|
136
|
+
`oat_gate_target`, `oat_gate_runtime`, `oat_invocation_model`,
|
|
137
|
+
`oat_invocation_reasoning_effort`, and `oat_invocation_source`. The reviewer
|
|
138
|
+
copies them exactly. They represent OAT's configured invocation and remain
|
|
139
|
+
separate from optional observed or self-reported producer identity. Missing or
|
|
140
|
+
mismatched values produce `artifact_validation_failed` before finding severity
|
|
141
|
+
is evaluated.
|
|
117
142
|
|
|
118
143
|
- **Passing gate** (no findings at or above the threshold): receive runs a non-pausing **judgment sweep**. It makes a per-finding decision for each Medium/Minor — defer to final review (the default, recorded so [final review](#phase-and-final-review) resurfaces it), address now (only for small, contained, low-risk fixes, which do **not** re-trigger the standard reviewer or re-gate the phase), or reject with rationale — then archives the artifact. Address-now is an exception, not the norm; if such a fix reveals a Critical/Important concern it escalates to the blocking path.
|
|
119
144
|
- **Blocking gate** (one or more findings at or above the threshold): receive converts findings to fix tasks and implementation re-runs the standard reviewer and the gate for the phase. These block → fix → re-gate rounds are bounded by `oat_orchestration_retry_limit` (default `2`); exhausting the bound stops a sequential run or excludes the phase in a parallel group, matching the standard fix loop's terminal handling.
|
|
@@ -180,7 +205,7 @@ Final review `passed` gate requires:
|
|
|
180
205
|
- `[features] multi_agent = true`
|
|
181
206
|
- If explicit role pinning is used, role must be built-in (`default`/`worker`/`explorer`) or configured under `[agents.<name>]`.
|
|
182
207
|
- Project-scope Codex role files are generated from canonical `.agents/agents/*.md` during `oat sync --scope project`.
|
|
183
|
-
- User-
|
|
208
|
+
- User-config Codex roles materialize under `~/.codex`; project-config and supported-catalogue roles remain in the project-scoped, version-controlled `.codex` view.
|
|
184
209
|
- Some Codex hosts require explicit user authorization before the skill may call `spawn_agent`. In those hosts, `oat-project-review-provide` should ask whether to delegate to `oat-reviewer` instead of reporting the reviewer as unresolved.
|
|
185
210
|
- If subagent dispatch is unavailable, follow the existing fallback path (fresh session preferred, inline reset as fallback).
|
|
186
211
|
|
|
@@ -497,4 +497,4 @@ test -f .oat/repo/README.md && echo "present: README.md (allowed by doctor; leav
|
|
|
497
497
|
- Treat `.oat/projects/**` writes (project-scoped folder moves) as confirmed-only.
|
|
498
498
|
- This prompt is safe to re-run: STEP 0's idempotency probe short-circuits an
|
|
499
499
|
already-migrated repo.
|
|
500
|
-
```
|
|
500
|
+
```
|