@open-agent-toolkit/cli 0.1.42 → 0.1.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/assets/agents/oat-phase-implementer.md +11 -7
  2. package/assets/agents/oat-reviewer.md +6 -4
  3. package/assets/config/dispatch-matrix-recommendation.json +23 -0
  4. package/assets/docs/cli-utilities/configuration.md +95 -40
  5. package/assets/docs/cli-utilities/workflow-gates.md +79 -16
  6. package/assets/docs/contributing/code.md +10 -4
  7. package/assets/docs/contributing/hooks-and-safety.md +23 -0
  8. package/assets/docs/reference/oat-directory-structure.md +26 -24
  9. package/assets/docs/workflows/projects/dispatch-ceiling.md +193 -80
  10. package/assets/docs/workflows/projects/implementation-execution.md +68 -45
  11. package/assets/docs/workflows/projects/index.md +2 -2
  12. package/assets/docs/workflows/projects/lifecycle.md +17 -2
  13. package/assets/public-package-versions.json +4 -4
  14. package/assets/skills/oat-project-implement/SKILL.md +232 -100
  15. package/assets/skills/oat-project-plan/SKILL.md +80 -30
  16. package/assets/skills/oat-project-plan-writing/SKILL.md +10 -10
  17. package/assets/skills/oat-project-quick-start/SKILL.md +80 -30
  18. package/assets/templates/plan.md +4 -4
  19. package/assets/templates/state.md +12 -3
  20. package/dist/commands/config/index.d.ts +6 -0
  21. package/dist/commands/config/index.d.ts.map +1 -1
  22. package/dist/commands/config/index.js +432 -11
  23. package/dist/commands/doctor/index.d.ts +6 -1
  24. package/dist/commands/doctor/index.d.ts.map +1 -1
  25. package/dist/commands/doctor/index.js +138 -4
  26. package/dist/commands/gate/index.d.ts +39 -2
  27. package/dist/commands/gate/index.d.ts.map +1 -1
  28. package/dist/commands/gate/index.js +343 -30
  29. package/dist/commands/internal/cursor-current-target.d.ts +37 -0
  30. package/dist/commands/internal/cursor-current-target.d.ts.map +1 -0
  31. package/dist/commands/internal/cursor-current-target.js +228 -0
  32. package/dist/commands/internal/index.d.ts.map +1 -1
  33. package/dist/commands/internal/index.js +2 -0
  34. package/dist/commands/project/dispatch-ceiling/index.d.ts.map +1 -1
  35. package/dist/commands/project/dispatch-ceiling/index.js +646 -56
  36. package/dist/config/dispatch-ceiling-preset.d.ts +37 -1
  37. package/dist/config/dispatch-ceiling-preset.d.ts.map +1 -1
  38. package/dist/config/dispatch-ceiling-preset.js +20 -0
  39. package/dist/config/oat-config.d.ts +25 -6
  40. package/dist/config/oat-config.d.ts.map +1 -1
  41. package/dist/config/oat-config.js +123 -11
  42. package/dist/config/resolve.d.ts.map +1 -1
  43. package/dist/config/resolve.js +16 -0
  44. package/dist/manifest/manifest.types.d.ts +12 -12
  45. package/dist/providers/ceiling/registry.d.ts.map +1 -1
  46. package/dist/providers/ceiling/registry.js +22 -1
  47. package/dist/providers/codex/codec/sync-extension.js +1 -1
  48. package/dist/providers/identity/availability.d.ts +22 -0
  49. package/dist/providers/identity/availability.d.ts.map +1 -0
  50. package/dist/providers/identity/availability.js +119 -0
  51. package/dist/providers/identity/family.d.ts +13 -0
  52. package/dist/providers/identity/family.d.ts.map +1 -0
  53. package/dist/providers/identity/family.js +32 -0
  54. package/dist/providers/identity/provenance.d.ts +21 -0
  55. package/dist/providers/identity/provenance.d.ts.map +1 -0
  56. package/dist/providers/identity/provenance.js +65 -0
  57. package/dist/providers/identity/stamp.d.ts +35 -0
  58. package/dist/providers/identity/stamp.d.ts.map +1 -0
  59. package/dist/providers/identity/stamp.js +171 -0
  60. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-project-plan
3
- version: 1.3.8
3
+ version: 1.3.10
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
@@ -314,61 +314,111 @@ Unless the source artifact or user already supplied a confirmed `oat_plan_hill_p
314
314
 
315
315
  If `## Planning Checklist` is missing (older plans), add it before finalizing with the items above.
316
316
 
317
- ### Step 11.5: Resolve Dispatch Ceiling Before Implementation Readiness
317
+ ### Step 11.5: Resolve Dispatch Policy Before Implementation Readiness
318
318
 
319
- Before marking the plan ready for implementation, resolve the dispatch ceiling.
319
+ Before marking the plan ready for implementation, resolve the dispatch policy.
320
320
 
321
321
  Resolution order:
322
322
 
323
- 1. Config keys `workflow.dispatchCeiling.providers.<provider>` via the resolver CLI
324
- 2. Project `state.md` frontmatter key `oat_dispatch_ceiling`
325
- 3. Interactive planning prompt (below)
326
- 4. Leave unresolved for implementation preflight when non-interactive
323
+ 1. Config keys `workflow.dispatchPolicy.mode` / `workflow.dispatchPolicy.policy` via the resolver CLI
324
+ 2. Layered dispatch matrix / compatibility config under `workflow.dispatchCeiling.providers.<provider>` and `workflow.dispatchCeiling.providers.<provider>.<tier>`
325
+ 3. Project `state.md` frontmatter key `oat_dispatch_policy`
326
+ 4. Legacy project `state.md` frontmatter key `oat_dispatch_ceiling`
327
+ 5. Interactive planning prompt (below)
328
+ 6. Leave unresolved for implementation preflight when non-interactive
327
329
 
328
- If no ceiling resolves and the session is interactive, present the preset
329
- prompt once before final plan review:
330
+ If no policy resolves and the session is interactive, present the dispatch
331
+ policy prompt once before final plan review:
330
332
 
331
333
  ```text
332
- Set the dispatch ceilingthe maximum subagent tier OAT may use.
334
+ Set the dispatch policyhow OAT should choose subagent model/effort controls.
335
+
336
+ Managed capped policies:
337
+ 1. Economy — Codex: medium · Claude: sonnet
338
+ 2. Balanced — Codex: high · Claude: sonnet (recommended)
339
+ 3. High — Codex: xhigh · Claude: opus
340
+ 4. Frontier — Codex: xhigh · Claude: fable
341
+
342
+ Managed uncapped:
343
+ 5. Uncapped — OAT selects the preferred implementer/fix target without a stored maximum cap.
344
+
345
+ Host defaults:
346
+ 6. Inherit Host Defaults — OAT does not select model/effort controls.
347
+
348
+ OAT applies managed policies where the provider exposes a reliable mechanism
349
+ (Codex: pinned variants; Claude: Task model parameter). Other providers may
350
+ treat managed policies as advisory until their provider column has a resolvable
351
+ matrix cell.
352
+
353
+ For multi-family providers such as Cursor, these options choose the abstract
354
+ policy rung; concrete model values live in the dispatch matrix under
355
+ `workflow.dispatchCeiling.providers.*`. If the user wants OAT's recommended
356
+ starting matrix, offer `oat config adopt dispatch-matrix` for the chosen config
357
+ layer before finalizing the plan.
358
+ ```
333
359
 
334
- 1. Balanced (recommended) Codex: high · Claude: sonnet
335
- 2. Maximum — Codex: xhigh · Claude: opus (reviews always run at this tier)
336
- 3. Cost-conscious — Codex: medium · Claude: sonnet
337
- 4. Advanced — set per provider
338
- 5. No ceiling
360
+ **Managed capped policy selection (options 1-4)** persists `mode: managed`,
361
+ `policy`, and the compiled provider targets. On selection, print the exact
362
+ compiled result (e.g., "Dispatch policy set: balanced → Codex: high · Claude:
363
+ sonnet") before proceeding.
339
364
 
340
- OAT applies this where the provider exposes a reliable mechanism (Codex: pinned
341
- variants; Claude: Task model parameter). Other providers may treat it as advisory.
342
- ```
365
+ If the resolver reports that the selected policy has a missing matrix cell for
366
+ the active provider/tier, run prompt-and-persist once before final review:
343
367
 
344
- **Preset selection** persists `preset` + compiled per-provider values. On
345
- selection, print the exact compiled result (e.g., "Ceiling set: balanced →
346
- Codex: high · Claude: sonnet") before proceeding.
368
+ 1. Ask for the exact provider value for the missing cell, using the provider's
369
+ native vocabulary (for example, `composer-2.5`, `gpt-5.5-xhigh`, `opus`, or
370
+ `xhigh`), or an ordered route when escalation needs multiple targets.
371
+ 2. Persist the answer to the selected config layer with
372
+ `workflow.dispatchCeiling.providers.<provider>.<tier>`. Use project
373
+ `state.md` only for sparse project-specific matrix overrides.
374
+ 3. Re-run the resolver. Do not silently treat a missing cell as uncapped,
375
+ inherited, or provider-default behavior.
347
376
 
348
- **Advanced (option 4)** prompts for each provider's value individually, then
349
- persists `providers` + `source` only no `preset` key.
377
+ **Uncapped (option 5)** persists explicit managed uncapped state. It does not
378
+ write provider caps, and it must not be represented by leaving dispatch policy
379
+ state absent.
350
380
 
351
- **No ceiling (option 5)** leaves `oat_dispatch_ceiling` unset; implementer
352
- subagents run at provider defaults.
381
+ **Inherit Host Defaults (option 6)** persists explicit inherit/default state.
382
+ Use this only when the user wants OAT to leave implementation, fix, and review
383
+ model/effort controls to the executing host/provider.
353
384
 
354
385
  Persist the answer in `"$PROJECT_PATH/state.md"` frontmatter using the
355
386
  normalized shape:
356
387
 
357
388
  ```yaml
358
- oat_dispatch_ceiling:
359
- preset: balanced # omit when Advanced was chosen
389
+ oat_dispatch_policy:
390
+ mode: managed
391
+ policy: balanced
360
392
  providers:
361
393
  codex: high
362
394
  claude: sonnet
363
395
  source: project-state
364
396
  ```
365
397
 
398
+ For `Uncapped`:
399
+
400
+ ```yaml
401
+ oat_dispatch_policy:
402
+ mode: managed
403
+ policy: uncapped
404
+ source: project-state
405
+ ```
406
+
407
+ For `Inherit Host Defaults`:
408
+
409
+ ```yaml
410
+ oat_dispatch_policy:
411
+ mode: inherit
412
+ source: project-state
413
+ ```
414
+
366
415
  Do not prompt when `OAT_NON_INTERACTIVE=1` or when no user-response channel
367
416
  exists. In that case, leave the value unresolved. `oat-project-implement`
368
- must block before work starts if it still cannot resolve a ceiling.
417
+ must block before work starts if it still cannot resolve a policy.
369
418
 
370
- Do not treat provider default effort as the OAT dispatch ceiling. Provider
371
- default is informational for base/unpinned roles only.
419
+ Do not treat provider default effort as the OAT dispatch policy. Provider
420
+ defaults apply only for explicit inherit/default behavior or base/unpinned
421
+ fallback paths.
372
422
 
373
423
  ### Step 12: Review Plan with User
374
424
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-project-plan-writing
3
- version: 1.2.5
3
+ version: 1.2.6
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
@@ -91,10 +91,10 @@ Runtime routing note:
91
91
 
92
92
  - Keep `oat_ready_for` canonical as `oat-project-implement`.
93
93
  - Declare parallelism via `oat_plan_parallel_groups` in plan.md frontmatter (empty = sequential; nested arrays of phase IDs = parallel groups). `oat-project-implement` reads this field to choose sequential vs worktree-isolated parallel execution.
94
- - Dispatch ceilings are not stored in `plan.md`. Plan-producing skills resolve
95
- them from `workflow.dispatchCeiling.<provider>` or project `state.md`
96
- frontmatter, then persist interactive answers back to `state.md` as
97
- `oat_dispatch_ceiling`.
94
+ - Dispatch policies are not stored in `plan.md`. Plan-producing skills resolve
95
+ them from `workflow.dispatchPolicy.*`, compatibility
96
+ `workflow.dispatchCeiling.*` keys, or project `state.md` frontmatter, then
97
+ persist interactive answers back to `state.md` as `oat_dispatch_policy`.
98
98
 
99
99
  Additional frontmatter keys (`oat_phase`, `oat_phase_status`, `oat_blockers`, `oat_last_updated`, `oat_generated`, `oat_template`, `oat_import_reference`, `oat_import_source_path`, `oat_import_provider`) are set by calling skills as needed.
100
100
 
@@ -109,16 +109,16 @@ If a user-authored override is needed, use this table shape:
109
109
  ```markdown
110
110
  ## Dispatch Profile
111
111
 
112
- | Phase | Claude model | Codex effort | Rationale |
113
- | ----- | ------------------------- | ------------------------------ | ----------------------------- |
114
- | pNN | haiku\|sonnet\|opus\|auto | low\|medium\|high\|xhigh\|auto | why this constraint is needed |
112
+ | Phase | Claude model | Codex effort | Rationale |
113
+ | ----- | -------------------------------- | ------------------------------ | ----------------------------- |
114
+ | pNN | haiku\|sonnet\|opus\|fable\|auto | low\|medium\|high\|xhigh\|auto | why this constraint is needed |
115
115
  ```
116
116
 
117
117
  Validation rules for explicit rows:
118
118
 
119
119
  - `Phase` must match a real `pNN` phase in the plan.
120
- - `Claude model` must be `haiku`, `sonnet`, `opus`, `auto`, or blank.
121
- - `Codex effort` must be `low`, `medium`, `high`, `xhigh`, `auto`, or blank. In Codex, explicit effort values are preferred controls that `oat-project-implement` caps against the resolved OAT dispatch ceiling and maps to pinned implementer variants when selected. Provider default effort is informational for base/unpinned roles and is not an OAT ceiling.
120
+ - `Claude model` must be `haiku`, `sonnet`, `opus`, `fable`, `auto`, or blank.
121
+ - `Codex effort` must be `low`, `medium`, `high`, `xhigh`, `auto`, or blank. In Codex, explicit effort values are preferred controls. `oat-project-implement` caps them when a capped managed policy exists, selects them directly under managed `Uncapped`, and maps selected efforts to pinned implementer variants when available. Provider default effort is informational only for explicit inherit/default behavior or base/unpinned fallback paths.
122
122
  - Blank or `auto` means no explicit constraint for that provider.
123
123
  - `Rationale` is recommended and should explain why runtime selection should not decide on its own.
124
124
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-project-quick-start
3
- version: 2.1.8
3
+ version: 2.1.10
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
@@ -467,62 +467,112 @@ Required parallelism pass before finalizing the plan:
467
467
  - Quick mode is not "sequential by default." A quick-start plan is sequential only when the dependency and write-set analysis says it should be.
468
468
  - When a task claims scoped verification, prefer the exact runner invocation that truly scopes to the intended file, test, or target instead of package-level shortcuts that may execute the full suite.
469
469
 
470
- ### Step 3.5: Resolve Dispatch Ceiling Before Implementation Readiness
470
+ ### Step 3.5: Resolve Dispatch Policy Before Implementation Readiness
471
471
 
472
472
  Before moving the quick project to ready-for-implementation, resolve the
473
- dispatch ceiling.
473
+ dispatch policy.
474
474
 
475
475
  Resolution order:
476
476
 
477
- 1. Config keys `workflow.dispatchCeiling.providers.<provider>` via the resolver CLI
478
- 2. Project `state.md` frontmatter key `oat_dispatch_ceiling`
479
- 3. Interactive quick-planning prompt (below)
480
- 4. Leave unresolved for implementation preflight when non-interactive
477
+ 1. Config keys `workflow.dispatchPolicy.mode` / `workflow.dispatchPolicy.policy` via the resolver CLI
478
+ 2. Layered dispatch matrix / compatibility config under `workflow.dispatchCeiling.providers.<provider>` and `workflow.dispatchCeiling.providers.<provider>.<tier>`
479
+ 3. Project `state.md` frontmatter key `oat_dispatch_policy`
480
+ 4. Legacy project `state.md` frontmatter key `oat_dispatch_ceiling`
481
+ 5. Interactive quick-planning prompt (below)
482
+ 6. Leave unresolved for implementation preflight when non-interactive
481
483
 
482
- If no ceiling resolves and the session is interactive, present the preset
483
- prompt once before finalizing `plan.md`:
484
+ If no policy resolves and the session is interactive, present the dispatch
485
+ policy prompt once before finalizing `plan.md`:
484
486
 
485
487
  ```text
486
- Set the dispatch ceilingthe maximum subagent tier OAT may use.
488
+ Set the dispatch policyhow OAT should choose subagent model/effort controls.
489
+
490
+ Managed capped policies:
491
+ 1. Economy — Codex: medium · Claude: sonnet
492
+ 2. Balanced — Codex: high · Claude: sonnet (recommended)
493
+ 3. High — Codex: xhigh · Claude: opus
494
+ 4. Frontier — Codex: xhigh · Claude: fable
495
+
496
+ Managed uncapped:
497
+ 5. Uncapped — OAT selects the preferred implementer/fix target without a stored maximum cap.
498
+
499
+ Host defaults:
500
+ 6. Inherit Host Defaults — OAT does not select model/effort controls.
501
+
502
+ OAT applies managed policies where the provider exposes a reliable mechanism
503
+ (Codex: pinned variants; Claude: Task model parameter). Other providers may
504
+ treat managed policies as advisory until their provider column has a resolvable
505
+ matrix cell.
506
+
507
+ For multi-family providers such as Cursor, these options choose the abstract
508
+ policy rung; concrete model values live in the dispatch matrix under
509
+ `workflow.dispatchCeiling.providers.*`. If the user wants OAT's recommended
510
+ starting matrix, offer `oat config adopt dispatch-matrix` for the chosen config
511
+ layer before finalizing `plan.md`.
512
+ ```
487
513
 
488
- 1. Balanced (recommended) Codex: high · Claude: sonnet
489
- 2. Maximum — Codex: xhigh · Claude: opus (reviews always run at this tier)
490
- 3. Cost-conscious — Codex: medium · Claude: sonnet
491
- 4. Advanced — set per provider
492
- 5. No ceiling
514
+ **Managed capped policy selection (options 1-4)** persists `mode: managed`,
515
+ `policy`, and the compiled provider targets. On selection, print the exact
516
+ compiled result (e.g., "Dispatch policy set: balanced → Codex: high · Claude:
517
+ sonnet") before proceeding.
493
518
 
494
- OAT applies this where the provider exposes a reliable mechanism (Codex: pinned
495
- variants; Claude: Task model parameter). Other providers may treat it as advisory.
496
- ```
519
+ If the resolver reports that the selected policy has a missing matrix cell for
520
+ the active provider/tier, run prompt-and-persist once before final review:
497
521
 
498
- **Preset selection** persists `preset` + compiled per-provider values. On
499
- selection, print the exact compiled result (e.g., "Ceiling set: balanced →
500
- Codex: high · Claude: sonnet") before proceeding.
522
+ 1. Ask for the exact provider value for the missing cell, using the provider's
523
+ native vocabulary (for example, `composer-2.5`, `gpt-5.5-xhigh`, `opus`, or
524
+ `xhigh`), or an ordered route when escalation needs multiple targets.
525
+ 2. Persist the answer to the selected config layer with
526
+ `workflow.dispatchCeiling.providers.<provider>.<tier>`. Use project
527
+ `state.md` only for sparse project-specific matrix overrides.
528
+ 3. Re-run the resolver. Do not silently treat a missing cell as uncapped,
529
+ inherited, or provider-default behavior.
501
530
 
502
- **Advanced (option 4)** prompts for each provider's value individually, then
503
- persists `providers` + `source` only no `preset` key.
531
+ **Uncapped (option 5)** persists explicit managed uncapped state. It does not
532
+ write provider caps, and it must not be represented by leaving dispatch policy
533
+ state absent.
504
534
 
505
- **No ceiling (option 5)** leaves `oat_dispatch_ceiling` unset; implementer
506
- subagents run at provider defaults.
535
+ **Inherit Host Defaults (option 6)** persists explicit inherit/default state.
536
+ Use this only when the user wants OAT to leave implementation, fix, and review
537
+ model/effort controls to the executing host/provider.
507
538
 
508
539
  Persist the answer in `"$PROJECT_PATH/state.md"` frontmatter using the
509
540
  normalized shape:
510
541
 
511
542
  ```yaml
512
- oat_dispatch_ceiling:
513
- preset: balanced # omit when Advanced was chosen
543
+ oat_dispatch_policy:
544
+ mode: managed
545
+ policy: balanced
514
546
  providers:
515
547
  codex: high
516
548
  claude: sonnet
517
549
  source: project-state
518
550
  ```
519
551
 
552
+ For `Uncapped`:
553
+
554
+ ```yaml
555
+ oat_dispatch_policy:
556
+ mode: managed
557
+ policy: uncapped
558
+ source: project-state
559
+ ```
560
+
561
+ For `Inherit Host Defaults`:
562
+
563
+ ```yaml
564
+ oat_dispatch_policy:
565
+ mode: inherit
566
+ source: project-state
567
+ ```
568
+
520
569
  Do not prompt when `OAT_NON_INTERACTIVE=1` or when no user-response channel
521
570
  exists. In that case, leave the value unresolved. `oat-project-implement`
522
- must block before work starts if it still cannot resolve a ceiling.
571
+ must block before work starts if it still cannot resolve a policy.
523
572
 
524
- Do not treat provider default effort as the OAT dispatch ceiling. Provider
525
- default is informational for base/unpinned roles only.
573
+ Do not treat provider default effort as the OAT dispatch policy. Provider
574
+ defaults apply only for explicit inherit/default behavior or base/unpinned
575
+ fallback paths.
526
576
 
527
577
  ### Step 3.6: Run Plan Artifact Review Loop
528
578
 
@@ -57,11 +57,11 @@ _Optional override surface. Use only for explicit user-authored constraints or p
57
57
 
58
58
  Blank or `auto` means there is no explicit constraint for that provider. Do not generate rows by default; a missing phase row uses runtime selection.
59
59
 
60
- | Phase | Claude model | Codex effort | Rationale |
61
- | ----- | ------------------------- | ------------------------------ | ----------------------------- |
62
- | pNN | haiku\|sonnet\|opus\|auto | low\|medium\|high\|xhigh\|auto | why this constraint is needed |
60
+ | Phase | Claude model | Codex effort | Rationale |
61
+ | ----- | -------------------------------- | ------------------------------ | ----------------------------- |
62
+ | pNN | haiku\|sonnet\|opus\|fable\|auto | low\|medium\|high\|xhigh\|auto | why this constraint is needed |
63
63
 
64
- Codex effort values are preferred controls. `oat-project-implement` caps them against the resolved OAT dispatch ceiling and maps selected efforts to pinned implementer variants. Codex provider default effort is informational for base/unpinned roles and is not an OAT ceiling.
64
+ Codex effort values are preferred controls. `oat-project-implement` caps them when a capped managed dispatch policy exists, selects them directly under managed `Uncapped`, and maps selected efforts to pinned implementer variants when available. Codex provider default effort is informational only for explicit inherit/default behavior or base/unpinned fallback paths.
65
65
 
66
66
  ---
67
67
 
@@ -14,10 +14,19 @@ oat_parallel_execution: false
14
14
  oat_phase: { OAT_PHASE } # Current phase: discovery | spec | design | plan | implement | decomposition
15
15
  oat_phase_status: in_progress # Status: in_progress | complete | pr_open
16
16
  # oat_orchestration_retry_limit: 2 # optional; override fix-loop retry limit (range 0-5)
17
- # oat_dispatch_ceiling: # optional project override for provider-aware dispatch ceilings
18
- # provider: codex # codex | claude
19
- # value: high # codex: low|medium|high|xhigh; claude: haiku|sonnet|opus
17
+ # oat_dispatch_policy: # optional project dispatch policy; managed keeps OAT selection active, inherit leaves controls to the host
18
+ # mode: managed # managed | inherit
19
+ # policy: balanced # economy | balanced | high | frontier | uncapped; omit when mode: inherit
20
+ # providers: # present for capped managed policies; omitted for uncapped/inherit
21
+ # codex: high # low|medium|high|xhigh
22
+ # claude: sonnet # haiku|sonnet|opus|fable
23
+ # matrix: # optional sparse project override; full dispatch matrix lives in layered config
24
+ # cursor:
25
+ # high:
26
+ # - composer-2.5
27
+ # - { harness: cursor, model: gpt-5.5-xhigh }
20
28
  # source: project-state
29
+ # oat_dispatch_ceiling: # legacy compatibility alias for capped managed provider targets
21
30
  oat_workflow_mode: { OAT_WORKFLOW_MODE } # spec-driven | quick | import
22
31
  oat_workflow_origin: native # native | imported
23
32
  oat_docs_updated: null # null | skipped | complete — documentation sync status
@@ -1,6 +1,8 @@
1
1
  import { buildCommandContext, type CommandContext } from '../../app/command-context.js';
2
+ import { type PromptContext } from '../shared/shared.prompts.js';
2
3
  import { type OatConfig, type OatLocalConfig, type UserConfig } from '../../config/oat-config.js';
3
4
  import { type ResolvedConfig } from '../../config/resolve.js';
5
+ import { type MatrixCellAvailability, type ValidateMatrixCellOptions } from '../../providers/identity/availability.js';
4
6
  import { Command } from 'commander';
5
7
  interface ConfigCommandDependencies {
6
8
  buildCommandContext: (options: Parameters<typeof buildCommandContext>[0]) => CommandContext;
@@ -13,6 +15,10 @@ interface ConfigCommandDependencies {
13
15
  writeUserConfig: (userConfigDir: string, config: UserConfig) => Promise<void>;
14
16
  resolveProjectsRoot: (repoRoot: string, env: NodeJS.ProcessEnv) => Promise<string>;
15
17
  resolveEffectiveConfig: (repoRoot: string, userConfigDir: string, env: NodeJS.ProcessEnv) => Promise<ResolvedConfig>;
18
+ resolveAssetsRoot: () => Promise<string>;
19
+ readFile: (path: string) => Promise<string>;
20
+ confirmAction: (message: string, ctx: PromptContext) => Promise<boolean>;
21
+ validateMatrixCell: (provider: string, value: string, options: ValidateMatrixCellOptions) => Promise<MatrixCellAvailability>;
16
22
  processEnv: NodeJS.ProcessEnv;
17
23
  }
18
24
  export declare function createConfigCommand(overrides?: Partial<ConfigCommandDependencies>): Command;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAIhF,OAAO,EACL,KAAK,SAAS,EACd,KAAK,cAAc,EAGnB,KAAK,UAAU,EAQhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8DpC,UAAU,yBAAyB;IACjC,mBAAmB,EAAE,CACnB,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAC/C,cAAc,CAAC;IACpB,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACxD,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAClE,mBAAmB,EAAE,CACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,KACnB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,cAAc,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/D,eAAe,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,mBAAmB,EAAE,CACnB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,CAAC,UAAU,KACnB,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,sBAAsB,EAAE,CACtB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,CAAC,UAAU,KACnB,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC;CAC/B;AAkvCD,wBAAgB,mBAAmB,CACjC,SAAS,GAAE,OAAO,CAAC,yBAAyB,CAAM,GACjD,OAAO,CA0GT"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEhF,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EACL,KAAK,SAAS,EACd,KAAK,cAAc,EAGnB,KAAK,UAAU,EAchB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAC/B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkFpC,UAAU,yBAAyB;IACjC,mBAAmB,EAAE,CACnB,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAC/C,cAAc,CAAC;IACpB,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACxD,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAClE,mBAAmB,EAAE,CACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,KACnB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,cAAc,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/D,eAAe,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,mBAAmB,EAAE,CACnB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,CAAC,UAAU,KACnB,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,sBAAsB,EAAE,CACtB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,CAAC,UAAU,KACnB,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7B,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,kBAAkB,EAAE,CAClB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,yBAAyB,KAC/B,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC;CAC/B;AA61DD,wBAAgB,mBAAmB,CACjC,SAAS,GAAE,OAAO,CAAC,yBAAyB,CAAM,GACjD,OAAO,CAwKT"}