specweave 0.21.3 → 0.22.2
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 +409 -6
- package/README.md +38 -8
- package/bin/specweave.js +5 -8
- package/dist/plugins/specweave-github/lib/CodeValidator.d.ts +101 -0
- package/dist/plugins/specweave-github/lib/CodeValidator.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/CodeValidator.js +219 -0
- package/dist/plugins/specweave-github/lib/CodeValidator.js.map +1 -0
- package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.d.ts +182 -0
- package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.js +603 -0
- package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.js.map +1 -0
- package/dist/plugins/specweave-github/lib/github-client-v2.d.ts +10 -0
- package/dist/plugins/specweave-github/lib/github-client-v2.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/github-client-v2.js +26 -0
- package/dist/plugins/specweave-github/lib/github-client-v2.js.map +1 -1
- package/dist/plugins/specweave-github/lib/task-sync.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/task-sync.js +7 -0
- package/dist/plugins/specweave-github/lib/task-sync.js.map +1 -1
- package/dist/plugins/specweave-github/lib/types.d.ts +34 -0
- package/dist/plugins/specweave-github/lib/types.d.ts.map +1 -1
- package/dist/src/cli/commands/init.d.ts.map +1 -1
- package/dist/src/cli/commands/init.js +60 -5
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/migrate-to-profiles.d.ts +1 -0
- package/dist/src/cli/commands/migrate-to-profiles.d.ts.map +1 -1
- package/dist/src/cli/commands/migrate-to-profiles.js +12 -1
- package/dist/src/cli/commands/migrate-to-profiles.js.map +1 -1
- package/dist/src/cli/commands/next-command.d.ts +52 -0
- package/dist/src/cli/commands/next-command.d.ts.map +1 -0
- package/dist/src/cli/commands/next-command.js +204 -0
- package/dist/src/cli/commands/next-command.js.map +1 -0
- package/dist/src/cli/commands/sync-specs.d.ts +16 -0
- package/dist/src/cli/commands/sync-specs.d.ts.map +1 -0
- package/dist/src/cli/commands/sync-specs.js +130 -0
- package/dist/src/cli/commands/sync-specs.js.map +1 -0
- package/dist/src/cli/count-tasks.d.ts +20 -0
- package/dist/src/cli/count-tasks.d.ts.map +1 -0
- package/dist/src/cli/count-tasks.js +50 -0
- package/dist/src/cli/count-tasks.js.map +1 -0
- package/dist/src/config/ConfigManager.d.ts.map +1 -1
- package/dist/src/config/ConfigManager.js +2 -1
- package/dist/src/config/ConfigManager.js.map +1 -1
- package/dist/src/config/types.d.ts +58 -58
- package/dist/src/core/cicd/state-manager.d.ts +8 -0
- package/dist/src/core/cicd/state-manager.d.ts.map +1 -1
- package/dist/src/core/cicd/state-manager.js +60 -15
- package/dist/src/core/cicd/state-manager.js.map +1 -1
- package/dist/src/core/cost-tracker.d.ts.map +1 -1
- package/dist/src/core/cost-tracker.js +2 -1
- package/dist/src/core/cost-tracker.js.map +1 -1
- package/dist/src/core/iac/template-engine.d.ts.map +1 -1
- package/dist/src/core/iac/template-engine.js +28 -0
- package/dist/src/core/iac/template-engine.js.map +1 -1
- package/dist/src/core/iac/template-generator.d.ts +53 -0
- package/dist/src/core/iac/template-generator.d.ts.map +1 -0
- package/dist/src/core/iac/template-generator.js +125 -0
- package/dist/src/core/iac/template-generator.js.map +1 -0
- package/dist/src/core/increment/status-auto-transition.js +3 -3
- package/dist/src/core/increment/status-auto-transition.js.map +1 -1
- package/dist/src/core/living-docs/CodeValidator.js +1 -1
- package/dist/src/core/living-docs/CodeValidator.js.map +1 -1
- package/dist/src/core/living-docs/CompletionPropagator.d.ts.map +1 -1
- package/dist/src/core/living-docs/CompletionPropagator.js +4 -3
- package/dist/src/core/living-docs/CompletionPropagator.js.map +1 -1
- package/dist/src/core/living-docs/SpecDistributor.d.ts +5 -0
- package/dist/src/core/living-docs/SpecDistributor.d.ts.map +1 -1
- package/dist/src/core/living-docs/SpecDistributor.js +12 -0
- package/dist/src/core/living-docs/SpecDistributor.js.map +1 -1
- package/dist/src/core/living-docs/content-distributor.d.ts.map +1 -1
- package/dist/src/core/living-docs/content-distributor.js +11 -1
- package/dist/src/core/living-docs/content-distributor.js.map +1 -1
- package/dist/src/core/living-docs/living-docs-sync.d.ts +166 -0
- package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -0
- package/dist/src/core/living-docs/living-docs-sync.js +726 -0
- package/dist/src/core/living-docs/living-docs-sync.js.map +1 -0
- package/dist/src/core/living-docs/project-detector.d.ts.map +1 -1
- package/dist/src/core/living-docs/project-detector.js +38 -0
- package/dist/src/core/living-docs/project-detector.js.map +1 -1
- package/dist/src/core/living-docs/task-project-specific-generator.d.ts +7 -3
- package/dist/src/core/living-docs/task-project-specific-generator.d.ts.map +1 -1
- package/dist/src/core/living-docs/task-project-specific-generator.js +40 -24
- package/dist/src/core/living-docs/task-project-specific-generator.js.map +1 -1
- package/dist/src/core/plugin-loader.d.ts +7 -0
- package/dist/src/core/plugin-loader.d.ts.map +1 -1
- package/dist/src/core/plugin-loader.js +18 -1
- package/dist/src/core/plugin-loader.js.map +1 -1
- package/dist/src/core/serverless/platform-data-loader.d.ts +8 -0
- package/dist/src/core/serverless/platform-data-loader.d.ts.map +1 -1
- package/dist/src/core/serverless/platform-data-loader.js +14 -0
- package/dist/src/core/serverless/platform-data-loader.js.map +1 -1
- package/dist/src/core/serverless/types.d.ts +1 -1
- package/dist/src/core/serverless/types.d.ts.map +1 -1
- package/dist/src/core/status-line/status-line-manager.d.ts +6 -2
- package/dist/src/core/status-line/status-line-manager.d.ts.map +1 -1
- package/dist/src/core/status-line/status-line-manager.js +11 -5
- package/dist/src/core/status-line/status-line-manager.js.map +1 -1
- package/dist/src/core/status-line/task-counter.d.ts +69 -0
- package/dist/src/core/status-line/task-counter.d.ts.map +1 -0
- package/dist/src/core/status-line/task-counter.js +107 -0
- package/dist/src/core/status-line/task-counter.js.map +1 -0
- package/dist/src/core/types/config.d.ts +23 -0
- package/dist/src/core/types/config.d.ts.map +1 -1
- package/dist/src/core/types/config.js +10 -0
- package/dist/src/core/types/config.js.map +1 -1
- package/dist/src/core/workflow/autonomous-executor.d.ts +111 -0
- package/dist/src/core/workflow/autonomous-executor.d.ts.map +1 -0
- package/dist/src/core/workflow/autonomous-executor.js +275 -0
- package/dist/src/core/workflow/autonomous-executor.js.map +1 -0
- package/dist/src/core/workflow/backlog-scanner.d.ts +94 -0
- package/dist/src/core/workflow/backlog-scanner.d.ts.map +1 -0
- package/dist/src/core/workflow/backlog-scanner.js +170 -0
- package/dist/src/core/workflow/backlog-scanner.js.map +1 -0
- package/dist/src/core/workflow/command-invoker.d.ts +86 -0
- package/dist/src/core/workflow/command-invoker.d.ts.map +1 -0
- package/dist/src/core/workflow/command-invoker.js +131 -0
- package/dist/src/core/workflow/command-invoker.js.map +1 -0
- package/dist/src/core/workflow/cost-estimator.d.ts +120 -0
- package/dist/src/core/workflow/cost-estimator.d.ts.map +1 -0
- package/dist/src/core/workflow/cost-estimator.js +222 -0
- package/dist/src/core/workflow/cost-estimator.js.map +1 -0
- package/dist/src/core/workflow/index.d.ts +20 -0
- package/dist/src/core/workflow/index.d.ts.map +1 -0
- package/dist/src/core/workflow/index.js +24 -0
- package/dist/src/core/workflow/index.js.map +1 -0
- package/dist/src/core/workflow/state-manager.d.ts +107 -0
- package/dist/src/core/workflow/state-manager.d.ts.map +1 -0
- package/dist/src/core/workflow/state-manager.js +126 -0
- package/dist/src/core/workflow/state-manager.js.map +1 -0
- package/dist/src/core/workflow/workflow-orchestrator.d.ts +93 -0
- package/dist/src/core/workflow/workflow-orchestrator.d.ts.map +1 -0
- package/dist/src/core/workflow/workflow-orchestrator.js +195 -0
- package/dist/src/core/workflow/workflow-orchestrator.js.map +1 -0
- package/dist/src/init/ArchitecturePresenter.d.ts +47 -0
- package/dist/src/init/ArchitecturePresenter.d.ts.map +1 -0
- package/dist/src/init/ArchitecturePresenter.js +180 -0
- package/dist/src/init/ArchitecturePresenter.js.map +1 -0
- package/dist/src/init/InitFlow.d.ts.map +1 -1
- package/dist/src/init/InitFlow.js +30 -1
- package/dist/src/init/InitFlow.js.map +1 -1
- package/dist/src/init/architecture/CostEstimator.d.ts +52 -0
- package/dist/src/init/architecture/CostEstimator.d.ts.map +1 -0
- package/dist/src/init/architecture/CostEstimator.js +107 -0
- package/dist/src/init/architecture/CostEstimator.js.map +1 -0
- package/dist/src/init/architecture/InfrastructureMapper.d.ts +41 -0
- package/dist/src/init/architecture/InfrastructureMapper.d.ts.map +1 -0
- package/dist/src/init/architecture/InfrastructureMapper.js +140 -0
- package/dist/src/init/architecture/InfrastructureMapper.js.map +1 -0
- package/dist/src/init/architecture/ProjectGenerator.d.ts +44 -0
- package/dist/src/init/architecture/ProjectGenerator.d.ts.map +1 -0
- package/dist/src/init/architecture/ProjectGenerator.js +216 -0
- package/dist/src/init/architecture/ProjectGenerator.js.map +1 -0
- package/dist/src/init/architecture/types.d.ts +10 -10
- package/dist/src/init/research/src/config/types.d.ts +8 -8
- package/dist/src/metrics/dora-calculator.js +2 -2
- package/dist/src/metrics/dora-calculator.js.map +1 -1
- package/dist/src/utils/pricing-constants.d.ts +5 -2
- package/dist/src/utils/pricing-constants.d.ts.map +1 -1
- package/dist/src/utils/pricing-constants.js +3 -2
- package/dist/src/utils/pricing-constants.js.map +1 -1
- package/package.json +9 -8
- package/plugins/specweave/agents/infrastructure/AGENT.md +88 -46
- package/plugins/specweave/agents/pm/AGENT.md +58 -1
- package/plugins/specweave/commands/specweave-archive-features.md +1 -1
- package/plugins/specweave/commands/specweave-archive-increments.md +1 -1
- package/plugins/specweave/commands/specweave-check-hooks.md +5 -0
- package/plugins/specweave/commands/specweave-done.md +12 -0
- package/plugins/specweave/commands/specweave-plan.md +1 -1
- package/plugins/specweave/commands/specweave-progress.md +108 -379
- package/plugins/specweave/commands/specweave-reopen.md +1 -1
- package/plugins/specweave/commands/specweave-restore-feature.md +1 -1
- package/plugins/specweave/commands/specweave-sync-specs.md +20 -48
- package/plugins/specweave/hooks/lib/update-status-line.sh +44 -35
- package/plugins/specweave/hooks/lib/validate-spec-status.sh +163 -0
- package/plugins/specweave/hooks/user-prompt-submit.sh +17 -35
- package/plugins/specweave/lib/hooks/update-tasks-md.js +52 -9
- package/plugins/specweave/lib/hooks/update-tasks-md.ts +77 -16
- package/plugins/specweave/templates/iac/aws-lambda/defaults.json +24 -0
- package/plugins/specweave/templates/iac/aws-lambda/templates/README.md.hbs +260 -0
- package/plugins/specweave/templates/iac/aws-lambda/templates/environments/dev.tfvars.hbs +34 -0
- package/plugins/specweave/templates/iac/aws-lambda/templates/environments/prod.tfvars.hbs +37 -0
- package/plugins/specweave/templates/iac/aws-lambda/templates/environments/staging.tfvars.hbs +35 -0
- package/plugins/specweave/templates/iac/aws-lambda/templates/outputs.tf.hbs +77 -0
- package/plugins/specweave/templates/iac/aws-lambda/templates/providers.tf.hbs +36 -0
- package/plugins/specweave/templates/iac/aws-lambda/templates/variables.tf.hbs +115 -0
- package/plugins/specweave/templates/iac/azure-functions/defaults.json +25 -0
- package/plugins/specweave/templates/iac/azure-functions/templates/README.md.hbs +268 -0
- package/plugins/specweave/templates/iac/azure-functions/templates/environments/dev.tfvars.hbs +34 -0
- package/plugins/specweave/templates/iac/azure-functions/templates/environments/prod.tfvars.hbs +46 -0
- package/plugins/specweave/templates/iac/azure-functions/templates/environments/staging.tfvars.hbs +34 -0
- package/plugins/specweave/templates/iac/azure-functions/templates/main.tf.hbs +225 -0
- package/plugins/specweave/templates/iac/azure-functions/templates/outputs.tf.hbs +89 -0
- package/plugins/specweave/templates/iac/azure-functions/templates/provider.tf.hbs +27 -0
- package/plugins/specweave/templates/iac/azure-functions/templates/providers.tf.hbs +35 -0
- package/plugins/specweave/templates/iac/azure-functions/templates/variables.tf.hbs +124 -0
- package/plugins/specweave/templates/iac/firebase/defaults.json +29 -0
- package/plugins/specweave/templates/iac/firebase/templates/README.md.hbs +35 -0
- package/plugins/specweave/templates/iac/firebase/templates/environments/dev.tfvars.hbs +7 -0
- package/plugins/specweave/templates/iac/firebase/templates/environments/prod.tfvars.hbs +7 -0
- package/plugins/specweave/templates/iac/firebase/templates/environments/staging.tfvars.hbs +7 -0
- package/plugins/specweave/templates/iac/firebase/templates/main.tf.hbs +90 -0
- package/plugins/specweave/templates/iac/firebase/templates/outputs.tf.hbs +15 -0
- package/plugins/specweave/templates/iac/firebase/templates/providers.tf.hbs +23 -0
- package/plugins/specweave/templates/iac/firebase/templates/variables.tf.hbs +42 -0
- package/plugins/specweave/templates/iac/gcp-cloud-functions/defaults.json +26 -0
- package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/README.md.hbs +299 -0
- package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/environments/dev.tfvars.hbs +36 -0
- package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/environments/prod.tfvars.hbs +48 -0
- package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/environments/staging.tfvars.hbs +41 -0
- package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/main.tf.hbs +192 -0
- package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/outputs.tf.hbs +66 -0
- package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/providers.tf.hbs +25 -0
- package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/variables.tf.hbs +119 -0
- package/plugins/specweave/templates/iac/supabase/defaults.json +15 -0
- package/plugins/specweave/templates/iac/supabase/templates/README.md.hbs +46 -0
- package/plugins/specweave/templates/iac/supabase/templates/main.tf.hbs +50 -0
- package/plugins/specweave-ado/lib/enhanced-ado-sync.js +170 -0
- package/plugins/specweave-github/agents/github-manager/AGENT.md +39 -7
- package/plugins/specweave-github/commands/specweave-github-create-issue.md +5 -5
- package/plugins/specweave-github/lib/CodeValidator.js +195 -0
- package/plugins/specweave-github/lib/CodeValidator.ts +284 -0
- package/plugins/specweave-github/lib/ThreeLayerSyncManager.js +545 -0
- package/plugins/specweave-github/lib/ThreeLayerSyncManager.ts +809 -0
- package/plugins/specweave-github/lib/github-client-v2.js +29 -0
- package/plugins/specweave-github/lib/github-client-v2.ts +30 -0
- package/plugins/specweave-github/lib/task-sync.js +4 -0
- package/plugins/specweave-github/lib/task-sync.ts +7 -0
- package/plugins/specweave-github/lib/types.ts +38 -0
- package/plugins/specweave-jira/lib/enhanced-jira-sync.js +3 -3
- package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +3222 -0
- package/src/templates/AGENTS.md.template +22 -1
- package/src/templates/CLAUDE.md.template +31 -0
- package/dist/src/core/living-docs/ThreeLayerSyncManager.d.ts +0 -116
- package/dist/src/core/living-docs/ThreeLayerSyncManager.d.ts.map +0 -1
- package/dist/src/core/living-docs/ThreeLayerSyncManager.js +0 -356
- package/dist/src/core/living-docs/ThreeLayerSyncManager.js.map +0 -1
|
@@ -134,10 +134,39 @@ class GitHubClientV2 {
|
|
|
134
134
|
// ==========================================================================
|
|
135
135
|
// Issues
|
|
136
136
|
// ==========================================================================
|
|
137
|
+
/**
|
|
138
|
+
* Validate issue title format
|
|
139
|
+
*
|
|
140
|
+
* CRITICAL: Enforces correct data flow architecture
|
|
141
|
+
* - ✅ CORRECT: "US-XXX: Title" or "FS-YY-MM-DD: Title"
|
|
142
|
+
* - ❌ WRONG: "[Increment XXXX] Title" (deprecated old format)
|
|
143
|
+
*
|
|
144
|
+
* @throws Error if title uses deprecated [Increment XXXX] format
|
|
145
|
+
*/
|
|
146
|
+
validateIssueTitle(title) {
|
|
147
|
+
const deprecatedPattern = /\[Increment\s+\d+\]/i;
|
|
148
|
+
if (deprecatedPattern.test(title)) {
|
|
149
|
+
throw new Error(
|
|
150
|
+
`\u274C DEPRECATED FORMAT DETECTED: "${title}"
|
|
151
|
+
|
|
152
|
+
GitHub issues MUST use living docs format:
|
|
153
|
+
\u2705 CORRECT: "US-XXX: Title" (User Story)
|
|
154
|
+
\u2705 CORRECT: "FS-YY-MM-DD: Title" (Feature Spec)
|
|
155
|
+
\u274C WRONG: "[Increment XXXX] Title" (old format)
|
|
156
|
+
|
|
157
|
+
WHY: Correct data flow is: Increment \u2192 Living Docs \u2192 GitHub
|
|
158
|
+
Living docs are the source of truth for GitHub sync.
|
|
159
|
+
|
|
160
|
+
FIX: Use /specweave:sync-docs to generate living docs, then sync to GitHub.
|
|
161
|
+
OR: Use US/FS ID format directly if creating issues manually.`
|
|
162
|
+
);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
137
165
|
/**
|
|
138
166
|
* Create epic issue (increment-level)
|
|
139
167
|
*/
|
|
140
168
|
async createEpicIssue(title, body, milestone, labels = []) {
|
|
169
|
+
this.validateIssueTitle(title);
|
|
141
170
|
const args = [
|
|
142
171
|
"issue",
|
|
143
172
|
"create",
|
|
@@ -192,6 +192,34 @@ export class GitHubClientV2 {
|
|
|
192
192
|
// Issues
|
|
193
193
|
// ==========================================================================
|
|
194
194
|
|
|
195
|
+
/**
|
|
196
|
+
* Validate issue title format
|
|
197
|
+
*
|
|
198
|
+
* CRITICAL: Enforces correct data flow architecture
|
|
199
|
+
* - ✅ CORRECT: "US-XXX: Title" or "FS-YY-MM-DD: Title"
|
|
200
|
+
* - ❌ WRONG: "[Increment XXXX] Title" (deprecated old format)
|
|
201
|
+
*
|
|
202
|
+
* @throws Error if title uses deprecated [Increment XXXX] format
|
|
203
|
+
*/
|
|
204
|
+
private validateIssueTitle(title: string): void {
|
|
205
|
+
// Check for deprecated [Increment XXXX] format
|
|
206
|
+
const deprecatedPattern = /\[Increment\s+\d+\]/i;
|
|
207
|
+
|
|
208
|
+
if (deprecatedPattern.test(title)) {
|
|
209
|
+
throw new Error(
|
|
210
|
+
`❌ DEPRECATED FORMAT DETECTED: "${title}"\n\n` +
|
|
211
|
+
`GitHub issues MUST use living docs format:\n` +
|
|
212
|
+
` ✅ CORRECT: "US-XXX: Title" (User Story)\n` +
|
|
213
|
+
` ✅ CORRECT: "FS-YY-MM-DD: Title" (Feature Spec)\n` +
|
|
214
|
+
` ❌ WRONG: "[Increment XXXX] Title" (old format)\n\n` +
|
|
215
|
+
`WHY: Correct data flow is: Increment → Living Docs → GitHub\n` +
|
|
216
|
+
` Living docs are the source of truth for GitHub sync.\n\n` +
|
|
217
|
+
`FIX: Use /specweave:sync-docs to generate living docs, then sync to GitHub.\n` +
|
|
218
|
+
` OR: Use US/FS ID format directly if creating issues manually.`
|
|
219
|
+
);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
195
223
|
/**
|
|
196
224
|
* Create epic issue (increment-level)
|
|
197
225
|
*/
|
|
@@ -201,6 +229,8 @@ export class GitHubClientV2 {
|
|
|
201
229
|
milestone?: number | string,
|
|
202
230
|
labels: string[] = []
|
|
203
231
|
): Promise<GitHubIssue> {
|
|
232
|
+
// Validate title format before creating
|
|
233
|
+
this.validateIssueTitle(title);
|
|
204
234
|
const args = [
|
|
205
235
|
'issue',
|
|
206
236
|
'create',
|
|
@@ -192,6 +192,10 @@ ${phaseChecklist}
|
|
|
192
192
|
|
|
193
193
|
## SpecWeave Increment
|
|
194
194
|
|
|
195
|
+
\u26A0\uFE0F **DEPRECATED FORMAT**: This issue was created using the old increment-based sync.
|
|
196
|
+
|
|
197
|
+
**Correct data flow**: Increment \u2192 Living Docs \u2192 GitHub
|
|
198
|
+
|
|
195
199
|
This epic tracks SpecWeave increment \`${metadata.id}\`.
|
|
196
200
|
|
|
197
201
|
- **Spec**: [\`spec.md\`](${this.getGitHubFileURL("spec.md")})
|
|
@@ -219,6 +219,9 @@ export class TaskSync {
|
|
|
219
219
|
});
|
|
220
220
|
}
|
|
221
221
|
|
|
222
|
+
// DEPRECATED: This method generates old [Increment XXX] format
|
|
223
|
+
// It will be blocked by github-client-v2.ts validation
|
|
224
|
+
// TODO: Remove task-sync.ts entirely - use living docs sync instead
|
|
222
225
|
return `# [Increment ${metadata.id}] ${metadata.title}
|
|
223
226
|
|
|
224
227
|
**Status**: ${metadata.status}
|
|
@@ -234,6 +237,10 @@ ${phaseChecklist}
|
|
|
234
237
|
|
|
235
238
|
## SpecWeave Increment
|
|
236
239
|
|
|
240
|
+
⚠️ **DEPRECATED FORMAT**: This issue was created using the old increment-based sync.
|
|
241
|
+
|
|
242
|
+
**Correct data flow**: Increment → Living Docs → GitHub
|
|
243
|
+
|
|
237
244
|
This epic tracks SpecWeave increment \`${metadata.id}\`.
|
|
238
245
|
|
|
239
246
|
- **Spec**: [\`spec.md\`](${this.getGitHubFileURL('spec.md')})
|
|
@@ -84,3 +84,41 @@ export interface GitHubSyncOptions {
|
|
|
84
84
|
projectName?: string; // Optional: Add issues to GitHub Project (e.g., "SpecWeave v0.4.0")
|
|
85
85
|
fastMode?: boolean; // Skip rate limiting (for increments < 10 tasks)
|
|
86
86
|
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Three-Layer Sync Types (for bidirectional sync)
|
|
90
|
+
*/
|
|
91
|
+
export interface AcceptanceCriterion {
|
|
92
|
+
id: string; // e.g., "AC-US1-01"
|
|
93
|
+
userStoryId: string; // e.g., "US1"
|
|
94
|
+
description: string;
|
|
95
|
+
completed: boolean;
|
|
96
|
+
projects: string[]; // ["backend", "frontend", "mobile"]
|
|
97
|
+
rawLine: string; // Original markdown line
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export interface SyncTask {
|
|
101
|
+
id: string; // e.g., "T-001"
|
|
102
|
+
title: string;
|
|
103
|
+
completed: boolean;
|
|
104
|
+
completedDate?: string;
|
|
105
|
+
acIds: string[]; // e.g., ["AC-US1-01", "AC-US1-02"]
|
|
106
|
+
filePaths?: string[]; // For code validation
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export interface SyncChange {
|
|
110
|
+
type: 'ac' | 'task';
|
|
111
|
+
id: string;
|
|
112
|
+
completed: boolean;
|
|
113
|
+
layer: 'github' | 'living-docs' | 'increment';
|
|
114
|
+
userStoryPath?: string;
|
|
115
|
+
incrementPath?: string;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export interface ThreeLayerSyncResult {
|
|
119
|
+
acsUpdated: number;
|
|
120
|
+
tasksUpdated: number;
|
|
121
|
+
tasksReopened: number;
|
|
122
|
+
conflicts: string[];
|
|
123
|
+
errors: string[];
|
|
124
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { EnhancedContentBuilder } from "../../../src/core/sync/enhanced-content-builder.js";
|
|
2
|
-
import { SpecIncrementMapper } from "../../../src/core/sync/spec-increment-mapper.js";
|
|
3
|
-
import { parseSpecContent } from "../../../src/core/spec-content-sync.js";
|
|
1
|
+
import { EnhancedContentBuilder } from "../../../dist/src/core/sync/enhanced-content-builder.js";
|
|
2
|
+
import { SpecIncrementMapper } from "../../../dist/src/core/sync/spec-increment-mapper.js";
|
|
3
|
+
import { parseSpecContent } from "../../../dist/src/core/spec-content-sync.js";
|
|
4
4
|
import * as path from "path";
|
|
5
5
|
import * as fs from "fs/promises";
|
|
6
6
|
async function syncSpecToJiraWithEnhancedContent(options) {
|