@open-agent-toolkit/cli 0.1.42 → 0.1.43
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/agents/oat-phase-implementer.md +11 -7
- package/assets/agents/oat-reviewer.md +6 -4
- package/assets/docs/cli-utilities/configuration.md +51 -35
- package/assets/docs/reference/oat-directory-structure.md +26 -24
- package/assets/docs/workflows/projects/dispatch-ceiling.md +128 -85
- package/assets/docs/workflows/projects/implementation-execution.md +68 -45
- package/assets/docs/workflows/projects/index.md +2 -2
- package/assets/docs/workflows/projects/lifecycle.md +17 -2
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-project-implement/SKILL.md +181 -91
- package/assets/skills/oat-project-plan/SKILL.md +60 -29
- package/assets/skills/oat-project-plan-writing/SKILL.md +10 -10
- package/assets/skills/oat-project-quick-start/SKILL.md +60 -29
- package/assets/templates/plan.md +4 -4
- package/assets/templates/state.md +7 -3
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +66 -3
- package/dist/commands/project/dispatch-ceiling/index.d.ts.map +1 -1
- package/dist/commands/project/dispatch-ceiling/index.js +296 -49
- package/dist/config/dispatch-ceiling-preset.d.ts +37 -1
- package/dist/config/dispatch-ceiling-preset.d.ts.map +1 -1
- package/dist/config/dispatch-ceiling-preset.js +20 -0
- package/dist/config/oat-config.d.ts +10 -1
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +20 -1
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +4 -0
- package/dist/providers/ceiling/registry.d.ts.map +1 -1
- package/dist/providers/ceiling/registry.js +6 -1
- package/dist/providers/codex/codec/sync-extension.js +1 -1
- package/package.json +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-plan-writing
|
|
3
|
-
version: 1.2.
|
|
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
|
|
95
|
-
them from `workflow.
|
|
96
|
-
|
|
97
|
-
`
|
|
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
|
|
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
|
|
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.
|
|
3
|
+
version: 2.1.9
|
|
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,93 @@ 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
|
|
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
|
|
473
|
+
dispatch policy.
|
|
474
474
|
|
|
475
475
|
Resolution order:
|
|
476
476
|
|
|
477
|
-
1. Config keys `workflow.
|
|
478
|
-
2.
|
|
479
|
-
3.
|
|
480
|
-
4.
|
|
477
|
+
1. Config keys `workflow.dispatchPolicy.mode` / `workflow.dispatchPolicy.policy` via the resolver CLI
|
|
478
|
+
2. Compatibility config keys `workflow.dispatchCeiling.providers.<provider>`
|
|
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
|
|
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
|
|
488
|
+
Set the dispatch policy — how OAT should choose subagent model/effort controls.
|
|
487
489
|
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
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
|
|
493
495
|
|
|
494
|
-
|
|
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.
|
|
496
505
|
```
|
|
497
506
|
|
|
498
|
-
**
|
|
499
|
-
|
|
500
|
-
Codex: high · Claude:
|
|
507
|
+
**Managed capped policy selection (options 1-4)** persists `mode: managed`,
|
|
508
|
+
`policy`, and the compiled provider targets. On selection, print the exact
|
|
509
|
+
compiled result (e.g., "Dispatch policy set: balanced → Codex: high · Claude:
|
|
510
|
+
sonnet") before proceeding.
|
|
501
511
|
|
|
502
|
-
**
|
|
503
|
-
|
|
512
|
+
**Uncapped (option 5)** persists explicit managed uncapped state. It does not
|
|
513
|
+
write provider caps, and it must not be represented by leaving dispatch policy
|
|
514
|
+
state absent.
|
|
504
515
|
|
|
505
|
-
**
|
|
506
|
-
|
|
516
|
+
**Inherit Host Defaults (option 6)** persists explicit inherit/default state.
|
|
517
|
+
Use this only when the user wants OAT to leave implementation, fix, and review
|
|
518
|
+
model/effort controls to the executing host/provider.
|
|
507
519
|
|
|
508
520
|
Persist the answer in `"$PROJECT_PATH/state.md"` frontmatter using the
|
|
509
521
|
normalized shape:
|
|
510
522
|
|
|
511
523
|
```yaml
|
|
512
|
-
|
|
513
|
-
|
|
524
|
+
oat_dispatch_policy:
|
|
525
|
+
mode: managed
|
|
526
|
+
policy: balanced
|
|
514
527
|
providers:
|
|
515
528
|
codex: high
|
|
516
529
|
claude: sonnet
|
|
517
530
|
source: project-state
|
|
518
531
|
```
|
|
519
532
|
|
|
533
|
+
For `Uncapped`:
|
|
534
|
+
|
|
535
|
+
```yaml
|
|
536
|
+
oat_dispatch_policy:
|
|
537
|
+
mode: managed
|
|
538
|
+
policy: uncapped
|
|
539
|
+
source: project-state
|
|
540
|
+
```
|
|
541
|
+
|
|
542
|
+
For `Inherit Host Defaults`:
|
|
543
|
+
|
|
544
|
+
```yaml
|
|
545
|
+
oat_dispatch_policy:
|
|
546
|
+
mode: inherit
|
|
547
|
+
source: project-state
|
|
548
|
+
```
|
|
549
|
+
|
|
520
550
|
Do not prompt when `OAT_NON_INTERACTIVE=1` or when no user-response channel
|
|
521
551
|
exists. In that case, leave the value unresolved. `oat-project-implement`
|
|
522
|
-
must block before work starts if it still cannot resolve a
|
|
552
|
+
must block before work starts if it still cannot resolve a policy.
|
|
523
553
|
|
|
524
|
-
Do not treat provider default effort as the OAT dispatch
|
|
525
|
-
|
|
554
|
+
Do not treat provider default effort as the OAT dispatch policy. Provider
|
|
555
|
+
defaults apply only for explicit inherit/default behavior or base/unpinned
|
|
556
|
+
fallback paths.
|
|
526
557
|
|
|
527
558
|
### Step 3.6: Run Plan Artifact Review Loop
|
|
528
559
|
|
package/assets/templates/plan.md
CHANGED
|
@@ -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
|
|
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
|
|
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,14 @@ 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
|
-
#
|
|
18
|
-
#
|
|
19
|
-
#
|
|
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
|
|
20
23
|
# source: project-state
|
|
24
|
+
# oat_dispatch_ceiling: # legacy compatibility alias for capped managed provider targets
|
|
21
25
|
oat_workflow_mode: { OAT_WORKFLOW_MODE } # spec-driven | quick | import
|
|
22
26
|
oat_workflow_origin: native # native | imported
|
|
23
27
|
oat_docs_updated: null # null | skipped | complete — documentation sync status
|
|
@@ -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,
|
|
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,EAUhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgEpC,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;AAyzCD,wBAAgB,mBAAmB,CACjC,SAAS,GAAE,OAAO,CAAC,yBAAyB,CAAM,GACjD,OAAO,CA0GT"}
|
|
@@ -43,6 +43,8 @@ const KEY_ORDER = [
|
|
|
43
43
|
'workflow.autoArtifactReview.plan',
|
|
44
44
|
'workflow.autoArtifactReview.analysis',
|
|
45
45
|
'workflow.designMode',
|
|
46
|
+
'workflow.dispatchPolicy.mode',
|
|
47
|
+
'workflow.dispatchPolicy.policy',
|
|
46
48
|
'workflow.dispatchCeiling.preset',
|
|
47
49
|
'workflow.dispatchCeiling.providers.codex',
|
|
48
50
|
'workflow.dispatchCeiling.providers.claude',
|
|
@@ -454,7 +456,29 @@ const CONFIG_CATALOG = [
|
|
|
454
456
|
defaultValue: 'unset',
|
|
455
457
|
mutability: 'read/write',
|
|
456
458
|
owningCommand: 'oat config set workflow.dispatchCeiling.preset <value>',
|
|
457
|
-
description: 'Provider-neutral ceiling preset that compiles to concrete per-provider values at write time. balanced → Codex: high, Claude: sonnet; maximum → Codex: xhigh, Claude: opus; cost-conscious → Codex: medium, Claude: sonnet. Preset provenance only; runtime dispatch reads concrete providers values. Resolution: local > shared > user > default.',
|
|
459
|
+
description: 'Legacy compatibility alias for capped managed dispatch policies. Provider-neutral ceiling preset that compiles to concrete per-provider values at write time. balanced → Codex: high, Claude: sonnet; maximum → Codex: xhigh, Claude: opus; cost-conscious → Codex: medium, Claude: sonnet. Preset provenance only; runtime dispatch reads concrete providers values. Resolution: local > shared > user > default.',
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
key: 'workflow.dispatchPolicy.mode',
|
|
463
|
+
group: 'Workflow Preferences (3-layer: local > shared > user)',
|
|
464
|
+
file: '.oat/config.local.json | .oat/config.json | ~/.oat/config.json',
|
|
465
|
+
scope: 'workflow',
|
|
466
|
+
type: 'managed | inherit',
|
|
467
|
+
defaultValue: 'unset',
|
|
468
|
+
mutability: 'read/write',
|
|
469
|
+
owningCommand: 'oat config set workflow.dispatchPolicy.mode <value>',
|
|
470
|
+
description: 'Dispatch policy mode. "managed" means OAT selects model/effort from workflow.dispatchPolicy.policy; "inherit" means OAT leaves dispatch controls to the host/provider defaults. Set workflow.dispatchPolicy.policy to choose a managed policy. Resolution: local > shared > user > default.',
|
|
471
|
+
},
|
|
472
|
+
{
|
|
473
|
+
key: 'workflow.dispatchPolicy.policy',
|
|
474
|
+
group: 'Workflow Preferences (3-layer: local > shared > user)',
|
|
475
|
+
file: '.oat/config.local.json | .oat/config.json | ~/.oat/config.json',
|
|
476
|
+
scope: 'workflow',
|
|
477
|
+
type: 'economy | balanced | high | frontier | uncapped',
|
|
478
|
+
defaultValue: 'unset',
|
|
479
|
+
mutability: 'read/write',
|
|
480
|
+
owningCommand: 'oat config set workflow.dispatchPolicy.policy <value>',
|
|
481
|
+
description: 'Managed dispatch policy. economy, balanced, high, and frontier are capped managed policies; uncapped keeps OAT-managed preferred selection without provider caps. Setting this key writes workflow.dispatchPolicy.mode=managed. Resolution: local > shared > user > default.',
|
|
458
482
|
},
|
|
459
483
|
{
|
|
460
484
|
key: 'workflow.dispatchCeiling.providers.codex',
|
|
@@ -472,7 +496,7 @@ const CONFIG_CATALOG = [
|
|
|
472
496
|
group: 'Workflow Preferences (3-layer: local > shared > user)',
|
|
473
497
|
file: '.oat/config.local.json | .oat/config.json | ~/.oat/config.json',
|
|
474
498
|
scope: 'workflow',
|
|
475
|
-
type: 'haiku | sonnet | opus',
|
|
499
|
+
type: 'haiku | sonnet | opus | fable',
|
|
476
500
|
defaultValue: 'unset',
|
|
477
501
|
mutability: 'read/write',
|
|
478
502
|
owningCommand: 'oat config set workflow.dispatchCeiling.providers.claude <value>',
|
|
@@ -540,6 +564,14 @@ const WORKFLOW_ENUM_VALUES = {
|
|
|
540
564
|
'workflow.postImplementSequence': ['wait', 'summary', 'pr', 'docs-pr'],
|
|
541
565
|
'workflow.reviewExecutionModel': ['subagent', 'inline', 'fresh-session'],
|
|
542
566
|
'workflow.designMode': ['collaborative', 'selective', 'draft'],
|
|
567
|
+
'workflow.dispatchPolicy.mode': ['managed', 'inherit'],
|
|
568
|
+
'workflow.dispatchPolicy.policy': [
|
|
569
|
+
'economy',
|
|
570
|
+
'balanced',
|
|
571
|
+
'high',
|
|
572
|
+
'frontier',
|
|
573
|
+
'uncapped',
|
|
574
|
+
],
|
|
543
575
|
'workflow.dispatchCeiling.preset': ['balanced', 'maximum', 'cost-conscious'],
|
|
544
576
|
'workflow.dispatchCeiling.providers.codex': [
|
|
545
577
|
'low',
|
|
@@ -547,7 +579,12 @@ const WORKFLOW_ENUM_VALUES = {
|
|
|
547
579
|
'high',
|
|
548
580
|
'xhigh',
|
|
549
581
|
],
|
|
550
|
-
'workflow.dispatchCeiling.providers.claude': [
|
|
582
|
+
'workflow.dispatchCeiling.providers.claude': [
|
|
583
|
+
'haiku',
|
|
584
|
+
'sonnet',
|
|
585
|
+
'opus',
|
|
586
|
+
'fable',
|
|
587
|
+
],
|
|
551
588
|
};
|
|
552
589
|
const WORKFLOW_BOOLEAN_KEYS = new Set([
|
|
553
590
|
'workflow.archiveOnComplete',
|
|
@@ -633,6 +670,32 @@ function parseWorkflowValue(key, rawValue) {
|
|
|
633
670
|
}
|
|
634
671
|
function applyWorkflowValue(workflow, key, value) {
|
|
635
672
|
const subKey = key.slice('workflow.'.length);
|
|
673
|
+
if (subKey === 'dispatchPolicy.mode') {
|
|
674
|
+
const mode = value;
|
|
675
|
+
if (mode === 'inherit') {
|
|
676
|
+
return {
|
|
677
|
+
...workflow,
|
|
678
|
+
dispatchPolicy: { mode },
|
|
679
|
+
};
|
|
680
|
+
}
|
|
681
|
+
const policy = workflow.dispatchPolicy?.policy;
|
|
682
|
+
if (!policy) {
|
|
683
|
+
throw new Error('Cannot set workflow.dispatchPolicy.mode to managed without an existing workflow.dispatchPolicy.policy. Set workflow.dispatchPolicy.policy <economy|balanced|high|frontier|uncapped> instead.');
|
|
684
|
+
}
|
|
685
|
+
return {
|
|
686
|
+
...workflow,
|
|
687
|
+
dispatchPolicy: { mode, policy },
|
|
688
|
+
};
|
|
689
|
+
}
|
|
690
|
+
if (subKey === 'dispatchPolicy.policy') {
|
|
691
|
+
return {
|
|
692
|
+
...workflow,
|
|
693
|
+
dispatchPolicy: {
|
|
694
|
+
mode: 'managed',
|
|
695
|
+
policy: value,
|
|
696
|
+
},
|
|
697
|
+
};
|
|
698
|
+
}
|
|
636
699
|
if (subKey === 'dispatchCeiling.preset') {
|
|
637
700
|
// Presets compile to concrete per-provider values at write time so the
|
|
638
701
|
// resolver (which reads only providers.*) gets a usable ceiling. The preset
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/project/dispatch-ceiling/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/project/dispatch-ceiling/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EAKL,KAAK,uBAAuB,EAK7B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,iBAAiB,CAAC;AASzB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6BpC,UAAU,2BAA2B;IACnC,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,sBAAsB,EAAE,CACtB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,CAAC,UAAU,KACnB,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7B,oBAAoB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAC7E,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC;CAC/B;AA2+BD,wBAAgB,mCAAmC,CACjD,SAAS,GAAE,OAAO,CAAC,2BAA2B,CAAM,GACnD,OAAO,CAqDT"}
|