@open-agent-toolkit/cli 0.2.28 → 0.2.29
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 +4 -0
- package/assets/docs/workflows/projects/autonomy.md +25 -0
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-project-autonomous/SKILL.md +17 -1
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +3 -3
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +3 -3
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +3 -3
- package/assets/skills/oat-project-import-plan/SKILL.md +7 -3
- package/assets/skills/oat-project-plan/SKILL.md +6 -3
- package/assets/skills/oat-project-plan-writing/SKILL.md +32 -5
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +3 -3
- package/assets/skills/oat-project-quick-start/SKILL.md +7 -3
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +3 -3
- package/dist/fs/assets.d.ts +1 -0
- package/dist/fs/assets.d.ts.map +1 -1
- package/dist/fs/assets.js +36 -1
- package/dist/release/public-package-contract.d.ts.map +1 -1
- package/dist/release/public-package-contract.js +1 -0
- package/package.json +2 -2
|
@@ -66,6 +66,31 @@ The canonical autonomy contract and exhaustive gate inventory
|
|
|
66
66
|
`references/docs/autonomy-contract.md`) map each prompt to its autonomous
|
|
67
67
|
resolution and provenance.
|
|
68
68
|
|
|
69
|
+
### Dispatch-ladder scope selection
|
|
70
|
+
|
|
71
|
+
An incomplete reusable dispatch ladder is auto-resolvable when an authorized
|
|
72
|
+
adoption-compatible config scope is available. Autonomous planning checks
|
|
73
|
+
config-file existence in this fixed order without prompting or reordering from
|
|
74
|
+
effective value or matrix-cell provenance:
|
|
75
|
+
|
|
76
|
+
1. user config (`~/.oat/config.json`);
|
|
77
|
+
2. repo-local config (`.oat/config.local.json`);
|
|
78
|
+
3. shared config (`.oat/config.json`), only when repository policy already
|
|
79
|
+
authorizes that write.
|
|
80
|
+
|
|
81
|
+
Before writing, planning rejects a candidate that would preserve a
|
|
82
|
+
provider-level scalar in that scope or remain shadowed by one at higher
|
|
83
|
+
precedence. It always tries the next authorized compatible candidate and stops
|
|
84
|
+
without mutation only when none remains.
|
|
85
|
+
|
|
86
|
+
The planner runs exactly one matching `oat config adopt dispatch-matrix`
|
|
87
|
+
command, records file-existence and compatibility evidence plus the selected
|
|
88
|
+
scope, and re-runs dispatch preflight. Existing explicit cells remain unchanged;
|
|
89
|
+
their provenance does not select the persistence scope. No authorized
|
|
90
|
+
compatible scope, or a ladder that remains incomplete after adoption, is still
|
|
91
|
+
a repository-policy boundary. `OAT_NON_INTERACTIVE=1` without
|
|
92
|
+
`OAT_AUTONOMOUS=1` does not select a scope and continues to fail closed.
|
|
93
|
+
|
|
69
94
|
## Review contract
|
|
70
95
|
|
|
71
96
|
Autonomous execution preserves independent review:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-autonomous
|
|
3
|
-
version: 1.0.
|
|
3
|
+
version: 1.0.6
|
|
4
4
|
description: Use when a user explicitly asks to run an OAT project autonomously end-to-end. Activates session-only autonomy, resumes the correct lifecycle phase, and drives the existing OAT skills through final PR or a reported boundary.
|
|
5
5
|
argument-hint: '<goal | project-slug | ticket-ref>'
|
|
6
6
|
disable-model-invocation: true
|
|
@@ -72,6 +72,9 @@ waits.
|
|
|
72
72
|
- Selecting quick or spec-driven mode from the review-density rule.
|
|
73
73
|
- Invoking existing OAT lifecycle and dispatch skills in their required order.
|
|
74
74
|
- Auto-resolving only the gates authorized by the autonomy contract.
|
|
75
|
+
- Selecting the first existing compatible dispatch-ladder config scope through
|
|
76
|
+
the canonical user → local → authorized-shared order and adopting the bundled
|
|
77
|
+
matrix once.
|
|
75
78
|
- Committing and pushing completed phase boundaries, subject to repository
|
|
76
79
|
policy, and reporting explicit boundary stops.
|
|
77
80
|
|
|
@@ -297,6 +300,19 @@ Invoke each lifecycle skill by name and let it own its complete workflow,
|
|
|
297
300
|
artifacts, gates, commits, and state transitions. Re-read project status after
|
|
298
301
|
each return and route to the next earliest incomplete owner.
|
|
299
302
|
|
|
303
|
+
When planning finds an incomplete dispatch ladder, apply the gate inventory's
|
|
304
|
+
autonomous ownership resolution instead of treating ordinary non-interactive
|
|
305
|
+
behavior as authoritative. Check config-file existence in this fixed order:
|
|
306
|
+
user config, repo-local config, authorized shared config. Do not prompt or
|
|
307
|
+
reorder candidates from effective value or matrix-cell provenance. Before
|
|
308
|
+
writing, test each existing candidate in order, skip any that preserves a
|
|
309
|
+
provider scalar or is shadowed by one at higher precedence, and block without
|
|
310
|
+
mutation only when no authorized adoption-compatible scope remains. Existing
|
|
311
|
+
explicit matrix cells are preserved by adoption; their provenance does not
|
|
312
|
+
choose the persistence scope. Run exactly one matching
|
|
313
|
+
`oat config adopt dispatch-matrix` command and re-run the reviewer preflight.
|
|
314
|
+
Block when the ladder remains incomplete after adoption.
|
|
315
|
+
|
|
300
316
|
At every required artifact or code review:
|
|
301
317
|
|
|
302
318
|
1. Resolve the route before launch through
|
|
@@ -110,7 +110,7 @@ remains.
|
|
|
110
110
|
| QS-05 | `oat-project-quick-start` | Requirements gate | Confirm, add a minor requirement, or redirect scope | Use the existing non-interactive auto-confirm path; contradictory or materially incomplete requirements stop | `auto-resolve` / `boundary:product-judgment` | Requirements-gate note in discovery/plan handoff |
|
|
111
111
|
| QS-06 | `oat-project-quick-start` | Lightweight-design mode | Choose collaborative or draft | Use the existing non-interactive draft-and-review path | `auto-resolve` | `design.md` non-interactive banner |
|
|
112
112
|
| QS-07 | `oat-project-quick-start` | Collaborative section approval | Approve or revise each section | Unreachable under the autonomous draft path; if explicitly preselected collaborative mode is encountered, switch to draft before authoring | `auto-resolve` | Design mode and review record |
|
|
113
|
-
| QS-08 | `oat-project-quick-start` | Dispatch-ladder
|
|
113
|
+
| QS-08 | `oat-project-quick-start` | Dispatch-ladder scope | Choose shared, local, user, or no adoption | Check existing user, local, then authorized shared config in that fixed order without prompting or provenance-based reordering; skip scalar-blocked candidates, stop before writing only if none is compatible, then adopt once and re-run preflight | `auto-resolve` / `boundary:repository-policy-approval` | File existence, compatibility evidence, selected scope, and recheck |
|
|
114
114
|
| QS-09 | `oat-project-quick-start` | Project dispatch policy | Choose a named ceiling, uncapped, inherit, or unresolved | Preserve an explicit/configured value; unresolved non-interactive state blocks | `boundary:repository-policy-approval` | `state.md` policy or resolver diagnostic |
|
|
115
115
|
| QS-10 | `oat-project-quick-start` | Optional phase-gate setup | Choose all, selected, or disabled | Use the shared non-interactive contract: leave absent and disabled unless an explicit value already exists | `auto-resolve` | Phase-gate setup status |
|
|
116
116
|
| QS-11 | `oat-project-quick-start` | Plan artifact-review findings | Accept offered Medium/Minor fixes | Apply in-bundle, unambiguous fixes and re-review; preserve residuals and stop on unresolved Critical or material ambiguity | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and residual-finding note |
|
|
@@ -135,7 +135,7 @@ remains.
|
|
|
135
135
|
| PLAN-02 | `oat-project-plan` | Missing active project | Ask for project name | Use only an explicitly supplied or valid active project; otherwise stop | `boundary:product-judgment` | Resolved project path |
|
|
136
136
|
| PLAN-03 | `oat-project-plan` | Incomplete design | Ask user to finish design | Stop and route to design | `boundary:product-judgment` | Design-readiness diagnostic |
|
|
137
137
|
| PLAN-04 | `oat-project-plan` | Existing draft plan | Resume, view, or overwrite | Resume in place; never overwrite autonomously | `auto-resolve` | Plan continuation note |
|
|
138
|
-
| PLAN-05 | `oat-project-plan` | Dispatch-ladder
|
|
138
|
+
| PLAN-05 | `oat-project-plan` | Dispatch-ladder scope | Choose persistence scope | Check existing user, local, then authorized shared config in that fixed order without prompting or provenance-based reordering; skip scalar-blocked candidates, stop before writing only if none is compatible, then adopt once and re-run preflight | `auto-resolve` / `boundary:repository-policy-approval` | File existence, compatibility evidence, selected scope, and recheck |
|
|
139
139
|
| PLAN-06 | `oat-project-plan` | Project dispatch policy | Choose a runnable policy | Preserve explicit/configured policy; unresolved non-interactive state blocks | `boundary:repository-policy-approval` | `state.md` policy or resolver diagnostic |
|
|
140
140
|
| PLAN-07 | `oat-project-plan` | Plan breakdown confirmation | Confirm tasks or request changes | Complete the independent plan artifact-review loop, apply unambiguous fixes, and confirm only a clean executable plan | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row |
|
|
141
141
|
| PLAN-08 | `oat-project-plan` | Optional phase-gate setup | Choose all, selected, or disabled | Use the shared non-interactive contract: preserve explicit state or leave disabled | `auto-resolve` | Phase-gate setup status |
|
|
@@ -147,7 +147,7 @@ remains.
|
|
|
147
147
|
| IMPORT-02 | `oat-project-import-plan` | Missing project | Ask for project identity | Use explicit invocation context; otherwise stop rather than guess | `boundary:product-judgment` | Resolved project path |
|
|
148
148
|
| IMPORT-03 | `oat-project-import-plan` | Source plan selection or extension exception | Choose a candidate/path or confirm nonstandard Markdown | Use an explicit unique source; ambiguity or nonstandard content stops | `auto-resolve` / `boundary:product-judgment` | Import reference metadata |
|
|
149
149
|
| IMPORT-04 | `oat-project-import-plan` | Existing source snapshot | Confirm overwrite | Never overwrite; create the documented timestamped copy | `auto-resolve` | Imported reference path |
|
|
150
|
-
| IMPORT-05 | `oat-project-import-plan` | Dispatch-ladder
|
|
150
|
+
| IMPORT-05 | `oat-project-import-plan` | Dispatch-ladder scope | Choose persistence scope | Check existing user, local, then authorized shared config in that fixed order without prompting or provenance-based reordering; skip scalar-blocked candidates, stop before writing only if none is compatible, then adopt once and re-run preflight | `auto-resolve` / `boundary:repository-policy-approval` | File existence, compatibility evidence, selected scope, and recheck |
|
|
151
151
|
| IMPORT-06 | `oat-project-import-plan` | Project dispatch policy | Choose a runnable policy | Preserve explicit/configured policy; unresolved non-interactive state blocks | `boundary:repository-policy-approval` | `state.md` policy or resolver diagnostic |
|
|
152
152
|
| IMPORT-07 | `oat-project-import-plan` | Optional phase-gate setup | Choose all, selected, or disabled | Preserve explicit imported state; otherwise use the shared non-interactive disabled behavior | `auto-resolve` | Phase-gate setup status |
|
|
153
153
|
| IMPORT-08 | `oat-project-import-plan` | Import-aware artifact-review findings | Accept offered Medium/Minor fixes | Apply only unambiguous canonicalization fixes; never rewrite source intent; unresolved Critical or ambiguity stops | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and import disposition |
|
|
@@ -110,7 +110,7 @@ remains.
|
|
|
110
110
|
| QS-05 | `oat-project-quick-start` | Requirements gate | Confirm, add a minor requirement, or redirect scope | Use the existing non-interactive auto-confirm path; contradictory or materially incomplete requirements stop | `auto-resolve` / `boundary:product-judgment` | Requirements-gate note in discovery/plan handoff |
|
|
111
111
|
| QS-06 | `oat-project-quick-start` | Lightweight-design mode | Choose collaborative or draft | Use the existing non-interactive draft-and-review path | `auto-resolve` | `design.md` non-interactive banner |
|
|
112
112
|
| QS-07 | `oat-project-quick-start` | Collaborative section approval | Approve or revise each section | Unreachable under the autonomous draft path; if explicitly preselected collaborative mode is encountered, switch to draft before authoring | `auto-resolve` | Design mode and review record |
|
|
113
|
-
| QS-08 | `oat-project-quick-start` | Dispatch-ladder
|
|
113
|
+
| QS-08 | `oat-project-quick-start` | Dispatch-ladder scope | Choose shared, local, user, or no adoption | Check existing user, local, then authorized shared config in that fixed order without prompting or provenance-based reordering; skip scalar-blocked candidates, stop before writing only if none is compatible, then adopt once and re-run preflight | `auto-resolve` / `boundary:repository-policy-approval` | File existence, compatibility evidence, selected scope, and recheck |
|
|
114
114
|
| QS-09 | `oat-project-quick-start` | Project dispatch policy | Choose a named ceiling, uncapped, inherit, or unresolved | Preserve an explicit/configured value; unresolved non-interactive state blocks | `boundary:repository-policy-approval` | `state.md` policy or resolver diagnostic |
|
|
115
115
|
| QS-10 | `oat-project-quick-start` | Optional phase-gate setup | Choose all, selected, or disabled | Use the shared non-interactive contract: leave absent and disabled unless an explicit value already exists | `auto-resolve` | Phase-gate setup status |
|
|
116
116
|
| QS-11 | `oat-project-quick-start` | Plan artifact-review findings | Accept offered Medium/Minor fixes | Apply in-bundle, unambiguous fixes and re-review; preserve residuals and stop on unresolved Critical or material ambiguity | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and residual-finding note |
|
|
@@ -135,7 +135,7 @@ remains.
|
|
|
135
135
|
| PLAN-02 | `oat-project-plan` | Missing active project | Ask for project name | Use only an explicitly supplied or valid active project; otherwise stop | `boundary:product-judgment` | Resolved project path |
|
|
136
136
|
| PLAN-03 | `oat-project-plan` | Incomplete design | Ask user to finish design | Stop and route to design | `boundary:product-judgment` | Design-readiness diagnostic |
|
|
137
137
|
| PLAN-04 | `oat-project-plan` | Existing draft plan | Resume, view, or overwrite | Resume in place; never overwrite autonomously | `auto-resolve` | Plan continuation note |
|
|
138
|
-
| PLAN-05 | `oat-project-plan` | Dispatch-ladder
|
|
138
|
+
| PLAN-05 | `oat-project-plan` | Dispatch-ladder scope | Choose persistence scope | Check existing user, local, then authorized shared config in that fixed order without prompting or provenance-based reordering; skip scalar-blocked candidates, stop before writing only if none is compatible, then adopt once and re-run preflight | `auto-resolve` / `boundary:repository-policy-approval` | File existence, compatibility evidence, selected scope, and recheck |
|
|
139
139
|
| PLAN-06 | `oat-project-plan` | Project dispatch policy | Choose a runnable policy | Preserve explicit/configured policy; unresolved non-interactive state blocks | `boundary:repository-policy-approval` | `state.md` policy or resolver diagnostic |
|
|
140
140
|
| PLAN-07 | `oat-project-plan` | Plan breakdown confirmation | Confirm tasks or request changes | Complete the independent plan artifact-review loop, apply unambiguous fixes, and confirm only a clean executable plan | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row |
|
|
141
141
|
| PLAN-08 | `oat-project-plan` | Optional phase-gate setup | Choose all, selected, or disabled | Use the shared non-interactive contract: preserve explicit state or leave disabled | `auto-resolve` | Phase-gate setup status |
|
|
@@ -147,7 +147,7 @@ remains.
|
|
|
147
147
|
| IMPORT-02 | `oat-project-import-plan` | Missing project | Ask for project identity | Use explicit invocation context; otherwise stop rather than guess | `boundary:product-judgment` | Resolved project path |
|
|
148
148
|
| IMPORT-03 | `oat-project-import-plan` | Source plan selection or extension exception | Choose a candidate/path or confirm nonstandard Markdown | Use an explicit unique source; ambiguity or nonstandard content stops | `auto-resolve` / `boundary:product-judgment` | Import reference metadata |
|
|
149
149
|
| IMPORT-04 | `oat-project-import-plan` | Existing source snapshot | Confirm overwrite | Never overwrite; create the documented timestamped copy | `auto-resolve` | Imported reference path |
|
|
150
|
-
| IMPORT-05 | `oat-project-import-plan` | Dispatch-ladder
|
|
150
|
+
| IMPORT-05 | `oat-project-import-plan` | Dispatch-ladder scope | Choose persistence scope | Check existing user, local, then authorized shared config in that fixed order without prompting or provenance-based reordering; skip scalar-blocked candidates, stop before writing only if none is compatible, then adopt once and re-run preflight | `auto-resolve` / `boundary:repository-policy-approval` | File existence, compatibility evidence, selected scope, and recheck |
|
|
151
151
|
| IMPORT-06 | `oat-project-import-plan` | Project dispatch policy | Choose a runnable policy | Preserve explicit/configured policy; unresolved non-interactive state blocks | `boundary:repository-policy-approval` | `state.md` policy or resolver diagnostic |
|
|
152
152
|
| IMPORT-07 | `oat-project-import-plan` | Optional phase-gate setup | Choose all, selected, or disabled | Preserve explicit imported state; otherwise use the shared non-interactive disabled behavior | `auto-resolve` | Phase-gate setup status |
|
|
153
153
|
| IMPORT-08 | `oat-project-import-plan` | Import-aware artifact-review findings | Accept offered Medium/Minor fixes | Apply only unambiguous canonicalization fixes; never rewrite source intent; unresolved Critical or ambiguity stops | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and import disposition |
|
|
@@ -110,7 +110,7 @@ remains.
|
|
|
110
110
|
| QS-05 | `oat-project-quick-start` | Requirements gate | Confirm, add a minor requirement, or redirect scope | Use the existing non-interactive auto-confirm path; contradictory or materially incomplete requirements stop | `auto-resolve` / `boundary:product-judgment` | Requirements-gate note in discovery/plan handoff |
|
|
111
111
|
| QS-06 | `oat-project-quick-start` | Lightweight-design mode | Choose collaborative or draft | Use the existing non-interactive draft-and-review path | `auto-resolve` | `design.md` non-interactive banner |
|
|
112
112
|
| QS-07 | `oat-project-quick-start` | Collaborative section approval | Approve or revise each section | Unreachable under the autonomous draft path; if explicitly preselected collaborative mode is encountered, switch to draft before authoring | `auto-resolve` | Design mode and review record |
|
|
113
|
-
| QS-08 | `oat-project-quick-start` | Dispatch-ladder
|
|
113
|
+
| QS-08 | `oat-project-quick-start` | Dispatch-ladder scope | Choose shared, local, user, or no adoption | Check existing user, local, then authorized shared config in that fixed order without prompting or provenance-based reordering; skip scalar-blocked candidates, stop before writing only if none is compatible, then adopt once and re-run preflight | `auto-resolve` / `boundary:repository-policy-approval` | File existence, compatibility evidence, selected scope, and recheck |
|
|
114
114
|
| QS-09 | `oat-project-quick-start` | Project dispatch policy | Choose a named ceiling, uncapped, inherit, or unresolved | Preserve an explicit/configured value; unresolved non-interactive state blocks | `boundary:repository-policy-approval` | `state.md` policy or resolver diagnostic |
|
|
115
115
|
| QS-10 | `oat-project-quick-start` | Optional phase-gate setup | Choose all, selected, or disabled | Use the shared non-interactive contract: leave absent and disabled unless an explicit value already exists | `auto-resolve` | Phase-gate setup status |
|
|
116
116
|
| QS-11 | `oat-project-quick-start` | Plan artifact-review findings | Accept offered Medium/Minor fixes | Apply in-bundle, unambiguous fixes and re-review; preserve residuals and stop on unresolved Critical or material ambiguity | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and residual-finding note |
|
|
@@ -135,7 +135,7 @@ remains.
|
|
|
135
135
|
| PLAN-02 | `oat-project-plan` | Missing active project | Ask for project name | Use only an explicitly supplied or valid active project; otherwise stop | `boundary:product-judgment` | Resolved project path |
|
|
136
136
|
| PLAN-03 | `oat-project-plan` | Incomplete design | Ask user to finish design | Stop and route to design | `boundary:product-judgment` | Design-readiness diagnostic |
|
|
137
137
|
| PLAN-04 | `oat-project-plan` | Existing draft plan | Resume, view, or overwrite | Resume in place; never overwrite autonomously | `auto-resolve` | Plan continuation note |
|
|
138
|
-
| PLAN-05 | `oat-project-plan` | Dispatch-ladder
|
|
138
|
+
| PLAN-05 | `oat-project-plan` | Dispatch-ladder scope | Choose persistence scope | Check existing user, local, then authorized shared config in that fixed order without prompting or provenance-based reordering; skip scalar-blocked candidates, stop before writing only if none is compatible, then adopt once and re-run preflight | `auto-resolve` / `boundary:repository-policy-approval` | File existence, compatibility evidence, selected scope, and recheck |
|
|
139
139
|
| PLAN-06 | `oat-project-plan` | Project dispatch policy | Choose a runnable policy | Preserve explicit/configured policy; unresolved non-interactive state blocks | `boundary:repository-policy-approval` | `state.md` policy or resolver diagnostic |
|
|
140
140
|
| PLAN-07 | `oat-project-plan` | Plan breakdown confirmation | Confirm tasks or request changes | Complete the independent plan artifact-review loop, apply unambiguous fixes, and confirm only a clean executable plan | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row |
|
|
141
141
|
| PLAN-08 | `oat-project-plan` | Optional phase-gate setup | Choose all, selected, or disabled | Use the shared non-interactive contract: preserve explicit state or leave disabled | `auto-resolve` | Phase-gate setup status |
|
|
@@ -147,7 +147,7 @@ remains.
|
|
|
147
147
|
| IMPORT-02 | `oat-project-import-plan` | Missing project | Ask for project identity | Use explicit invocation context; otherwise stop rather than guess | `boundary:product-judgment` | Resolved project path |
|
|
148
148
|
| IMPORT-03 | `oat-project-import-plan` | Source plan selection or extension exception | Choose a candidate/path or confirm nonstandard Markdown | Use an explicit unique source; ambiguity or nonstandard content stops | `auto-resolve` / `boundary:product-judgment` | Import reference metadata |
|
|
149
149
|
| IMPORT-04 | `oat-project-import-plan` | Existing source snapshot | Confirm overwrite | Never overwrite; create the documented timestamped copy | `auto-resolve` | Imported reference path |
|
|
150
|
-
| IMPORT-05 | `oat-project-import-plan` | Dispatch-ladder
|
|
150
|
+
| IMPORT-05 | `oat-project-import-plan` | Dispatch-ladder scope | Choose persistence scope | Check existing user, local, then authorized shared config in that fixed order without prompting or provenance-based reordering; skip scalar-blocked candidates, stop before writing only if none is compatible, then adopt once and re-run preflight | `auto-resolve` / `boundary:repository-policy-approval` | File existence, compatibility evidence, selected scope, and recheck |
|
|
151
151
|
| IMPORT-06 | `oat-project-import-plan` | Project dispatch policy | Choose a runnable policy | Preserve explicit/configured policy; unresolved non-interactive state blocks | `boundary:repository-policy-approval` | `state.md` policy or resolver diagnostic |
|
|
152
152
|
| IMPORT-07 | `oat-project-import-plan` | Optional phase-gate setup | Choose all, selected, or disabled | Preserve explicit imported state; otherwise use the shared non-interactive disabled behavior | `auto-resolve` | Phase-gate setup status |
|
|
153
153
|
| IMPORT-08 | `oat-project-import-plan` | Import-aware artifact-review findings | Accept offered Medium/Minor fixes | Apply only unambiguous canonicalization fixes; never rewrite source intent; unresolved Critical or ambiguity stops | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and import disposition |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-import-plan
|
|
3
|
-
version: 1.4.
|
|
3
|
+
version: 1.4.9
|
|
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
|
|
@@ -257,8 +257,12 @@ oat config adopt dispatch-matrix --user
|
|
|
257
257
|
|
|
258
258
|
Adoption preserves explicit cells. Re-run the resolver and completeness check.
|
|
259
259
|
An incomplete or missing ladder after adoption blocks readiness; do not
|
|
260
|
-
overwrite explicit cells or infer provider defaults.
|
|
261
|
-
|
|
260
|
+
overwrite explicit cells or infer provider defaults. Ordinary non-interactive
|
|
261
|
+
import blocks on a missing or incomplete ladder. When `OAT_AUTONOMOUS=1`,
|
|
262
|
+
follow the shared contract's deterministic user-first existing-scope
|
|
263
|
+
resolution, run exactly one adoption against the selected config scope, and
|
|
264
|
+
block only if no authorized compatible scope exists or the post-adoption ladder
|
|
265
|
+
remains incomplete.
|
|
262
266
|
|
|
263
267
|
The selected scope owns only reusable ladders. A project-specific active policy
|
|
264
268
|
or ceiling must not be written to user `~/.oat/config.json`. Resolve or ask
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-plan
|
|
3
|
-
version: 1.4.
|
|
3
|
+
version: 1.4.4
|
|
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
|
|
@@ -371,8 +371,11 @@ oat config adopt dispatch-matrix --user
|
|
|
371
371
|
Adoption fills missing cells but preserves explicit values. Re-run the resolver
|
|
372
372
|
and the completeness check. An incomplete or missing ladder after adoption
|
|
373
373
|
blocks readiness; do not overwrite explicit cells, infer a fallback, or mark
|
|
374
|
-
the plan ready.
|
|
375
|
-
ladder.
|
|
374
|
+
the plan ready. Ordinary non-interactive setup blocks on a missing or
|
|
375
|
+
incomplete ladder. When `OAT_AUTONOMOUS=1`, follow the shared contract's
|
|
376
|
+
deterministic user-first existing-scope resolution, run exactly one adoption
|
|
377
|
+
against the selected config scope, and block only if no authorized compatible
|
|
378
|
+
scope exists or the post-adoption ladder remains incomplete.
|
|
376
379
|
|
|
377
380
|
The owning scope stores only the reusable ladders. A project-specific active
|
|
378
381
|
policy or ceiling must not be written to user `~/.oat/config.json`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-plan-writing
|
|
3
|
-
version: 1.2.
|
|
3
|
+
version: 1.2.18
|
|
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
|
|
@@ -102,7 +102,8 @@ asking to write anything:
|
|
|
102
102
|
| Claude | haiku, sonnet | sonnet | opus | fable |
|
|
103
103
|
| Cursor (opaque) | `gpt-5.6-luna-low`, `gpt-5.6-luna-medium`, `gpt-5.6-luna-high` | `gpt-5.6-luna-xhigh`, `gpt-5.6-terra-low`, `gpt-5.6-terra-medium`, `gpt-5.6-terra-high`, `gpt-5.6-terra-xhigh` | `gpt-5.6-sol-low`, `gpt-5.6-sol-medium`, `gpt-5.6-sol-high` | `gpt-5.6-sol-xhigh`, `gpt-5.6-sol-max` |
|
|
104
104
|
|
|
105
|
-
|
|
105
|
+
In an interactive run, ask the user to select the owning scope explicitly
|
|
106
|
+
before any adoption write:
|
|
106
107
|
|
|
107
108
|
1. **Shared repository** - team-owned `.oat/config.json`; run
|
|
108
109
|
`oat config adopt dispatch-matrix --shared`.
|
|
@@ -118,13 +119,39 @@ project's named ceiling is a separate project-state constraint. A
|
|
|
118
119
|
project-specific active policy or ceiling must not be written to user
|
|
119
120
|
`~/.oat/config.json`.
|
|
120
121
|
|
|
122
|
+
In an autonomous run (`OAT_AUTONOMOUS=1`), resolve ownership without prompting:
|
|
123
|
+
|
|
124
|
+
1. Check config-file existence in this fixed order: user config
|
|
125
|
+
`~/.oat/config.json`, repo-local config `.oat/config.local.json`, then shared
|
|
126
|
+
config `.oat/config.json`. Consider shared only when repository-policy
|
|
127
|
+
authority already permits that write. Do not ask which scope to use and do
|
|
128
|
+
not reorder candidates from effective value or matrix-cell provenance.
|
|
129
|
+
2. Before selecting a scope, inspect only the raw dispatch-ceiling shapes in
|
|
130
|
+
that scope and higher-precedence scopes. The scope is adoption-compatible
|
|
131
|
+
only when the recommendation can fill the preflight's missing provider/tier
|
|
132
|
+
cells without preserving a provider-level scalar in the selected scope or
|
|
133
|
+
being shadowed by one at higher precedence. A lower-precedence scalar is not
|
|
134
|
+
an obstacle when the selected scope writes the provider matrix above it.
|
|
135
|
+
3. Select the first existing adoption-compatible authorized scope. If none
|
|
136
|
+
exists, name
|
|
137
|
+
the conflicting scalar paths and report the repository-policy boundary
|
|
138
|
+
before any write.
|
|
139
|
+
4. Run exactly one matching adoption command, record the file-existence and
|
|
140
|
+
compatibility evidence plus the selected scope, then re-run the reviewer
|
|
141
|
+
preflight resolver.
|
|
142
|
+
|
|
143
|
+
This ownership lookup may inspect file existence and raw config only for the
|
|
144
|
+
scalar compatibility check above. It must not hand-merge config values or
|
|
145
|
+
replace the effective resolver boundary. Existing explicit matrix cells remain
|
|
146
|
+
preserved by adoption; their provenance does not choose the persistence scope.
|
|
147
|
+
In ordinary non-interactive mode without `OAT_AUTONOMOUS=1`, an incomplete
|
|
148
|
+
ladder or missing effective cells block readiness rather than choosing a scope.
|
|
149
|
+
|
|
121
150
|
Adoption preserves explicit cells. After adoption, re-run the reviewer
|
|
122
151
|
preflight resolver and re-check `ladderCompleteness.complete` and
|
|
123
152
|
`ladderCompleteness.missingCells`. If preserved legacy or partial cells still
|
|
124
153
|
leave effective cells incomplete or missing, identify those cells and block;
|
|
125
|
-
do not overwrite, infer, or mark the plan implementation-ready.
|
|
126
|
-
non-interactive mode, incomplete or missing effective cells block readiness
|
|
127
|
-
without choosing an ownership scope.
|
|
154
|
+
do not overwrite, infer, or mark the plan implementation-ready.
|
|
128
155
|
|
|
129
156
|
### Reviewer Ceiling Contract
|
|
130
157
|
|
|
@@ -110,7 +110,7 @@ remains.
|
|
|
110
110
|
| QS-05 | `oat-project-quick-start` | Requirements gate | Confirm, add a minor requirement, or redirect scope | Use the existing non-interactive auto-confirm path; contradictory or materially incomplete requirements stop | `auto-resolve` / `boundary:product-judgment` | Requirements-gate note in discovery/plan handoff |
|
|
111
111
|
| QS-06 | `oat-project-quick-start` | Lightweight-design mode | Choose collaborative or draft | Use the existing non-interactive draft-and-review path | `auto-resolve` | `design.md` non-interactive banner |
|
|
112
112
|
| QS-07 | `oat-project-quick-start` | Collaborative section approval | Approve or revise each section | Unreachable under the autonomous draft path; if explicitly preselected collaborative mode is encountered, switch to draft before authoring | `auto-resolve` | Design mode and review record |
|
|
113
|
-
| QS-08 | `oat-project-quick-start` | Dispatch-ladder
|
|
113
|
+
| QS-08 | `oat-project-quick-start` | Dispatch-ladder scope | Choose shared, local, user, or no adoption | Check existing user, local, then authorized shared config in that fixed order without prompting or provenance-based reordering; skip scalar-blocked candidates, stop before writing only if none is compatible, then adopt once and re-run preflight | `auto-resolve` / `boundary:repository-policy-approval` | File existence, compatibility evidence, selected scope, and recheck |
|
|
114
114
|
| QS-09 | `oat-project-quick-start` | Project dispatch policy | Choose a named ceiling, uncapped, inherit, or unresolved | Preserve an explicit/configured value; unresolved non-interactive state blocks | `boundary:repository-policy-approval` | `state.md` policy or resolver diagnostic |
|
|
115
115
|
| QS-10 | `oat-project-quick-start` | Optional phase-gate setup | Choose all, selected, or disabled | Use the shared non-interactive contract: leave absent and disabled unless an explicit value already exists | `auto-resolve` | Phase-gate setup status |
|
|
116
116
|
| QS-11 | `oat-project-quick-start` | Plan artifact-review findings | Accept offered Medium/Minor fixes | Apply in-bundle, unambiguous fixes and re-review; preserve residuals and stop on unresolved Critical or material ambiguity | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and residual-finding note |
|
|
@@ -135,7 +135,7 @@ remains.
|
|
|
135
135
|
| PLAN-02 | `oat-project-plan` | Missing active project | Ask for project name | Use only an explicitly supplied or valid active project; otherwise stop | `boundary:product-judgment` | Resolved project path |
|
|
136
136
|
| PLAN-03 | `oat-project-plan` | Incomplete design | Ask user to finish design | Stop and route to design | `boundary:product-judgment` | Design-readiness diagnostic |
|
|
137
137
|
| PLAN-04 | `oat-project-plan` | Existing draft plan | Resume, view, or overwrite | Resume in place; never overwrite autonomously | `auto-resolve` | Plan continuation note |
|
|
138
|
-
| PLAN-05 | `oat-project-plan` | Dispatch-ladder
|
|
138
|
+
| PLAN-05 | `oat-project-plan` | Dispatch-ladder scope | Choose persistence scope | Check existing user, local, then authorized shared config in that fixed order without prompting or provenance-based reordering; skip scalar-blocked candidates, stop before writing only if none is compatible, then adopt once and re-run preflight | `auto-resolve` / `boundary:repository-policy-approval` | File existence, compatibility evidence, selected scope, and recheck |
|
|
139
139
|
| PLAN-06 | `oat-project-plan` | Project dispatch policy | Choose a runnable policy | Preserve explicit/configured policy; unresolved non-interactive state blocks | `boundary:repository-policy-approval` | `state.md` policy or resolver diagnostic |
|
|
140
140
|
| PLAN-07 | `oat-project-plan` | Plan breakdown confirmation | Confirm tasks or request changes | Complete the independent plan artifact-review loop, apply unambiguous fixes, and confirm only a clean executable plan | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row |
|
|
141
141
|
| PLAN-08 | `oat-project-plan` | Optional phase-gate setup | Choose all, selected, or disabled | Use the shared non-interactive contract: preserve explicit state or leave disabled | `auto-resolve` | Phase-gate setup status |
|
|
@@ -147,7 +147,7 @@ remains.
|
|
|
147
147
|
| IMPORT-02 | `oat-project-import-plan` | Missing project | Ask for project identity | Use explicit invocation context; otherwise stop rather than guess | `boundary:product-judgment` | Resolved project path |
|
|
148
148
|
| IMPORT-03 | `oat-project-import-plan` | Source plan selection or extension exception | Choose a candidate/path or confirm nonstandard Markdown | Use an explicit unique source; ambiguity or nonstandard content stops | `auto-resolve` / `boundary:product-judgment` | Import reference metadata |
|
|
149
149
|
| IMPORT-04 | `oat-project-import-plan` | Existing source snapshot | Confirm overwrite | Never overwrite; create the documented timestamped copy | `auto-resolve` | Imported reference path |
|
|
150
|
-
| IMPORT-05 | `oat-project-import-plan` | Dispatch-ladder
|
|
150
|
+
| IMPORT-05 | `oat-project-import-plan` | Dispatch-ladder scope | Choose persistence scope | Check existing user, local, then authorized shared config in that fixed order without prompting or provenance-based reordering; skip scalar-blocked candidates, stop before writing only if none is compatible, then adopt once and re-run preflight | `auto-resolve` / `boundary:repository-policy-approval` | File existence, compatibility evidence, selected scope, and recheck |
|
|
151
151
|
| IMPORT-06 | `oat-project-import-plan` | Project dispatch policy | Choose a runnable policy | Preserve explicit/configured policy; unresolved non-interactive state blocks | `boundary:repository-policy-approval` | `state.md` policy or resolver diagnostic |
|
|
152
152
|
| IMPORT-07 | `oat-project-import-plan` | Optional phase-gate setup | Choose all, selected, or disabled | Preserve explicit imported state; otherwise use the shared non-interactive disabled behavior | `auto-resolve` | Phase-gate setup status |
|
|
153
153
|
| IMPORT-08 | `oat-project-import-plan` | Import-aware artifact-review findings | Accept offered Medium/Minor fixes | Apply only unambiguous canonicalization fixes; never rewrite source intent; unresolved Critical or ambiguity stops | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and import disposition |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-quick-start
|
|
3
|
-
version: 2.3.
|
|
3
|
+
version: 2.3.5
|
|
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
|
|
@@ -556,8 +556,12 @@ The selected scope owns only the reusable ladders. A project-specific active
|
|
|
556
556
|
policy or ceiling must not be written to user `~/.oat/config.json`.
|
|
557
557
|
Adoption preserves explicit cells, so re-run the resolver and completeness
|
|
558
558
|
check. An incomplete or missing ladder after adoption blocks readiness; do not
|
|
559
|
-
overwrite explicit cells or silently infer a fallback.
|
|
560
|
-
|
|
559
|
+
overwrite explicit cells or silently infer a fallback. Ordinary non-interactive
|
|
560
|
+
setup blocks on a missing or incomplete ladder. When `OAT_AUTONOMOUS=1`, follow
|
|
561
|
+
the shared contract's deterministic user-first existing-scope resolution, run
|
|
562
|
+
exactly one adoption against the selected config scope, and block only if no
|
|
563
|
+
authorized compatible scope exists or the post-adoption ladder remains
|
|
564
|
+
incomplete.
|
|
561
565
|
|
|
562
566
|
Then resolve the named ceiling in this order:
|
|
563
567
|
|
|
@@ -110,7 +110,7 @@ remains.
|
|
|
110
110
|
| QS-05 | `oat-project-quick-start` | Requirements gate | Confirm, add a minor requirement, or redirect scope | Use the existing non-interactive auto-confirm path; contradictory or materially incomplete requirements stop | `auto-resolve` / `boundary:product-judgment` | Requirements-gate note in discovery/plan handoff |
|
|
111
111
|
| QS-06 | `oat-project-quick-start` | Lightweight-design mode | Choose collaborative or draft | Use the existing non-interactive draft-and-review path | `auto-resolve` | `design.md` non-interactive banner |
|
|
112
112
|
| QS-07 | `oat-project-quick-start` | Collaborative section approval | Approve or revise each section | Unreachable under the autonomous draft path; if explicitly preselected collaborative mode is encountered, switch to draft before authoring | `auto-resolve` | Design mode and review record |
|
|
113
|
-
| QS-08 | `oat-project-quick-start` | Dispatch-ladder
|
|
113
|
+
| QS-08 | `oat-project-quick-start` | Dispatch-ladder scope | Choose shared, local, user, or no adoption | Check existing user, local, then authorized shared config in that fixed order without prompting or provenance-based reordering; skip scalar-blocked candidates, stop before writing only if none is compatible, then adopt once and re-run preflight | `auto-resolve` / `boundary:repository-policy-approval` | File existence, compatibility evidence, selected scope, and recheck |
|
|
114
114
|
| QS-09 | `oat-project-quick-start` | Project dispatch policy | Choose a named ceiling, uncapped, inherit, or unresolved | Preserve an explicit/configured value; unresolved non-interactive state blocks | `boundary:repository-policy-approval` | `state.md` policy or resolver diagnostic |
|
|
115
115
|
| QS-10 | `oat-project-quick-start` | Optional phase-gate setup | Choose all, selected, or disabled | Use the shared non-interactive contract: leave absent and disabled unless an explicit value already exists | `auto-resolve` | Phase-gate setup status |
|
|
116
116
|
| QS-11 | `oat-project-quick-start` | Plan artifact-review findings | Accept offered Medium/Minor fixes | Apply in-bundle, unambiguous fixes and re-review; preserve residuals and stop on unresolved Critical or material ambiguity | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and residual-finding note |
|
|
@@ -135,7 +135,7 @@ remains.
|
|
|
135
135
|
| PLAN-02 | `oat-project-plan` | Missing active project | Ask for project name | Use only an explicitly supplied or valid active project; otherwise stop | `boundary:product-judgment` | Resolved project path |
|
|
136
136
|
| PLAN-03 | `oat-project-plan` | Incomplete design | Ask user to finish design | Stop and route to design | `boundary:product-judgment` | Design-readiness diagnostic |
|
|
137
137
|
| PLAN-04 | `oat-project-plan` | Existing draft plan | Resume, view, or overwrite | Resume in place; never overwrite autonomously | `auto-resolve` | Plan continuation note |
|
|
138
|
-
| PLAN-05 | `oat-project-plan` | Dispatch-ladder
|
|
138
|
+
| PLAN-05 | `oat-project-plan` | Dispatch-ladder scope | Choose persistence scope | Check existing user, local, then authorized shared config in that fixed order without prompting or provenance-based reordering; skip scalar-blocked candidates, stop before writing only if none is compatible, then adopt once and re-run preflight | `auto-resolve` / `boundary:repository-policy-approval` | File existence, compatibility evidence, selected scope, and recheck |
|
|
139
139
|
| PLAN-06 | `oat-project-plan` | Project dispatch policy | Choose a runnable policy | Preserve explicit/configured policy; unresolved non-interactive state blocks | `boundary:repository-policy-approval` | `state.md` policy or resolver diagnostic |
|
|
140
140
|
| PLAN-07 | `oat-project-plan` | Plan breakdown confirmation | Confirm tasks or request changes | Complete the independent plan artifact-review loop, apply unambiguous fixes, and confirm only a clean executable plan | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row |
|
|
141
141
|
| PLAN-08 | `oat-project-plan` | Optional phase-gate setup | Choose all, selected, or disabled | Use the shared non-interactive contract: preserve explicit state or leave disabled | `auto-resolve` | Phase-gate setup status |
|
|
@@ -147,7 +147,7 @@ remains.
|
|
|
147
147
|
| IMPORT-02 | `oat-project-import-plan` | Missing project | Ask for project identity | Use explicit invocation context; otherwise stop rather than guess | `boundary:product-judgment` | Resolved project path |
|
|
148
148
|
| IMPORT-03 | `oat-project-import-plan` | Source plan selection or extension exception | Choose a candidate/path or confirm nonstandard Markdown | Use an explicit unique source; ambiguity or nonstandard content stops | `auto-resolve` / `boundary:product-judgment` | Import reference metadata |
|
|
149
149
|
| IMPORT-04 | `oat-project-import-plan` | Existing source snapshot | Confirm overwrite | Never overwrite; create the documented timestamped copy | `auto-resolve` | Imported reference path |
|
|
150
|
-
| IMPORT-05 | `oat-project-import-plan` | Dispatch-ladder
|
|
150
|
+
| IMPORT-05 | `oat-project-import-plan` | Dispatch-ladder scope | Choose persistence scope | Check existing user, local, then authorized shared config in that fixed order without prompting or provenance-based reordering; skip scalar-blocked candidates, stop before writing only if none is compatible, then adopt once and re-run preflight | `auto-resolve` / `boundary:repository-policy-approval` | File existence, compatibility evidence, selected scope, and recheck |
|
|
151
151
|
| IMPORT-06 | `oat-project-import-plan` | Project dispatch policy | Choose a runnable policy | Preserve explicit/configured policy; unresolved non-interactive state blocks | `boundary:repository-policy-approval` | `state.md` policy or resolver diagnostic |
|
|
152
152
|
| IMPORT-07 | `oat-project-import-plan` | Optional phase-gate setup | Choose all, selected, or disabled | Preserve explicit imported state; otherwise use the shared non-interactive disabled behavior | `auto-resolve` | Phase-gate setup status |
|
|
153
153
|
| IMPORT-08 | `oat-project-import-plan` | Import-aware artifact-review findings | Accept offered Medium/Minor fixes | Apply only unambiguous canonicalization fixes; never rewrite source intent; unresolved Critical or ambiguity stops | `auto-resolve` / `boundary:unresolved-critical-findings` | Plan review row and import disposition |
|
package/dist/fs/assets.d.ts
CHANGED
package/dist/fs/assets.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/fs/assets.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/fs/assets.ts"],"names":[],"mappings":"AA2BA,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,eAAe,SAAc,GAC5B,OAAO,CAAC,IAAI,CAAC,CAoCf;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAwBzD"}
|
package/dist/fs/assets.js
CHANGED
|
@@ -1,7 +1,41 @@
|
|
|
1
|
-
import { stat } from 'node:fs/promises';
|
|
1
|
+
import { readFile, stat } from 'node:fs/promises';
|
|
2
2
|
import { dirname, join, resolve } from 'node:path';
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
4
|
import { CliError } from '../errors/index.js';
|
|
5
|
+
import { OAT_VERSION } from '../shared/oat-version.js';
|
|
6
|
+
const BUNDLE_METADATA_FILENAME = 'bundle-metadata.json';
|
|
7
|
+
function isBundleMetadata(value) {
|
|
8
|
+
if (!value || typeof value !== 'object') {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
const metadata = value;
|
|
12
|
+
return (metadata.schemaVersion === 1 &&
|
|
13
|
+
typeof metadata.oatVersion === 'string' &&
|
|
14
|
+
metadata.oatVersion.length > 0);
|
|
15
|
+
}
|
|
16
|
+
export async function validateAssetsBundle(assetsRoot, expectedVersion = OAT_VERSION) {
|
|
17
|
+
const metadataPath = join(assetsRoot, BUNDLE_METADATA_FILENAME);
|
|
18
|
+
let rawMetadata;
|
|
19
|
+
try {
|
|
20
|
+
rawMetadata = await readFile(metadataPath, 'utf8');
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
throw new CliError(`Bundled asset metadata not found: ${metadataPath}. Reinstall @open-agent-toolkit/cli or rebuild the CLI before updating tools.`, 2);
|
|
24
|
+
}
|
|
25
|
+
let metadata;
|
|
26
|
+
try {
|
|
27
|
+
metadata = JSON.parse(rawMetadata);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
throw new CliError(`Bundled asset metadata is invalid: ${metadataPath}. Reinstall @open-agent-toolkit/cli or rebuild the CLI before updating tools.`, 2);
|
|
31
|
+
}
|
|
32
|
+
if (!isBundleMetadata(metadata)) {
|
|
33
|
+
throw new CliError(`Bundled asset metadata is invalid: ${metadataPath}. Reinstall @open-agent-toolkit/cli or rebuild the CLI before updating tools.`, 2);
|
|
34
|
+
}
|
|
35
|
+
if (metadata.oatVersion !== expectedVersion) {
|
|
36
|
+
throw new CliError(`Bundled assets version mismatch: CLI ${expectedVersion}, assets ${metadata.oatVersion}. Reinstall @open-agent-toolkit/cli or rebuild the CLI before updating tools.`, 2);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
5
39
|
export async function resolveAssetsRoot() {
|
|
6
40
|
const modulePath = fileURLToPath(import.meta.url);
|
|
7
41
|
const cliRoot = resolve(dirname(modulePath), '..', '..');
|
|
@@ -18,5 +52,6 @@ export async function resolveAssetsRoot() {
|
|
|
18
52
|
}
|
|
19
53
|
throw new CliError(`Assets directory not found: ${assetsRoot}. Run 'pnpm build' to generate bundled assets.`, 2);
|
|
20
54
|
}
|
|
55
|
+
await validateAssetsBundle(assetsRoot);
|
|
21
56
|
return assetsRoot;
|
|
22
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-package-contract.d.ts","sourceRoot":"","sources":["../../src/release/public-package-contract.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,KAAK,GAAG,cAAc,GAAG,iBAAiB,CAAC;IACjD,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,uBAAuB,EAAE,yBAAyB,EAAE,CAAC;IACrD,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,4BAA4B,EAAE,MAAM,EAAE,CAAC;IACvC,2BAA2B,EAAE,MAAM,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;
|
|
1
|
+
{"version":3,"file":"public-package-contract.d.ts","sourceRoot":"","sources":["../../src/release/public-package-contract.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,KAAK,GAAG,cAAc,GAAG,iBAAiB,CAAC;IACjD,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,uBAAuB,EAAE,yBAAyB,EAAE,CAAC;IACrD,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,4BAA4B,EAAE,MAAM,EAAE,CAAC;IACvC,2BAA2B,EAAE,MAAM,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AA4KD,wBAAgB,yBAAyB,IAAI,qBAAqB,EAAE,CAenE;AAED,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,QAAQ,EAAE,qBAAqB,GAC9B,MAAM,EAAE,CAIV;AAED,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,SAAS,MAAM,EAAE,EAC9B,QAAQ,EAAE,qBAAqB,GAC9B,MAAM,EAAE,CAIV;AAED,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,SAAS,MAAM,EAAE,EAC9B,QAAQ,EAAE,qBAAqB,GAC9B,MAAM,EAAE,CAMV;AAED,wBAAgB,6BAA6B,CAC3C,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACjD,QAAQ,EAAE,qBAAqB,GAC9B,MAAM,EAAE,CAoBV;AAED,wBAAgB,oCAAoC,CAClD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,MAAM,EAAE,CAmBV;AAED,wBAAgB,qCAAqC,CACnD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,kBAAkB,EAAE,SAAS,MAAM,EAAE,EACrC,qBAAqB,EAAE,SAAS,MAAM,EAAE,GACvC,MAAM,EAAE,CA0BV"}
|
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.29",
|
|
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.29"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/node": "^22.10.0",
|