specweave 0.17.15 → 0.18.0
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/CLAUDE.md +405 -2495
- package/README.md +92 -2
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts.map +1 -1
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.js +188 -36
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.js.map +1 -1
- package/dist/plugins/specweave-ado/lib/ado-status-sync.d.ts +54 -0
- package/dist/plugins/specweave-ado/lib/ado-status-sync.d.ts.map +1 -0
- package/dist/plugins/specweave-ado/lib/ado-status-sync.js +86 -0
- package/dist/plugins/specweave-ado/lib/ado-status-sync.js.map +1 -0
- package/dist/plugins/specweave-github/lib/duplicate-detector.d.ts +139 -0
- package/dist/plugins/specweave-github/lib/duplicate-detector.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/duplicate-detector.js +389 -0
- package/dist/plugins/specweave-github/lib/duplicate-detector.js.map +1 -0
- package/dist/plugins/specweave-github/lib/enhanced-github-sync.d.ts +26 -0
- package/dist/plugins/specweave-github/lib/enhanced-github-sync.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/enhanced-github-sync.js +249 -0
- package/dist/plugins/specweave-github/lib/enhanced-github-sync.js.map +1 -0
- package/dist/plugins/specweave-github/lib/github-client.d.ts +1 -1
- package/dist/plugins/specweave-github/lib/github-client.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/github-client.js +25 -13
- package/dist/plugins/specweave-github/lib/github-client.js.map +1 -1
- package/dist/plugins/specweave-github/lib/github-epic-sync.d.ts +83 -0
- package/dist/plugins/specweave-github/lib/github-epic-sync.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/github-epic-sync.js +451 -0
- package/dist/plugins/specweave-github/lib/github-epic-sync.js.map +1 -0
- package/dist/plugins/specweave-github/lib/github-status-sync.d.ts +43 -0
- package/dist/plugins/specweave-github/lib/github-status-sync.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/github-status-sync.js +82 -0
- package/dist/plugins/specweave-github/lib/github-status-sync.js.map +1 -0
- package/dist/plugins/specweave-github/lib/task-sync.d.ts +5 -0
- package/dist/plugins/specweave-github/lib/task-sync.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/task-sync.js +38 -2
- package/dist/plugins/specweave-github/lib/task-sync.js.map +1 -1
- package/dist/plugins/specweave-jira/lib/jira-epic-sync.d.ts +66 -0
- package/dist/plugins/specweave-jira/lib/jira-epic-sync.d.ts.map +1 -0
- package/dist/plugins/specweave-jira/lib/jira-epic-sync.js +274 -0
- package/dist/plugins/specweave-jira/lib/jira-epic-sync.js.map +1 -0
- package/dist/plugins/specweave-jira/lib/jira-status-sync.d.ts +56 -0
- package/dist/plugins/specweave-jira/lib/jira-status-sync.d.ts.map +1 -0
- package/dist/plugins/specweave-jira/lib/jira-status-sync.js +93 -0
- package/dist/plugins/specweave-jira/lib/jira-status-sync.js.map +1 -0
- package/dist/src/cli/helpers/issue-tracker/index.d.ts.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/index.js +48 -3
- package/dist/src/cli/helpers/issue-tracker/index.js.map +1 -1
- package/dist/src/core/living-docs/hierarchy-mapper.d.ts +142 -0
- package/dist/src/core/living-docs/hierarchy-mapper.d.ts.map +1 -0
- package/dist/src/core/living-docs/hierarchy-mapper.js +453 -0
- package/dist/src/core/living-docs/hierarchy-mapper.js.map +1 -0
- package/dist/src/core/living-docs/index.d.ts +10 -84
- package/dist/src/core/living-docs/index.d.ts.map +1 -1
- package/dist/src/core/living-docs/index.js +10 -164
- package/dist/src/core/living-docs/index.js.map +1 -1
- package/dist/src/core/living-docs/spec-distributor.d.ts +106 -0
- package/dist/src/core/living-docs/spec-distributor.d.ts.map +1 -0
- package/dist/src/core/living-docs/spec-distributor.js +823 -0
- package/dist/src/core/living-docs/spec-distributor.js.map +1 -0
- package/dist/src/core/living-docs/types.d.ts +201 -0
- package/dist/src/core/living-docs/types.d.ts.map +1 -0
- package/dist/src/core/living-docs/types.js +15 -0
- package/dist/src/core/living-docs/types.js.map +1 -0
- package/dist/src/core/logging/prompt-logger.d.ts +70 -0
- package/dist/src/core/logging/prompt-logger.d.ts.map +1 -0
- package/dist/src/core/logging/prompt-logger.js +247 -0
- package/dist/src/core/logging/prompt-logger.js.map +1 -0
- package/dist/src/core/status-line/status-line-manager.d.ts +15 -24
- package/dist/src/core/status-line/status-line-manager.d.ts.map +1 -1
- package/dist/src/core/status-line/status-line-manager.js +33 -70
- package/dist/src/core/status-line/status-line-manager.js.map +1 -1
- package/dist/src/core/status-line/types.d.ts +19 -31
- package/dist/src/core/status-line/types.d.ts.map +1 -1
- package/dist/src/core/status-line/types.js +5 -9
- package/dist/src/core/status-line/types.js.map +1 -1
- package/dist/src/core/sync/conflict-resolver.d.ts +66 -0
- package/dist/src/core/sync/conflict-resolver.d.ts.map +1 -0
- package/dist/src/core/sync/conflict-resolver.js +108 -0
- package/dist/src/core/sync/conflict-resolver.js.map +1 -0
- package/dist/src/core/sync/enhanced-content-builder.d.ts +77 -0
- package/dist/src/core/sync/enhanced-content-builder.d.ts.map +1 -0
- package/dist/src/core/sync/enhanced-content-builder.js +199 -0
- package/dist/src/core/sync/enhanced-content-builder.js.map +1 -0
- package/dist/src/core/sync/label-detector.d.ts +66 -0
- package/dist/src/core/sync/label-detector.d.ts.map +1 -0
- package/dist/src/core/sync/label-detector.js +211 -0
- package/dist/src/core/sync/label-detector.js.map +1 -0
- package/dist/src/core/sync/retry-logic.d.ts +64 -0
- package/dist/src/core/sync/retry-logic.d.ts.map +1 -0
- package/dist/src/core/sync/retry-logic.js +165 -0
- package/dist/src/core/sync/retry-logic.js.map +1 -0
- package/dist/src/core/sync/spec-increment-mapper.d.ts +100 -0
- package/dist/src/core/sync/spec-increment-mapper.d.ts.map +1 -0
- package/dist/src/core/sync/spec-increment-mapper.js +424 -0
- package/dist/src/core/sync/spec-increment-mapper.js.map +1 -0
- package/dist/src/core/sync/status-cache.d.ts +91 -0
- package/dist/src/core/sync/status-cache.d.ts.map +1 -0
- package/dist/src/core/sync/status-cache.js +140 -0
- package/dist/src/core/sync/status-cache.js.map +1 -0
- package/dist/src/core/sync/status-mapper.d.ts +69 -0
- package/dist/src/core/sync/status-mapper.d.ts.map +1 -0
- package/dist/src/core/sync/status-mapper.js +90 -0
- package/dist/src/core/sync/status-mapper.js.map +1 -0
- package/dist/src/core/sync/status-sync-engine.d.ts +162 -0
- package/dist/src/core/sync/status-sync-engine.d.ts.map +1 -0
- package/dist/src/core/sync/status-sync-engine.js +347 -0
- package/dist/src/core/sync/status-sync-engine.js.map +1 -0
- package/dist/src/core/sync/sync-event-logger.d.ts +99 -0
- package/dist/src/core/sync/sync-event-logger.d.ts.map +1 -0
- package/dist/src/core/sync/sync-event-logger.js +103 -0
- package/dist/src/core/sync/sync-event-logger.js.map +1 -0
- package/dist/src/core/sync/workflow-detector.d.ts +95 -0
- package/dist/src/core/sync/workflow-detector.d.ts.map +1 -0
- package/dist/src/core/sync/workflow-detector.js +175 -0
- package/dist/src/core/sync/workflow-detector.js.map +1 -0
- package/dist/src/core/types/config.d.ts.map +1 -1
- package/dist/src/core/types/config.js +31 -0
- package/dist/src/core/types/config.js.map +1 -1
- package/dist/src/utils/github-url.d.ts +53 -0
- package/dist/src/utils/github-url.d.ts.map +1 -0
- package/dist/src/utils/github-url.js +90 -0
- package/dist/src/utils/github-url.js.map +1 -0
- package/dist/src/utils/plugin-validator.d.ts +9 -0
- package/dist/src/utils/plugin-validator.d.ts.map +1 -1
- package/dist/src/utils/plugin-validator.js +86 -19
- package/dist/src/utils/plugin-validator.js.map +1 -1
- package/dist/src/utils/spec-parser.d.ts +145 -0
- package/dist/src/utils/spec-parser.d.ts.map +1 -0
- package/dist/src/utils/spec-parser.js +640 -0
- package/dist/src/utils/spec-parser.js.map +1 -0
- package/package.json +1 -1
- package/plugins/specweave/agents/pm/AGENT.md +1 -1
- package/plugins/specweave/agents/pm/templates/increment-spec.md +158 -0
- package/plugins/specweave/agents/pm/templates/living-docs-spec.md +113 -0
- package/plugins/specweave/commands/specweave-done.md +163 -0
- package/plugins/specweave/hooks/lib/update-status-line.sh +79 -111
- package/plugins/specweave/hooks/post-increment-planning.sh +107 -35
- package/plugins/specweave/lib/hooks/sync-living-docs.js +139 -34
- package/plugins/specweave/lib/hooks/sync-living-docs.ts +234 -38
- package/plugins/specweave/skills/SKILLS-INDEX.md +4 -24
- package/plugins/specweave/skills/increment-planner/SKILL.md +94 -0
- package/plugins/specweave/skills/increment-work-router/SKILL.md +466 -0
- package/plugins/specweave/skills/plugin-validator/SKILL.md +16 -13
- package/plugins/specweave-ado/lib/ado-status-sync.js +80 -0
- package/plugins/specweave-ado/lib/ado-status-sync.ts +121 -0
- package/plugins/specweave-github/commands/specweave-github-cleanup-duplicates.md +205 -0
- package/plugins/specweave-github/commands/specweave-github-sync-epic.md +248 -0
- package/plugins/specweave-github/lib/duplicate-detector.js +370 -0
- package/plugins/specweave-github/lib/duplicate-detector.ts +525 -0
- package/plugins/specweave-github/lib/enhanced-github-sync.js +220 -0
- package/plugins/specweave-github/lib/enhanced-github-sync.ts +322 -0
- package/plugins/specweave-github/lib/github-client.js +21 -10
- package/plugins/specweave-github/lib/github-client.ts +27 -16
- package/plugins/specweave-github/lib/github-epic-sync.js +489 -0
- package/plugins/specweave-github/lib/github-epic-sync.ts +690 -0
- package/plugins/specweave-github/lib/github-status-sync.js +71 -0
- package/plugins/specweave-github/lib/github-status-sync.ts +107 -0
- package/plugins/specweave-github/lib/task-sync.js +33 -2
- package/plugins/specweave-github/lib/task-sync.ts +44 -2
- package/plugins/specweave-jira/commands/specweave-jira-sync-epic.md +267 -0
- package/plugins/specweave-jira/lib/enhanced-jira-sync.ts.disabled +222 -0
- package/plugins/specweave-jira/lib/jira-epic-sync.js +304 -0
- package/plugins/specweave-jira/lib/jira-epic-sync.ts +459 -0
- package/plugins/specweave-jira/lib/jira-status-sync.js +79 -0
- package/plugins/specweave-jira/lib/jira-status-sync.ts +139 -0
- package/src/templates/AGENTS.md.template +88 -1
- package/src/templates/CLAUDE.md.template +49 -0
- package/plugins/specweave/skills/increment-quality-judge/SKILL.md +0 -524
- package/plugins/specweave/skills/plugin-installer/SKILL.md +0 -353
package/README.md
CHANGED
|
@@ -120,6 +120,95 @@ The same processes Fortune 500 uses. Without the team. Without the manual work.
|
|
|
120
120
|
|
|
121
121
|
---
|
|
122
122
|
|
|
123
|
+
## 🤖 AI Manages Your Enterprise Tools (Not Just Your Code!)
|
|
124
|
+
|
|
125
|
+
**Here's what makes SpecWeave revolutionary:**
|
|
126
|
+
|
|
127
|
+
Other AI tools write code. **SpecWeave's AI runs your entire engineering operation.**
|
|
128
|
+
|
|
129
|
+
### The Problem with Traditional AI Coding
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
You → AI → Code ✅
|
|
133
|
+
You → Manual → Update JIRA ❌ (3 hours/week wasted)
|
|
134
|
+
You → Manual → Update GitHub ❌ (2 hours/week wasted)
|
|
135
|
+
You → Manual → Write docs ❌ (4 hours/week wasted)
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**Total waste**: 9 hours/week = $35K/year per developer
|
|
139
|
+
|
|
140
|
+
### The SpecWeave Solution: Bidirectional AI Integration
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
You → Claude → EVERYTHING (automatic!)
|
|
144
|
+
|
|
145
|
+
/specweave:increment "User authentication"
|
|
146
|
+
|
|
147
|
+
Claude creates:
|
|
148
|
+
✅ Spec.md (user stories, acceptance criteria)
|
|
149
|
+
✅ JIRA Epic + 5 Stories (auto-created in your JIRA!)
|
|
150
|
+
✅ GitHub Issue #142 (auto-created in your repo!)
|
|
151
|
+
✅ Tasks with embedded tests (BDD format)
|
|
152
|
+
|
|
153
|
+
/specweave:do
|
|
154
|
+
|
|
155
|
+
Claude implements Task 1:
|
|
156
|
+
✅ Code (AuthService.ts, tests, 92% coverage)
|
|
157
|
+
✅ JIRA Story → "Done" (updated automatically!)
|
|
158
|
+
✅ GitHub checkbox → ✓ (updated automatically!)
|
|
159
|
+
✅ Docs synced (ADRs, architecture, runbooks)
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**Your team/client/manager sees updates in real-time. You never touched JIRA.**
|
|
163
|
+
|
|
164
|
+
### What This Means in Practice
|
|
165
|
+
|
|
166
|
+
**For Solo Founders**:
|
|
167
|
+
- ✅ Appear like a full engineering team to investors
|
|
168
|
+
- ✅ Professional JIRA/ADO tracking (without the overhead)
|
|
169
|
+
- ✅ 80% of time coding, 20% everything else (not 50/50!)
|
|
170
|
+
|
|
171
|
+
**For Agencies/Consultants**:
|
|
172
|
+
- ✅ Client A (JIRA) + Client B (ADO) + Client C (GitHub) = Zero context-switching
|
|
173
|
+
- ✅ Clients see real-time updates (without you doing PM work)
|
|
174
|
+
- ✅ Reclaim 20+ hours/month = $3K-$5K more billable time
|
|
175
|
+
|
|
176
|
+
**For Small Teams (2-10 people)**:
|
|
177
|
+
- ✅ No dedicated PM needed (Claude orchestrates everything)
|
|
178
|
+
- ✅ Save $130K/year OR free up senior dev to build
|
|
179
|
+
- ✅ Management self-service (no "What's the status?" meetings)
|
|
180
|
+
|
|
181
|
+
**For Enterprises**:
|
|
182
|
+
- ✅ SOC2/ISO audit trails (automatic compliance documentation)
|
|
183
|
+
- ✅ Real-time visibility (management dashboards fed by AI)
|
|
184
|
+
- ✅ Multi-project tracking (unlimited repos, one SpecWeave instance)
|
|
185
|
+
|
|
186
|
+
### Supported Enterprise Platforms
|
|
187
|
+
|
|
188
|
+
| Platform | Status | Capabilities |
|
|
189
|
+
|----------|--------|--------------|
|
|
190
|
+
| **GitHub Issues** | ✅ Production | Bidirectional sync, task tracking, auto-close, multi-repo |
|
|
191
|
+
| **JIRA** | ✅ Production | Epic/Story sync, status updates, comments, unlimited projects |
|
|
192
|
+
| **Azure DevOps** | ✅ Production | Work items, hierarchy, area paths, team-based organization |
|
|
193
|
+
| **Linear** | 🔄 Coming Q1 2026 | Full integration planned |
|
|
194
|
+
| **Asana** | 🔄 Coming Q2 2026 | Full integration planned |
|
|
195
|
+
|
|
196
|
+
### Real ROI Example
|
|
197
|
+
|
|
198
|
+
**5-person engineering team**:
|
|
199
|
+
- **Before SpecWeave**: 3 hours/week/person on JIRA/PM = 780 hours/year = **$58,500 wasted**
|
|
200
|
+
- **After SpecWeave**: 0 hours (Claude does it) = **$58,500 saved**
|
|
201
|
+
|
|
202
|
+
**Plus intangibles**:
|
|
203
|
+
- ✅ 30% more features shipped (time reclaimed)
|
|
204
|
+
- ✅ Audit-ready always (compliance automatic)
|
|
205
|
+
- ✅ Real-time visibility (stakeholders self-service)
|
|
206
|
+
- ✅ Professional appearance (even as solo founder)
|
|
207
|
+
|
|
208
|
+
**[→ Multi-Project Sync Guide](https://spec-weave.com/docs/integrations/multi-project-sync)** | **[→ 5-Minute Setup](https://spec-weave.com/docs/guides/getting-started/quickstart)**
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
123
212
|
## Works for Both
|
|
124
213
|
|
|
125
214
|
**🌱 Greenfield** (New Projects)
|
|
@@ -207,15 +296,16 @@ specweave init .
|
|
|
207
296
|
|
|
208
297
|
## Key Features
|
|
209
298
|
|
|
299
|
+
- 🤖 **AI-Native Enterprise Sync** - Claude updates JIRA/GitHub/ADO automatically (bidirectional!)
|
|
210
300
|
- 📚 **Living Documentation** - Auto-updates after every task (no manual sync!)
|
|
211
301
|
- 🧪 **Test-Aware Planning** - Embedded tests in BDD format (Given/When/Then)
|
|
212
302
|
- 🎯 **Disciplined Progress** - Can't start increment N+1 until N is DONE
|
|
213
303
|
- ⏸️ **Intelligent Pausing** - Auto-detects blockers, pauses with context, resumes when ready
|
|
304
|
+
- 👥 **Multi-Project Tracking** - Unlimited JIRA/ADO/GitHub repos, intelligent routing
|
|
214
305
|
- 🤖 **AI Agents** - PM, Architect, Quality Judge guide your work
|
|
215
306
|
- 🔧 **CI/CD Auto-Fix** - Workflow failures auto-fixed by Claude (just mention `@claude`)
|
|
216
307
|
- 🌍 **Multilingual** - Work in 11 languages (FREE translation)
|
|
217
|
-
- 🏢 **Multi-Project** - Organize by team/repo/microservice
|
|
218
|
-
- 🔗 **Issue Tracker Sync** - GitHub, Jira, Azure DevOps integration
|
|
308
|
+
- 🏢 **Multi-Project Organization** - Organize by team/repo/microservice
|
|
219
309
|
|
|
220
310
|
**[→ Complete Feature List](https://spec-weave.com/docs/overview/features)**
|
|
221
311
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-living-docs.d.ts","sourceRoot":"","sources":["../../../../../plugins/specweave/lib/hooks/sync-living-docs.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAwBH;;GAEG;AACH,iBAAe,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"sync-living-docs.d.ts","sourceRoot":"","sources":["../../../../../plugins/specweave/lib/hooks/sync-living-docs.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAwBH;;GAEG;AACH,iBAAe,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2DhE;AAoZD,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -59,10 +59,11 @@ async function syncLivingDocs(incrementId) {
|
|
|
59
59
|
changedDocs = result.changedFiles;
|
|
60
60
|
}
|
|
61
61
|
else {
|
|
62
|
-
//
|
|
63
|
-
console.log('
|
|
64
|
-
|
|
65
|
-
|
|
62
|
+
// Hierarchical distribution mode: Epic + User Stories (v2.1)
|
|
63
|
+
console.log('📊 Using hierarchical distribution mode (v2.1 - Epic + User Stories)');
|
|
64
|
+
const result = await hierarchicalDistribution(incrementId);
|
|
65
|
+
specCopied = result.success;
|
|
66
|
+
changedDocs = result.changedFiles;
|
|
66
67
|
}
|
|
67
68
|
if (changedDocs.length === 0 && !specCopied) {
|
|
68
69
|
console.log('ℹ️ No living docs changed');
|
|
@@ -80,50 +81,66 @@ async function syncLivingDocs(incrementId) {
|
|
|
80
81
|
}
|
|
81
82
|
/**
|
|
82
83
|
* Intelligent sync using the new architecture (v0.18.0+)
|
|
84
|
+
*
|
|
85
|
+
* NOTE: syncIncrement not yet implemented, fallback to hierarchical distribution
|
|
83
86
|
*/
|
|
84
87
|
async function intelligentSyncLivingDocs(incrementId, config) {
|
|
88
|
+
console.log(' ⚠️ Intelligent sync not yet fully implemented');
|
|
89
|
+
console.log(' Falling back to hierarchical distribution mode...');
|
|
90
|
+
// Fallback to hierarchical distribution
|
|
91
|
+
return await hierarchicalDistribution(incrementId);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Hierarchical distribution using new architecture (v2.1 - Epic + User Stories)
|
|
95
|
+
*
|
|
96
|
+
* Distributes increment spec into hierarchical structure:
|
|
97
|
+
* - Epic file (SPEC-###.md) - High-level summary (50-80 lines)
|
|
98
|
+
* - User story files (us-###.md) - Detailed requirements (80-120 lines each)
|
|
99
|
+
* - Links to tasks.md for implementation details
|
|
100
|
+
*/
|
|
101
|
+
async function hierarchicalDistribution(incrementId) {
|
|
85
102
|
try {
|
|
86
103
|
// Dynamic import to avoid circular dependencies
|
|
87
|
-
const {
|
|
88
|
-
console.log('
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
preserveCodeBlocks: true,
|
|
94
|
-
preserveLinks: true,
|
|
95
|
-
preserveImages: true,
|
|
96
|
-
},
|
|
97
|
-
distributor: {
|
|
98
|
-
generateFrontmatter: true,
|
|
99
|
-
preserveOriginal: config.livingDocs?.intelligent?.preserveOriginal ?? true,
|
|
100
|
-
},
|
|
101
|
-
linker: {
|
|
102
|
-
generateBacklinks: config.livingDocs?.intelligent?.generateCrossLinks ?? true,
|
|
103
|
-
updateExisting: true,
|
|
104
|
-
},
|
|
104
|
+
const { SpecDistributor } = await import('../../../../src/core/living-docs/index.js');
|
|
105
|
+
console.log(' 📊 Parsing and distributing spec into hierarchical structure...');
|
|
106
|
+
const projectRoot = process.cwd();
|
|
107
|
+
const distributor = new SpecDistributor(projectRoot, {
|
|
108
|
+
overwriteExisting: false,
|
|
109
|
+
createBackups: true,
|
|
105
110
|
});
|
|
111
|
+
const result = await distributor.distribute(incrementId);
|
|
112
|
+
if (!result.success) {
|
|
113
|
+
console.error(` ❌ Distribution failed with errors:`);
|
|
114
|
+
for (const error of result.errors) {
|
|
115
|
+
console.error(` - ${error}`);
|
|
116
|
+
}
|
|
117
|
+
return { success: false, changedFiles: [] };
|
|
118
|
+
}
|
|
106
119
|
// Log summary
|
|
107
|
-
console.log(` ✅
|
|
108
|
-
console.log(`
|
|
109
|
-
console.log(`
|
|
110
|
-
console.log(` Files
|
|
111
|
-
console.log(`
|
|
112
|
-
console.log(`
|
|
120
|
+
console.log(` ✅ Hierarchical distribution complete:`);
|
|
121
|
+
console.log(` Epic ID: ${result.specId}`);
|
|
122
|
+
console.log(` User Stories: ${result.totalStories}`);
|
|
123
|
+
console.log(` Files created: ${result.totalFiles}`);
|
|
124
|
+
console.log(` Epic: ${path.basename(result.epicPath)}`);
|
|
125
|
+
console.log(` User story files: ${result.userStoryPaths.length}`);
|
|
126
|
+
if (result.warnings.length > 0) {
|
|
127
|
+
console.log(` ⚠️ Warnings:`);
|
|
128
|
+
for (const warning of result.warnings) {
|
|
129
|
+
console.log(` - ${warning}`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
113
132
|
// Collect changed file paths
|
|
114
|
-
const changedFiles = [
|
|
115
|
-
...result.distribution.created.map((f) => f.path),
|
|
116
|
-
...result.distribution.updated.map((f) => f.path),
|
|
117
|
-
];
|
|
133
|
+
const changedFiles = [result.epicPath, ...result.userStoryPaths];
|
|
118
134
|
return {
|
|
119
|
-
success:
|
|
135
|
+
success: true,
|
|
120
136
|
changedFiles,
|
|
121
137
|
};
|
|
122
138
|
}
|
|
123
139
|
catch (error) {
|
|
124
|
-
console.error(` ❌
|
|
125
|
-
console.error(
|
|
140
|
+
console.error(` ❌ Hierarchical distribution failed: ${error}`);
|
|
141
|
+
console.error(error.stack);
|
|
126
142
|
// Fallback to simple mode
|
|
143
|
+
console.error(' Falling back to simple sync mode...');
|
|
127
144
|
const copied = await copyIncrementSpecToLivingDocs(incrementId);
|
|
128
145
|
return {
|
|
129
146
|
success: copied,
|
|
@@ -132,10 +149,145 @@ async function intelligentSyncLivingDocs(incrementId, config) {
|
|
|
132
149
|
}
|
|
133
150
|
}
|
|
134
151
|
/**
|
|
135
|
-
*
|
|
152
|
+
* Extract and merge living docs (v2.0 - NO DUPLICATION!)
|
|
153
|
+
*
|
|
154
|
+
* NEW ARCHITECTURE:
|
|
155
|
+
* - Living docs = Permanent EPIC (GitHub Project, Jira Epic, ADO Feature)
|
|
156
|
+
* - Increment spec = Temporary ITERATION (GitHub Issue, Jira Story, ADO User Story)
|
|
157
|
+
*
|
|
158
|
+
* What this does:
|
|
159
|
+
* 1. Parse increment spec (extract user stories ONLY)
|
|
160
|
+
* 2. Check if living docs spec exists
|
|
161
|
+
* 3. If exists: Merge new user stories (avoid duplicates)
|
|
162
|
+
* 4. If not: Create new living docs spec
|
|
163
|
+
* 5. Generate links to architecture/ADRs (NO duplication!)
|
|
164
|
+
* 6. Update implementation history
|
|
165
|
+
*
|
|
166
|
+
* What this DOESN'T do:
|
|
167
|
+
* - ❌ Copy architecture details (those live in architecture/)
|
|
168
|
+
* - ❌ Copy ADR content (those live in architecture/adr/)
|
|
169
|
+
* - ❌ Copy success metrics (those live in increment reports)
|
|
170
|
+
* - ❌ Copy future enhancements (those live in roadmap)
|
|
171
|
+
*
|
|
172
|
+
* Returns true if living docs updated, false if skipped
|
|
173
|
+
*/
|
|
174
|
+
async function extractAndMergeLivingDocs(incrementId) {
|
|
175
|
+
try {
|
|
176
|
+
// Import parser utilities
|
|
177
|
+
const { parseIncrementSpec, parseLivingDocsSpec, extractSpecId, mergeUserStories, generateRelatedDocsLinks, writeLivingDocsSpec, } = await import('../../../../src/utils/spec-parser.js');
|
|
178
|
+
const projectRoot = process.cwd();
|
|
179
|
+
const incrementSpecPath = path.join(projectRoot, '.specweave', 'increments', incrementId, 'spec.md');
|
|
180
|
+
// Check if increment spec exists
|
|
181
|
+
if (!fs.existsSync(incrementSpecPath)) {
|
|
182
|
+
console.log(`⚠️ Increment spec not found: ${incrementSpecPath}`);
|
|
183
|
+
return false;
|
|
184
|
+
}
|
|
185
|
+
console.log(` 📖 Parsing increment spec: ${incrementId}`);
|
|
186
|
+
// 1. Parse increment spec (extract user stories)
|
|
187
|
+
const incrementSpec = await parseIncrementSpec(incrementSpecPath);
|
|
188
|
+
if (incrementSpec.userStories.length === 0) {
|
|
189
|
+
console.log(`ℹ️ No user stories found in increment spec, skipping sync`);
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
console.log(` ✅ Found ${incrementSpec.userStories.length} user stories in increment`);
|
|
193
|
+
// 2. Determine living docs spec ID
|
|
194
|
+
const specId = incrementSpec.implementsSpec || extractSpecId(incrementId);
|
|
195
|
+
const livingDocsDir = path.join(projectRoot, '.specweave', 'docs', 'internal', 'specs', 'default');
|
|
196
|
+
const livingDocsPath = path.join(livingDocsDir, `${specId}-${incrementId.replace(/^\d+-/, '')}.md`);
|
|
197
|
+
// 3. Check if living docs spec exists
|
|
198
|
+
const livingDocsExists = fs.existsSync(livingDocsPath);
|
|
199
|
+
if (livingDocsExists) {
|
|
200
|
+
console.log(` 📚 Living docs spec exists, merging user stories...`);
|
|
201
|
+
// MERGE MODE: Add new user stories to existing spec
|
|
202
|
+
const livingSpec = await parseLivingDocsSpec(livingDocsPath);
|
|
203
|
+
// Merge user stories (adds new, updates existing)
|
|
204
|
+
const mergedStories = mergeUserStories(livingSpec.userStories, incrementSpec.userStories, incrementId);
|
|
205
|
+
const newStoriesCount = mergedStories.length - livingSpec.userStories.length;
|
|
206
|
+
// Update implementation history
|
|
207
|
+
const existingEntry = livingSpec.implementationHistory.find(e => e.increment === incrementId);
|
|
208
|
+
if (!existingEntry) {
|
|
209
|
+
livingSpec.implementationHistory.push({
|
|
210
|
+
increment: incrementId,
|
|
211
|
+
stories: incrementSpec.userStories.map(s => s.id),
|
|
212
|
+
status: 'complete',
|
|
213
|
+
date: new Date().toISOString().split('T')[0],
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
// Update existing entry
|
|
218
|
+
existingEntry.status = 'complete';
|
|
219
|
+
existingEntry.date = new Date().toISOString().split('T')[0];
|
|
220
|
+
}
|
|
221
|
+
// Update user stories
|
|
222
|
+
livingSpec.userStories = mergedStories;
|
|
223
|
+
// Update last_updated
|
|
224
|
+
livingSpec.lastUpdated = new Date().toISOString().split('T')[0];
|
|
225
|
+
// Write updated spec
|
|
226
|
+
await writeLivingDocsSpec(livingDocsPath, livingSpec);
|
|
227
|
+
console.log(` ✅ Merged ${newStoriesCount} new user stories into living docs`);
|
|
228
|
+
console.log(` ✅ Updated implementation history for ${incrementId}`);
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
console.log(` 📝 Creating new living docs spec: ${specId}`);
|
|
232
|
+
// CREATE MODE: First increment for this spec
|
|
233
|
+
const relatedDocs = generateRelatedDocsLinks(incrementSpec, projectRoot);
|
|
234
|
+
const livingSpec = {
|
|
235
|
+
id: specId,
|
|
236
|
+
title: incrementSpec.title,
|
|
237
|
+
featureArea: extractFeatureArea(incrementSpec.title),
|
|
238
|
+
overview: incrementSpec.overview,
|
|
239
|
+
userStories: incrementSpec.userStories.map(story => ({
|
|
240
|
+
...story,
|
|
241
|
+
implementedIn: incrementId,
|
|
242
|
+
status: 'complete',
|
|
243
|
+
})),
|
|
244
|
+
implementationHistory: [
|
|
245
|
+
{
|
|
246
|
+
increment: incrementId,
|
|
247
|
+
stories: incrementSpec.userStories.map(s => s.id),
|
|
248
|
+
status: 'complete',
|
|
249
|
+
date: new Date().toISOString().split('T')[0],
|
|
250
|
+
},
|
|
251
|
+
],
|
|
252
|
+
relatedDocs,
|
|
253
|
+
externalLinks: {},
|
|
254
|
+
priority: incrementSpec.priority,
|
|
255
|
+
status: 'active',
|
|
256
|
+
created: new Date().toISOString().split('T')[0],
|
|
257
|
+
lastUpdated: new Date().toISOString().split('T')[0],
|
|
258
|
+
};
|
|
259
|
+
// Ensure directory exists
|
|
260
|
+
await fs.ensureDir(livingDocsDir);
|
|
261
|
+
// Write new spec
|
|
262
|
+
await writeLivingDocsSpec(livingDocsPath, livingSpec);
|
|
263
|
+
console.log(` ✅ Created new living docs spec: ${specId}`);
|
|
264
|
+
console.log(` ✅ Added ${incrementSpec.userStories.length} user stories`);
|
|
265
|
+
console.log(` ✅ Generated links to ${relatedDocs.architecture.length} architecture docs`);
|
|
266
|
+
console.log(` ✅ Generated links to ${relatedDocs.adrs.length} ADRs`);
|
|
267
|
+
}
|
|
268
|
+
return true;
|
|
269
|
+
}
|
|
270
|
+
catch (error) {
|
|
271
|
+
console.error(`❌ Error extracting/merging living docs: ${error}`);
|
|
272
|
+
console.error(error.stack);
|
|
273
|
+
return false;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Extract feature area from title
|
|
278
|
+
*/
|
|
279
|
+
function extractFeatureArea(title) {
|
|
280
|
+
// Simple heuristic: Use title as feature area
|
|
281
|
+
// Can be customized later based on keywords
|
|
282
|
+
return title.replace(/^(Increment \d+:\s*)?/, '').trim();
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Copy increment spec to living docs (DEPRECATED - use extractAndMergeLivingDocs instead)
|
|
136
286
|
* Returns true if spec was copied, false if skipped
|
|
137
287
|
*/
|
|
138
288
|
async function copyIncrementSpecToLivingDocs(incrementId) {
|
|
289
|
+
console.warn('⚠️ Using deprecated copyIncrementSpecToLivingDocs (simple mode)');
|
|
290
|
+
console.warn(' Consider enabling intelligent mode to avoid duplication');
|
|
139
291
|
try {
|
|
140
292
|
const incrementSpecPath = path.join(process.cwd(), '.specweave', 'increments', incrementId, 'spec.md');
|
|
141
293
|
const livingDocsPath = path.join(process.cwd(), '.specweave', 'docs', 'internal', 'specs', `spec-${incrementId}.md`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-living-docs.js","sourceRoot":"","sources":["../../../../../plugins/specweave/lib/hooks/sync-living-docs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sync-living-docs.js","sourceRoot":"","sources":["../../../../../plugins/specweave/lib/hooks/sync-living-docs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Azure DevOps Status Sync
|
|
3
|
+
*
|
|
4
|
+
* Synchronizes SpecWeave increment statuses with ADO work item states.
|
|
5
|
+
*
|
|
6
|
+
* ADO Work Item State Updates:
|
|
7
|
+
* - Uses JSON Patch format for updates
|
|
8
|
+
* - System.State field controls work item state
|
|
9
|
+
* - Available states: New, Active, On Hold, Resolved, Closed, Removed
|
|
10
|
+
*
|
|
11
|
+
* @module ado-status-sync
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* External status representation (ADO-specific)
|
|
15
|
+
*/
|
|
16
|
+
export interface ExternalStatus {
|
|
17
|
+
state: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Azure DevOps Status Sync
|
|
21
|
+
*
|
|
22
|
+
* Handles status synchronization with ADO work items.
|
|
23
|
+
*/
|
|
24
|
+
export declare class AdoStatusSync {
|
|
25
|
+
private client;
|
|
26
|
+
private organization;
|
|
27
|
+
private project;
|
|
28
|
+
constructor(organization: string, project: string, personalAccessToken: string);
|
|
29
|
+
/**
|
|
30
|
+
* Get current status from ADO work item
|
|
31
|
+
*
|
|
32
|
+
* @param workItemId - ADO work item ID (e.g., 123)
|
|
33
|
+
* @returns Current work item state
|
|
34
|
+
*/
|
|
35
|
+
getStatus(workItemId: number): Promise<ExternalStatus>;
|
|
36
|
+
/**
|
|
37
|
+
* Update ADO work item state
|
|
38
|
+
*
|
|
39
|
+
* Uses JSON Patch format to update System.State field.
|
|
40
|
+
*
|
|
41
|
+
* @param workItemId - ADO work item ID (e.g., 123)
|
|
42
|
+
* @param status - Desired status
|
|
43
|
+
*/
|
|
44
|
+
updateStatus(workItemId: number, status: ExternalStatus): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Post comment about status change to ADO work item
|
|
47
|
+
*
|
|
48
|
+
* @param workItemId - ADO work item ID (e.g., 123)
|
|
49
|
+
* @param oldStatus - Previous SpecWeave status
|
|
50
|
+
* @param newStatus - New SpecWeave status
|
|
51
|
+
*/
|
|
52
|
+
postStatusComment(workItemId: number, oldStatus: string, newStatus: string): Promise<void>;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=ado-status-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ado-status-sync.d.ts","sourceRoot":"","sources":["../../../../plugins/specweave-ado/lib/ado-status-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAS;gBAGtB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,mBAAmB,EAAE,MAAM;IAmB7B;;;;;OAKG;IACG,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAU5D;;;;;;;OAOG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB7E;;;;;;OAMG;IACG,iBAAiB,CACrB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;CAejB"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Azure DevOps Status Sync
|
|
3
|
+
*
|
|
4
|
+
* Synchronizes SpecWeave increment statuses with ADO work item states.
|
|
5
|
+
*
|
|
6
|
+
* ADO Work Item State Updates:
|
|
7
|
+
* - Uses JSON Patch format for updates
|
|
8
|
+
* - System.State field controls work item state
|
|
9
|
+
* - Available states: New, Active, On Hold, Resolved, Closed, Removed
|
|
10
|
+
*
|
|
11
|
+
* @module ado-status-sync
|
|
12
|
+
*/
|
|
13
|
+
import axios from 'axios';
|
|
14
|
+
/**
|
|
15
|
+
* Azure DevOps Status Sync
|
|
16
|
+
*
|
|
17
|
+
* Handles status synchronization with ADO work items.
|
|
18
|
+
*/
|
|
19
|
+
export class AdoStatusSync {
|
|
20
|
+
constructor(organization, project, personalAccessToken) {
|
|
21
|
+
this.organization = organization;
|
|
22
|
+
this.project = project;
|
|
23
|
+
// Create ADO API client
|
|
24
|
+
this.client = axios.create({
|
|
25
|
+
baseURL: `https://dev.azure.com/${organization}/${project}/_apis`,
|
|
26
|
+
auth: {
|
|
27
|
+
username: '', // Empty for PAT auth
|
|
28
|
+
password: personalAccessToken
|
|
29
|
+
},
|
|
30
|
+
headers: {
|
|
31
|
+
'Content-Type': 'application/json-patch+json',
|
|
32
|
+
'Accept': 'application/json'
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get current status from ADO work item
|
|
38
|
+
*
|
|
39
|
+
* @param workItemId - ADO work item ID (e.g., 123)
|
|
40
|
+
* @returns Current work item state
|
|
41
|
+
*/
|
|
42
|
+
async getStatus(workItemId) {
|
|
43
|
+
const response = await this.client.get(`/wit/workitems/${workItemId}?api-version=7.0`);
|
|
44
|
+
return {
|
|
45
|
+
state: response.data.fields['System.State']
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Update ADO work item state
|
|
50
|
+
*
|
|
51
|
+
* Uses JSON Patch format to update System.State field.
|
|
52
|
+
*
|
|
53
|
+
* @param workItemId - ADO work item ID (e.g., 123)
|
|
54
|
+
* @param status - Desired status
|
|
55
|
+
*/
|
|
56
|
+
async updateStatus(workItemId, status) {
|
|
57
|
+
// ADO uses JSON Patch format for updates
|
|
58
|
+
const patch = [
|
|
59
|
+
{
|
|
60
|
+
op: 'add',
|
|
61
|
+
path: '/fields/System.State',
|
|
62
|
+
value: status.state
|
|
63
|
+
}
|
|
64
|
+
];
|
|
65
|
+
await this.client.patch(`/wit/workitems/${workItemId}?api-version=7.0`, patch);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Post comment about status change to ADO work item
|
|
69
|
+
*
|
|
70
|
+
* @param workItemId - ADO work item ID (e.g., 123)
|
|
71
|
+
* @param oldStatus - Previous SpecWeave status
|
|
72
|
+
* @param newStatus - New SpecWeave status
|
|
73
|
+
*/
|
|
74
|
+
async postStatusComment(workItemId, oldStatus, newStatus) {
|
|
75
|
+
const text = `🔄 Status Update\n\n` +
|
|
76
|
+
`SpecWeave status changed:\n` +
|
|
77
|
+
`• From: ${oldStatus}\n` +
|
|
78
|
+
`• To: ${newStatus}\n` +
|
|
79
|
+
`• When: ${new Date().toISOString()}\n\n` +
|
|
80
|
+
`Synced from SpecWeave`;
|
|
81
|
+
await this.client.post(`/wit/workitems/${workItemId}/comments?api-version=7.0-preview.3`, {
|
|
82
|
+
text
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=ado-status-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ado-status-sync.js","sourceRoot":"","sources":["../../../../plugins/specweave-ado/lib/ado-status-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAwB,MAAM,OAAO,CAAC;AAS7C;;;;GAIG;AACH,MAAM,OAAO,aAAa;IAKxB,YACE,YAAoB,EACpB,OAAe,EACf,mBAA2B;QAE3B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,wBAAwB;QACxB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,yBAAyB,YAAY,IAAI,OAAO,QAAQ;YACjE,IAAI,EAAE;gBACJ,QAAQ,EAAE,EAAE,EAAE,qBAAqB;gBACnC,QAAQ,EAAE,mBAAmB;aAC9B;YACD,OAAO,EAAE;gBACP,cAAc,EAAE,6BAA6B;gBAC7C,QAAQ,EAAE,kBAAkB;aAC7B;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,SAAS,CAAC,UAAkB;QAChC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CACpC,kBAAkB,UAAU,kBAAkB,CAC/C,CAAC;QAEF,OAAO;YACL,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;SAC5C,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,YAAY,CAAC,UAAkB,EAAE,MAAsB;QAC3D,yCAAyC;QACzC,MAAM,KAAK,GAAG;YACZ;gBACE,EAAE,EAAE,KAAK;gBACT,IAAI,EAAE,sBAAsB;gBAC5B,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB;SACF,CAAC;QAEF,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CACrB,kBAAkB,UAAU,kBAAkB,EAC9C,KAAK,CACN,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,iBAAiB,CACrB,UAAkB,EAClB,SAAiB,EACjB,SAAiB;QAEjB,MAAM,IAAI,GAAG,sBAAsB;YACjC,6BAA6B;YAC7B,WAAW,SAAS,IAAI;YACxB,SAAS,SAAS,IAAI;YACtB,WAAW,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM;YACzC,uBAAuB,CAAC;QAE1B,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACpB,kBAAkB,UAAU,qCAAqC,EACjE;YACE,IAAI;SACL,CACF,CAAC;IACJ,CAAC;CACF"}
|