specweave 1.0.235 → 1.0.239

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 (196) hide show
  1. package/README.md +89 -193
  2. package/dist/plugins/specweave-github/lib/github-ac-comment-poster.d.ts +37 -0
  3. package/dist/plugins/specweave-github/lib/github-ac-comment-poster.d.ts.map +1 -0
  4. package/dist/plugins/specweave-github/lib/github-ac-comment-poster.js +176 -0
  5. package/dist/plugins/specweave-github/lib/github-ac-comment-poster.js.map +1 -0
  6. package/dist/plugins/specweave-github/lib/github-batch-sync.d.ts +36 -0
  7. package/dist/plugins/specweave-github/lib/github-batch-sync.d.ts.map +1 -0
  8. package/dist/plugins/specweave-github/lib/github-batch-sync.js +115 -0
  9. package/dist/plugins/specweave-github/lib/github-batch-sync.js.map +1 -0
  10. package/dist/plugins/specweave-github/lib/github-board-resolver-v2.d.ts +37 -0
  11. package/dist/plugins/specweave-github/lib/github-board-resolver-v2.d.ts.map +1 -0
  12. package/dist/plugins/specweave-github/lib/github-board-resolver-v2.js +56 -0
  13. package/dist/plugins/specweave-github/lib/github-board-resolver-v2.js.map +1 -0
  14. package/dist/plugins/specweave-github/lib/github-conflict-resolver.d.ts +68 -0
  15. package/dist/plugins/specweave-github/lib/github-conflict-resolver.d.ts.map +1 -0
  16. package/dist/plugins/specweave-github/lib/github-conflict-resolver.js +102 -0
  17. package/dist/plugins/specweave-github/lib/github-conflict-resolver.js.map +1 -0
  18. package/dist/plugins/specweave-github/lib/github-cross-repo-sync.d.ts +64 -0
  19. package/dist/plugins/specweave-github/lib/github-cross-repo-sync.d.ts.map +1 -0
  20. package/dist/plugins/specweave-github/lib/github-cross-repo-sync.js +162 -0
  21. package/dist/plugins/specweave-github/lib/github-cross-repo-sync.js.map +1 -0
  22. package/dist/plugins/specweave-github/lib/github-field-sync.d.ts +50 -0
  23. package/dist/plugins/specweave-github/lib/github-field-sync.d.ts.map +1 -0
  24. package/dist/plugins/specweave-github/lib/github-field-sync.js +107 -0
  25. package/dist/plugins/specweave-github/lib/github-field-sync.js.map +1 -0
  26. package/dist/plugins/specweave-github/lib/github-graphql-client.d.ts +53 -0
  27. package/dist/plugins/specweave-github/lib/github-graphql-client.d.ts.map +1 -0
  28. package/dist/plugins/specweave-github/lib/github-graphql-client.js +138 -0
  29. package/dist/plugins/specweave-github/lib/github-graphql-client.js.map +1 -0
  30. package/dist/plugins/specweave-github/lib/github-issue-body-generator.d.ts +40 -0
  31. package/dist/plugins/specweave-github/lib/github-issue-body-generator.d.ts.map +1 -0
  32. package/dist/plugins/specweave-github/lib/github-issue-body-generator.js +50 -0
  33. package/dist/plugins/specweave-github/lib/github-issue-body-generator.js.map +1 -0
  34. package/dist/plugins/specweave-github/lib/github-issue-body-parser.d.ts +30 -0
  35. package/dist/plugins/specweave-github/lib/github-issue-body-parser.d.ts.map +1 -0
  36. package/dist/plugins/specweave-github/lib/github-issue-body-parser.js +75 -0
  37. package/dist/plugins/specweave-github/lib/github-issue-body-parser.js.map +1 -0
  38. package/dist/plugins/specweave-github/lib/github-pull-sync.d.ts +94 -0
  39. package/dist/plugins/specweave-github/lib/github-pull-sync.d.ts.map +1 -0
  40. package/dist/plugins/specweave-github/lib/github-pull-sync.js +232 -0
  41. package/dist/plugins/specweave-github/lib/github-pull-sync.js.map +1 -0
  42. package/dist/plugins/specweave-github/lib/github-push-sync.d.ts +50 -0
  43. package/dist/plugins/specweave-github/lib/github-push-sync.d.ts.map +1 -0
  44. package/dist/plugins/specweave-github/lib/github-push-sync.js +114 -0
  45. package/dist/plugins/specweave-github/lib/github-push-sync.js.map +1 -0
  46. package/dist/plugins/specweave-github/lib/github-rate-limiter.d.ts +53 -0
  47. package/dist/plugins/specweave-github/lib/github-rate-limiter.d.ts.map +1 -0
  48. package/dist/plugins/specweave-github/lib/github-rate-limiter.js +109 -0
  49. package/dist/plugins/specweave-github/lib/github-rate-limiter.js.map +1 -0
  50. package/dist/plugins/specweave-github/lib/github-spec-frontmatter-updater.d.ts +21 -0
  51. package/dist/plugins/specweave-github/lib/github-spec-frontmatter-updater.d.ts.map +1 -0
  52. package/dist/plugins/specweave-github/lib/github-spec-frontmatter-updater.js +161 -0
  53. package/dist/plugins/specweave-github/lib/github-spec-frontmatter-updater.js.map +1 -0
  54. package/dist/plugins/specweave-github/lib/github-sync-orchestrator.d.ts +46 -0
  55. package/dist/plugins/specweave-github/lib/github-sync-orchestrator.d.ts.map +1 -0
  56. package/dist/plugins/specweave-github/lib/github-sync-orchestrator.js +99 -0
  57. package/dist/plugins/specweave-github/lib/github-sync-orchestrator.js.map +1 -0
  58. package/dist/plugins/specweave-github/lib/github-us-auto-closer.d.ts +43 -0
  59. package/dist/plugins/specweave-github/lib/github-us-auto-closer.d.ts.map +1 -0
  60. package/dist/plugins/specweave-github/lib/github-us-auto-closer.js +153 -0
  61. package/dist/plugins/specweave-github/lib/github-us-auto-closer.js.map +1 -0
  62. package/dist/plugins/specweave-github/lib/index.d.ts +1 -4
  63. package/dist/plugins/specweave-github/lib/index.d.ts.map +1 -1
  64. package/dist/plugins/specweave-github/lib/index.js +1 -4
  65. package/dist/plugins/specweave-github/lib/index.js.map +1 -1
  66. package/dist/plugins/specweave-testing/lib/playwright-ci-defaults.d.ts +7 -0
  67. package/dist/plugins/specweave-testing/lib/playwright-ci-defaults.d.ts.map +1 -0
  68. package/dist/plugins/specweave-testing/lib/playwright-ci-defaults.js +15 -0
  69. package/dist/plugins/specweave-testing/lib/playwright-ci-defaults.js.map +1 -0
  70. package/dist/plugins/specweave-testing/lib/playwright-cli-detector.d.ts +10 -0
  71. package/dist/plugins/specweave-testing/lib/playwright-cli-detector.d.ts.map +1 -0
  72. package/dist/plugins/specweave-testing/lib/playwright-cli-detector.js +36 -0
  73. package/dist/plugins/specweave-testing/lib/playwright-cli-detector.js.map +1 -0
  74. package/dist/plugins/specweave-testing/lib/playwright-cli-runner.d.ts +25 -0
  75. package/dist/plugins/specweave-testing/lib/playwright-cli-runner.d.ts.map +1 -0
  76. package/dist/plugins/specweave-testing/lib/playwright-cli-runner.js +57 -0
  77. package/dist/plugins/specweave-testing/lib/playwright-cli-runner.js.map +1 -0
  78. package/dist/plugins/specweave-testing/lib/playwright-routing.d.ts +7 -0
  79. package/dist/plugins/specweave-testing/lib/playwright-routing.d.ts.map +1 -0
  80. package/dist/plugins/specweave-testing/lib/playwright-routing.js +17 -0
  81. package/dist/plugins/specweave-testing/lib/playwright-routing.js.map +1 -0
  82. package/dist/src/cli/commands/auto.d.ts.map +1 -1
  83. package/dist/src/cli/commands/auto.js +1 -2
  84. package/dist/src/cli/commands/auto.js.map +1 -1
  85. package/dist/src/cli/commands/cancel-auto.js +1 -2
  86. package/dist/src/cli/commands/cancel-auto.js.map +1 -1
  87. package/dist/src/cli/commands/living-docs.js +2 -2
  88. package/dist/src/cli/commands/living-docs.js.map +1 -1
  89. package/dist/src/cli/commands/update.d.ts.map +1 -1
  90. package/dist/src/cli/commands/update.js +1 -2
  91. package/dist/src/cli/commands/update.js.map +1 -1
  92. package/dist/src/core/config/types.d.ts +8 -0
  93. package/dist/src/core/config/types.d.ts.map +1 -1
  94. package/dist/src/core/config/types.js +3 -0
  95. package/dist/src/core/config/types.js.map +1 -1
  96. package/dist/src/core/types/sync-profile.d.ts +72 -0
  97. package/dist/src/core/types/sync-profile.d.ts.map +1 -1
  98. package/dist/src/core/types/sync-profile.js +6 -0
  99. package/dist/src/core/types/sync-profile.js.map +1 -1
  100. package/package.json +2 -2
  101. package/plugins/specweave/hooks/hooks.json +2 -2
  102. package/plugins/specweave/hooks/startup-health-check.sh +1 -1
  103. package/plugins/specweave/hooks/stop-auto-v5.sh +166 -0
  104. package/plugins/specweave/hooks/user-prompt-submit.sh +10 -0
  105. package/plugins/specweave/hooks/v2/dispatchers/post-tool-use.sh +21 -1
  106. package/plugins/specweave/hooks/v2/dispatchers/session-start.sh +1 -1
  107. package/plugins/specweave/skills/auto/SKILL.md +71 -251
  108. package/plugins/specweave/skills/team-build/SKILL.md +370 -0
  109. package/plugins/specweave/skills/team-merge/SKILL.md +123 -0
  110. package/plugins/specweave/skills/team-orchestrate/SKILL.md +800 -0
  111. package/plugins/specweave/skills/team-status/SKILL.md +89 -0
  112. package/plugins/specweave-github/MULTI-PROJECT-SYNC-ARCHITECTURE.md +94 -8
  113. package/plugins/specweave-github/commands/sync.md +17 -3
  114. package/plugins/specweave-github/hooks/github-ac-sync-handler.sh +255 -0
  115. package/plugins/specweave-github/hooks/github-auto-create-handler.sh +455 -0
  116. package/plugins/specweave-github/lib/github-ac-comment-poster.js +150 -0
  117. package/plugins/specweave-github/lib/github-ac-comment-poster.ts +245 -0
  118. package/plugins/specweave-github/lib/github-batch-sync.js +93 -0
  119. package/plugins/specweave-github/lib/github-batch-sync.ts +152 -0
  120. package/plugins/specweave-github/lib/github-board-resolver-v2.js +47 -0
  121. package/plugins/specweave-github/lib/github-board-resolver-v2.ts +73 -0
  122. package/plugins/specweave-github/lib/github-conflict-resolver.js +90 -0
  123. package/plugins/specweave-github/lib/github-conflict-resolver.ts +154 -0
  124. package/plugins/specweave-github/lib/github-cross-repo-sync.js +168 -0
  125. package/plugins/specweave-github/lib/github-cross-repo-sync.ts +252 -0
  126. package/plugins/specweave-github/lib/github-field-sync.js +116 -0
  127. package/plugins/specweave-github/lib/github-field-sync.ts +165 -0
  128. package/plugins/specweave-github/lib/github-graphql-client.js +129 -0
  129. package/plugins/specweave-github/lib/github-graphql-client.ts +181 -0
  130. package/plugins/specweave-github/lib/github-issue-body-generator.js +30 -0
  131. package/plugins/specweave-github/lib/github-issue-body-generator.ts +76 -0
  132. package/plugins/specweave-github/lib/github-issue-body-parser.js +55 -0
  133. package/plugins/specweave-github/lib/github-issue-body-parser.ts +92 -0
  134. package/plugins/specweave-github/lib/github-pull-sync.js +185 -0
  135. package/plugins/specweave-github/lib/github-pull-sync.ts +343 -0
  136. package/plugins/specweave-github/lib/github-push-sync.js +119 -0
  137. package/plugins/specweave-github/lib/github-push-sync.ts +174 -0
  138. package/plugins/specweave-github/lib/github-rate-limiter.js +96 -0
  139. package/plugins/specweave-github/lib/github-rate-limiter.ts +143 -0
  140. package/plugins/specweave-github/lib/github-spec-frontmatter-updater.js +117 -0
  141. package/plugins/specweave-github/lib/github-spec-frontmatter-updater.ts +180 -0
  142. package/plugins/specweave-github/lib/github-sync-orchestrator.js +84 -0
  143. package/plugins/specweave-github/lib/github-sync-orchestrator.ts +156 -0
  144. package/plugins/specweave-github/lib/github-us-auto-closer.js +134 -0
  145. package/plugins/specweave-github/lib/github-us-auto-closer.ts +226 -0
  146. package/plugins/specweave-github/lib/index.js +1 -7
  147. package/plugins/specweave-github/lib/index.ts +1 -4
  148. package/plugins/specweave-github/skills/github-sync/SKILL.md +76 -4
  149. package/plugins/specweave-testing/commands/e2e-setup.md +18 -0
  150. package/plugins/specweave-testing/commands/ui-automate.md +2 -0
  151. package/plugins/specweave-testing/commands/ui-inspect.md +8 -0
  152. package/plugins/specweave-testing/lib/playwright-ci-defaults.d.ts +6 -0
  153. package/plugins/specweave-testing/lib/playwright-ci-defaults.js +14 -0
  154. package/plugins/specweave-testing/lib/playwright-ci-defaults.ts +24 -0
  155. package/plugins/specweave-testing/lib/playwright-cli-detector.js +33 -0
  156. package/plugins/specweave-testing/lib/playwright-cli-detector.ts +48 -0
  157. package/plugins/specweave-testing/lib/playwright-cli-runner.js +58 -0
  158. package/plugins/specweave-testing/lib/playwright-cli-runner.ts +80 -0
  159. package/plugins/specweave-testing/lib/playwright-routing.js +16 -0
  160. package/plugins/specweave-testing/lib/playwright-routing.ts +38 -0
  161. package/plugins/specweave-testing/skills/e2e-testing/SKILL.md +38 -0
  162. package/src/templates/CLAUDE.md.template +7 -0
  163. package/src/templates/config.json.template +9 -1
  164. package/dist/plugins/specweave-github/lib/subtask-sync.d.ts +0 -51
  165. package/dist/plugins/specweave-github/lib/subtask-sync.d.ts.map +0 -1
  166. package/dist/plugins/specweave-github/lib/subtask-sync.js +0 -147
  167. package/dist/plugins/specweave-github/lib/subtask-sync.js.map +0 -1
  168. package/dist/plugins/specweave-github/lib/task-parser.d.ts +0 -37
  169. package/dist/plugins/specweave-github/lib/task-parser.d.ts.map +0 -1
  170. package/dist/plugins/specweave-github/lib/task-parser.js +0 -211
  171. package/dist/plugins/specweave-github/lib/task-parser.js.map +0 -1
  172. package/dist/plugins/specweave-github/lib/task-sync.d.ts +0 -56
  173. package/dist/plugins/specweave-github/lib/task-sync.d.ts.map +0 -1
  174. package/dist/plugins/specweave-github/lib/task-sync.js +0 -375
  175. package/dist/plugins/specweave-github/lib/task-sync.js.map +0 -1
  176. package/plugins/specweave/hooks/validate-completion-conditions.sh +0 -474
  177. package/plugins/specweave-github/lib/subtask-sync.d.ts +0 -51
  178. package/plugins/specweave-github/lib/subtask-sync.d.ts.map +0 -1
  179. package/plugins/specweave-github/lib/subtask-sync.js +0 -154
  180. package/plugins/specweave-github/lib/subtask-sync.js.map +0 -1
  181. package/plugins/specweave-github/lib/subtask-sync.ts +0 -225
  182. package/plugins/specweave-github/lib/task-parser.d.js +0 -0
  183. package/plugins/specweave-github/lib/task-parser.d.ts +0 -37
  184. package/plugins/specweave-github/lib/task-parser.d.ts.map +0 -1
  185. package/plugins/specweave-github/lib/task-parser.js +0 -195
  186. package/plugins/specweave-github/lib/task-parser.js.map +0 -1
  187. package/plugins/specweave-github/lib/task-parser.ts +0 -246
  188. package/plugins/specweave-github/lib/task-sync.d.js +0 -0
  189. package/plugins/specweave-github/lib/task-sync.d.ts +0 -51
  190. package/plugins/specweave-github/lib/task-sync.d.ts.map +0 -1
  191. package/plugins/specweave-github/lib/task-sync.js +0 -415
  192. package/plugins/specweave-github/lib/task-sync.js.map +0 -1
  193. package/plugins/specweave-github/lib/task-sync.ts +0 -451
  194. package/plugins/specweave-github/skills/github-issue-tracker/SKILL.md +0 -496
  195. /package/plugins/specweave/hooks/{stop-auto.sh → _archive/stop-auto-v4-legacy.sh} +0 -0
  196. /package/plugins/{specweave-github/lib/subtask-sync.d.js → specweave-testing/lib/playwright-ci-defaults.d.js} +0 -0
package/README.md CHANGED
@@ -1,14 +1,13 @@
1
1
  # SpecWeave
2
2
 
3
- **The Enterprise Layer for AI Coding.**
3
+ **The spec-driven framework for Claude Code and OpenClaw.**
4
4
 
5
- *Permanent memory, GitHub/JIRA sync, quality gates, autonomous execution. Powered by Claude Opus 4.6. Ship features while you sleep.*
5
+ *Coordinate parallel AI agents. Prevent task overlap. Quality gates. Ship features while you sleep.*
6
6
 
7
7
  [![NPM Version](https://img.shields.io/npm/v/specweave?color=brightgreen)](https://www.npmjs.com/package/specweave)
8
8
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
9
9
  [![Test & Validate](https://github.com/anton-abyzov/specweave/actions/workflows/test.yml/badge.svg?branch=develop)](https://github.com/anton-abyzov/specweave/actions/workflows/test.yml)
10
10
  [![Discord](https://img.shields.io/badge/Discord-Join-5865F2?logo=discord&logoColor=white)](https://discord.gg/UYg4BGJ65V)
11
- [![YouTube](https://img.shields.io/badge/YouTube-Tutorials-red?logo=youtube&logoColor=white)](https://www.youtube.com/@antonabyzov)
12
11
 
13
12
  ```bash
14
13
  npm install -g specweave # Requires Node.js 20.12.0+
@@ -19,173 +18,97 @@ npm install -g specweave # Requires Node.js 20.12.0+
19
18
  ## Quick Demo
20
19
 
21
20
  ```bash
22
- /sw:increment "User authentication"
23
- /sw:auto # Ship while you sleep
21
+ /sw:increment "User authentication" # AI creates spec + plan + tasks
22
+ /sw:auto # Autonomous execution for hours
23
+ /sw:grill 0001 # Senior-level code review
24
+ /sw:done 0001 # Validate and complete
24
25
  ```
25
26
 
26
- **What happens:**
27
- - AI creates spec + plan + tasks
28
- - Executes autonomously for **hours**
29
- - Tests, fixes failures, syncs to GitHub/JIRA
30
- - You review finished work
31
-
32
- ```
33
- [08:23:41] [Planning] Analyzing T-003: Implement refresh token rotation
34
- [08:24:12] [Implementing] Writing src/auth/token-manager.ts
35
- [08:25:33] [Testing] Running tests... FAILED
36
- [08:25:47] [Fixing] Adjusting implementation...
37
- [08:26:15] [Testing] Re-running... PASSED
38
- [08:26:22] [Done] T-003 complete. Moving to T-004...
39
- ```
27
+ **What happens:** Claude creates a full specification, executes tasks autonomously, runs tests, fixes failures, and syncs progress to GitHub/JIRA. You review finished work.
40
28
 
41
29
  ---
42
30
 
43
31
  ## Why SpecWeave?
44
32
 
45
- Every AI coding tool loses context when the chat ends. SpecWeave creates **permanent documentation**:
46
-
47
- ```
48
- .specweave/increments/0001-oauth/
49
- ├── spec.md <- WHAT: User stories, acceptance criteria
50
- ├── plan.md <- HOW: Architecture decisions, tech choices
51
- └── tasks.md <- DO: Implementation tasks with tests
52
- ```
53
-
54
- **After 6 months**: Search "OAuth" → find exact decisions, who approved, why it was built that way.
55
-
56
- ---
57
-
58
- ## Key Differentiators
59
-
60
- ### Lazy Plugin Loading (99% Token Savings)
61
-
62
- SpecWeave loads plugins **on-demand** based on your prompt keywords:
63
-
64
- | Scenario | Without Lazy Loading | With Lazy Loading |
65
- |----------|---------------------|-------------------|
66
- | Non-SpecWeave work | ~60k tokens | ~500 tokens |
67
- | SpecWeave work | ~60k tokens | ~60k (when needed) |
68
-
69
- Say "React frontend" → frontend plugin loads. Say "Kubernetes deploy" → k8s plugin loads. No manual configuration.
70
-
71
- ### Self-Improving Skills
72
-
73
- SpecWeave learns from corrections. When you fix something, it captures the learning:
74
-
75
- ```markdown
76
- ## Skill Memories
77
- <!-- Auto-captured by SpecWeave reflect -->
78
- - Always use `vi.hoisted()` for ESM mocking in Vitest 4.x+
79
- - Prefer native `fs` over fs-extra in new code
80
- ```
81
-
82
- Next time, it won't make the same mistake.
83
-
84
- ### Structured Documentation (No Root Bloat)
33
+ AI coding agents are powerful individually. Run three of them on the same codebase and you get conflicts, duplicated work, and zero traceability.
85
34
 
86
- Everything stays organized in `.specweave/`:
35
+ SpecWeave solves this with **file-based coordination**:
87
36
 
88
37
  ```
89
- .specweave/
90
- ├── increments/####-name/ # Feature specs + tasks
91
- ├── docs/internal/ # Living documentation
92
- ├── architecture/adr/ # Architecture Decision Records
93
- │ └── specs/ # Feature specifications
94
- └── config.json # Project configuration
38
+ .specweave/increments/0001-oauth/
39
+ ├── spec.md ← WHAT: User stories, acceptance criteria
40
+ ├── plan.md ← HOW: Architecture decisions, tech choices
41
+ └── tasks.md DO: Implementation tasks with tests
95
42
  ```
96
43
 
97
- Your project root stays clean. No scattered markdown files.
44
+ Each increment is a self-contained scope. Each agent knows exactly what's taken and what's available. No overlap. No conflicts. Six months later, search "OAuth" and find exactly what was decided, who approved it, and why.
98
45
 
99
- ### Deep Interview Mode (NEW)
46
+ ### What Makes It Different
100
47
 
101
- For complex features, enable **Deep Interview Mode** during init. Claude asks 40+ questions about architecture, integrations, UI/UX, and tradeoffs before creating specifications:
48
+ - **Parallel agent coordination** multiple Claude Code sessions, OpenClaw instances, or remote agents work on different increments without stepping on each other.
49
+ - **Autonomous execution** — runs for hours, not minutes. Write, test, fix, repeat.
50
+ - **Persistent memory** — AI learns from corrections. Fix once, remembered permanently.
51
+ - **Quality gates** — Code Grill reviews code like a demanding senior engineer before every release.
52
+ - **Living documentation** — specs, ADRs, and runbooks sync automatically after every task.
53
+ - **100+ specialized skills** — PM, Architect, QA, Security, DevOps, Frontend, Mobile, ML, and more collaborate on deliverables.
54
+ - **External sync** — GitHub Issues, JIRA, Azure DevOps — bidirectional, real-time.
55
+ - **Self-improving** — captures what works and what doesn't. Gets smarter over time.
56
+ - **LSP integration** — semantic code intelligence for TypeScript, Python, Go, Rust, Java, C#.
102
57
 
103
- ```
104
- Deep Interview Mode
58
+ ---
105
59
 
106
- For big features, Claude can ask 40+ questions about architecture,
107
- integrations, UI/UX, and tradeoffs before creating specifications.
60
+ ## Install
108
61
 
109
- Enable Deep Interview Mode? [y/N]
62
+ ```bash
63
+ npm install -g specweave
64
+ cd your-project
65
+ specweave init .
110
66
  ```
111
67
 
112
- Inspired by [Thariq's workflow](https://x.com/trq212/status/2005315275026260309) (Claude Code creator): *"For big features Claude might ask me 40+ questions and I end up with a much more detailed spec."*
113
-
114
- ### 68+ AI Agents Working Together
115
-
116
- | Agent | Role |
117
- |-------|------|
118
- | **PM** | Requirements, user stories, acceptance criteria |
119
- | **Architect** | System design, ADRs, tech decisions |
120
- | **QA Lead** | Test strategy, quality gates |
121
- | **Security** | OWASP review, vulnerability scanning |
122
- | **DevOps** | CI/CD, infrastructure, deployment |
123
-
124
- Agents auto-activate based on context. Mention "security" → security expertise loads. Best results with Claude Opus 4.6 and Sonnet 4.5.
125
-
126
- ### LSP Integration (100x Faster Code Understanding)
127
-
128
- SpecWeave leverages **Language Server Protocol** for semantic code intelligence:
129
-
130
- | Operation | Without LSP | With LSP |
131
- |-----------|-------------|----------|
132
- | Find all references | Grep + read 15 files (~10K tokens) | Semantic query (~500 tokens) |
133
- | Check type errors | Build + parse output (~5K tokens) | getDiagnostics (~1K tokens) |
134
- | Navigate to definition | Grep + verify (~8K tokens) | goToDefinition (~200 tokens) |
135
-
136
- **LSP plugins work automatically** when editing code. Edit a `.cs` file → `csharp-lsp` activates. Edit `.ts` → `typescript-lsp` activates. No configuration needed.
137
-
68
+ Then in Claude Code:
138
69
  ```bash
139
- # Install language servers for your stack
140
- npm install -g typescript-language-server typescript # TypeScript
141
- pip install pyright # Python
142
- dotnet tool install -g csharp-ls # C#
70
+ /sw:increment "Add dark mode" # Describe your feature
71
+ /sw:auto # Ship while you sleep
143
72
  ```
144
73
 
145
- **[Full LSP Guide ](https://spec-weave.com/docs/guides/lsp-integration)**
74
+ > **Node.js 20.12.0+** required (22 LTS recommended). Getting `SyntaxError`? [Upgrade instructions](https://spec-weave.com/docs/guides/troubleshooting/common-errors#node-version-error).
146
75
 
147
76
  ---
148
77
 
149
- ## Install
78
+ ## Parallel Development
150
79
 
151
- ### Prerequisites
80
+ Run multiple AI agents on the same repository — locally, in the cloud, or with [OpenClaw](https://openclaw.ai). SpecWeave's increment files are the coordination layer:
152
81
 
153
- **Node.js 20.12.0+** required (recommend Node.js 22 LTS).
154
-
155
- ```bash
156
- node --version # Check version
157
82
  ```
158
-
159
- > **Getting `SyntaxError: Unexpected token 'with'`?** Your Node.js is too old. [Upgrade instructions →](https://spec-weave.com/docs/guides/troubleshooting/common-errors#node-version-error)
160
-
161
- ### New Project
162
-
163
- ```bash
164
- npm install -g specweave
165
- mkdir my-app && cd my-app
166
- specweave init .
83
+ Agent 1 (local Claude Code) Agent 2 (cloud) Agent 3 (OpenClaw)
84
+ working on: 0001-auth working on: 0002-payments working on: 0003-notifications
85
+ │ │ │
86
+ └──────────────────────────────┼───────────────────────────┘
87
+
88
+ .specweave/increments/
89
+ ├── 0001-auth/tasks.md ← Agent 1's scope
90
+ ├── 0002-payments/tasks.md ← Agent 2's scope
91
+ └── 0003-notifications/tasks.md ← Agent 3's scope
167
92
  ```
168
93
 
169
- Then describe what you want in Claude Code:
170
- ```
171
- "Build a calculator app with React"
172
- ```
94
+ **How it works:**
95
+ 1. Create increments for each feature: `/sw:increment "auth"`, `/sw:increment "payments"`
96
+ 2. Each agent picks an increment and runs `/sw:auto` — tasks.md tracks exactly what's done
97
+ 3. Agents work in isolated scopes — different files, different specs, different tests
98
+ 4. Quality gates (`/sw:grill`) ensure consistent standards regardless of which agent built it
99
+ 5. Progress syncs to GitHub/JIRA so you see everything in one place
173
100
 
174
- ### Existing Project
101
+ **Why this matters:** OpenClaw and Claude Code sessions are stateless by default. SpecWeave's spec/plan/tasks files persist across sessions and agents — your coordination layer survives restarts, crashes, and context window limits.
175
102
 
176
- ```bash
177
- npm install -g specweave
178
- cd your-project
179
- specweave init .
180
- ```
103
+ **Agent team commands:**
181
104
 
182
- Then:
183
- ```bash
184
- /sw:increment "Add dark mode" # Create spec + plan + tasks
185
- /sw:auto # Ship while you sleep
186
- /sw:grill 0001 # Code review before close
187
- /sw:done 0001 # Complete with validation
188
- ```
105
+ | Command | Purpose |
106
+ |---------|---------|
107
+ | `/sw:team-orchestrate "feature"` | Split feature across parallel agents |
108
+ | `/sw:team-status` | Monitor all agent progress |
109
+ | `/sw:team-merge` | Merge completed work in dependency order |
110
+
111
+ **[Full agent teams guide](https://spec-weave.com/docs/guides/agent-teams-and-swarms)**
189
112
 
190
113
  ---
191
114
 
@@ -194,63 +117,43 @@ Then:
194
117
  | Command | Purpose |
195
118
  |---------|---------|
196
119
  | `/sw:increment "feature"` | Create spec + plan + tasks |
197
- | `/sw:auto` | Autonomous execution (hours) |
120
+ | `/sw:auto` | Autonomous execution |
198
121
  | `/sw:do` | Execute one task at a time |
199
- | `/sw:grill 0001` | **Code review before close** |
200
- | `/sw:done 0001` | Close with quality validation |
201
- | `/sw:sync-progress` | Push to GitHub/JIRA/ADO |
122
+ | `/sw:grill` | Code review before close |
123
+ | `/sw:done` | Close with quality validation |
124
+ | `/sw:sync-progress` | Push to GitHub / JIRA / ADO |
202
125
  | `/sw:next` | Auto-close + suggest next |
203
126
 
204
- **[100+ total commands →](https://spec-weave.com/docs/commands/overview)**
127
+ **[Full command reference](https://spec-weave.com/docs/commands/overview)**
205
128
 
206
129
  ---
207
130
 
208
- ## External Integrations
131
+ ## Integrations
209
132
 
210
- | Platform | Capabilities |
211
- |----------|--------------|
212
- | **GitHub** | Issues, PRs, milestones, bidirectional sync |
213
- | **JIRA** | Epics, stories, status sync |
133
+ | Platform | What Syncs |
134
+ |----------|-----------|
135
+ | **GitHub** | Issues, PRs, milestones bidirectional |
136
+ | **JIRA** | Epics, stories, status |
214
137
  | **Azure DevOps** | Work items, area paths |
215
138
 
216
- **Automatic sync**: When you close an increment (`/sw:done`), external tools update immediately. Task progress syncs at session end.
217
-
218
- ```bash
219
- /sw:sync-progress # Manual: Push updates to ALL tools
220
- /sw-github:sync 0001 # Manual: Sync specific increment to GitHub
221
- /sw-jira:sync 0001 # Manual: Sync specific increment to JIRA
222
- ```
223
-
224
- ---
225
-
226
- ## Works On Everything
227
-
228
- | Scenario | What Happens |
229
- |----------|-------------|
230
- | **10-year legacy codebase** | Brownfield analysis detects doc gaps |
231
- | **Weekend MVP** | Full spec-driven development |
232
- | **50-team enterprise** | Multi-project sync to JIRA/ADO |
233
-
234
- ---
235
-
236
- ## CLI Commands
237
-
238
- | Command | Purpose |
239
- |---------|---------|
240
- | `specweave init .` | Initialize project |
241
- | `specweave update` | **Full update**: CLI + plugins + instructions |
242
-
243
- ### Troubleshooting
244
-
245
- Run `specweave update` - this fixes 98% of issues (updates CLI, plugins, and instructions).
139
+ When you close an increment, external tools update automatically.
246
140
 
247
141
  ---
248
142
 
249
- ## Requirements
250
-
251
- - **Node.js 20.12.0+** (recommend 22 LTS)
252
- - Any AI coding tool (Claude Code with Opus 4.6 recommended)
253
- - Git repository
143
+ ## How It Compares
144
+
145
+ | Capability | SpecWeave | BMAD Method | GitHub SpecKit |
146
+ |------------|-----------|-------------|----------------|
147
+ | **Parallel agent coordination** | Increment-scoped isolation | No | No |
148
+ | **Autonomous execution** | Hours of unattended `/sw:auto` | No | No |
149
+ | **Quality gates** | Code Grill before every release | No | No |
150
+ | **Living documentation** | Auto-updated after every task | Manual | Manual |
151
+ | **Self-improving AI** | Learns from corrections | No | No |
152
+ | **External sync** | GitHub / JIRA / ADO bidirectional | No | No |
153
+ | **Specialized skills** | 100+ (PM, QA, DevOps, ML...) | 21 agents | None |
154
+ | **Works with OpenClaw** | Yes | Partial | Partial |
155
+ | **Spec/plan/tasks workflow** | Yes | Yes | Yes |
156
+ | **Agent-agnostic** | Claude Code + OpenClaw + Copilot + Codex | Multi-IDE | Multi-IDE |
254
157
 
255
158
  ---
256
159
 
@@ -258,25 +161,18 @@ Run `specweave update` - this fixes 98% of issues (updates CLI, plugins, and ins
258
161
 
259
162
  > This framework builds itself. Every feature, bug fix, and release is spec-driven.
260
163
 
261
- [![Deploy Frequency](https://img.shields.io/badge/dynamic/json?url=https://raw.githubusercontent.com/anton-abyzov/specweave/develop/.specweave/metrics/dora-latest.json&query=$.metrics.deploymentFrequency.value&label=Deploy%20Frequency&suffix=/month&color=brightgreen)](https://github.com/anton-abyzov/specweave/blob/develop/.specweave/docs/internal/delivery/dora-metrics.md)
262
- [![Features](https://img.shields.io/badge/Features-190+-blue)](https://github.com/anton-abyzov/specweave/tree/develop/.specweave/increments)
263
-
264
- **[Browse our increments →](https://github.com/anton-abyzov/specweave/tree/develop/.specweave/increments)**
164
+ **[Browse increments](https://github.com/anton-abyzov/specweave/tree/develop/.specweave/increments)** — see how SpecWeave develops SpecWeave.
265
165
 
266
166
  ---
267
167
 
268
168
  ## Documentation
269
169
 
270
- **[spec-weave.com](https://spec-weave.com)** - Full documentation, guides, and examples.
271
-
272
- ---
170
+ **[spec-weave.com](https://spec-weave.com)** guides, examples, and full reference.
273
171
 
274
172
  ## Community
275
173
 
276
- [Discord](https://discord.gg/UYg4BGJ65V) | [YouTube](https://www.youtube.com/@antonabyzov) | [GitHub Issues](https://github.com/anton-abyzov/specweave/issues)
277
-
278
- ---
174
+ [Discord](https://discord.gg/UYg4BGJ65V) · [YouTube](https://www.youtube.com/@antonabyzov) · [GitHub Issues](https://github.com/anton-abyzov/specweave/issues)
279
175
 
280
176
  ## License
281
177
 
282
- MIT - [github.com/anton-abyzov/specweave](https://github.com/anton-abyzov/specweave)
178
+ MIT [github.com/anton-abyzov/specweave](https://github.com/anton-abyzov/specweave)
@@ -0,0 +1,37 @@
1
+ /**
2
+ * GitHub AC Comment Poster — Posts progress comments to GitHub issues
3
+ * when acceptance criteria are completed in spec.md.
4
+ *
5
+ * Triggered by github-ac-sync-handler.sh after task-ac-sync-guard
6
+ * updates spec.md ACs.
7
+ *
8
+ * @module github-ac-comment-poster
9
+ */
10
+ export interface CommentPostOptions {
11
+ owner: string;
12
+ repo: string;
13
+ token?: string;
14
+ }
15
+ export interface CommentPostResult {
16
+ posted: Array<{
17
+ usId: string;
18
+ issueNumber: number;
19
+ }>;
20
+ errors: Array<{
21
+ usId: string;
22
+ error: string;
23
+ }>;
24
+ }
25
+ /**
26
+ * Post AC progress comments to GitHub issues for affected user stories.
27
+ *
28
+ * For each affected US:
29
+ * 1. Look up GitHub issue link from spec.md frontmatter
30
+ * 2. Extract AC states for that US
31
+ * 3. Build progress comment
32
+ * 4. Post via `gh issue comment`
33
+ *
34
+ * Never throws — all errors are captured in result.errors.
35
+ */
36
+ export declare function postACProgressComments(incrementId: string, affectedUSIds: string[], specPath: string, options: CommentPostOptions): Promise<CommentPostResult>;
37
+ //# sourceMappingURL=github-ac-comment-poster.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-ac-comment-poster.d.ts","sourceRoot":"","sources":["../../../../plugins/specweave-github/lib/github-ac-comment-poster.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD;AAaD;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EAAE,EACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CA8D5B"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * GitHub AC Comment Poster — Posts progress comments to GitHub issues
3
+ * when acceptance criteria are completed in spec.md.
4
+ *
5
+ * Triggered by github-ac-sync-handler.sh after task-ac-sync-guard
6
+ * updates spec.md ACs.
7
+ *
8
+ * @module github-ac-comment-poster
9
+ */
10
+ import { readFile } from 'fs/promises';
11
+ import { execFileNoThrow } from '../../../src/utils/execFileNoThrow.js';
12
+ import { pushSyncUserStories } from './github-push-sync.js';
13
+ /**
14
+ * Post AC progress comments to GitHub issues for affected user stories.
15
+ *
16
+ * For each affected US:
17
+ * 1. Look up GitHub issue link from spec.md frontmatter
18
+ * 2. Extract AC states for that US
19
+ * 3. Build progress comment
20
+ * 4. Post via `gh issue comment`
21
+ *
22
+ * Never throws — all errors are captured in result.errors.
23
+ */
24
+ export async function postACProgressComments(incrementId, affectedUSIds, specPath, options) {
25
+ const result = { posted: [], errors: [] };
26
+ if (affectedUSIds.length === 0) {
27
+ return result;
28
+ }
29
+ let content;
30
+ try {
31
+ content = await readFile(specPath, 'utf-8');
32
+ }
33
+ catch (err) {
34
+ result.errors.push({
35
+ usId: affectedUSIds[0],
36
+ error: err instanceof Error ? err.message : String(err),
37
+ });
38
+ return result;
39
+ }
40
+ const issueLinks = parseIssueLinks(content);
41
+ const repoSlug = `${options.owner}/${options.repo}`;
42
+ const env = options.token ? { GH_TOKEN: options.token } : undefined;
43
+ for (const usId of affectedUSIds) {
44
+ const link = issueLinks[usId];
45
+ if (!link) {
46
+ continue;
47
+ }
48
+ const acStates = parseACStatesForUS(content, usId);
49
+ const commentBody = buildProgressCommentForUS(incrementId, usId, acStates);
50
+ const execResult = await execFileNoThrow('gh', ['issue', 'comment', String(link.issueNumber), '--body', commentBody, '-R', repoSlug], env ? { env } : {});
51
+ if (execResult.success) {
52
+ result.posted.push({ usId, issueNumber: link.issueNumber });
53
+ }
54
+ else {
55
+ result.errors.push({
56
+ usId,
57
+ error: execResult.stderr || 'Unknown error posting comment',
58
+ });
59
+ }
60
+ // Targeted push-sync: update issue body with current AC states
61
+ const usForSync = buildUserStoryForSync(content, usId, acStates, incrementId);
62
+ if (usForSync) {
63
+ try {
64
+ await pushSyncUserStories([usForSync], {
65
+ owner: options.owner,
66
+ repo: options.repo,
67
+ token: options.token,
68
+ });
69
+ }
70
+ catch {
71
+ // Push-sync failure is non-blocking
72
+ }
73
+ }
74
+ }
75
+ return result;
76
+ }
77
+ /**
78
+ * Parse issue links from spec.md YAML frontmatter.
79
+ * Extracts externalLinks.github.userStories entries.
80
+ */
81
+ function parseIssueLinks(content) {
82
+ const links = {};
83
+ const fmMatch = content.match(/^---\n([\s\S]*?)\n---/);
84
+ if (!fmMatch)
85
+ return links;
86
+ const frontmatter = fmMatch[1];
87
+ // Parse userStories section from YAML frontmatter
88
+ const usBlockMatch = frontmatter.match(/userStories:\s*\n((?:\s{6,}[\s\S]*?)(?=\n\s{0,3}\S|$))/);
89
+ if (!usBlockMatch)
90
+ return links;
91
+ const usBlock = usBlockMatch[1];
92
+ const usEntries = usBlock.match(/^\s+(US-\d+):\s*\n((?:\s+\w[\s\S]*?)(?=\n\s+US-|\s*$))/gm);
93
+ if (!usEntries)
94
+ return links;
95
+ for (const entry of usEntries) {
96
+ const idMatch = entry.match(/(US-\d+):/);
97
+ const numMatch = entry.match(/issueNumber:\s*(\d+)/);
98
+ const urlMatch = entry.match(/issueUrl:\s*"([^"]+)"/);
99
+ if (idMatch && numMatch) {
100
+ links[idMatch[1]] = {
101
+ issueNumber: parseInt(numMatch[1], 10),
102
+ issueUrl: urlMatch ? urlMatch[1] : '',
103
+ };
104
+ }
105
+ }
106
+ return links;
107
+ }
108
+ /**
109
+ * Extract AC states for a specific user story from spec.md content.
110
+ */
111
+ function parseACStatesForUS(content, usId) {
112
+ const states = [];
113
+ // AC IDs use unpadded US number: US-001 → AC-US1-XX
114
+ const usNum = String(parseInt(usId.replace('US-', ''), 10));
115
+ const acPattern = new RegExp(`- \\[([ x])\\] \\*\\*AC-US${usNum}-(\\d+)\\*\\*:\\s*(.+)`, 'g');
116
+ let match;
117
+ while ((match = acPattern.exec(content)) !== null) {
118
+ states.push({
119
+ id: `AC-US${usNum}-${match[2]}`,
120
+ description: match[3].trim(),
121
+ completed: match[1] === 'x',
122
+ });
123
+ }
124
+ return states;
125
+ }
126
+ /**
127
+ * Build a UserStoryForSync object for targeted push-sync.
128
+ */
129
+ function buildUserStoryForSync(content, usId, acStates, incrementId) {
130
+ // Extract US title from content
131
+ const usNum = String(parseInt(usId.replace('US-', ''), 10)).padStart(3, '0');
132
+ const titleMatch = content.match(new RegExp(`### US-${usNum}:\\s*(.+)`));
133
+ const title = titleMatch ? titleMatch[1].trim() : usId;
134
+ return {
135
+ id: usId,
136
+ title,
137
+ description: '',
138
+ priority: 'P1',
139
+ status: 'in-progress',
140
+ acceptanceCriteria: acStates.map(ac => ({
141
+ id: ac.id,
142
+ description: ac.description,
143
+ completed: ac.completed,
144
+ })),
145
+ specId: incrementId,
146
+ };
147
+ }
148
+ /**
149
+ * Build a progress comment for a specific user story.
150
+ * Follows ProgressCommentBuilder format: percentage, AC checkboxes, timestamp.
151
+ */
152
+ function buildProgressCommentForUS(incrementId, usId, acStates) {
153
+ const total = acStates.length;
154
+ const completed = acStates.filter(ac => ac.completed).length;
155
+ const percentage = total > 0 ? Math.round((completed / total) * 100) : 0;
156
+ let comment = `**Progress Update** — ${usId} (Increment ${incrementId})\n\n`;
157
+ comment += `**Status**: ${completed}/${total} ACs complete (${percentage}%)\n\n`;
158
+ if (completed > 0) {
159
+ comment += `**Completed**:\n`;
160
+ for (const ac of acStates.filter(a => a.completed)) {
161
+ comment += `- [x] **${ac.id}**: ${ac.description}\n`;
162
+ }
163
+ comment += '\n';
164
+ }
165
+ if (completed < total) {
166
+ comment += `**Remaining**:\n`;
167
+ for (const ac of acStates.filter(a => !a.completed)) {
168
+ comment += `- [ ] **${ac.id}**: ${ac.description}\n`;
169
+ }
170
+ comment += '\n';
171
+ }
172
+ comment += `---\n`;
173
+ comment += `Auto-synced by SpecWeave | ${new Date().toISOString().split('T')[0]}\n`;
174
+ return comment;
175
+ }
176
+ //# sourceMappingURL=github-ac-comment-poster.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-ac-comment-poster.js","sourceRoot":"","sources":["../../../../plugins/specweave-github/lib/github-ac-comment-poster.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * GitHub Batch Sync — Sync all specs in workspace
3
+ *
4
+ * Discovers all spec files and syncs them sequentially
5
+ * using the GitHubSyncOrchestrator.
6
+ *
7
+ * @module github-batch-sync
8
+ */
9
+ export interface BatchSyncConfig {
10
+ owner: string;
11
+ repo: string;
12
+ workspaceRoot: string;
13
+ token?: string;
14
+ dryRun?: boolean;
15
+ projectV2Enabled?: boolean;
16
+ projectV2Number?: number;
17
+ projectV2Id?: string;
18
+ statusFieldMapping?: Record<string, string>;
19
+ priorityFieldMapping?: Record<string, string>;
20
+ }
21
+ export interface BatchSyncResult {
22
+ specsProcessed: number;
23
+ specsFailed: number;
24
+ totalIssuesCreated: number;
25
+ totalIssuesUpdated: number;
26
+ errors: Array<{
27
+ specPath: string;
28
+ error: string;
29
+ }>;
30
+ summary: string;
31
+ }
32
+ /**
33
+ * Discover all specs and sync them sequentially.
34
+ */
35
+ export declare function batchSyncAllSpecs(config: BatchSyncConfig): Promise<BatchSyncResult>;
36
+ //# sourceMappingURL=github-batch-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-batch-sync.d.ts","sourceRoot":"","sources":["../../../../plugins/specweave-github/lib/github-batch-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CA0DzF"}