@open-agent-toolkit/cli 0.1.45 → 0.1.46

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 (69) hide show
  1. package/assets/agents/oat-reviewer.md +2 -2
  2. package/assets/docs/cli-utilities/config-and-local-state.md +7 -0
  3. package/assets/docs/cli-utilities/configuration.md +51 -11
  4. package/assets/docs/provider-sync/config.md +5 -1
  5. package/assets/docs/provider-sync/manifest-and-drift.md +6 -1
  6. package/assets/docs/provider-sync/providers.md +6 -3
  7. package/assets/docs/provider-sync/scope-and-surface.md +2 -1
  8. package/assets/docs/reference/oat-directory-structure.md +2 -2
  9. package/assets/docs/workflows/projects/dispatch-ceiling.md +41 -28
  10. package/assets/docs/workflows/projects/implementation-execution.md +20 -13
  11. package/assets/public-package-versions.json +4 -4
  12. package/assets/skills/oat-project-implement/SKILL.md +114 -59
  13. package/assets/skills/oat-project-quick-start/SKILL.md +32 -20
  14. package/dist/commands/config/index.d.ts +2 -2
  15. package/dist/commands/config/index.d.ts.map +1 -1
  16. package/dist/commands/config/index.js +71 -20
  17. package/dist/commands/doctor/index.d.ts +2 -2
  18. package/dist/commands/doctor/index.d.ts.map +1 -1
  19. package/dist/commands/doctor/index.js +83 -27
  20. package/dist/commands/project/dispatch-ceiling/index.d.ts.map +1 -1
  21. package/dist/commands/project/dispatch-ceiling/index.js +137 -10
  22. package/dist/commands/providers/codex/index.d.ts +4 -0
  23. package/dist/commands/providers/codex/index.d.ts.map +1 -0
  24. package/dist/commands/providers/codex/index.js +7 -0
  25. package/dist/commands/providers/codex/materialize.d.ts +5 -0
  26. package/dist/commands/providers/codex/materialize.d.ts.map +1 -0
  27. package/dist/commands/providers/codex/materialize.js +152 -0
  28. package/dist/commands/providers/index.d.ts +2 -2
  29. package/dist/commands/providers/index.d.ts.map +1 -1
  30. package/dist/commands/providers/index.js +4 -2
  31. package/dist/commands/providers/providers.types.d.ts +23 -0
  32. package/dist/commands/providers/providers.types.d.ts.map +1 -1
  33. package/dist/commands/shared/codex-strays.d.ts.map +1 -1
  34. package/dist/commands/shared/codex-strays.js +11 -1
  35. package/dist/commands/status/index.d.ts +4 -1
  36. package/dist/commands/status/index.d.ts.map +1 -1
  37. package/dist/commands/status/index.js +1 -1
  38. package/dist/commands/sync/index.d.ts.map +1 -1
  39. package/dist/commands/sync/index.js +1 -1
  40. package/dist/commands/sync/sync.types.d.ts +4 -1
  41. package/dist/commands/sync/sync.types.d.ts.map +1 -1
  42. package/dist/config/dispatch-ceiling-preset.d.ts +4 -0
  43. package/dist/config/dispatch-ceiling-preset.d.ts.map +1 -1
  44. package/dist/config/dispatch-ceiling-preset.js +3 -0
  45. package/dist/config/dispatch-policy-options.d.ts +20 -0
  46. package/dist/config/dispatch-policy-options.d.ts.map +1 -0
  47. package/dist/config/dispatch-policy-options.js +96 -0
  48. package/dist/config/oat-config.d.ts +6 -0
  49. package/dist/config/oat-config.d.ts.map +1 -1
  50. package/dist/config/oat-config.js +15 -0
  51. package/dist/providers/ceiling/registry.d.ts +7 -5
  52. package/dist/providers/ceiling/registry.d.ts.map +1 -1
  53. package/dist/providers/ceiling/registry.js +16 -5
  54. package/dist/providers/codex/codec/config-merge.d.ts +6 -0
  55. package/dist/providers/codex/codec/config-merge.d.ts.map +1 -1
  56. package/dist/providers/codex/codec/config-merge.js +7 -0
  57. package/dist/providers/codex/codec/materialize.d.ts +16 -0
  58. package/dist/providers/codex/codec/materialize.d.ts.map +1 -0
  59. package/dist/providers/codex/codec/materialize.js +57 -0
  60. package/dist/providers/codex/codec/shared.d.ts +1 -0
  61. package/dist/providers/codex/codec/shared.d.ts.map +1 -1
  62. package/dist/providers/codex/codec/shared.js +9 -1
  63. package/dist/providers/codex/codec/sync-extension.d.ts +7 -1
  64. package/dist/providers/codex/codec/sync-extension.d.ts.map +1 -1
  65. package/dist/providers/codex/codec/sync-extension.js +183 -46
  66. package/dist/providers/identity/availability.d.ts +24 -1
  67. package/dist/providers/identity/availability.d.ts.map +1 -1
  68. package/dist/providers/identity/availability.js +253 -19
  69. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-project-implement
3
- version: 2.0.28
3
+ version: 2.0.31
4
4
  description: Use when plan.md is ready for execution. Dispatches phase-level subagents with bounded fix loops; supports plan-declared parallel phase groups with worktree-isolated execution and ordered fan-in.
5
5
  oat_gateable: true
6
6
  argument-hint: '[--retry-limit <N>] [--dry-run]'
@@ -209,7 +209,9 @@ Resolution order:
209
209
  "value": "high",
210
210
  "mode": "enforced",
211
211
  "mechanism": "pinned-variant",
212
- "dispatchArgs": { "variant": "oat-phase-implementer-high" },
212
+ "dispatchArgs": {
213
+ "variant": "oat-phase-implementer-gpt-5-6-terra-high"
214
+ },
213
215
  "verifyOnDispatch": false,
214
216
  "selection": {
215
217
  "role": "implementer",
@@ -236,50 +238,61 @@ point.
236
238
  Print before phase work:
237
239
 
238
240
  ```text
239
- Dispatch policy: balanced (codex, managed capped — pinned-variant)
241
+ OAT Dispatch Tier: balanced (codex, managed capped — pinned-variant)
240
242
  Resolved cap: high
241
243
  Source: project state
242
244
  Provider default effort: medium
243
- Note: OAT will use pinned subagent variants up to high. Base/unpinned roles resolve through the provider default only on fallback paths.
245
+ Note: OAT will use resolver-returned materialized Codex role names up to high. Base/unpinned roles resolve through the provider default only on fallback paths.
244
246
  ```
245
247
 
246
248
  If no policy resolves and the session is interactive, present the dispatch
247
249
  policy prompt once before starting work:
248
250
 
249
- ```text
250
- No dispatch policy is configured for this project.
251
+ Print the unresolved-policy heading, then generate the choice text from
252
+ canonical CLI metadata immediately before presenting it:
251
253
 
252
- Set the dispatch policy — how OAT should choose subagent model/effort controls.
254
+ ```bash
255
+ oat project dispatch-ceiling choices --format markdown
256
+ ```
253
257
 
254
- Managed capped policies:
255
- 1. Economy — Codex: medium · Claude: sonnet
256
- 2. Balanced — Codex: high · Claude: sonnet (recommended)
257
- 3. High — Codex: xhigh · Claude: opus
258
- 4. Frontier — Codex: xhigh · Claude: fable
258
+ Do not hand-type the dispatch policy menu or omit canonical choices. If the CLI
259
+ is unavailable in this environment, derive the same labels and descriptions from
260
+ `packages/cli/src/config/dispatch-policy-options.ts`; include every managed
261
+ policy returned by `VALID_MANAGED_DISPATCH_POLICIES` plus `Uncapped`, `Inherit
262
+ Host Defaults`, and `Leave Unresolved`.
259
263
 
260
- Managed uncapped:
261
- 5. Uncapped — OAT selects the preferred implementer/fix target without a stored maximum cap.
264
+ At minimum, preserve these semantics in any fallback text:
262
265
 
263
- Host defaults:
264
- 6. Inherit Host Defaults OAT does not select model/effort controls.
266
+ - `Uncapped`: OAT still manages dispatch selection, but stores no maximum cap.
267
+ It is not host/default behavior and must not be represented by absent policy
268
+ state.
269
+ - `Inherit Host Defaults`: OAT does not choose model or effort controls; the
270
+ executing host/provider owns implementation, fix, and review defaults.
271
+ - `Leave Unresolved`: planning/preflight deferral only. It records no runtime
272
+ policy and is not a runnable implementation setting. Implementation preflight
273
+ must block until a policy resolves.
265
274
 
266
275
  OAT applies managed policies where the provider exposes a reliable mechanism
267
276
  (Codex: pinned variants; Claude: Task model parameter). Other providers may
268
277
  treat managed policies as advisory.
269
- ```
270
278
 
271
- **Managed capped policy selection (options 1-4)** persists `mode: managed`,
279
+ **Managed capped policy selection** persists `mode: managed`,
272
280
  `policy`, and the compiled provider targets. On selection, print the exact
273
281
  compiled result (e.g., "Dispatch policy set: balanced -> Codex: high · Claude:
274
282
  sonnet") before proceeding.
275
283
 
276
- **Uncapped (option 5)** persists explicit managed uncapped state. It does not
277
- write provider caps, and it must not be represented by leaving dispatch policy
278
- state absent.
284
+ **Uncapped** persists explicit managed uncapped state. OAT still manages
285
+ dispatch selection. It does not write provider caps, and it must not be
286
+ represented by leaving dispatch policy state absent.
279
287
 
280
- **Inherit Host Defaults (option 6)** persists explicit inherit/default state.
281
- Use this only when the user wants OAT to leave implementation, fix, and review
282
- model/effort controls to the executing host/provider.
288
+ **Inherit Host Defaults** persists explicit inherit/default state. Use this only
289
+ when the user wants OAT to leave implementation, fix, and review model/effort
290
+ controls to the executing host/provider. OAT does not choose model or effort in
291
+ this mode.
292
+
293
+ **Leave Unresolved** records no runtime policy for implementation. Stop before
294
+ phase work and report the unresolved state; Implementation preflight must block
295
+ until a policy resolves.
283
296
 
284
297
  Persist in project `state.md` frontmatter using the normalized shape:
285
298
 
@@ -377,12 +390,12 @@ Codex rules:
377
390
  3. For capped managed implementer/fix work, selected effort is `min(preferred, resolved_cap)`.
378
391
  4. For managed `Uncapped` implementer/fix work, selected effort is the preferred effort with no cap.
379
392
  5. For inherit/default mode, the resolver returns no selected dispatch args. Use the base/unpinned Codex role, log `Selected effort: provider-default`, display provider default effort when known, and do not describe this as managed uncapped behavior.
380
- 6. For implementer/fix dispatch: call `oat project dispatch-ceiling resolve --provider codex --role implementer --preferred <preferred-effort> --escalation-level <route-level>`; read `providers.codex.selection.selectedValue`, `providers.codex.dispatchArgs.variant`, and any `providers.codex.target` for the selected role name or route target. Never pass a cap-only implementer variant when `selection.selectedValue` is lower.
381
- 7. For review dispatch: call `oat project dispatch-ceiling resolve --provider codex --role reviewer`; read `providers.codex.dispatchArgs.variant`.
393
+ 6. For implementer/fix dispatch: call `oat project dispatch-ceiling resolve --provider codex --role implementer --preferred <preferred-effort> --escalation-level <route-level>`; read `providers.codex.selection.selectedValue`, `providers.codex.dispatchArgs.variant`, `providers.codex.selection.target`, and any `providers.codex.target` for the selected materialized Codex role name or route target. Never pass a cap-only implementer variant when `selection.selectedValue` is lower.
394
+ 7. For review dispatch: call `oat project dispatch-ceiling resolve --provider codex --role reviewer`; read `providers.codex.dispatchArgs.variant` and `providers.codex.selection.target`.
382
395
  - Capped managed policy: reviewer targets the configured cap for deterministic quality gate behavior.
383
396
  - Managed `Uncapped`: no reviewer target exists; use base/unpinned reviewer fallback and log `selectionMode=no-review-target`, `selectedValue=null`, and `effort_axis=provider-default`.
384
397
  - Inherit/default: no reviewer target exists; use base/unpinned reviewer fallback and log `selectionMode=inherit-default`, `selectedValue=null`, and `effort_axis=provider-default`.
385
- 8. Codex payload-first assertion applies only when the resolver returns a pinned variant. If `effort_axis=selected:<value>`, the actual `spawn_agent` payload MUST use the matching pinned `agent_type`. If the resolver returns no variant, use the base role and log provider-default.
398
+ 8. Codex payload-first assertion applies only when the resolver returns a materialized model+effort variant. If `providers.codex.dispatchArgs.variant` is present, the actual `spawn_agent` payload MUST use it as `agent_type`; when that variant came from a Codex model+effort target, log `model_axis=selected:<model>` and `effort_axis=selected:<effort>` from resolver output. If the resolver returns no variant, use the base role and log provider-default. Always derive `model_axis` and `effort_axis` from resolver output, not from legacy role-name parsing.
386
399
  9. Do not use top-level per-call `reasoning_effort` as the standard OAT selected-effort path; dogfooding showed that path can be inconsistent.
387
400
 
388
401
  Claude rules:
@@ -410,21 +423,43 @@ Payload-first invariant:
410
423
  `Dispatch: scope=<phase-or-task> action=<implementation|fix|review> role=<implementer|fix|reviewer> producer=<slug|unknown> provenance=<declared|observed|inferred|unknown> model_axis=<axis> effort_axis=<axis> dispatch_policy=<policy|unknown> dispatch_ceiling=<value|none> target=<target|unknown>`.
411
424
  Derive `producer` and `provenance` from the resolver payload and actual host
412
425
  arguments. Only concrete model arguments, including same-harness route model
413
- args for model-arg providers, declare producer identity. Codex pinned
414
- variants declare the effort axis only; record `effort_axis=selected:<value>`
415
- and keep `producer=unknown provenance=unknown` unless an observed/inferred
416
- model identity is available. Base/unpinned or deferred cross-harness paths are
417
- also `producer=unknown provenance=unknown` unless an observed/inferred
418
- identity is available. Do not write prose-only or legacy comma-separated stamp
419
- forms.
426
+ args for model-arg providers, declare producer identity. Codex materialized
427
+ model+effort variants declare `model_axis=selected:<model>` and
428
+ `effort_axis=selected:<effort>` from resolver output, but keep
429
+ `producer=unknown provenance=unknown` unless an observed/inferred model
430
+ identity is available. Base/unpinned or deferred cross-harness paths are also
431
+ `producer=unknown provenance=unknown` unless an observed/inferred identity is
432
+ available. Do not write prose-only or legacy comma-separated stamp forms.
433
+
434
+ Human-facing dispatch display rules:
435
+
436
+ - Lead with route, OAT dispatch tier, requested controls, configured defaults, and runtime confirmation. These are the fields humans use to understand what OAT asked for and what the host appears to be running.
437
+ - Do not headline `producer=unknown` or `provenance=unknown`. Those values are
438
+ audit fields for the formal stamp, not the primary status. Put unknown
439
+ producer/provenance only in `Dispatch stamp:` or in a low-priority note after
440
+ the route and runtime confirmation.
441
+ - Separate requested controls from configured defaults. For example, a Codex
442
+ materialized role may request `model_axis=selected:<model>` and
443
+ `effort_axis=selected:<effort>` while the provider default effort remains a
444
+ separate fallback/default fact.
445
+ - Separate configured policy/cap from runtime confirmation. A resolver payload
446
+ can declare a target before the host has confirmed it; an observed mismatch
447
+ must be called out as `Runtime confirmation: mismatch:<detail>` and handled as
448
+ an orchestration deviation.
449
+ - Keep the `Dispatch stamp: Dispatch: ...` line parseable and grammar-stable.
450
+ Do not move display-only prose into the formal stamp.
420
451
 
421
452
  Structured dispatch log:
422
453
 
423
454
  ```text
424
455
  OAT Dispatch: Phase {phase_id} {implementation | fix | review}
425
456
  Host: {Claude Code | Codex | Cursor | other host}
457
+ Route: {route label or target path | none}; level={0 | 1 | ... | none}
458
+ Requested controls: {model=<value|none>, effort=<value|none>, target=<value|unknown>}
459
+ Configured defaults: {provider default effort/model | unknown | not-applicable}
460
+ Runtime confirmation: {observed:<slug> | declared:<slug> | not-observable | mismatch:<detail>}
426
461
  Preferred effort: {low | medium | high | xhigh | provider-default | not-applicable}
427
- Dispatch policy: {economy | balanced | high | frontier | uncapped | inherit host defaults | legacy capped}
462
+ OAT Dispatch Tier: {economy | balanced | high | frontier | uncapped | inherit host defaults | legacy capped}
428
463
  Resolved cap: {resolved cap value | none}
429
464
  Selected effort: {low | medium | high | xhigh | provider-default | not-applicable}
430
465
  Policy source: {repo config | project state | preflight prompt}
@@ -443,16 +478,20 @@ Codex capped example:
443
478
  ```text
444
479
  OAT Dispatch: Phase p02 implementation
445
480
  Host: Codex
481
+ Route: codex/implementer/gpt-5.6-sol/medium; level=0
482
+ Requested controls: model=gpt-5.6-sol, effort=medium, target=oat-phase-implementer-gpt-5-6-sol-medium
483
+ Configured defaults: provider default effort=high
484
+ Runtime confirmation: declared:gpt-5.6-sol/medium
446
485
  Preferred effort: high
447
- Dispatch policy: economy
486
+ OAT Dispatch Tier: economy
448
487
  Resolved cap: medium
449
488
  Selected effort: medium
450
489
  Policy source: repo config
451
490
  Provider default effort: high
452
491
  Selection mode: capped
453
- Model axis: inherited
492
+ Model axis: selected:gpt-5.6-sol
454
493
  Effort axis: selected:medium
455
- Dispatch target: oat-phase-implementer-medium
494
+ Dispatch target: oat-phase-implementer-gpt-5-6-sol-medium
456
495
  Rationale: normal multi-file implementation; high preferred due to integration risk, capped by configured policy.
457
496
  ```
458
497
 
@@ -461,16 +500,20 @@ Codex uncapped implementer example:
461
500
  ```text
462
501
  OAT Dispatch: Phase p02 implementation
463
502
  Host: Codex
503
+ Route: codex/implementer/gpt-5.6-terra/xhigh; level=0
504
+ Requested controls: model=gpt-5.6-terra, effort=xhigh, target=oat-phase-implementer-gpt-5-6-terra-xhigh
505
+ Configured defaults: provider default effort=medium
506
+ Runtime confirmation: declared:gpt-5.6-terra/xhigh
464
507
  Preferred effort: xhigh
465
- Dispatch policy: uncapped
508
+ OAT Dispatch Tier: uncapped
466
509
  Resolved cap: none
467
510
  Selected effort: xhigh
468
511
  Policy source: project state
469
512
  Provider default effort: medium
470
513
  Selection mode: uncapped
471
- Model axis: inherited
514
+ Model axis: selected:gpt-5.6-terra
472
515
  Effort axis: selected:xhigh
473
- Dispatch target: oat-phase-implementer-xhigh
516
+ Dispatch target: oat-phase-implementer-gpt-5-6-terra-xhigh
474
517
  Rationale: high-risk phase; managed uncapped policy allows the preferred pinned variant. Actual host support for upward effort selection must be verified by the dispatching host.
475
518
  ```
476
519
 
@@ -479,16 +522,20 @@ Codex capped reviewer example:
479
522
  ```text
480
523
  OAT Dispatch: Phase p02 review
481
524
  Host: Codex
525
+ Route: codex/reviewer/gpt-5.6-terra/xhigh; level=0
526
+ Requested controls: model=gpt-5.6-terra, effort=xhigh, target=oat-reviewer-gpt-5-6-terra-xhigh
527
+ Configured defaults: provider default effort=medium
528
+ Runtime confirmation: declared:gpt-5.6-terra/xhigh
482
529
  Preferred effort: high
483
- Dispatch policy: high
530
+ OAT Dispatch Tier: high
484
531
  Resolved cap: xhigh
485
532
  Selected effort: xhigh
486
533
  Policy source: project state
487
534
  Provider default effort: medium
488
535
  Selection mode: review-target
489
- Model axis: inherited
536
+ Model axis: selected:gpt-5.6-terra
490
537
  Effort axis: selected:xhigh
491
- Dispatch target: oat-reviewer-xhigh
538
+ Dispatch target: oat-reviewer-gpt-5-6-terra-xhigh
492
539
  Rationale: reviewer runs at the configured policy cap for deterministic quality gate behavior.
493
540
  ```
494
541
 
@@ -497,8 +544,12 @@ Codex inherit/default fallback example:
497
544
  ```text
498
545
  OAT Dispatch: Phase p02 review
499
546
  Host: Codex
547
+ Route: none; level=none
548
+ Requested controls: model=none, effort=provider-default, target=oat-reviewer
549
+ Configured defaults: provider default effort=medium
550
+ Runtime confirmation: not-observable
500
551
  Preferred effort: provider-default
501
- Dispatch policy: inherit host defaults
552
+ OAT Dispatch Tier: inherit host defaults
502
553
  Resolved cap: none
503
554
  Selected effort: provider-default
504
555
  Policy source: project state
@@ -522,8 +573,12 @@ Codex generic explorer example:
522
573
  ```text
523
574
  OAT Dispatch: p02-t10 sidecar exploration
524
575
  Host: Codex
576
+ Route: sidecar/explorer; level=none
577
+ Requested controls: model=none, effort=provider-default, target=explorer
578
+ Configured defaults: provider default effort=xhigh
579
+ Runtime confirmation: not-observable
525
580
  Preferred effort: provider-default
526
- Dispatch policy: high
581
+ OAT Dispatch Tier: high
527
582
  Resolved cap: xhigh
528
583
  Selected effort: provider-default
529
584
  Policy source: project state
@@ -573,9 +628,9 @@ Dispatch policy: {policy}; selected={selected value | none}; cap={value | none}
573
628
  **Log examples (matching resolver output):**
574
629
 
575
630
  ```text
576
- Dispatch policy: balanced; selected=high; cap=high (codex, enforced — variant oat-phase-implementer-high)
577
- Dispatch policy: high; selected=xhigh; cap=xhigh (codex, enforced — variant oat-reviewer-xhigh)
578
- Dispatch policy: uncapped; selected=xhigh; cap=none (codex, enforced — variant oat-phase-implementer-xhigh)
631
+ Dispatch policy: balanced; selected=high; cap=high (codex, enforced — variant oat-phase-implementer-gpt-5-6-sol-high)
632
+ Dispatch policy: high; selected=xhigh; cap=xhigh (codex, enforced — variant oat-reviewer-gpt-5-6-terra-xhigh)
633
+ Dispatch policy: uncapped; selected=xhigh; cap=none (codex, enforced — variant oat-phase-implementer-gpt-5-6-terra-xhigh)
579
634
  Dispatch policy: inherit host defaults; selected=none; cap=none (codex, advisory — base role follows provider default)
580
635
  Dispatch policy: balanced; selected=sonnet; cap=sonnet (claude, enforced — Task model arg)
581
636
  Dispatch policy: frontier; selected=fable; cap=fable (claude, enforced — Task model arg)
@@ -932,15 +987,15 @@ For each phase `pNN` in the plan (or each phase in the current parallel group),
932
987
  2. Perform a pre-dispatch assertion against the host invocation parameters. The Phase Scope fields are audit/context fields; selected axes must also be represented in the actual host dispatch call.
933
988
  - Codex implementer/fix dispatch:
934
989
  - Before building the `spawn_agent` argument map, classify the phase complexity and choose preferred effort (`low`, `medium`, `high`, or `xhigh`), determine the current route level (Dispatch Profile floor or `0`), then call `oat project dispatch-ceiling resolve --provider codex --role implementer --preferred <preferred-effort> --escalation-level <route-level>`.
935
- - Build the `spawn_agent` argument map from `providers.codex.selection.selectedValue` and `providers.codex.dispatchArgs.variant` before logging the dispatch. If `providers.codex.target.crossHarness` is true, the resolver intentionally returns no native dispatch args; log the deferred target and use provider-default/base fallback only when that is the explicit selected fallback. If `effort_axis=selected:low|medium|high|xhigh`, the argument map MUST use the matching `agent_type`: `"oat-phase-implementer-low"`, `"oat-phase-implementer-medium"`, `"oat-phase-implementer-high"`, or `"oat-phase-implementer-xhigh"`. Then derive the `OAT Dispatch:` block `Effort axis:` field from that same argument map.
936
- - Example selected low payload shape: `agent_type: "oat-phase-implementer-low"` and a Phase Scope message containing `effort_axis: selected:low`.
990
+ - Build the `spawn_agent` argument map from `providers.codex.selection.selectedValue`, `providers.codex.dispatchArgs.variant`, and `providers.codex.selection.target` before logging the dispatch. If `providers.codex.target.crossHarness` is true, the resolver intentionally returns no native dispatch args; log the deferred target and use provider-default/base fallback only when that is the explicit selected fallback. If `effort_axis=selected:<value>`, the argument map MUST use the materialized Codex role name returned in `providers.codex.dispatchArgs.variant` as `agent_type`; do not re-derive an effort-only role name from the selected effort. Then derive the `OAT Dispatch:` block `Model axis:` and `Effort axis:` fields from resolver output and that same argument map.
991
+ - Example selected payload shape: `agent_type: "oat-phase-implementer-gpt-5-6-sol-low"` and a Phase Scope message containing `model_axis: selected:gpt-5.6-sol` and `effort_axis: selected:low`.
937
992
  - Immediately after spawning, compare the returned Codex status line with the selected effort before waiting on the agent. If the spawned status reports a different effort than the selected value (for example, the log says `effort_axis=selected:medium` but the spawn result reports `gpt-5.5 high`), treat this as an orchestration deviation. Stop, record the deviation in `implementation.md`, and redispatch with corrected parameters before continuing. Do not use work from the mismatched dispatch.
938
- - If `effort_axis=provider-default`, use base `agent_type: "oat-phase-implementer"` and omit `reasoning_effort`. The dispatch rationale MUST say this is a base/unpinned fallback and include provider default effort when known.
993
+ - If the resolver returns no `dispatchArgs.variant`, use base `agent_type: "oat-phase-implementer"` only for provider-default/base fallback and omit `reasoning_effort`. The dispatch rationale MUST say this is a base/unpinned fallback and include provider default effort when known. Use base `oat-phase-implementer` only when the resolver returns no `dispatchArgs.variant`.
939
994
  - Claude Code implementer/fix dispatch:
940
995
  - If `model_axis=selected:<value>`, the Task tool call MUST include `model: "<value>"`.
941
996
  - If `model_axis=inherited`, omit `model`.
942
997
 
943
- 3. Dispatch the selected implementer role (Tier 1 via provider-native subagent mechanism) — the role asserted in the pre-dispatch step above (e.g., `oat-phase-implementer-low`, `oat-phase-implementer-medium`, `oat-phase-implementer-high`, `oat-phase-implementer-xhigh`, or base `oat-phase-implementer` only for provider-default fallback) — with the Phase Scope block as input and with the asserted host invocation parameters.
998
+ 3. Dispatch the selected implementer role (Tier 1 via provider-native subagent mechanism) — the resolver-returned materialized Codex role name in `providers.codex.dispatchArgs.variant`, or base `oat-phase-implementer` only when no variant is returned for provider-default fallback — with the Phase Scope block as input and with the asserted host invocation parameters.
944
999
 
945
1000
  4. Receive the structured summary (DONE | DONE_WITH_CONCERNS | NEEDS_CONTEXT | BLOCKED).
946
1001
 
@@ -982,7 +1037,7 @@ When escalation is needed:
982
1037
  3. Record a compact formal stamp in `implementation.md` when practical; surrounding prose may describe why the route advanced, but the `Dispatch:` line itself must stay parseable:
983
1038
  - `Dispatch: scope=p03 action=implementation role=implementer producer=gpt-5.5-xhigh provenance=declared model_axis=selected:gpt-5.5-xhigh effort_axis=not-applicable dispatch_policy=high dispatch_ceiling=gpt-5.5-xhigh target=cursor`
984
1039
  - `Dispatch: scope=p03 action=implementation role=implementer producer=opus provenance=declared model_axis=selected:opus effort_axis=not-applicable dispatch_policy=high dispatch_ceiling=opus target=claude`
985
- - `Dispatch: scope=p03 action=implementation role=implementer producer=unknown provenance=unknown model_axis=inherited effort_axis=selected:high dispatch_policy=high dispatch_ceiling=high target=oat-phase-implementer-high`
1040
+ - `Dispatch: scope=p03 action=implementation role=implementer producer=unknown provenance=unknown model_axis=selected:gpt-5.6-sol effort_axis=selected:high dispatch_policy=high dispatch_ceiling=high target=oat-phase-implementer-gpt-5-6-sol-high`
986
1041
  - `Dispatch: scope=p02 action=implementation role=implementer producer=unknown provenance=unknown model_axis=host-auto effort_axis=host-auto dispatch_policy=unknown dispatch_ceiling=none target=unknown`
987
1042
  4. If the phase is already at the strongest available control, do not invent a stronger tier. Provide more context, split the phase, revise the plan, or stop for user direction.
988
1043
 
@@ -997,7 +1052,7 @@ After the implementer returns DONE (or DONE_WITH_CONCERNS without correctness co
997
1052
  **Dispatch:**
998
1053
 
999
1054
  - Use the same tier that was selected at start.
1000
- - For Codex with a capped managed policy, dispatch the reviewer variant matching the resolved cap (`oat-reviewer-low|medium|high|xhigh`) for deterministic quality gates.
1055
+ - For Codex with a capped managed policy, dispatch the materialized reviewer role returned in `providers.codex.dispatchArgs.variant` for deterministic quality gates.
1001
1056
  - For Codex with managed `Uncapped` or inherit/default mode, no reviewer target exists; use base `oat-reviewer`, log `effort_axis=provider-default`, and explain that the base role follows the provider default.
1002
1057
  - For Claude Code with a capped managed policy, pass the resolved cap as the review `model`; managed `Uncapped` or inherit/default mode omits `model` because no reviewer target exists. Always keep `effort_axis=not-applicable`.
1003
1058
  - Tier 1: dispatch the selected reviewer target via provider-native subagent mechanism with Review Scope:
@@ -1016,13 +1071,13 @@ After the implementer returns DONE (or DONE_WITH_CONCERNS without correctness co
1016
1071
  policy_source: {repo config | project state | preflight prompt}
1017
1072
  ceiling_source: {repo config | project state | preflight prompt} # compatibility alias for policy_source
1018
1073
  provider_default_effort: {value | unknown | not-applicable}
1019
- model_axis: {inherited | selected:<Claude model>}
1074
+ model_axis: { selected:<value> | inherited | not-applicable | host-auto }
1020
1075
  effort_axis: {selected:<Codex value> | provider-default | not-applicable}
1021
1076
  dispatch_rationale: {capped reviewer target | uncapped/inherit reviewer fallback}
1022
1077
  ```
1023
1078
 
1024
1079
  - For Codex Tier 1 dispatches, send the Review Scope block as a self-contained packet and keep fresh context (`fork_context: false`). The reviewer is expected to reconstruct context from git state and the OAT artifacts listed above.
1025
- - For Codex Tier 1 review dispatches, use `agent_type: "oat-reviewer-low|medium|high|xhigh"` only when the resolver returns a pinned reviewer variant for a capped managed policy. Use base `oat-reviewer` for managed `Uncapped`, inherit/default mode, or provider-default fallback, and log `effort_axis=provider-default`. For Claude Code review dispatches, do not pass a per-review effort override because the effort axis is not applicable; pass `model` only when the resolver returns a selected review model.
1080
+ - For Codex Tier 1 review dispatches, use the materialized Codex role name from `providers.codex.dispatchArgs.variant` only when the resolver returns a reviewer variant for a capped managed policy. A Codex materialized reviewer role selected from a model+effort target must carry `model_axis=selected:<model>` and `effort_axis=selected:<effort>` from resolver output. Use base `oat-reviewer` only when the resolver returns no `dispatchArgs.variant` for managed `Uncapped`, inherit/default mode, or provider-default fallback, and log `effort_axis=provider-default`. For Claude Code review dispatches, do not pass a per-review effort override because the effort axis is not applicable; pass `model` only when the resolver returns a selected review model.
1026
1081
  - Treat the commit range as authoritative for review scope. `files_changed` is optional orientation metadata only.
1027
1082
  - If a Codex reviewer does not return a terminal result on the first wait, poll once more. If it still has not concluded, send one concise nudge to return immediately with current findings. If the reviewer still does not conclude, treat the Tier 1 review dispatch as failed for this phase and perform the review inline instead of waiting indefinitely.
1028
1083
 
@@ -1043,7 +1098,7 @@ On reviewer verdict `fail`, run a bounded fix loop.
1043
1098
 
1044
1099
  1. Read `oat_orchestration_retry_limit` from `state.md` frontmatter (default: `2`, range 0–5).
1045
1100
  2. For each retry (up to the limit):
1046
- a. Select/log fix dispatch axes from the fix scope, advance the route level by one after repeated review failure when the resolver reports an ordered target route, then perform the same pre-dispatch assertion used for implementation dispatch. A Codex fix dispatch with `effort_axis=selected:low|medium|high|xhigh` MUST use matching `agent_type: "oat-phase-implementer-low|medium|high|xhigh"`; a Claude Code fix dispatch with `model_axis=selected:<value>` MUST pass `model: "<value>"` on the Task call. Every fix dispatch writes the formal `Dispatch: scope=<phase-or-task> action=fix role=fix producer=<slug|unknown> provenance=<declared|observed|inferred|unknown> model_axis=<axis> effort_axis=<axis> dispatch_policy=<policy|unknown> dispatch_ceiling=<value|none> target=<target|unknown>` stamp before waiting on the implementer result.
1101
+ a. Select/log fix dispatch axes from the fix scope, advance the route level by one after repeated review failure when the resolver reports an ordered target route, then perform the same pre-dispatch assertion used for implementation dispatch. A Codex fix dispatch with `effort_axis=selected:<value>` MUST use the materialized Codex role name returned in `providers.codex.dispatchArgs.variant`; a Claude Code fix dispatch with `model_axis=selected:<value>` MUST pass `model: "<value>"` on the Task call. Every fix dispatch writes the formal `Dispatch: scope=<phase-or-task> action=fix role=fix producer=<slug|unknown> provenance=<declared|observed|inferred|unknown> model_axis=<axis> effort_axis=<axis> dispatch_policy=<policy|unknown> dispatch_ceiling=<value|none> target=<target|unknown>` stamp before waiting on the implementer result.
1047
1102
  b. Dispatch the selected phase implementer role in `fix` mode (Tier 1) OR read the agent and apply fixes inline (Tier 2), with: - `review_artifact`: the path written by the reviewer - `findings`: the Critical + Important findings list - `prior_summary`: the last implementer summary
1048
1103
  c. Receive the fix summary.
1049
1104
  d. Re-dispatch the reviewer with the updated commit range.
@@ -1271,7 +1326,7 @@ Before pausing at a checkpoint, check if auto-review is enabled:
1271
1326
  1. Read `oat_auto_review_at_hill_checkpoints` from plan.md frontmatter. If not present, fall back to legacy `oat_auto_review_at_checkpoints`. If neither is present, fall back to `oat config get workflow.autoReviewAtHillCheckpoints` (which itself falls back to legacy `.oat/config.json` `autoReviewAtCheckpoints` when unset).
1272
1327
 
1273
1328
  2. If enabled and this is a checkpoint phase:
1274
- a. **Determine review scope:** Find the highest completed implementation phase already covered by a **`passed`** code-review row in plan.md Reviews table. Count only whole-phase scopes: `pNN` or `pNN-pMM`. Ignore task scopes (`pNN-tNN`) and rows with `fixes_added` or `fixes_completed` because those reviews did not pass and must be re-covered. Scope = every implementation phase after that passed coverage through the current phase, inclusive. If no earlier passed whole-phase review exists, start from the first implementation phase. Use `pNN-pMM` when the scope spans multiple phases. If this is the final implementation phase checkpoint, use scope `final`.
1329
+ a. **Determine review scope:** Find the highest completed implementation phase already covered by a **`passed`** code-review row in plan.md Reviews table. Count only whole-phase scopes: `pNN` or `pNN-pMM`. Ignore task scopes (`pNN-tNN`) and rows with `fixes_added` or `fixes_completed` because those reviews did not pass and must be re-covered. Scope = every implementation phase after that passed coverage through the current phase, inclusive. If no earlier passed whole-phase review exists, start from the first implementation phase. Use `pNN-pMM` when the scope spans multiple phases. If this is the final implementation phase checkpoint, run `oat-project-review-provide code final`; use scope `final` and do not run a duplicate final phase-only lifecycle review, because Tier 1 already runs the standard per-phase reviewer before the final checkpoint branch.
1275
1330
  - Example: prior passed row `p01`, current checkpoint `p03` → review `p02-p03`
1276
1331
  - Example: no prior passed whole-phase review, current checkpoint `p03` → review `p01-p03`
1277
1332
  - Example: current checkpoint is the last implementation phase → review `final`
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-project-quick-start
3
- version: 2.1.10
3
+ version: 2.1.11
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
@@ -484,20 +484,28 @@ Resolution order:
484
484
  If no policy resolves and the session is interactive, present the dispatch
485
485
  policy prompt once before finalizing `plan.md`:
486
486
 
487
- ```text
488
- Set the dispatch policy — how OAT should choose subagent model/effort controls.
487
+ Generate the choice text from canonical CLI metadata immediately before
488
+ presenting it:
489
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
490
+ ```bash
491
+ oat project dispatch-ceiling choices --format markdown
492
+ ```
493
+
494
+ Do not hand-type the dispatch policy menu or omit canonical choices. If the CLI
495
+ is unavailable in this environment, derive the same labels and descriptions from
496
+ `packages/cli/src/config/dispatch-policy-options.ts`; include every managed
497
+ policy returned by `VALID_MANAGED_DISPATCH_POLICIES` plus `Uncapped`, `Inherit
498
+ Host Defaults`, and `Leave Unresolved`.
495
499
 
496
- Managed uncapped:
497
- 5. Uncapped — OAT selects the preferred implementer/fix target without a stored maximum cap.
500
+ At minimum, preserve these semantics in any fallback text:
498
501
 
499
- Host defaults:
500
- 6. Inherit Host Defaults OAT does not select model/effort controls.
502
+ - `Uncapped`: OAT still manages dispatch selection, but stores no maximum cap.
503
+ It is not host/default behavior and must not be represented by absent policy
504
+ state.
505
+ - `Inherit Host Defaults`: OAT does not choose model or effort controls; the
506
+ executing host/provider owns implementation, fix, and review defaults.
507
+ - `Leave Unresolved`: planning/preflight deferral only. It records no runtime
508
+ policy. Implementation preflight must block until a policy resolves.
501
509
 
502
510
  OAT applies managed policies where the provider exposes a reliable mechanism
503
511
  (Codex: pinned variants; Claude: Task model parameter). Other providers may
@@ -509,9 +517,8 @@ policy rung; concrete model values live in the dispatch matrix under
509
517
  `workflow.dispatchCeiling.providers.*`. If the user wants OAT's recommended
510
518
  starting matrix, offer `oat config adopt dispatch-matrix` for the chosen config
511
519
  layer before finalizing `plan.md`.
512
- ```
513
520
 
514
- **Managed capped policy selection (options 1-4)** persists `mode: managed`,
521
+ **Managed capped policy selection** persists `mode: managed`,
515
522
  `policy`, and the compiled provider targets. On selection, print the exact
516
523
  compiled result (e.g., "Dispatch policy set: balanced → Codex: high · Claude:
517
524
  sonnet") before proceeding.
@@ -528,13 +535,18 @@ the active provider/tier, run prompt-and-persist once before final review:
528
535
  3. Re-run the resolver. Do not silently treat a missing cell as uncapped,
529
536
  inherited, or provider-default behavior.
530
537
 
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.
538
+ **Uncapped** persists explicit managed uncapped state. OAT still manages
539
+ dispatch selection. It does not write provider caps, and it must not be
540
+ represented by leaving dispatch policy state absent.
541
+
542
+ **Inherit Host Defaults** persists explicit inherit/default state. Use this only
543
+ when the user wants OAT to leave implementation, fix, and review model/effort
544
+ controls to the executing host/provider. OAT does not choose model or effort in
545
+ this mode.
534
546
 
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.
547
+ **Leave Unresolved** leaves dispatch policy unset for implementation preflight.
548
+ Use this only when non-interactive planning cannot choose a policy yet.
549
+ Implementation preflight must block until a policy resolves.
538
550
 
539
551
  Persist the answer in `"$PROJECT_PATH/state.md"` frontmatter using the
540
552
  normalized shape:
@@ -2,7 +2,7 @@ import { buildCommandContext, type CommandContext } from '../../app/command-cont
2
2
  import { type PromptContext } from '../shared/shared.prompts.js';
3
3
  import { type OatConfig, type OatLocalConfig, type UserConfig } from '../../config/oat-config.js';
4
4
  import { type ResolvedConfig } from '../../config/resolve.js';
5
- import { type MatrixCellAvailability, type ValidateMatrixCellOptions } from '../../providers/identity/availability.js';
5
+ import { type MatrixCellAvailabilityResponse, type ValidateMatrixCellOptions } from '../../providers/identity/availability.js';
6
6
  import { Command } from 'commander';
7
7
  interface ConfigCommandDependencies {
8
8
  buildCommandContext: (options: Parameters<typeof buildCommandContext>[0]) => CommandContext;
@@ -18,7 +18,7 @@ interface ConfigCommandDependencies {
18
18
  resolveAssetsRoot: () => Promise<string>;
19
19
  readFile: (path: string) => Promise<string>;
20
20
  confirmAction: (message: string, ctx: PromptContext) => Promise<boolean>;
21
- validateMatrixCell: (provider: string, value: string, options: ValidateMatrixCellOptions) => Promise<MatrixCellAvailability>;
21
+ validateMatrixCell: (provider: string, value: string, options: ValidateMatrixCellOptions) => Promise<MatrixCellAvailabilityResponse>;
22
22
  processEnv: NodeJS.ProcessEnv;
23
23
  }
24
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":"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"}
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;AAQzC,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,cAAc,EAGnB,KAAK,UAAU,EAehB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAGL,KAAK,8BAA8B,EACnC,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,8BAA8B,CAAC,CAAC;IAC7C,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC;CAC/B;AA65DD,wBAAgB,mBAAmB,CACjC,SAAS,GAAE,OAAO,CAAC,yBAAyB,CAAM,GACjD,OAAO,CAwKT"}