@open-agent-toolkit/cli 0.2.46 → 0.2.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/bundle-metadata.json +1 -1
- package/assets/docs/cli-utilities/tool-packs.md +19 -0
- package/assets/docs/contributing/skills.md +51 -15
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-project-implement/SKILL.md +1 -1
- package/assets/skills/oat-project-implement/references/dispatch-and-dry-run.md +30 -3
- package/assets/skills/oat-project-plan-writing/SKILL.md +25 -5
- package/assets/skills/oat-project-review-provide/SKILL.md +25 -3
- package/assets/skills/oat-project-review-provide-remote/SKILL.md +30 -3
- package/assets/skills/oat-wave-execute/SKILL.md +3 -2
- package/assets/skills/oat-wave-program/SKILL.md +3 -2
- package/dist/commands/pjm/doctor.d.ts.map +1 -1
- package/dist/commands/pjm/doctor.js +20 -7
- package/package.json +2 -2
|
@@ -92,6 +92,25 @@ still fail closed with the owning pack's install or update command. See
|
|
|
92
92
|
[Writing Skills → Portable sibling reads](../contributing/skills.md#portable-sibling-reads-skills-and-agents)
|
|
93
93
|
for the full contract.
|
|
94
94
|
|
|
95
|
+
Skills that read a fixed canonical workflows role use a different, local
|
|
96
|
+
`${AGENT_PROVIDER_ROOT}` binding. They try the loaded skill's provider root,
|
|
97
|
+
then `${HOME}/.agents`, then the repository's `.agents` root. The loaded tier
|
|
98
|
+
qualifies only when the exact unsuffixed `agents/<canonical-name>.md` target is
|
|
99
|
+
the same-scope canonical Markdown file or a symlink resolving exactly to it.
|
|
100
|
+
Copies, broken or escaping links, Cursor model/effort variants, and Codex TOML
|
|
101
|
+
roles are misses; resolution continues to the next tier.
|
|
102
|
+
|
|
103
|
+
That binding only locates canonical source instructions for the one owning
|
|
104
|
+
dependency. It does not select a provider, model, effort, variant, route, or
|
|
105
|
+
native agent. Resolve simultaneous pack dependencies independently. If every
|
|
106
|
+
workflows candidate misses, stop before fallback dispatch and report the
|
|
107
|
+
intended-scope recovery explicitly:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
oat tools install workflows --scope <user|project>
|
|
111
|
+
oat tools update --pack workflows --scope <user|project>
|
|
112
|
+
```
|
|
113
|
+
|
|
95
114
|
The packs remain independently installable. If the workflows adapter is
|
|
96
115
|
present without the utility contracts, it fails closed and reports the missing
|
|
97
116
|
dependency instead of inventing a fallback route. Non-project analytical
|
|
@@ -51,6 +51,37 @@ Probe each candidate for the exact target and use the first match. If none
|
|
|
51
51
|
exists, name the missing sibling, give an actionable install or update command,
|
|
52
52
|
and stop that workflow branch instead of improvising the sibling's process.
|
|
53
53
|
|
|
54
|
+
### Skills bind canonical agent reads through a local provider root
|
|
55
|
+
|
|
56
|
+
When a skill must read one fixed canonical role instruction, bind a local
|
|
57
|
+
`${AGENT_PROVIDER_ROOT}` for that dependency in this order:
|
|
58
|
+
|
|
59
|
+
1. Derive `${SKILL_DIR}/../..` from the loaded skill path, but admit it only
|
|
60
|
+
when the exact unsuffixed `agents/<canonical-name>.md` target is the
|
|
61
|
+
same-scope canonical Markdown file or a symlink whose real path is exactly
|
|
62
|
+
that file.
|
|
63
|
+
2. Try the user-scope root at `${HOME}/.agents`.
|
|
64
|
+
3. Fall back to the project-scope root at `<repo-root>/.agents`.
|
|
65
|
+
|
|
66
|
+
An invalid loaded target is a candidate miss, so resolution continues to the
|
|
67
|
+
user and project roots. Regular provider copies, broken or escaping symlinks,
|
|
68
|
+
transformed content, other role names, model/effort/variant-suffixed files, and
|
|
69
|
+
`.codex/agents/*.toml` are never canonical candidates. Claude and Cursor base
|
|
70
|
+
role symlinks can qualify when they resolve exactly to the same-scope canonical
|
|
71
|
+
file; Cursor materialized variants cannot.
|
|
72
|
+
|
|
73
|
+
`${AGENT_PROVIDER_ROOT}` is local authored-instruction notation, not a global
|
|
74
|
+
environment variable or a provider-native role selector. It has no authority
|
|
75
|
+
over provider, model, effort, variant, route, or dispatch choice. Resolve every
|
|
76
|
+
owning pack independently, even when multiple role dependencies coexist. If
|
|
77
|
+
all candidates miss for a workflows-owned role, stop before fallback launch
|
|
78
|
+
and report both recovery forms for the intended scope:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
oat tools install workflows --scope <user|project>
|
|
82
|
+
oat tools update --pack workflows --scope <user|project>
|
|
83
|
+
```
|
|
84
|
+
|
|
54
85
|
### Materialized agents resolve in two steps
|
|
55
86
|
|
|
56
87
|
Canonical agents are materialized into provider-specific views — Codex receives
|
|
@@ -88,21 +119,26 @@ dependency.
|
|
|
88
119
|
|
|
89
120
|
### The ratchet allows only exact historical baselines
|
|
90
121
|
|
|
91
|
-
Do not use a bare `.agents/skills/<sibling>/SKILL.md`,
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
122
|
+
Do not use a bare `.agents/skills/<sibling>/SKILL.md`,
|
|
123
|
+
`.agents/agents/<canonical-name>.md`, dot-relative equivalent, or repeated-parent
|
|
124
|
+
canonical `agents/<canonical-name>.md` hop for an executable read in any
|
|
125
|
+
user-default skill or agent. The bundled-docs contract test enforces this over
|
|
126
|
+
the whole manifest-derived surface and reports each violation as exact
|
|
127
|
+
`source -> target` evidence. Executable agent findings have a zero baseline, so
|
|
128
|
+
every bare canonical-agent read fails the ratchet. Portable
|
|
129
|
+
`${AGENT_PROVIDER_ROOT}/agents/...` reads and legitimate `.claude` or `.cursor`
|
|
130
|
+
provider-view examples are classified as non-findings.
|
|
131
|
+
|
|
132
|
+
The pinned historical baseline applies only to skill findings: its six exact
|
|
133
|
+
entries are non-executable evidence such as dogfood transcripts or fixture
|
|
134
|
+
READMEs, recorded by source file, target skill, and target path. There is no
|
|
135
|
+
wildcard, directory-wide, or skill-wide allowance, and no temporary migration
|
|
136
|
+
allowlist — executable debt is fixed at the caller instead of being exempted.
|
|
137
|
+
The same assertions run against the bundled CLI copies of both skills and
|
|
138
|
+
agents, and the sync contract test re-checks the roles it materializes for
|
|
139
|
+
Codex, so a canonical fix must survive bundling and Codex sync as well. No test
|
|
140
|
+
yet gates the generated `.claude` or `.cursor` agent views, so regenerate and
|
|
141
|
+
spot-check those by hand.
|
|
106
142
|
|
|
107
143
|
## Contract components
|
|
108
144
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-implement
|
|
3
|
-
version: 2.3.
|
|
3
|
+
version: 2.3.1
|
|
4
4
|
description: Use when plan.md is ready for execution. Dispatches one phase implementer per phase, owns independent phase review and bounded fix routing, and supports plan-declared worktree-isolated parallel phases.
|
|
5
5
|
oat_gateable: true
|
|
6
6
|
argument-hint: '[--retry-limit <N>] [--dry-run]'
|
|
@@ -13,6 +13,32 @@ canonical.
|
|
|
13
13
|
|
|
14
14
|
### Step 0.5: Capability Detection and Tier Selection
|
|
15
15
|
|
|
16
|
+
**Canonical fallback role instructions:** Before a fresh-child fallback can
|
|
17
|
+
read either workflows-owned role, independently resolve each exact target. For
|
|
18
|
+
`oat-phase-implementer`, bind the first valid root to
|
|
19
|
+
`${IMPLEMENTER_AGENT_PROVIDER_ROOT}`; for `oat-reviewer`, bind the first valid
|
|
20
|
+
root to `${REVIEWER_AGENT_PROVIDER_ROOT}`. For each role independently probe
|
|
21
|
+
candidates in this order: `${SKILL_DIR}/../..`, `${HOME}/.agents`, then
|
|
22
|
+
`<repo-root>/.agents`. Do not reuse one role's resolved root for the other.
|
|
23
|
+
|
|
24
|
+
Each loaded candidate is valid only when the exact unsuffixed role target is
|
|
25
|
+
the same-scope canonical file or a symlink whose realpath is exactly that
|
|
26
|
+
canonical file. Treat a missing, broken, escaping, copied, transformed,
|
|
27
|
+
suffixed, wrong-role, or otherwise noncanonical candidate as a miss and
|
|
28
|
+
continue to the next candidate. If either required role misses every candidate,
|
|
29
|
+
name that role, stop before the fresh-child fallback, and report
|
|
30
|
+
`oat tools install workflows --scope <user|project>` or
|
|
31
|
+
`oat tools update --pack workflows --scope <user|project>` for the intended
|
|
32
|
+
scope.
|
|
33
|
+
|
|
34
|
+
These canonical role instructions cannot change the immutable target,
|
|
35
|
+
provider, model, effort, or variant fields selected by the resolver. Native
|
|
36
|
+
dispatch sends the exact resolver-selected variant or `agent_type` first. A
|
|
37
|
+
fresh child is allowed only after an explicit pre-start native role-selection
|
|
38
|
+
rejection before any child starts. Once accepted, continue only through the existing
|
|
39
|
+
handle; terminal results, including `BLOCKED`, never authorize replacement or
|
|
40
|
+
fallback.
|
|
41
|
+
|
|
16
42
|
**Mandatory target-first order:** Complete Dispatch Policy Preflight and
|
|
17
43
|
resolve the concrete managed target before probing generic agent availability
|
|
18
44
|
or locking Tier 1/Tier 2. A concrete target takes precedence over tier
|
|
@@ -22,9 +48,10 @@ native spawn API as native `agent_type`; spawn acceptance plus the constructed
|
|
|
22
48
|
launcher payload is configured invocation evidence, and independent runtime
|
|
23
49
|
telemetry or agent self-report is not required. Launch a fresh Codex child
|
|
24
50
|
pinned to the resolver target's explicit model, reasoning effort, and
|
|
25
|
-
canonical role instructions from
|
|
26
|
-
|
|
27
|
-
|
|
51
|
+
canonical role instructions from
|
|
52
|
+
`${IMPLEMENTER_AGENT_PROVIDER_ROOT}/agents/oat-phase-implementer.md` or
|
|
53
|
+
`${REVIEWER_AGENT_PROVIDER_ROOT}/agents/oat-reviewer.md` only after a native
|
|
54
|
+
role-selection rejection as defined below.
|
|
28
55
|
If that fresh child cannot be launched, fail closed and block; never
|
|
29
56
|
substitute a base or coordinator role for a managed phase target. Inline
|
|
30
57
|
execution is allowed only with verified equivalent current-host model and
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-plan-writing
|
|
3
|
-
version: 1.2.
|
|
3
|
+
version: 1.2.20
|
|
4
4
|
description: Use when authoring or mutating plan.md in any OAT workflow. Defines canonical format invariants — stable task IDs, required sections, review table rules, and resume guardrails.
|
|
5
5
|
disable-model-invocation: true
|
|
6
6
|
user-invocable: false
|
|
@@ -197,6 +197,25 @@ for an exception. A `## Dispatch Profile` row alone cannot authorize reviewer
|
|
|
197
197
|
lowering; only a separate reviewed contract may define a bounded lower
|
|
198
198
|
candidate exception.
|
|
199
199
|
|
|
200
|
+
Before the artifact-review exception can read canonical reviewer instructions,
|
|
201
|
+
resolve the workflows-owned role locally. Probe candidates in this order:
|
|
202
|
+
`${SKILL_DIR}/../..`, `${HOME}/.agents`, then `<repo-root>/.agents`. The loaded
|
|
203
|
+
candidate is valid only when the exact unsuffixed `agents/oat-reviewer.md` is
|
|
204
|
+
the same-scope canonical file or a symlink whose realpath is exactly that
|
|
205
|
+
canonical file. Treat a missing, broken, escaping, copied, transformed,
|
|
206
|
+
suffixed, or otherwise noncanonical candidate as a miss and continue to the
|
|
207
|
+
next candidate. Bind the first valid root to
|
|
208
|
+
`${WORKFLOWS_AGENT_PROVIDER_ROOT}`; never use ambient discovery.
|
|
209
|
+
|
|
210
|
+
If every candidate misses, name `oat-reviewer`, stop before the artifact-review
|
|
211
|
+
fresh-child fallback dispatch, and report
|
|
212
|
+
`oat tools install workflows --scope <user|project>` or
|
|
213
|
+
`oat tools update --pack workflows --scope <user|project>` for the intended
|
|
214
|
+
scope. Canonical role instructions cannot change the immutable target,
|
|
215
|
+
provider, model, effort, or variant fields selected by the resolver. The exact
|
|
216
|
+
registered native reviewer variant remains first; only an explicit pre-start
|
|
217
|
+
native role-selection rejection before a child starts unlocks the fresh child.
|
|
218
|
+
|
|
200
219
|
For the exception route, bind every concrete managed reviewer target to the
|
|
201
220
|
actual provider invocation before probing generic reviewer availability or
|
|
202
221
|
selecting execution mechanics. A concrete managed Codex target takes precedence
|
|
@@ -207,10 +226,11 @@ over generic tier availability.
|
|
|
207
226
|
reviewer variant as native `agent_type`. Only a recorded actual pre-start
|
|
208
227
|
native role-selection rejection permits a fresh Codex child with the resolver
|
|
209
228
|
target's explicit model, reasoning effort, and canonical role instructions
|
|
210
|
-
from
|
|
211
|
-
allowed only when native dispatch cannot express
|
|
212
|
-
child has started. If another route cannot
|
|
213
|
-
verified-equivalent inline route or block the
|
|
229
|
+
from `${WORKFLOWS_AGENT_PROVIDER_ROOT}/agents/oat-reviewer.md`. A separately
|
|
230
|
+
pre-selected CLI route is allowed only when native dispatch cannot express
|
|
231
|
+
the complete target and no child has started. If another route cannot
|
|
232
|
+
preserve the target, use only a verified-equivalent inline route or block the
|
|
233
|
+
review.
|
|
214
234
|
- Claude: require a non-empty `providers.claude.dispatchArgs.model` and put
|
|
215
235
|
that exact value in the actual provider invocation as its `model` argument.
|
|
216
236
|
- Cursor: require a non-empty `providers.cursor.dispatchArgs.variant` and
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-review-provide
|
|
3
|
-
version: 1.5.
|
|
3
|
+
version: 1.5.2
|
|
4
4
|
description: Use when the user explicitly asks to review an OAT project — e.g. "review project", "review the project", "run project review", or confirms a previously offered review. Do NOT auto-invoke on completed work alone. Resolves a project review scope and offers before running.
|
|
5
5
|
disable-model-invocation: false
|
|
6
6
|
user-invocable: true
|
|
@@ -624,6 +624,26 @@ Build the "Review Scope" metadata for the reviewer:
|
|
|
624
624
|
|
|
625
625
|
### Step 6: Execute Review (3-Tier Capability Model)
|
|
626
626
|
|
|
627
|
+
**Canonical reviewer instructions:** Before a direct reviewer-definition read or
|
|
628
|
+
fresh-child fallback, resolve the workflows-owned role locally. Probe candidates
|
|
629
|
+
in this order: `${SKILL_DIR}/../..`, `${HOME}/.agents`, then
|
|
630
|
+
`<repo-root>/.agents`. The loaded candidate is valid only when the exact
|
|
631
|
+
unsuffixed `agents/oat-reviewer.md` is the same-scope canonical file or a
|
|
632
|
+
symlink whose realpath is exactly that canonical file. Treat a missing, broken,
|
|
633
|
+
escaping, copied, transformed, suffixed, or otherwise noncanonical candidate as
|
|
634
|
+
a miss and continue to the next candidate. Bind the first valid root to
|
|
635
|
+
`${WORKFLOWS_AGENT_PROVIDER_ROOT}`; never use ambient discovery.
|
|
636
|
+
|
|
637
|
+
If every candidate misses, name `oat-reviewer`, stop before launching the
|
|
638
|
+
fresh-child fallback, and report
|
|
639
|
+
`oat tools install workflows --scope <user|project>` or
|
|
640
|
+
`oat tools update --pack workflows --scope <user|project>` for the intended
|
|
641
|
+
scope. Canonical role instructions cannot change the immutable target,
|
|
642
|
+
provider, model, effort, or variant fields selected by the resolver. Native
|
|
643
|
+
dispatch with the exact resolver-selected role remains first. Only an explicit
|
|
644
|
+
pre-start native role-selection rejection before a reviewer starts unlocks a
|
|
645
|
+
fresh child that preserves those fields.
|
|
646
|
+
|
|
627
647
|
**Step 6.0: Resolve the managed reviewer target**
|
|
628
648
|
|
|
629
649
|
Before capability-tier selection, resolve the same reviewer contract used by
|
|
@@ -669,7 +689,8 @@ Build the actual provider invocation before reporting the target as enforced:
|
|
|
669
689
|
explicit host rejection of that exact `agent_type` before any reviewer or
|
|
670
690
|
child starts. Only after that pre-start rejection may the workflow launch a
|
|
671
691
|
fresh Codex child with the resolver target's explicit model, reasoning
|
|
672
|
-
effort, canonical role instructions from
|
|
692
|
+
effort, canonical role instructions from
|
|
693
|
+
`${WORKFLOWS_AGENT_PROVIDER_ROOT}/agents/oat-reviewer.md`,
|
|
673
694
|
and the same Review Scope payload. If neither exact route is available, use
|
|
674
695
|
only a verified-equivalent inline route or block the review.
|
|
675
696
|
- Claude requires a non-empty `providers.claude.dispatchArgs.model`; the actual
|
|
@@ -912,7 +933,8 @@ If running inline (Tier 3), execute the review and write artifact.
|
|
|
912
933
|
6. For final scope: explicitly disposition deferred Medium ledger items (fix now vs accept defer)
|
|
913
934
|
7. Write artifact with file:line references and fix guidance
|
|
914
935
|
|
|
915
|
-
**Review artifact template:** (see
|
|
936
|
+
**Review artifact template:** (see
|
|
937
|
+
`${WORKFLOWS_AGENT_PROVIDER_ROOT}/agents/oat-reviewer.md` for full format)
|
|
916
938
|
|
|
917
939
|
Shared ad-hoc companion reference (non-project mode): the `oat-review-provide`
|
|
918
940
|
review artifact template. Independently probe each required `<name>/SKILL.md`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-review-provide-remote
|
|
3
|
-
version: 1.1.
|
|
3
|
+
version: 1.1.1
|
|
4
4
|
description: Use when reviewing a GitHub PR opened on another machine for an active OAT project and posting findings back as a single PR review. Resolves the project from the PR diff, reads project artifacts for mode-aware review, and posts via gh api.
|
|
5
5
|
disable-model-invocation: true
|
|
6
6
|
user-invocable: true
|
|
@@ -116,7 +116,31 @@ Severity conventions:
|
|
|
116
116
|
- `medium`: Meaningful but non-blocking quality/maintainability issue.
|
|
117
117
|
- `minor`: Cosmetic/style/documentation issue.
|
|
118
118
|
|
|
119
|
-
|
|
119
|
+
Before reading the canonical reviewer definition or starting a fresh-child
|
|
120
|
+
fallback, resolve the workflows-owned role locally. Probe candidates in this
|
|
121
|
+
order: `${SKILL_DIR}/../..`, `${HOME}/.agents`, then `<repo-root>/.agents`.
|
|
122
|
+
The loaded candidate is valid only when the exact unsuffixed
|
|
123
|
+
`agents/oat-reviewer.md` is the same-scope canonical file or a symlink whose
|
|
124
|
+
realpath is exactly that canonical file. Treat a missing, broken, escaping,
|
|
125
|
+
copied, transformed, suffixed, or otherwise noncanonical candidate as a miss
|
|
126
|
+
and continue to the next candidate. Bind the first valid root to
|
|
127
|
+
`${WORKFLOWS_AGENT_PROVIDER_ROOT}`; never use ambient discovery.
|
|
128
|
+
|
|
129
|
+
If every candidate misses, name `oat-reviewer`, stop before starting the
|
|
130
|
+
fresh-child fallback, and report
|
|
131
|
+
`oat tools install workflows --scope <user|project>` or
|
|
132
|
+
`oat tools update --pack workflows --scope <user|project>` for the intended
|
|
133
|
+
scope. Canonical role instructions cannot change the immutable target,
|
|
134
|
+
provider, model, effort, or variant fields selected by the resolver. Native
|
|
135
|
+
dispatch with the exact resolver-selected role remains first. Only an explicit
|
|
136
|
+
pre-start native role-selection rejection before a reviewer starts unlocks a
|
|
137
|
+
fresh child that preserves those fields.
|
|
138
|
+
|
|
139
|
+
`file` and `line` are both set (inline finding) or both `null` (reviewer-level
|
|
140
|
+
finding that lands in the top-level body). Checklist + severity model + the
|
|
141
|
+
`StructuredFindings` schema source of truth:
|
|
142
|
+
`${WORKFLOWS_AGENT_PROVIDER_ROOT}/agents/oat-reviewer.md` and `design.md` → Data
|
|
143
|
+
Models → StructuredFindings.
|
|
120
144
|
|
|
121
145
|
## Process
|
|
122
146
|
|
|
@@ -312,7 +336,10 @@ Detection:
|
|
|
312
336
|
|
|
313
337
|
Build the dispatch payload and spawn the reviewer in structured-output mode. This mirrors the tested wrapper at `packages/cli/src/review-remote/reviewer-dispatch.ts` (`buildDispatchPayload` / `dispatchStructuredReview`):
|
|
314
338
|
|
|
315
|
-
- Set `oat_output_mode: structured` in the dispatch payload (the flag
|
|
339
|
+
- Set `oat_output_mode: structured` in the dispatch payload (the flag
|
|
340
|
+
`${WORKFLOWS_AGENT_PROVIDER_ROOT}/agents/oat-reviewer.md` recognizes). In
|
|
341
|
+
this mode the reviewer returns a `StructuredFindings` object in-memory and
|
|
342
|
+
writes NO artifact under `reviews/`.
|
|
316
343
|
- Include the project context (`oat_project`, `oat_review_scope`, `oat_review_head_sha`), the Review Scope metadata block, a pointer to the posted-review-body schema (`design.md` → Data Models → Posted-review-body), and the resolved narrowing range (`<prior_sha>..<HEAD>` or none).
|
|
317
344
|
- If a worktree was resolved in Step 2, include its path so the reviewer reads from the checkout.
|
|
318
345
|
- For Cursor concrete managed dispatch, invoke
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-wave-execute
|
|
3
|
-
version: 1.
|
|
3
|
+
version: 1.9.0
|
|
4
4
|
description: Use when executing a wave of external implementation plans as a wrapper OAT project — scaffolding, drift refresh, parallel worktree groups, briefs, gates, merge choreography, and closeout.
|
|
5
5
|
argument-hint: '<wave-id> [plan-names...] (e.g. wave-2 http-listener-before-indexing ...)'
|
|
6
6
|
disable-model-invocation: false
|
|
@@ -459,7 +459,8 @@ The mechanical caller constructs an `explainer-kit.run-request/v1` document whos
|
|
|
459
459
|
required keys are exactly:
|
|
460
460
|
`schemaVersion, recipe, slug, outputRoot, factBase, mode`. Set `recipe` to
|
|
461
461
|
`{ "id": "program-recap", "version": "1" }`; this is an object with exactly
|
|
462
|
-
`id` and `version`. Set `outputRoot` to
|
|
462
|
+
`id` and `version`. Set `outputRoot` to
|
|
463
|
+
`.oat/repo/reference/explainers/<slug>/`. Bind the
|
|
463
464
|
synthesized fact-base file through `factBase` with the required keys
|
|
464
465
|
`mode, freshnessPolicy`, set `mode` to `"supplied"`, set `freshnessPolicy` to
|
|
465
466
|
`"live-wins"`, and set `path` to that file.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-wave-program
|
|
3
|
-
version: 1.
|
|
3
|
+
version: 1.5.0
|
|
4
4
|
description: Use when decomposing a corpus of external implementation plans into an ordered wave program — coverage inventory, dependency mapping, wave composition, and the durable execution-program artifact that oat-wave-execute consumes and updates.
|
|
5
5
|
argument-hint: '[new|refresh|wave-close <wave-id>] (default: refresh against the current artifact)'
|
|
6
6
|
disable-model-invocation: false
|
|
@@ -152,7 +152,8 @@ The mechanical caller constructs an `explainer-kit.run-request/v1` document whos
|
|
|
152
152
|
required keys are exactly:
|
|
153
153
|
`schemaVersion, recipe, slug, outputRoot, factBase, mode`. Set `recipe` to
|
|
154
154
|
`{ "id": "program-recap", "version": "1" }`; this is an object with exactly
|
|
155
|
-
`id` and `version`. Set `outputRoot` to
|
|
155
|
+
`id` and `version`. Set `outputRoot` to
|
|
156
|
+
`.oat/repo/reference/explainers/<slug>/`. Bind the
|
|
156
157
|
synthesized fact-base file through `factBase` with the required keys
|
|
157
158
|
`mode, freshnessPolicy`, set `mode` to `"supplied"`, set `freshnessPolicy` to
|
|
158
159
|
`"live-wins"`, and set `path` to that file.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/commands/pjm/doctor.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/commands/pjm/doctor.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AA4MlE,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,WAAW,EAAE,CAAC,CA2UxB"}
|
|
@@ -11,9 +11,25 @@ const ALLOWED_TOP_LEVEL_DIRECTORIES = new Set([
|
|
|
11
11
|
'analysis',
|
|
12
12
|
'reviews',
|
|
13
13
|
]);
|
|
14
|
-
//
|
|
15
|
-
//
|
|
16
|
-
|
|
14
|
+
// Human/provider-facing companions to the canonical `AGENTS.md` are benign.
|
|
15
|
+
// Pointer correctness remains the responsibility of `oat instructions
|
|
16
|
+
// validate`; PJM doctor only classifies the repository layout.
|
|
17
|
+
const ALLOWED_TOP_LEVEL_FILES = new Set([
|
|
18
|
+
'AGENTS.md',
|
|
19
|
+
'CLAUDE.md',
|
|
20
|
+
'README.md',
|
|
21
|
+
]);
|
|
22
|
+
// `project-observations.md` is the documented append-only project-log ledger.
|
|
23
|
+
// The remaining names have dedicated migration/duplicate checks below, so the
|
|
24
|
+
// loose-reference classifier must not report them a second time.
|
|
25
|
+
const ALLOWED_REFERENCE_FILES = new Set([
|
|
26
|
+
'AGENTS.md',
|
|
27
|
+
'CLAUDE.md',
|
|
28
|
+
'project-observations.md',
|
|
29
|
+
'decision-record.md',
|
|
30
|
+
'roadmap.md',
|
|
31
|
+
'current-state.md',
|
|
32
|
+
]);
|
|
17
33
|
const LEGACY_MONOLITHS = ['reference/decision-record.md'];
|
|
18
34
|
async function pathExists(path) {
|
|
19
35
|
try {
|
|
@@ -265,10 +281,7 @@ export async function runPjmDoctorChecks(repoRoot, options = {}) {
|
|
|
265
281
|
const referenceEntries = await listDirectoryNames(join(repoRoot, 'reference'));
|
|
266
282
|
const looseReferenceFiles = referenceEntries
|
|
267
283
|
.filter((name) => name.endsWith('.md'))
|
|
268
|
-
.filter((name) => name
|
|
269
|
-
name !== 'decision-record.md' &&
|
|
270
|
-
name !== 'roadmap.md' &&
|
|
271
|
-
name !== 'current-state.md')
|
|
284
|
+
.filter((name) => !ALLOWED_REFERENCE_FILES.has(name))
|
|
272
285
|
.map((name) => `reference/${name}`);
|
|
273
286
|
checks.push({
|
|
274
287
|
name: 'pjm:loose_reference_files',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-agent-toolkit/cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.48",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Open Agent Toolkit CLI",
|
|
6
6
|
"homepage": "https://github.com/voxmedia/open-agent-toolkit/tree/main/packages/cli",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"ora": "^9.0.0",
|
|
35
35
|
"yaml": "2.8.2",
|
|
36
36
|
"zod": "^3.25.76",
|
|
37
|
-
"@open-agent-toolkit/control-plane": "0.2.
|
|
37
|
+
"@open-agent-toolkit/control-plane": "0.2.48"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/node": "^22.10.0",
|