@open-agent-toolkit/cli 0.2.48 → 0.2.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/bundle-metadata.json +1 -1
- package/assets/docs/cli-utilities/tool-packs.md +35 -24
- package/assets/docs/cli-utilities/workflow-gates.md +19 -0
- package/assets/docs/contributing/skills.md +6 -4
- package/assets/docs/reference/cli-reference.md +1 -1
- package/assets/docs/reference/troubleshooting.md +22 -4
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-project-design/SKILL.md +13 -6
- package/assets/skills/oat-project-discover/SKILL.md +13 -6
- package/assets/skills/oat-project-import-plan/SKILL.md +8 -2
- package/assets/skills/oat-project-plan/SKILL.md +8 -2
- package/assets/skills/oat-project-quick-start/SKILL.md +8 -2
- package/dist/commands/doctor/index.d.ts +7 -0
- package/dist/commands/doctor/index.d.ts.map +1 -1
- package/dist/commands/doctor/index.js +44 -23
- package/dist/commands/gate/__fixtures__/fake-runtime.mjs +10 -0
- package/dist/commands/gate/configured-command.d.ts +12 -0
- package/dist/commands/gate/configured-command.d.ts.map +1 -0
- package/dist/commands/gate/configured-command.js +120 -0
- package/dist/commands/gate/index.d.ts.map +1 -1
- package/dist/commands/gate/index.js +51 -0
- package/dist/commands/pjm/index.d.ts +0 -2
- package/dist/commands/pjm/index.d.ts.map +1 -1
- package/dist/commands/pjm/index.js +5 -4
- package/dist/commands/pjm/migrate.d.ts +2 -1
- package/dist/commands/pjm/migrate.d.ts.map +1 -1
- package/dist/commands/pjm/migrate.js +23 -17
- package/dist/commands/status/index.d.ts +3 -1
- package/dist/commands/status/index.d.ts.map +1 -1
- package/dist/commands/status/index.js +77 -10
- package/dist/commands/tools/shared/pack-inventory.d.ts +10 -0
- package/dist/commands/tools/shared/pack-inventory.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-inventory.js +71 -21
- package/package.json +2 -2
|
@@ -189,23 +189,30 @@ creates `~/.oat/ideas/backlog.md` and `~/.oat/ideas/scratchpad.md`. Only the
|
|
|
189
189
|
`workflows` project-scaffold seeds — `.oat/projects-root`, `.oat/config.json`,
|
|
190
190
|
and the project `.gitkeep` files — are pinned to project scope.
|
|
191
191
|
|
|
192
|
-
#### User-scope agents
|
|
193
|
-
|
|
194
|
-
Canonical **agents** are installed at either scope
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
for `skeptical-evaluator`.
|
|
192
|
+
#### User-scope agents have limited native materialization
|
|
193
|
+
|
|
194
|
+
Canonical **agents** are installed at either scope. At user scope, native
|
|
195
|
+
Codex or Cursor role materialization is active only when that adapter is active
|
|
196
|
+
under the resolved sync config: explicit enablement wins without filesystem
|
|
197
|
+
detection, explicit disablement wins despite detection, and an unset adapter
|
|
198
|
+
follows detection. That native materialization supplies the bundled managed
|
|
199
|
+
role files (`oat-phase-implementer.md` and `oat-reviewer.md`); it does not
|
|
200
|
+
materialize other pack-owned user agents. For example, a user-scope workflows
|
|
201
|
+
install leaves `oat-codebase-mapper` without a native provider role, and a
|
|
202
|
+
user-scope research install does the same for `skeptical-evaluator`. When no
|
|
203
|
+
Codex or Cursor adapter is active, even the bundled managed roles lack native
|
|
204
|
+
materialization.
|
|
205
|
+
|
|
206
|
+
This diagnostic concerns native provider roles only. Providers may read
|
|
207
|
+
canonical agent instructions through a separate loaded, user, and project
|
|
208
|
+
lookup contract; that read availability does not establish native
|
|
209
|
+
materialization and does not suppress this finding.
|
|
203
210
|
|
|
204
211
|
`oat status` and `oat doctor` name the affected agents with a
|
|
205
212
|
`user-agent-unmaterialized` finding rather than reporting the pack as complete
|
|
206
213
|
without qualification. Install the pack at **project scope** when you need its
|
|
207
|
-
|
|
208
|
-
rather than drift.
|
|
214
|
+
native provider roles; `oat tools update` cannot repair this, because it is a
|
|
215
|
+
scope limitation rather than drift.
|
|
209
216
|
|
|
210
217
|
Repository templates under `.oat/templates/` are **owner-owned seeds**. OAT
|
|
211
218
|
compares a source-backed seed with its bundled default: a byte-equivalent copy
|
|
@@ -299,12 +306,14 @@ The canonical surface splits active operational state (under `pjm/`) from durabl
|
|
|
299
306
|
|
|
300
307
|
Decisions are now file-per-record under `reference/decisions/` (created and indexed with the [`oat decision`](config-and-local-state.md#oat-decision-) command group), replacing the legacy single `decision-record.md`. Repos still on the old `reference/` layout can migrate with `oat pjm migrate`.
|
|
301
308
|
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
309
|
+
Migration eligibility is independent of where the `project-management` pack is
|
|
310
|
+
installed. `oat pjm migrate` resolves the repository's adoption state for
|
|
311
|
+
diagnostic context, then inventories recognized legacy sources before writing.
|
|
312
|
+
A complete current layout returns `already-migrated`; recognized legacy input
|
|
313
|
+
can be previewed or applied from any adoption state; and a repository with
|
|
314
|
+
neither recognized legacy input nor a complete current layout is skipped with
|
|
315
|
+
an `oat pjm init` recovery. `--print-prompt` only reads the bundled prompt and
|
|
316
|
+
does not inspect adoption or modify the repository.
|
|
308
317
|
|
|
309
318
|
Decision records still require repository PJM adoption. Run `oat pjm init` first: like every repository-mutating PJM command, `oat decision init` fails closed in an unadopted repository, writes nothing, and returns `oat pjm init` as the recovery. Once the repository is adopted, `oat decision init` scaffolds only the decision surface — the decision directory, generated index, and decision-specific AGENTS guidance — without touching current state, roadmap, or backlog artifacts. It does not require the `project-management` pack. If the pack is installed later, its root guidance is maintained as a separate managed section so the decision instructions remain independently reusable.
|
|
310
319
|
|
|
@@ -322,11 +331,13 @@ repository-mutating PJM command checks it before writing anything:
|
|
|
322
331
|
| `partial-initialization` | Some canonical scaffold files exist but the surface is incomplete | `oat pjm init` |
|
|
323
332
|
| `none` | The repository has not adopted PJM | `oat pjm init` |
|
|
324
333
|
|
|
325
|
-
`oat pjm`, `oat backlog`, and `oat decision` mutations **fail closed**
|
|
326
|
-
`partial-initialization` and `none`. They write nothing and return an error
|
|
327
|
-
naming the repository path and `oat pjm init` as the recovery.
|
|
328
|
-
|
|
329
|
-
|
|
334
|
+
Normal `oat pjm`, `oat backlog`, and `oat decision` mutations **fail closed**
|
|
335
|
+
for `partial-initialization` and `none`. They write nothing and return an error
|
|
336
|
+
naming the repository path and `oat pjm init` as the recovery. The explicit
|
|
337
|
+
`oat pjm migrate` command is the bounded exception: recognized legacy sources
|
|
338
|
+
authorize that migration regardless of the adoption label. `oat backlog init`
|
|
339
|
+
and `oat decision init` are no longer alternate adoption paths for the full PJM
|
|
340
|
+
surface.
|
|
330
341
|
|
|
331
342
|
Run `oat pjm doctor` to inspect an existing surface. It is read-only, reports
|
|
332
343
|
missing canonical files, leftover template frontmatter, and
|
|
@@ -51,6 +51,17 @@ Fields:
|
|
|
51
51
|
- `description` - optional context for the agent running the gate.
|
|
52
52
|
- `maxAttempts` - retry bound for `block`; defaults to `2`.
|
|
53
53
|
|
|
54
|
+
When `oat gate set` recognizes a direct lifecycle `oat gate review` command,
|
|
55
|
+
it requires the canonical global option placement `oat --json gate review`.
|
|
56
|
+
Missing, late, repeated, or subcommand-scoped `--json` is rejected with exit 1
|
|
57
|
+
before the selected shared, local, or user config layer is changed. Arbitrary
|
|
58
|
+
wrappers, unrelated gate commands, and provider exec-target `baseCommand`
|
|
59
|
+
arrays remain outside this validator.
|
|
60
|
+
|
|
61
|
+
A valid command is stored byte-for-byte. `oat gate resolve` returns that exact
|
|
62
|
+
string, and the lifecycle executes it unchanged; OAT does not inject, reorder,
|
|
63
|
+
or rewrite its shell arguments.
|
|
64
|
+
|
|
54
65
|
`oat-project-plan`, `oat-project-implement`, `oat-project-quick-start`, and
|
|
55
66
|
`oat-project-import-plan` are currently gate-aware. Gate awareness is declared
|
|
56
67
|
in skill frontmatter with `oat_gateable: true`, and
|
|
@@ -284,6 +295,7 @@ and disambiguate re-gate rounds:
|
|
|
284
295
|
| `ok` | 0 | Review completed; gate passed at the threshold. |
|
|
285
296
|
| `blocked` | 1 | Review completed; findings at/above the threshold. |
|
|
286
297
|
| `review_failed` | ≠0 | The provider target exited non-zero; no verdict. |
|
|
298
|
+
| `artifact_missing` | 1 | The child exited cleanly without producing an artifact. |
|
|
287
299
|
| `artifact_validation_failed` | 1 | Artifact format or configured invocation fields are invalid. |
|
|
288
300
|
| `targeting_correlation_failed` | 1 | Identity did not correlate; do not run review-receive. |
|
|
289
301
|
|
|
@@ -296,6 +308,13 @@ For `artifact_validation_failed`, correct the artifact and rerun the gate; do
|
|
|
296
308
|
not invoke review-receive until the gate successfully revalidates it as `ok` or
|
|
297
309
|
`blocked`.
|
|
298
310
|
|
|
311
|
+
`artifact_missing` means the accepted headless child completed without any
|
|
312
|
+
review artifact. It sets `receiveEligible: false`, `remediable: false`, and
|
|
313
|
+
`handoff: null`. Fix the reviewer so review work, artifact creation, and
|
|
314
|
+
bookkeeping finish inline or through a synchronously awaited child, then start
|
|
315
|
+
a new gate run. Do not use review-fix retries or review-receive for the failed
|
|
316
|
+
run.
|
|
317
|
+
|
|
299
318
|
`ok` and `blocked` also include `receiveEligible: true`, `outcome`,
|
|
300
319
|
`artifactPath`, `counts`, `scope`, `handoff`, `gateInvocation`, and
|
|
301
320
|
`corroboration`. Invoke review-receive only when all three conditions hold:
|
|
@@ -262,9 +262,11 @@ The Gate Execution step should:
|
|
|
262
262
|
2. Treat `null` as "no gate configured."
|
|
263
263
|
3. Export the resolved path with `export PROJECT_PATH` before launching the
|
|
264
264
|
command shell.
|
|
265
|
-
4. For `oat gate review`, require the configured command to
|
|
266
|
-
|
|
267
|
-
|
|
265
|
+
4. For `oat gate review`, require the configured command to use
|
|
266
|
+
`oat --json gate review --project "$PROJECT_PATH" ...`, with the global
|
|
267
|
+
`--json` option before `gate review`. Do not inject, append, or reorder
|
|
268
|
+
arguments at runtime, because the resolved command must execute exactly as
|
|
269
|
+
configured.
|
|
268
270
|
5. Run the resolved `command` as the skill's last step and use its exit code as
|
|
269
271
|
the pass/fail signal.
|
|
270
272
|
6. Follow the gate's `onFailure` policy:
|
|
@@ -273,7 +275,7 @@ The Gate Execution step should:
|
|
|
273
275
|
- `warn` - record the failure and continue.
|
|
274
276
|
|
|
275
277
|
For OAT review gates, prefer putting
|
|
276
|
-
`oat gate review --project "$PROJECT_PATH" "<prompt>"` in the configured gate
|
|
278
|
+
`oat --json gate review --project "$PROJECT_PATH" "<prompt>"` in the configured gate
|
|
277
279
|
command rather than hard-coding a provider CLI directly in the skill. Use
|
|
278
280
|
`oat gate cross-provider-exec "<prompt>"` for generic cross-runtime commands
|
|
279
281
|
that should report only the child process status, not review findings.
|
|
@@ -126,7 +126,7 @@ Notable commands introduced in the current CLI surface:
|
|
|
126
126
|
- `oat project validate-plan --project-path <path>` - validates `oat_plan_parallel_groups` metadata in `plan.md`; exits non-zero on invalid. See [Implementation Execution](../workflows/projects/implementation-execution.md#parallel-phase-groups).
|
|
127
127
|
- `oat project log append|check|synthesize|rollup` - manage the optional append-only project observation log: append validated judgment or structural entries, inspect grammar and synthesis status, complete end-of-run synthesis, and roll observations into `summary.md` plus the configured repository ledger. See [Project Log](../cli-utilities/project-log.md).
|
|
128
128
|
- `oat project set-mode` — deprecated no-op. Execution mode is no longer user-selectable; emits a deprecation warning and preserves the `--json` contract.
|
|
129
|
-
- `oat gate review <prompt...>` - run a stateful, headless OAT review through the target registry, parse the produced review artifact, and exit nonzero for configured blocking findings. `--timeout-ms <milliseconds>` overrides target, `workflow.gateTimeouts`, environment, and scope defaults; accepted values are 1,000–14,400,000. Final/phase/range code reviews default to 30 minutes, while task code and artifact reviews default to 15 minutes. With `--json`, the result envelope on exit is the canonical completion signal: `status` is `ok` | `blocked` | `review_failed` | `artifact_validation_failed` | `targeting_correlation_failed`, alongside `runId`, `generatedAt`, and `artifactPath` when available. For `targeting_correlation_failed`, do not run review-receive even if an artifact path is present. For `artifact_validation_failed`, correct the artifact and rerun the gate until it revalidates as `ok` or `blocked`. Invoke `oat-project-review-receive` only when all three conditions hold: `status` is `ok` or `blocked`, `receiveEligible` is `true`, and `handoff` is non-null. `review_failed` may include structured `refusal`, `noOutputProduced`, and metadata-only `activityEvidence`; these diagnostic fields never make a run receive-eligible. After a timeout, a validated run-correlated artifact returns the ordinary `ok` or `blocked` envelope with additive `lateCompletion: true`. Duplicate run-ID matches or a changed artifact with a mismatched run ID retain `targeting_correlation_failed` and `receiveEligible: false`. Orchestrators should read the structured result rather than poll the filesystem. See [Workflow Gates](../cli-utilities/workflow-gates.md).
|
|
129
|
+
- `oat gate review <prompt...>` - run a stateful, headless OAT review through the target registry, parse the produced review artifact, and exit nonzero for configured blocking findings. `--timeout-ms <milliseconds>` overrides target, `workflow.gateTimeouts`, environment, and scope defaults; accepted values are 1,000–14,400,000. Final/phase/range code reviews default to 30 minutes, while task code and artifact reviews default to 15 minutes. With `--json`, the result envelope on exit is the canonical completion signal: `status` is `ok` | `blocked` | `review_failed` | `artifact_missing` | `artifact_validation_failed` | `targeting_correlation_failed`, alongside `runId`, `generatedAt`, and `artifactPath` when available. `artifact_missing` means an accepted child exited cleanly without an artifact; fix synchronous review/artifact completion and start a new run, without review-receive or same-run remediation. For `targeting_correlation_failed`, correct the project declaration or artifact routing and start a new run; do not run review-receive even if an artifact path is present. For `artifact_validation_failed`, correct the artifact and rerun the gate until it revalidates as `ok` or `blocked`. Invoke `oat-project-review-receive` only when all three conditions hold: `status` is `ok` or `blocked`, `receiveEligible` is `true`, and `handoff` is non-null. `review_failed` may include structured `refusal`, `noOutputProduced`, and metadata-only `activityEvidence`; these diagnostic fields never make a run receive-eligible. After a timeout, a validated run-correlated artifact returns the ordinary `ok` or `blocked` envelope with additive `lateCompletion: true`. Duplicate run-ID matches or a changed artifact with a mismatched run ID retain `targeting_correlation_failed` and `receiveEligible: false`. Orchestrators should read the structured result rather than poll the filesystem. See [Workflow Gates](../cli-utilities/workflow-gates.md).
|
|
130
130
|
- `oat gate route --expect-runtime <runtime> --expect-model <model> --can-await <true|false> --json` - return the headless child route (`inline`, `delegate-sync`, or `refuse`) from provider-marker and model evidence. Ambiguous or contradictory evidence never routes inline.
|
|
131
131
|
- `oat gate exec <prompt...>` / `oat gate cross-provider-exec <prompt...>` - run a generic target prompt. `--timeout-ms` uses the same validated CLI override; untyped runs otherwise retain the legacy default path.
|
|
132
132
|
- `oat gate target set <id> --invocation-model <model|provider-default> --invocation-reasoning-effort <effort|provider-default>` - persist optional configured invocation metadata alongside an exec target without inferring it from the target command.
|
|
@@ -167,12 +167,30 @@ 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
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
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
|
|
174
177
|
[Tool packs](../cli-utilities/tool-packs.md) for the full limitation.
|
|
175
178
|
|
|
179
|
+
## `status` or `doctor` reports `packs:inventory`
|
|
180
|
+
|
|
181
|
+
OAT could not read the canonical managed-pack inventory. `oat status` keeps the
|
|
182
|
+
rest of the report available and returns `packs.availability.status` as
|
|
183
|
+
`unavailable` in JSON, with an empty `packs.states` array and a structured
|
|
184
|
+
diagnostic. `oat doctor` emits the same condition as a warning instead of
|
|
185
|
+
stopping its other checks. Reported project and home paths remain redacted.
|
|
186
|
+
|
|
187
|
+
Rebuild the CLI workspace, then rerun the command named in the diagnostic:
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
pnpm build
|
|
191
|
+
oat status # or: oat doctor
|
|
192
|
+
```
|
|
193
|
+
|
|
176
194
|
## `status` or `doctor` reports `legacy-false-conflict`
|
|
177
195
|
|
|
178
196
|
An older repository left `tools.<pack>: false` in shared config while managed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-design
|
|
3
|
-
version: 2.3.
|
|
3
|
+
version: 2.3.2
|
|
4
4
|
description: Use when discovery is complete and implementation-ready decisions are needed. Runs a collaborative, selective collaborative, or draft-and-review design flow, confirms requirements and produces both `spec.md` and `design.md`, and commits artifacts before the user-review gate.
|
|
5
5
|
disable-model-invocation: true
|
|
6
6
|
user-invocable: true
|
|
@@ -658,11 +658,18 @@ gate as the last check before the completion boundary:
|
|
|
658
658
|
```
|
|
659
659
|
|
|
660
660
|
If the resolved command invokes `oat gate review`, the configured review
|
|
661
|
-
command must already include `--project "$PROJECT_PATH"`
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
661
|
+
command must already include `--project "$PROJECT_PATH"` as part of the
|
|
662
|
+
structured-output contract. Its canonical form is:
|
|
663
|
+
|
|
664
|
+
```bash
|
|
665
|
+
oat --json gate review --project "$PROJECT_PATH" ...
|
|
666
|
+
```
|
|
667
|
+
|
|
668
|
+
This requires global `--json` before `gate review`. Reusable declarations
|
|
669
|
+
must not include
|
|
670
|
+
`--target <id>`. Reject `oat gate review ...` without the global `--json`
|
|
671
|
+
placement. Stop and migrate an invalid stored declaration before execution;
|
|
672
|
+
never inject or append execution-time argv.
|
|
666
673
|
|
|
667
674
|
3. Execute the resolved command exactly as configured. Capture stdout, stderr,
|
|
668
675
|
the exit code, and the structured JSON result. A zero exit code means the
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-discover
|
|
3
|
-
version: 2.2.
|
|
3
|
+
version: 2.2.2
|
|
4
4
|
description: Use when the user explicitly asks to continue discovery for an active spec-driven OAT project — e.g. "continue discovery", "run discovery", or confirms a previously offered discovery step. Do NOT auto-invoke for new ideas or quick-mode projects. Gathers requirements and context before spec/design.
|
|
5
5
|
disable-model-invocation: false
|
|
6
6
|
user-invocable: true
|
|
@@ -445,11 +445,18 @@ gate as the last check before the completion boundary:
|
|
|
445
445
|
```
|
|
446
446
|
|
|
447
447
|
If the resolved command invokes `oat gate review`, the configured review
|
|
448
|
-
command must already include `--project "$PROJECT_PATH"`
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
448
|
+
command must already include `--project "$PROJECT_PATH"` as part of the
|
|
449
|
+
structured-output contract. Its canonical form is:
|
|
450
|
+
|
|
451
|
+
```bash
|
|
452
|
+
oat --json gate review --project "$PROJECT_PATH" ...
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
This requires global `--json` before `gate review`. Reusable declarations
|
|
456
|
+
must not include
|
|
457
|
+
`--target <id>`. Reject `oat gate review ...` without the global `--json`
|
|
458
|
+
placement. Stop and migrate an invalid stored declaration before execution;
|
|
459
|
+
never inject or append execution-time argv.
|
|
453
460
|
|
|
454
461
|
3. Execute the resolved command exactly as configured. Capture stdout, stderr,
|
|
455
462
|
the exit code, and the structured JSON result. A zero exit code means the
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-import-plan
|
|
3
|
-
version: 1.4.
|
|
3
|
+
version: 1.4.11
|
|
4
4
|
description: Use when you have an external markdown plan to execute with OAT. Preserves the source plan and normalizes it into canonical plan.md format.
|
|
5
5
|
argument-hint: '<path-to-plan.md> [--provider codex|cursor|claude] [--project <name>]'
|
|
6
6
|
oat_gateable: true
|
|
@@ -460,7 +460,13 @@ Before reporting this skill as complete, run the configured gate as the final st
|
|
|
460
460
|
export PROJECT_PATH
|
|
461
461
|
```
|
|
462
462
|
|
|
463
|
-
If the resolved command invokes `oat gate review`, the configured review command must already include `--project "$PROJECT_PATH"`
|
|
463
|
+
If the resolved command invokes `oat gate review`, the configured review command must already include `--project "$PROJECT_PATH"` as part of the structured-output contract. Its canonical form is:
|
|
464
|
+
|
|
465
|
+
```bash
|
|
466
|
+
oat --json gate review --project "$PROJECT_PATH" ...
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
This requires global `--json` before `gate review`. Reusable declarations must not include `--target <id>`. Reject `oat gate review ...` without the global `--json` placement. Stop and migrate an invalid stored declaration before execution; never inject or append execution-time argv.
|
|
464
470
|
|
|
465
471
|
3. Resolve the current planning parent's model identity from session context.
|
|
466
472
|
When that identity is non-empty and the resolved configured command invokes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-plan
|
|
3
|
-
version: 1.4.
|
|
3
|
+
version: 1.4.6
|
|
4
4
|
description: Use when design.md is complete and executable implementation tasks are needed. Breaks design into bite-sized TDD tasks in canonical plan.md format.
|
|
5
5
|
oat_gateable: true
|
|
6
6
|
disable-model-invocation: true
|
|
@@ -544,7 +544,13 @@ the last check before the completion boundary:
|
|
|
544
544
|
export PROJECT_PATH
|
|
545
545
|
```
|
|
546
546
|
|
|
547
|
-
If the resolved command invokes `oat gate review`, the configured review command must already include `--project "$PROJECT_PATH"`
|
|
547
|
+
If the resolved command invokes `oat gate review`, the configured review command must already include `--project "$PROJECT_PATH"` as part of the structured-output contract. Its canonical form is:
|
|
548
|
+
|
|
549
|
+
```bash
|
|
550
|
+
oat --json gate review --project "$PROJECT_PATH" ...
|
|
551
|
+
```
|
|
552
|
+
|
|
553
|
+
This requires global `--json` before `gate review`. Reusable declarations must not include `--target <id>`. Reject `oat gate review ...` without the global `--json` placement. Stop and migrate an invalid stored declaration before execution; never inject or append execution-time argv.
|
|
548
554
|
|
|
549
555
|
3. Resolve the current planning parent's model identity from session context.
|
|
550
556
|
When that identity is non-empty and the resolved configured command invokes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-quick-start
|
|
3
|
-
version: 2.3.
|
|
3
|
+
version: 2.3.7
|
|
4
4
|
description: Use when a task is small enough for quick mode or rapid iteration is preferred. Scaffolds a lightweight OAT project from discovery directly to a runnable plan, with optional brainstorming and lightweight design.
|
|
5
5
|
argument-hint: '<project-name> ["project description"]'
|
|
6
6
|
oat_gateable: true
|
|
@@ -735,7 +735,13 @@ as the last check before plan and project completion:
|
|
|
735
735
|
export PROJECT_PATH
|
|
736
736
|
```
|
|
737
737
|
|
|
738
|
-
If the resolved command invokes `oat gate review`, the configured review command must already include `--project "$PROJECT_PATH"`
|
|
738
|
+
If the resolved command invokes `oat gate review`, the configured review command must already include `--project "$PROJECT_PATH"` as part of the structured-output contract. Its canonical form is:
|
|
739
|
+
|
|
740
|
+
```bash
|
|
741
|
+
oat --json gate review --project "$PROJECT_PATH" ...
|
|
742
|
+
```
|
|
743
|
+
|
|
744
|
+
This requires global `--json` before `gate review`. Reusable declarations must not include `--target <id>`. Reject `oat gate review ...` without the global `--json` placement. Stop and migrate an invalid stored declaration before execution; never inject or append execution-time argv.
|
|
739
745
|
|
|
740
746
|
3. Resolve the current planning parent's model identity from session context.
|
|
741
747
|
When that identity is non-empty and the resolved configured command invokes
|
|
@@ -2,10 +2,12 @@ import { type CommandContext, type GlobalOptions } from '../../app/command-conte
|
|
|
2
2
|
import { type PjmAdoption, type ResolvePjmAdoptionOptions } from '../pjm/adoption.js';
|
|
3
3
|
import { type PjmDoctorOptions } from '../pjm/doctor.js';
|
|
4
4
|
import { type InventoryPackInput, type PackInventory } from '../tools/shared/pack-inventory.js';
|
|
5
|
+
import type { SyncConfig } from '../../config/index.js';
|
|
5
6
|
import { type OatConfig, type OatLocalConfig, type UserConfig } from '../../config/oat-config.js';
|
|
6
7
|
import { type Manifest } from '../../manifest/index.js';
|
|
7
8
|
import { type CursorMaterializedModelDiagnostic, type MatrixCellAvailabilityResponse, type ValidateMatrixCellOptions } from '../../providers/identity/availability.js';
|
|
8
9
|
import { createDispatchValidationPassContext, validateDispatchMatrixRefs } from '../../providers/identity/dispatch-validation.js';
|
|
10
|
+
import { type ProviderAdapter } from '../../providers/shared/index.js';
|
|
9
11
|
import type { ConcreteScope } from '../../shared/types.js';
|
|
10
12
|
import { type DoctorCheck } from '../../ui/output.js';
|
|
11
13
|
import { Command } from 'commander';
|
|
@@ -22,6 +24,11 @@ interface DoctorDependencies {
|
|
|
22
24
|
}>>;
|
|
23
25
|
readFile: (path: string) => Promise<string>;
|
|
24
26
|
resolveAssetsRoot: () => Promise<string>;
|
|
27
|
+
resolveUserSyncConfig: (userConfigDir: string) => Promise<SyncConfig>;
|
|
28
|
+
getAdapters: () => ProviderAdapter[];
|
|
29
|
+
getConfigAwareAdapters: (adapters: ProviderAdapter[], scopeRoot: string, config: SyncConfig) => Promise<{
|
|
30
|
+
activeAdapters: ProviderAdapter[];
|
|
31
|
+
}>;
|
|
25
32
|
readOatConfig: (repoRoot: string) => Promise<OatConfig>;
|
|
26
33
|
readOatConfigForDefaultScopeRepair: (repoRoot: string) => Promise<OatConfig>;
|
|
27
34
|
readOatLocalConfig: (repoRoot: string) => Promise<OatLocalConfig>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,yBAAyB,EAC/B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,11 +8,12 @@ import { runPjmDoctorChecks, } from '../pjm/doctor.js';
|
|
|
8
8
|
import { getSkillVersion } from '../shared/frontmatter.js';
|
|
9
9
|
import { withScopeOption } from '../shared/scope-option.js';
|
|
10
10
|
import { readGlobalOptions, resolveConcreteScopes, } from '../shared/shared.utils.js';
|
|
11
|
-
import { hasScopedPackPlacementEvidence, inventoryPack, } from '../tools/shared/pack-inventory.js';
|
|
11
|
+
import { attributeSharedOwnerDiagnostics, hasScopedPackPlacementEvidence, inventoryPack, } from '../tools/shared/pack-inventory.js';
|
|
12
12
|
import { PACK_NAMES } from '../tools/shared/pack-manifest.js';
|
|
13
13
|
import { formatPackPaths, updatePackRecovery, } from '../tools/shared/pack-paths.js';
|
|
14
14
|
import { walkDispatchMatrix, } from '../../config/dispatch-matrix.js';
|
|
15
15
|
import { readOatConfig, readOatConfigForDefaultScopeRepair, readOatLocalConfig, readUserConfig, } from '../../config/oat-config.js';
|
|
16
|
+
import { resolveUserSyncConfig } from '../../config/user-sync-config.js';
|
|
16
17
|
import { resolveAssetsRoot } from '../../fs/assets.js';
|
|
17
18
|
import { resolveProjectRoot, resolveScopeRoot } from '../../fs/paths.js';
|
|
18
19
|
import TOML from '@iarna/toml';
|
|
@@ -26,6 +27,7 @@ import { CURSOR_MODEL_PIN_MAPPINGS } from '../../providers/cursor/codec/catalog.
|
|
|
26
27
|
import { geminiAdapter } from '../../providers/gemini/index.js';
|
|
27
28
|
import { diagnoseCursorMaterializedModels, validateMatrixCell, } from '../../providers/identity/availability.js';
|
|
28
29
|
import { createDispatchValidationPassContext, validateDispatchMatrixRefs, } from '../../providers/identity/dispatch-validation.js';
|
|
30
|
+
import { getConfigAwareAdapters, } from '../../providers/shared/index.js';
|
|
29
31
|
import { formatDoctorResults } from '../../ui/output.js';
|
|
30
32
|
import { Command } from 'commander';
|
|
31
33
|
import { checkStaleInvocations } from './stale-invocations.js';
|
|
@@ -139,6 +141,15 @@ function createDependencies() {
|
|
|
139
141
|
checkProviders: checkProvidersDefault,
|
|
140
142
|
readFile: async (path) => readFile(path, 'utf8'),
|
|
141
143
|
resolveAssetsRoot,
|
|
144
|
+
resolveUserSyncConfig,
|
|
145
|
+
getAdapters: () => [
|
|
146
|
+
claudeAdapter,
|
|
147
|
+
cursorAdapter,
|
|
148
|
+
codexAdapter,
|
|
149
|
+
copilotAdapter,
|
|
150
|
+
geminiAdapter,
|
|
151
|
+
],
|
|
152
|
+
getConfigAwareAdapters,
|
|
142
153
|
readOatConfig,
|
|
143
154
|
readOatConfigForDefaultScopeRepair,
|
|
144
155
|
readOatLocalConfig,
|
|
@@ -477,18 +488,6 @@ function collectPackStateFindings(inventories) {
|
|
|
477
488
|
for (const scoped of inventory.scopes) {
|
|
478
489
|
const { scope } = scoped;
|
|
479
490
|
if (!hasScopedPackPlacementEvidence(scoped)) {
|
|
480
|
-
const sharedPresent = scoped.assets.filter((asset) => asset.definition.sharedOwner !== undefined &&
|
|
481
|
-
asset.status !== 'missing');
|
|
482
|
-
if (sharedPresent.length > 0) {
|
|
483
|
-
findings.push({
|
|
484
|
-
pack: inventory.pack,
|
|
485
|
-
scope,
|
|
486
|
-
code: 'shared-owner-observation',
|
|
487
|
-
detail: 'shared managed assets are present without pack ownership evidence',
|
|
488
|
-
paths: sharedPresent.map(({ path }) => path),
|
|
489
|
-
recovery: null,
|
|
490
|
-
});
|
|
491
|
-
}
|
|
492
491
|
continue;
|
|
493
492
|
}
|
|
494
493
|
const managed = scoped.assets.filter((asset) => asset.definition.ownership[scope] === 'managed');
|
|
@@ -560,7 +559,18 @@ function collectPackStateFindings(inventories) {
|
|
|
560
559
|
pack: inventory.pack,
|
|
561
560
|
scope,
|
|
562
561
|
code: 'user-agent-unmaterialized',
|
|
563
|
-
detail: `${diagnostic.paths.length} user-scope agent(s)
|
|
562
|
+
detail: `${diagnostic.paths.length} user-scope agent(s) lack native provider-role materialization; canonical instruction reads are unaffected, and active Codex or Cursor materialization supplies only the bundled managed roles, so install this pack at project scope to materialize the affected agents`,
|
|
563
|
+
paths: diagnostic.paths,
|
|
564
|
+
recovery: null,
|
|
565
|
+
});
|
|
566
|
+
continue;
|
|
567
|
+
}
|
|
568
|
+
if (diagnostic.code === 'shared-owner-observation') {
|
|
569
|
+
findings.push({
|
|
570
|
+
pack: inventory.pack,
|
|
571
|
+
scope,
|
|
572
|
+
code: 'shared-owner-observation',
|
|
573
|
+
detail: diagnostic.message,
|
|
564
574
|
paths: diagnostic.paths,
|
|
565
575
|
recovery: null,
|
|
566
576
|
});
|
|
@@ -610,10 +620,10 @@ function createScopedPackStateCheck(scope, findings, roots) {
|
|
|
610
620
|
name: `${scope}:pack_state`,
|
|
611
621
|
description: 'Managed pack completeness and drift',
|
|
612
622
|
status: recoveries.length > 0 ? 'warn' : 'pass',
|
|
613
|
-
message: scoped
|
|
614
|
-
.map((finding) => formatPackFinding(finding, roots))
|
|
615
|
-
.join('
|
|
616
|
-
fix: recoveries.length > 0 ? recoveries.join('
|
|
623
|
+
message: `Findings:\n${scoped
|
|
624
|
+
.map((finding) => ` - ${formatPackFinding(finding, roots)}`)
|
|
625
|
+
.join('\n')}`,
|
|
626
|
+
fix: recoveries.length > 0 ? recoveries.join('\n Fix: ') : undefined,
|
|
617
627
|
};
|
|
618
628
|
}
|
|
619
629
|
function createPackDuplicationCheck(findings, roots) {
|
|
@@ -630,10 +640,10 @@ function createPackDuplicationCheck(findings, roots) {
|
|
|
630
640
|
name: 'packs:scope_duplication',
|
|
631
641
|
description: 'Cross-scope pack duplication',
|
|
632
642
|
status: 'warn',
|
|
633
|
-
message: duplicates
|
|
634
|
-
.map((finding) => formatPackFinding(finding, roots))
|
|
635
|
-
.join('
|
|
636
|
-
fix: uniqueRecoveries(duplicates).join('
|
|
643
|
+
message: `Findings:\n${duplicates
|
|
644
|
+
.map((finding) => ` - ${formatPackFinding(finding, roots)}`)
|
|
645
|
+
.join('\n')}`,
|
|
646
|
+
fix: uniqueRecoveries(duplicates).join('\n Fix: '),
|
|
637
647
|
};
|
|
638
648
|
}
|
|
639
649
|
async function createPackStateChecks(scopeRoots, dependencies) {
|
|
@@ -649,7 +659,18 @@ async function createPackStateChecks(scopeRoots, dependencies) {
|
|
|
649
659
|
let findings;
|
|
650
660
|
try {
|
|
651
661
|
const assetsRoot = await dependencies.resolveAssetsRoot();
|
|
652
|
-
const
|
|
662
|
+
const userRoot = scopeRoots.get('user');
|
|
663
|
+
const userManagedRoleMaterialization = userRoot
|
|
664
|
+
? await dependencies
|
|
665
|
+
.getConfigAwareAdapters(dependencies.getAdapters(), userRoot, await dependencies.resolveUserSyncConfig(join(userRoot, '.oat')))
|
|
666
|
+
.then(({ activeAdapters }) => activeAdapters.some(({ name }) => name === 'codex' || name === 'cursor'))
|
|
667
|
+
: false;
|
|
668
|
+
const inventories = attributeSharedOwnerDiagnostics(await Promise.all(PACK_NAMES.map((pack) => dependencies.inventoryPack({
|
|
669
|
+
pack,
|
|
670
|
+
assetsRoot,
|
|
671
|
+
...roots,
|
|
672
|
+
...(userRoot ? { userManagedRoleMaterialization } : {}),
|
|
673
|
+
}))));
|
|
653
674
|
findings = collectPackStateFindings(inventories);
|
|
654
675
|
}
|
|
655
676
|
catch (error) {
|
|
@@ -8,6 +8,16 @@ const delayMs = Number(process.env.FAKE_GATE_DELAY_MS ?? '0');
|
|
|
8
8
|
const exitCode = Number(process.env.FAKE_GATE_EXIT_CODE ?? '0');
|
|
9
9
|
const artifactMode = process.env.FAKE_GATE_ARTIFACT ?? 'none';
|
|
10
10
|
const transcriptIntervalMs = Number(process.env.FAKE_GATE_TRANSCRIPT_INTERVAL_MS ?? '0');
|
|
11
|
+
if (process.env.FAKE_GATE_INVOCATION_LOG) {
|
|
12
|
+
await appendFile(process.env.FAKE_GATE_INVOCATION_LOG, `${JSON.stringify({
|
|
13
|
+
pid: process.pid,
|
|
14
|
+
headless: process.env.OAT_GATE_HEADLESS ?? null,
|
|
15
|
+
nonInteractive: process.env.OAT_NON_INTERACTIVE ?? null,
|
|
16
|
+
runId: process.env.OAT_GATE_RUN_ID ?? null,
|
|
17
|
+
cliPath: process.env.OAT_GATE_CLI_PATH ?? null,
|
|
18
|
+
routeReceiptPath: process.env.OAT_GATE_ROUTE_RECEIPT_PATH ?? null,
|
|
19
|
+
})}\n`);
|
|
20
|
+
}
|
|
11
21
|
function promptValue(key) {
|
|
12
22
|
return prompt.match(new RegExp(`^${key}: (.+)$`, 'm'))?.[1] ?? 'unknown';
|
|
13
23
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type GateCommandContractResult = {
|
|
2
|
+
kind: 'not-applicable';
|
|
3
|
+
} | {
|
|
4
|
+
kind: 'valid';
|
|
5
|
+
command: 'gate-review';
|
|
6
|
+
} | {
|
|
7
|
+
kind: 'invalid';
|
|
8
|
+
command: 'gate-review';
|
|
9
|
+
message: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function validateConfiguredGateCommand(command: string): GateCommandContractResult;
|
|
12
|
+
//# sourceMappingURL=configured-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configured-command.d.ts","sourceRoot":"","sources":["../../../src/commands/gate/configured-command.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,yBAAyB,GACjC;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,GAC1B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAmIjE,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,GACd,yBAAyB,CAoB3B"}
|