@open-agent-toolkit/cli 0.2.59 → 0.2.62

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 (78) hide show
  1. package/assets/agents/oat-phase-implementer.md +27 -4
  2. package/assets/agents/oat-reviewer.md +25 -14
  3. package/assets/bundle-metadata.json +1 -1
  4. package/assets/docs/cli-utilities/workflow-gates.md +3 -3
  5. package/assets/docs/reference/cli-reference.md +10 -3
  6. package/assets/docs/reference/oat-directory-structure.md +1 -0
  7. package/assets/docs/workflows/ideas/index.md +1 -1
  8. package/assets/docs/workflows/index.md +1 -0
  9. package/assets/docs/workflows/projects/artifacts.md +24 -3
  10. package/assets/docs/workflows/projects/hill-checkpoints.md +21 -0
  11. package/assets/docs/workflows/projects/implementation-execution.md +5 -0
  12. package/assets/docs/workflows/projects/lifecycle.md +124 -7
  13. package/assets/docs/workflows/projects/pr-flow.md +2 -0
  14. package/assets/docs/workflows/projects/reviews.md +1 -1
  15. package/assets/docs/workflows/projects/state-machine.md +20 -0
  16. package/assets/docs/workflows/skills/index.md +2 -1
  17. package/assets/public-package-versions.json +4 -4
  18. package/assets/skills/oat-brainstorm/SKILL.md +61 -12
  19. package/assets/skills/oat-docs/SKILL.md +13 -8
  20. package/assets/skills/oat-doctor/SKILL.md +3 -3
  21. package/assets/skills/oat-pjm-review-backlog/SKILL.md +2 -2
  22. package/assets/skills/oat-project-autonomous/SKILL.md +14 -9
  23. package/assets/skills/oat-project-autonomous/references/gate-inventory.md +56 -42
  24. package/assets/skills/oat-project-capture/SKILL.md +2 -2
  25. package/assets/skills/oat-project-discover/SKILL.md +6 -5
  26. package/assets/skills/oat-project-document/SKILL.md +11 -1
  27. package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +56 -42
  28. package/assets/skills/oat-project-implement/SKILL.md +3 -3
  29. package/assets/skills/oat-project-implement/references/completion-and-closeout.md +106 -15
  30. package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +56 -42
  31. package/assets/skills/oat-project-implement/references/phase-execution.md +16 -1
  32. package/assets/skills/oat-project-implement/references/plan-and-resume.md +19 -1
  33. package/assets/skills/oat-project-import-plan/SKILL.md +47 -3
  34. package/assets/skills/oat-project-lite/SKILL.md +467 -0
  35. package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +331 -0
  36. package/assets/skills/oat-project-next/SKILL.md +26 -10
  37. package/assets/skills/oat-project-plan/SKILL.md +14 -2
  38. package/assets/skills/oat-project-plan-writing/SKILL.md +6 -3
  39. package/assets/skills/oat-project-pr-final/SKILL.md +33 -7
  40. package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +56 -42
  41. package/assets/skills/oat-project-pr-progress/SKILL.md +3 -3
  42. package/assets/skills/oat-project-progress/SKILL.md +16 -3
  43. package/assets/skills/oat-project-promote-spec-driven/SKILL.md +3 -1
  44. package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +56 -42
  45. package/assets/skills/oat-project-review-provide/SKILL.md +25 -6
  46. package/assets/skills/oat-project-summary/SKILL.md +27 -3
  47. package/assets/templates/plan-lite.md +165 -0
  48. package/assets/templates/plan.md +1 -1
  49. package/assets/templates/state.md +1 -1
  50. package/dist/commands/project/index.d.ts.map +1 -1
  51. package/dist/commands/project/index.js +2 -0
  52. package/dist/commands/project/new/index.d.ts +3 -2
  53. package/dist/commands/project/new/index.d.ts.map +1 -1
  54. package/dist/commands/project/new/index.js +2 -1
  55. package/dist/commands/project/new/scaffold.d.ts +5 -3
  56. package/dist/commands/project/new/scaffold.d.ts.map +1 -1
  57. package/dist/commands/project/new/scaffold.js +38 -10
  58. package/dist/commands/project/promote/index.d.ts +2 -0
  59. package/dist/commands/project/promote/index.d.ts.map +1 -0
  60. package/dist/commands/project/promote/index.js +1 -0
  61. package/dist/commands/project/promote/promote.d.ts +47 -0
  62. package/dist/commands/project/promote/promote.d.ts.map +1 -0
  63. package/dist/commands/project/promote/promote.js +322 -0
  64. package/dist/commands/project/split/run.d.ts.map +1 -1
  65. package/dist/commands/project/split/run.js +8 -1
  66. package/dist/commands/project/validate-plan/index.d.ts.map +1 -1
  67. package/dist/commands/project/validate-plan/index.js +25 -1
  68. package/dist/commands/project/validate-plan/validate-plan.d.ts +8 -0
  69. package/dist/commands/project/validate-plan/validate-plan.d.ts.map +1 -1
  70. package/dist/commands/project/validate-plan/validate-plan.js +49 -0
  71. package/dist/commands/shared/frontmatter.d.ts +1 -1
  72. package/dist/commands/shared/frontmatter.d.ts.map +1 -1
  73. package/dist/commands/shared/frontmatter.js +1 -0
  74. package/dist/commands/state/generate.d.ts.map +1 -1
  75. package/dist/commands/state/generate.js +23 -0
  76. package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
  77. package/dist/commands/tools/shared/pack-manifest.js +2 -0
  78. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-project-review-provide
3
- version: 1.5.4
3
+ version: 1.5.5
4
4
  description: Use when the user explicitly asks to review an OAT project — e.g. "review project", "review the project", "run project review", or confirms a previously offered review. Do NOT auto-invoke on completed work alone. Resolves a project review scope and offers before running.
5
5
  disable-model-invocation: false
6
6
  user-invocable: true
@@ -306,6 +306,7 @@ WORKFLOW_MODE=$(oat project status --project-path "$PROJECT_PATH" --field projec
306
306
  - `spec-driven`: `spec.md`, `design.md`, `plan.md`
307
307
  - `quick`: `discovery.md`, `plan.md` (`spec.md`/`design.md` optional if present)
308
308
  - `import`: `plan.md` (`references/imported-plan.md` recommended, `spec.md`/`design.md` optional)
309
+ - `lite`: `plan.md`, `implementation.md` (`discovery.md`/`spec.md`/`design.md` are absent by design)
309
310
 
310
311
  **Required for artifact review:**
311
312
 
@@ -314,9 +315,10 @@ WORKFLOW_MODE=$(oat project status --project-path "$PROJECT_PATH" --field projec
314
315
  - reviewing `spec` requires `discovery.md`
315
316
  - reviewing `design` in `spec-driven` mode requires `spec.md`
316
317
  - reviewing `design` in `quick/import` mode requires only `discovery.md` (spec is skipped in these modes)
317
- - in `quick/import` mode, missing `spec.md` must not be treated as a project review gate failure for `artifact design`; proceed with normal project-scoped review flow, artifact writing, and bookkeeping
318
+ - in `quick/import` mode (lite has no design artifact), missing `spec.md` must not be treated as a project review gate failure for `artifact design`; proceed with normal project-scoped review flow, artifact writing, and bookkeeping
318
319
  - reviewing `plan` in `spec-driven` mode requires `spec.md` + `design.md`
319
- - reviewing `plan` in `quick/import` mode may use `discovery.md` and/or `references/imported-plan.md` instead
320
+ - reviewing `plan` in `quick/import` mode may use `discovery.md` and/or `references/imported-plan.md` instead; lite uses the separate rule below
321
+ - reviewing `plan` in `lite` mode requires only `plan.md`; its Summary, Decisions, Assumptions, Out of Scope, and Validation Criteria sections are the complete upstream contract
320
322
 
321
323
  **If missing:** Report missing required artifacts for the current mode and stop if requirements are not met.
322
324
 
@@ -502,6 +504,8 @@ case "$SCOPE_TOKEN" in
502
504
  FILES_CHANGED=$(printf "%s\n" "$PROJECT_PATH/plan.md" "$PROJECT_PATH/spec.md" "$PROJECT_PATH/design.md")
503
505
  elif [[ "$WORKFLOW_MODE" == "quick" ]]; then
504
506
  FILES_CHANGED=$(printf "%s\n" "$PROJECT_PATH/plan.md" "$PROJECT_PATH/discovery.md")
507
+ elif [[ "$WORKFLOW_MODE" == "lite" ]]; then
508
+ FILES_CHANGED=$(printf "%s\n" "$PROJECT_PATH/plan.md")
505
509
  else
506
510
  FILES_CHANGED=$(printf "%s\n" "$PROJECT_PATH/plan.md" "$PROJECT_PATH/references/imported-plan.md")
507
511
  fi
@@ -581,10 +585,12 @@ Build the "Review Scope" metadata for the reviewer:
581
585
  **Scope:** {scope}{optional: " (" + SCOPE_RANGE + ")"}
582
586
  **Date:** {today}
583
587
 
588
+ - Workflow mode: {WORKFLOW_MODE}
589
+
584
590
  **Artifact Paths:**
585
591
 
586
- - Spec: {PROJECT_PATH}/spec.md (required in spec-driven mode; optional in quick/import)
587
- - Design: {PROJECT_PATH}/design.md (required in spec-driven mode; optional in quick/import)
592
+ - Spec: {PROJECT_PATH}/spec.md (required in spec-driven mode; optional in quick/import/lite)
593
+ - Design: {PROJECT_PATH}/design.md (required in spec-driven mode; optional in quick/import/lite)
588
594
  - Plan: {PROJECT_PATH}/plan.md
589
595
  - Implementation: {PROJECT_PATH}/implementation.md
590
596
  - Discovery: {PROJECT_PATH}/discovery.md
@@ -622,6 +628,19 @@ Build the "Review Scope" metadata for the reviewer:
622
628
  - Do not force a code-defect framing for accepted design drift; `oat-project-review-receive` can convert artifact drift into alignment tasks or explicit deferrals.
623
629
  ```
624
630
 
631
+ For `WORKFLOW_MODE=lite`, render the artifact-path portion of every artifact-plan
632
+ and code-final Review Scope explicitly as:
633
+
634
+ - Discovery: not required (absent by design)
635
+ - Spec: not required (absent by design)
636
+ - Design: not required (absent by design)
637
+ - Import reference: not required
638
+ - Plan: `{PROJECT_PATH}/plan.md` (Summary, Decisions, Assumptions, Out of Scope, and Validation Criteria are the requirements contract)
639
+ - Implementation: `{PROJECT_PATH}/implementation.md`
640
+
641
+ Always pass the resolved workflow mode. Never omit it and let the reviewer fall
642
+ back to its spec-driven default.
643
+
625
644
  ### Step 6: Execute Review (3-Tier Capability Model)
626
645
 
627
646
  **Canonical reviewer instructions:** Before a direct reviewer-definition read or
@@ -944,7 +963,7 @@ If running inline (Tier 3), execute the review and write artifact.
944
963
  **Review checklist (from oat-reviewer):**
945
964
 
946
965
  1. Verify scope (don't review out-of-scope changes)
947
- 2. If code review: verify alignment to available requirements sources (`spec`/`design` for spec-driven mode; `discovery`/import reference for quick/import)
966
+ 2. If code review: verify alignment to available requirements sources (`spec`/`design` for spec-driven mode; `discovery`/import reference for quick/import; plan.md Summary, Decisions, Assumptions, Out of Scope, and Validation Criteria for lite)
948
967
  3. If code review: verify code quality (correctness, tests, security, maintainability)
949
968
  4. If artifact review: verify completeness/clarity/readiness of the artifact and its alignment with upstream artifacts
950
969
  5. Categorize findings (Critical/Important/Medium/Minor)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-project-summary
3
- version: 1.5.1
3
+ version: 1.5.2
4
4
  description: Use when the user requests or confirms summarizing an active OAT project — e.g. "summarize the project", "generate the summary", "run oat-project-summary", or confirms a previously offered summary run. Do NOT auto-invoke when implementation completes. Generates summary.md from project artifacts as institutional memory.
5
5
  disable-model-invocation: false
6
6
  user-invocable: true
@@ -117,7 +117,16 @@ test -f "$PROJECT_PATH/implementation.md"
117
117
 
118
118
  ### Step 2: Read Project Artifacts
119
119
 
120
- Read all available artifacts for synthesis:
120
+ For `oat_workflow_mode: lite`, use the reduced artifact contract and skip the
121
+ ordinary artifact list below. Read the five `plan.md` sections `Summary`,
122
+ `Decisions`, `Assumptions`, `Out of Scope`, and `Validation Criteria`, then read
123
+ `implementation.md` for task outcomes and the shipped results in `Final
124
+ Summary (for PR/docs)`. Read `state.md` only for routing metadata. A lite
125
+ project accepts `discovery.md`, `spec.md`, and `design.md` as absent; do not
126
+ read or require them. Ground the summary in what actually shipped, with
127
+ `implementation.md` taking precedence over the plan.
128
+
129
+ For every other workflow mode, read all available artifacts for synthesis:
121
130
 
122
131
  - `"$PROJECT_PATH/discovery.md"` — initial request, decisions, constraints
123
132
  - `"$PROJECT_PATH/spec.md"` — requirements, goals (optional — may not exist in quick mode)
@@ -213,7 +222,22 @@ For each section, synthesize content from the relevant artifacts. Apply these ru
213
222
 
214
223
  **Minimum viable summary:** Overview + What Was Implemented + Key Decisions. All other sections are included only when they have content worth preserving.
215
224
 
216
- **Section sources:**
225
+ **Lite section sources:**
226
+
227
+ Use this table only for `oat_workflow_mode: lite`. It maps every canonical lite
228
+ plan section and shipped implementation results without requiring discovery,
229
+ spec, or design artifacts.
230
+
231
+ | Summary Section | Primary Lite Sources |
232
+ | -------------------- | ------------------------------------------------------------- |
233
+ | Overview | plan.md `Summary`; implementation.md `Final Summary` |
234
+ | What Was Implemented | implementation.md shipped results and task outcomes |
235
+ | Key Decisions | plan.md `Decisions`; implementation.md accepted decisions |
236
+ | Tradeoffs Made | plan.md `Assumptions`; implementation.md decisions |
237
+ | Follow-up Items | plan.md `Out of Scope`; implementation.md deferred results |
238
+ | Integration Notes | plan.md `Validation Criteria`; implementation.md test results |
239
+
240
+ **Non-lite section sources:**
217
241
 
218
242
  | Section | Primary Sources |
219
243
  | ------------------------------ | ---------------------------------------------------------------------- |
@@ -0,0 +1,165 @@
1
+ ---
2
+ oat_status: in_progress
3
+ oat_ready_for: null
4
+ oat_blockers: []
5
+ oat_last_updated: YYYY-MM-DD
6
+ oat_phase: plan
7
+ oat_phase_status: in_progress
8
+ oat_plan_hill_phases: []
9
+ oat_plan_parallel_groups: []
10
+ oat_plan_source: lite
11
+ oat_import_reference: null
12
+ oat_import_source_path: null
13
+ oat_import_provider: null
14
+ oat_generated: false
15
+ oat_template: true
16
+ oat_template_name: plan-lite
17
+ ---
18
+
19
+ # Lite Plan: {Project Name}
20
+
21
+ **Goal:** [State the outcome this single-sitting change must achieve.]
22
+
23
+ ## Summary
24
+
25
+ [Summarize the requested behavior and the smallest coherent implementation.]
26
+
27
+ ## Decisions
28
+
29
+ - **Content shape:** `[minimal | product | technical | both]` — [One-line rationale tied to the observable shape triggers.]
30
+ - [Record the other decisions made during the critical interview.]
31
+
32
+ ## Product Behavior
33
+
34
+ <!-- Include for product or both; omit this section for minimal or technical. -->
35
+
36
+ 1. **[Observable behavior]** — [State the testable user-visible outcome.]
37
+
38
+ ## Technical Design
39
+
40
+ <!-- Include for technical or both; omit this section for minimal or product. -->
41
+
42
+ - **Current operation:** [Describe how the affected modules and contracts work now.]
43
+ - **Proposed changes:** [Describe the change with file-and-symbol references, not line numbers.]
44
+ - **Data flow:** [When state or data crosses a boundary, describe its path and transformations. Omit this item otherwise.]
45
+
46
+ ## Assumptions
47
+
48
+ - [Record assumptions the implementation and validation depend on.]
49
+
50
+ ## Out of Scope
51
+
52
+ - [Name adjacent work intentionally excluded from this change.]
53
+
54
+ ## Validation Criteria
55
+
56
+ - [ ] [Observable criterion] — Check: `[exact verification command]`
57
+ - [ ] [Observable criterion] — Check: `[exact verification command]`
58
+
59
+ ## Parallelism
60
+
61
+ This plan has one phase and executes sequentially.
62
+
63
+ ## Phase 1: [Phase Name]
64
+
65
+ ### Task p01-t01: [Task Name]
66
+
67
+ **Files:**
68
+
69
+ - Create: `[path/to/file.ts]`
70
+ - Modify: `[path/to/existing.ts]`
71
+
72
+ **Implementation and Proof Strategy:**
73
+
74
+ - **Strategy:** `[test-first | characterization-first | implementation-then-regression | static-or-build | manual-or-visual]`
75
+ - **Observable risk:** [Name the behavior, contract, or invariant this evidence covers.]
76
+ - **Why proportionate:** [Explain why this is the smallest proof capable of detecting the relevant failure.]
77
+
78
+ **Step 1: Implement**
79
+
80
+ [Describe the bounded implementation in the order required by the selected strategy.]
81
+
82
+ **Step 2: Prove**
83
+
84
+ Run: `[exact proof command or manual: instruction]`
85
+ Expected: [State the observable passing result and, for behavior changes, how this proof fails without the change.]
86
+
87
+ **Step 3: Refactor and format**
88
+
89
+ [Describe bounded cleanup and name the exact write-mode formatting command.]
90
+
91
+ **Step 4: Verify**
92
+
93
+ Run: `[exact task verification command]`
94
+ Expected: No errors
95
+
96
+ **Step 5: Commit**
97
+
98
+ ```bash
99
+ git add [task files]
100
+ git commit -m "feat(p01-t01): [description]"
101
+ ```
102
+
103
+ ---
104
+
105
+ ### Task p01-t02: [Task Name]
106
+
107
+ **Files:**
108
+
109
+ - Modify: `[path/to/existing.ts]`
110
+
111
+ **Implementation and Proof Strategy:**
112
+
113
+ - **Strategy:** `[test-first | characterization-first | implementation-then-regression | static-or-build | manual-or-visual]`
114
+ - **Observable risk:** [Name the behavior, contract, or invariant this evidence covers.]
115
+ - **Why proportionate:** [Explain why this is the smallest proof capable of detecting the relevant failure.]
116
+
117
+ **Step 1: Implement**
118
+
119
+ [Describe the bounded implementation in the order required by the selected strategy.]
120
+
121
+ **Step 2: Prove**
122
+
123
+ Run: `[exact proof command or manual: instruction]`
124
+ Expected: [State the observable passing result and, for behavior changes, how this proof fails without the change.]
125
+
126
+ **Step 3: Refactor and format**
127
+
128
+ [Describe bounded cleanup and name the exact write-mode formatting command.]
129
+
130
+ **Step 4: Verify**
131
+
132
+ Run: `[exact task verification command]`
133
+ Expected: No errors
134
+
135
+ **Step 5: Commit**
136
+
137
+ ```bash
138
+ git add [task files]
139
+ git commit -m "feat(p01-t02): [description]"
140
+ ```
141
+
142
+ ---
143
+
144
+ ## Reviews
145
+
146
+ | Scope | Type | Status | Date | Artifact | Reviewed Head | Invocation | Gate Target |
147
+ | ------ | -------- | ------- | ---- | -------- | ------------- | ---------- | ----------- |
148
+ | p01 | code | pending | - | - | - | - | - |
149
+ | final | code | pending | - | - | - | - | - |
150
+ | spec | artifact | pending | - | - | - | - | - |
151
+ | design | artifact | pending | - | - | - | - | - |
152
+
153
+ ## Implementation Complete
154
+
155
+ **Summary:**
156
+
157
+ - Phase 1: [N] tasks — [Description]
158
+
159
+ **Total: [N] tasks**
160
+
161
+ Ready for final code review and PR preparation.
162
+
163
+ ## References
164
+
165
+ - Imported Source: `references/imported-plan.md` (when imported provenance applies)
@@ -7,7 +7,7 @@ oat_phase: plan
7
7
  oat_phase_status: in_progress
8
8
  oat_plan_hill_phases: [] # phases to pause AFTER completing (empty = every phase)
9
9
  oat_plan_parallel_groups: [] # groups of phases that run concurrently in worktrees; [] = fully sequential
10
- oat_plan_source: spec-driven # spec-driven | quick | imported
10
+ oat_plan_source: spec-driven # spec-driven | quick | imported | lite
11
11
  oat_import_reference: null # e.g., references/imported-plan.md
12
12
  oat_import_source_path: null # original source path provided by user
13
13
  oat_import_provider: null # codex | cursor | claude | null
@@ -34,7 +34,7 @@ oat_phase_status: in_progress # Status: in_progress | complete | pr_open
34
34
  # - { harness: cursor, model: gpt-5.5-xhigh }
35
35
  # source: project-state
36
36
  # oat_dispatch_ceiling: # legacy compatibility alias for capped managed provider targets
37
- oat_workflow_mode: { OAT_WORKFLOW_MODE } # spec-driven | quick | import
37
+ oat_workflow_mode: { OAT_WORKFLOW_MODE } # spec-driven | quick | import | lite
38
38
  oat_workflow_origin: native # native | imported
39
39
  # oat_skill_gate_overrides: # optional; per-project posture for configured lifecycle gates
40
40
  # oat-project-implement: disabled # only the literal value `disabled`; absence means follow configuration
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/project/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC,wBAAgB,oBAAoB,IAAI,OAAO,CAuB9C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/project/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBpC,wBAAgB,oBAAoB,IAAI,OAAO,CAwB9C"}
@@ -11,6 +11,7 @@ import { createProjectMigrateCommand } from './migrate/index.js';
11
11
  import { createProjectNewCommand } from './new/index.js';
12
12
  import { createProjectOpenCommand } from './open/index.js';
13
13
  import { createProjectPauseCommand } from './pause/index.js';
14
+ import { createProjectPromoteCommand } from './promote/index.js';
14
15
  import { createProjectPruneCommand } from './prune/index.js';
15
16
  import { createProjectPullCommand } from './pull/index.js';
16
17
  import { createProjectPushCommand } from './push/index.js';
@@ -34,6 +35,7 @@ export function createProjectCommand() {
34
35
  .addCommand(createProjectNewCommand())
35
36
  .addCommand(createProjectOpenCommand())
36
37
  .addCommand(createProjectPauseCommand())
38
+ .addCommand(createProjectPromoteCommand())
37
39
  .addCommand(createProjectPruneCommand())
38
40
  .addCommand(createProjectPushCommand())
39
41
  .addCommand(createProjectPullCommand())
@@ -1,13 +1,14 @@
1
1
  import { type CommandContext, type GlobalOptions } from '../../../app/command-context.js';
2
2
  import { type ProjectScope } from '../../shared/project-scope.js';
3
+ import { type WorkflowMode } from '@open-agent-toolkit/control-plane';
3
4
  import { Command } from 'commander';
4
- import { type ProjectScaffoldMode, type ScaffoldProjectResult } from './scaffold.js';
5
+ import { type ScaffoldProjectResult } from './scaffold.js';
5
6
  interface ProjectNewDependencies {
6
7
  buildCommandContext: (options: GlobalOptions) => CommandContext;
7
8
  scaffoldProject: (options: {
8
9
  repoRoot: string;
9
10
  projectName: string;
10
- mode: ProjectScaffoldMode;
11
+ mode: WorkflowMode;
11
12
  force: boolean;
12
13
  setActive: boolean;
13
14
  refreshDashboard: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/project/new/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAE5C,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC3B,MAAM,YAAY,CAAC;AAmBpB,UAAU,sBAAsB;IAC9B,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,eAAe,EAAE,CAAC,OAAO,EAAE;QACzB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,mBAAmB,CAAC;QAC1B,KAAK,EAAE,OAAO,CAAC;QACf,SAAS,EAAE,OAAO,CAAC;QACnB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,MAAM,EAAE,OAAO,CAAC;QAChB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,KAAK,CAAC,EAAE,YAAY,CAAC;KACtB,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACtC;AAmGD,wBAAgB,uBAAuB,CACrC,SAAS,GAAE,OAAO,CAAC,sBAAsB,CAAM,GAC9C,OAAO,CAgDT"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/project/new/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAE5C,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,YAAY,CAAC;AAmBpB,UAAU,sBAAsB;IAC9B,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,eAAe,EAAE,CAAC,OAAO,EAAE;QACzB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,YAAY,CAAC;QACnB,KAAK,EAAE,OAAO,CAAC;QACf,SAAS,EAAE,OAAO,CAAC;QACnB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,MAAM,EAAE,OAAO,CAAC;QAChB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,KAAK,CAAC,EAAE,YAAY,CAAC;KACtB,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACtC;AAmGD,wBAAgB,uBAAuB,CACrC,SAAS,GAAE,OAAO,CAAC,sBAAsB,CAAM,GAC9C,OAAO,CAgDT"}
@@ -2,6 +2,7 @@ import { buildCommandContext, } from '../../../app/command-context.js';
2
2
  import { PROJECT_SCOPES, } from '../../shared/project-scope.js';
3
3
  import { readGlobalOptions } from '../../shared/shared.utils.js';
4
4
  import { CliError } from '../../../errors/cli-error.js';
5
+ import { WORKFLOW_MODES, } from '@open-agent-toolkit/control-plane';
5
6
  import { Command, Option } from 'commander';
6
7
  import { scaffoldProject as defaultScaffoldProject, } from './scaffold.js';
7
8
  const COMMIT_STATUS_MESSAGES = {
@@ -98,7 +99,7 @@ export function createProjectNewCommand(overrides = {}) {
98
99
  .description('Create or update an OAT project scaffold')
99
100
  .argument('<name>', 'Project name (letters, numbers, dash, underscore)')
100
101
  .addOption(new Option('--mode <mode>', 'Scaffold mode')
101
- .choices(['spec-driven', 'quick', 'import'])
102
+ .choices([...WORKFLOW_MODES])
102
103
  .default('spec-driven'))
103
104
  .addOption(new Option('--scope <scope>', 'Project scope').choices(PROJECT_SCOPES))
104
105
  .option('--force', 'Allow a duplicate slug in another scope; scaffold remains non-destructive')
@@ -4,12 +4,12 @@ import { writeSyncedRecord } from '../../project/sync/record.js';
4
4
  import { commitRecordChange, createSyncedProject, pushSynced, rollbackCreatedSyncedProject } from '../../project/sync/ref-sync.js';
5
5
  import { resolveDefaultScope, type ProjectScope } from '../../shared/project-scope.js';
6
6
  import { setActiveProject } from '../../../config/oat-config.js';
7
- export type ProjectScaffoldMode = 'spec-driven' | 'quick' | 'import';
7
+ import type { WorkflowMode } from '@open-agent-toolkit/control-plane';
8
8
  export interface ScaffoldProjectOptions {
9
9
  repoRoot: string;
10
10
  projectName: string;
11
11
  scope?: ProjectScope;
12
- mode?: ProjectScaffoldMode;
12
+ mode?: WorkflowMode;
13
13
  force?: boolean;
14
14
  setActive?: boolean;
15
15
  refreshDashboard?: boolean;
@@ -34,7 +34,7 @@ export interface ScaffoldProjectOptions {
34
34
  */
35
35
  export type CommitScaffoldStatus = 'committed' | 'skipped_disabled' | 'skipped_no_worktree' | 'skipped_nothing' | 'failed';
36
36
  export interface ScaffoldProjectResult {
37
- mode: ProjectScaffoldMode;
37
+ mode: WorkflowMode;
38
38
  scope: ProjectScope;
39
39
  projectsRoot: string;
40
40
  projectPath: string;
@@ -60,5 +60,7 @@ export interface ScaffoldProjectDependencies {
60
60
  ensureScopedRootGitignore: typeof ensureScopedRootGitignore;
61
61
  setActiveProject: typeof setActiveProject;
62
62
  }
63
+ export declare function applyTemplateReplacements(template: string, projectName: string, today: string, nowUtc: string, mode: WorkflowMode): string;
64
+ export declare function resolveTemplateSource(userOatRoot: string, repoRoot: string, templateFile: string): Promise<string>;
63
65
  export declare function scaffoldProject(options: ScaffoldProjectOptions, overrides?: Partial<ScaffoldProjectDependencies>): Promise<ScaffoldProjectResult>;
64
66
  //# sourceMappingURL=scaffold.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../../../src/commands/project/new/scaffold.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAErE,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAEL,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEL,kBAAkB,EAClB,mBAAmB,EACnB,UAAU,EACV,4BAA4B,EAC7B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAGL,mBAAmB,EAGnB,KAAK,YAAY,EAClB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAOtD,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG,OAAO,GAAG,QAAQ,CAAC;AAErE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wBAAwB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvE;AAED;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAC5B,WAAW,GACX,kBAAkB,GAClB,qBAAqB,GACrB,iBAAiB,GACjB,QAAQ,CAAC;AAEb,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,KAAK,EAAE,YAAY,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,oBAAoB,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,2BAA2B;IAC1C,mBAAmB,EAAE,OAAO,mBAAmB,CAAC;IAChD,SAAS,EAAE,SAAS,CAAC;IACrB,mBAAmB,EAAE,OAAO,mBAAmB,CAAC;IAChD,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;IAC9C,4BAA4B,EAAE,OAAO,4BAA4B,CAAC;IAClE,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;IAC5C,yBAAyB,EAAE,OAAO,yBAAyB,CAAC;IAC5D,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;CAC3C;AA6bD,wBAAsB,eAAe,CACnC,OAAO,EAAE,sBAAsB,EAC/B,SAAS,GAAE,OAAO,CAAC,2BAA2B,CAAM,GACnD,OAAO,CAAC,qBAAqB,CAAC,CAsXhC"}
1
+ {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../../../src/commands/project/new/scaffold.ts"],"names":[],"mappings":"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"}
@@ -37,7 +37,15 @@ const TEMPLATES_BY_MODE = {
37
37
  ],
38
38
  quick: ['state.md', 'discovery.md', 'plan.md', 'implementation.md'],
39
39
  import: ['state.md', 'plan.md', 'implementation.md'],
40
+ lite: [
41
+ 'state.md',
42
+ { source: 'plan-lite.md', target: 'plan.md' },
43
+ 'implementation.md',
44
+ ],
40
45
  };
46
+ function normalizeTemplateEntry(entry) {
47
+ return typeof entry === 'string' ? { source: entry, target: entry } : entry;
48
+ }
41
49
  const OAT_PLACEHOLDER_PATTERN = /(?<!\{)\{\s*(OAT_[A-Z0-9_]+)\s*\}(?!\})/g;
42
50
  const STATE_TEMPLATE_BY_MODE = {
43
51
  'spec-driven': {
@@ -97,6 +105,22 @@ const STATE_TEMPLATE_BY_MODE = {
97
105
  ],
98
106
  nextMilestone: 'Run `oat-project-import-plan` to normalize the external plan',
99
107
  },
108
+ lite: {
109
+ hillCheckpoints: '[]',
110
+ phase: 'plan',
111
+ status: 'Plan',
112
+ currentPhase: 'Plan - Authoring a single-phase lite plan',
113
+ artifacts: [
114
+ '- **Plan:** `plan.md` (scaffolded lite template — not started)',
115
+ '- **Implementation:** `implementation.md` (scaffolded template — not started)',
116
+ ],
117
+ progress: [
118
+ '- ✓ Lite project scaffolded',
119
+ '- ✓ Plan and implementation artifacts scaffolded',
120
+ '- ⧗ Awaiting critical interview and plan authoring',
121
+ ],
122
+ nextMilestone: 'Run `oat-project-lite` to author and approve the plan',
123
+ },
100
124
  };
101
125
  function replaceOatPlaceholders(template, replacements) {
102
126
  return template.replace(OAT_PLACEHOLDER_PATTERN, (placeholder, token) => replacements[token] ?? placeholder);
@@ -120,7 +144,7 @@ function validateProjectName(name) {
120
144
  function shellQuote(value) {
121
145
  return `'${value.replaceAll("'", "'\\''")}'`;
122
146
  }
123
- function applyTemplateReplacements(template, projectName, today, nowUtc, mode) {
147
+ export function applyTemplateReplacements(template, projectName, today, nowUtc, mode) {
124
148
  const stateContent = STATE_TEMPLATE_BY_MODE[mode];
125
149
  const oatReplacements = {
126
150
  OAT_HILL_CHECKPOINTS: stateContent.hillCheckpoints,
@@ -185,21 +209,25 @@ async function commitScaffold(cwd, absoluteProjectPath, projectName, createdFile
185
209
  async function scaffoldModeTemplates(userOatRoot, repoRoot, absoluteProjectPath, projectName, mode, today, nowUtc) {
186
210
  const createdFiles = [];
187
211
  const skippedFiles = [];
188
- for (const templateFile of TEMPLATES_BY_MODE[mode]) {
189
- const src = await resolveTemplateSource(userOatRoot, repoRoot, templateFile);
190
- const dest = join(absoluteProjectPath, templateFile);
212
+ for (const entry of TEMPLATES_BY_MODE[mode]) {
213
+ const { source, target } = normalizeTemplateEntry(entry);
214
+ const src = await resolveTemplateSource(userOatRoot, repoRoot, source);
215
+ const dest = join(absoluteProjectPath, target);
191
216
  if (await fileExists(dest)) {
192
- skippedFiles.push(templateFile);
217
+ skippedFiles.push(target);
193
218
  continue;
194
219
  }
195
220
  const template = await readFile(src, 'utf8');
196
- const rendered = applyTemplateReplacements(template, projectName, today, nowUtc, mode);
197
- assertNoUnresolvedOatPlaceholders(rendered, templateFile);
198
- if (templateFile === 'state.md') {
221
+ let rendered = applyTemplateReplacements(template, projectName, today, nowUtc, mode);
222
+ if (mode === 'lite' && target === 'plan.md') {
223
+ rendered = rendered.replace(/^---\n/, '---\noat_template: true\n');
224
+ }
225
+ assertNoUnresolvedOatPlaceholders(rendered, source);
226
+ if (target === 'state.md') {
199
227
  assertValidProjectStateContent(rendered, { filePath: dest });
200
228
  }
201
229
  await writeFile(dest, rendered, 'utf8');
202
- createdFiles.push(templateFile);
230
+ createdFiles.push(target);
203
231
  }
204
232
  return { createdFiles, skippedFiles };
205
233
  }
@@ -214,7 +242,7 @@ async function scaffoldProjectLog(userOatRoot, repoRoot, absoluteProjectPath, pr
214
242
  await writeFile(dest, instantiateProjectLogTemplate(template, projectName, today), 'utf8');
215
243
  return 'created';
216
244
  }
217
- async function resolveTemplateSource(userOatRoot, repoRoot, templateFile) {
245
+ export async function resolveTemplateSource(userOatRoot, repoRoot, templateFile) {
218
246
  const userSource = join(userOatRoot, 'templates', templateFile);
219
247
  if (await fileExists(userSource)) {
220
248
  return userSource;
@@ -0,0 +1,2 @@
1
+ export { createProjectPromoteCommand } from './promote.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/project/promote/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1 @@
1
+ export { createProjectPromoteCommand } from './promote.js';
@@ -0,0 +1,47 @@
1
+ import { mkdir as defaultMkdir, readFile as defaultReadFile, rename as defaultRename, writeFile as defaultWriteFile } from 'node:fs/promises';
2
+ import { type CommandContext, type GlobalOptions } from '../../../app/command-context.js';
3
+ import { resolveTemplateSource as defaultResolveTemplateSource } from '../../project/new/scaffold.js';
4
+ import { type GitRunner } from '../../project/sync/git.js';
5
+ import { type PushResult, type SyncTarget } from '../../project/sync/ref-sync.js';
6
+ import { fileExists as defaultFileExists } from '../../../fs/io.js';
7
+ import { Command } from 'commander';
8
+ export interface LitePlanSections {
9
+ summary: string;
10
+ decisions: string;
11
+ assumptions: string;
12
+ outOfScope: string;
13
+ validationCriteria: string;
14
+ productBehavior?: string;
15
+ technicalDesign?: string;
16
+ }
17
+ type PromotionReason = 'promoted' | 'unsupported-target' | 'not-lite' | 'lite-plan-reference-exists' | 'invalid-lite-plan' | 'scope-unresolved' | 'project-unreadable' | 'template-unreadable' | 'write-failed' | 'persistence-failed';
18
+ export type PromotionResult = {
19
+ status: 'promoted';
20
+ reason: 'promoted';
21
+ files: string[];
22
+ } | {
23
+ status: 'refused';
24
+ reason: Exclude<PromotionReason, 'promoted'>;
25
+ files: string[];
26
+ };
27
+ export interface ProjectPromoteDependencies {
28
+ buildCommandContext: (options: GlobalOptions) => CommandContext;
29
+ resolveProjectRoot: (cwd: string) => Promise<string>;
30
+ resolveProjectsRoot: (repoRoot: string, env: NodeJS.ProcessEnv) => Promise<string>;
31
+ resolveTemplateSource: typeof defaultResolveTemplateSource;
32
+ readFile: typeof defaultReadFile;
33
+ writeFile: typeof defaultWriteFile;
34
+ mkdir: typeof defaultMkdir;
35
+ rename: typeof defaultRename;
36
+ fileExists: typeof defaultFileExists;
37
+ gitRunner: GitRunner;
38
+ pushSynced: (target: SyncTarget, git: GitRunner, options: {
39
+ message?: string;
40
+ }) => Promise<PushResult>;
41
+ processEnv: NodeJS.ProcessEnv;
42
+ now: () => Date;
43
+ }
44
+ export declare function parseLitePlanSections(planContent: string, liteTemplateContent?: string): LitePlanSections | null;
45
+ export declare function createProjectPromoteCommand(overrides?: Partial<ProjectPromoteDependencies>): Command;
46
+ export {};
47
+ //# sourceMappingURL=promote.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promote.d.ts","sourceRoot":"","sources":["../../../../src/commands/project/promote/promote.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,IAAI,YAAY,EACrB,QAAQ,IAAI,eAAe,EAC3B,MAAM,IAAI,aAAa,EACvB,SAAS,IAAI,gBAAgB,EAC9B,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,qBAAqB,IAAI,4BAA4B,EACtD,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAGL,KAAK,UAAU,EACf,KAAK,UAAU,EAChB,MAAM,iCAAiC,CAAC;AAMzC,OAAO,EAAE,UAAU,IAAI,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAEzD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,KAAK,eAAe,GAChB,UAAU,GACV,oBAAoB,GACpB,UAAU,GACV,4BAA4B,GAC5B,mBAAmB,GACnB,kBAAkB,GAClB,oBAAoB,GACpB,qBAAqB,GACrB,cAAc,GACd,oBAAoB,CAAC;AAEzB,MAAM,MAAM,eAAe,GACvB;IACE,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,GACD;IACE,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAC7C,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAMN,MAAM,WAAW,0BAA0B;IACzC,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,mBAAmB,EAAE,CACnB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,CAAC,UAAU,KACnB,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,qBAAqB,EAAE,OAAO,4BAA4B,CAAC;IAC3D,QAAQ,EAAE,OAAO,eAAe,CAAC;IACjC,SAAS,EAAE,OAAO,gBAAgB,CAAC;IACnC,KAAK,EAAE,OAAO,YAAY,CAAC;IAC3B,MAAM,EAAE,OAAO,aAAa,CAAC;IAC7B,UAAU,EAAE,OAAO,iBAAiB,CAAC;IACrC,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,CACV,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,SAAS,EACd,OAAO,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,KAC1B,OAAO,CAAC,UAAU,CAAC,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC;IAC9B,GAAG,EAAE,MAAM,IAAI,CAAC;CACjB;AA4ED,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,mBAAmB,CAAC,EAAE,MAAM,GAC3B,gBAAgB,GAAG,IAAI,CAYzB;AA0SD,wBAAgB,2BAA2B,CACzC,SAAS,GAAE,OAAO,CAAC,0BAA0B,CAAM,GAClD,OAAO,CA+BT"}