specweave 1.0.273 → 1.0.274

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.
@@ -1 +1 @@
1
- {"version":3,"file":"status-change-sync-trigger.d.ts","sourceRoot":"","sources":["../../../../src/core/increment/status-change-sync-trigger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,EAAE,MAAM,EAAiB,MAAM,uBAAuB,CAAC;AAE9D,qBAAa,uBAAuB;IAClC,OAAO,CAAC,MAAM,CAAC,cAAc,CAA4B;IACzD,OAAO,CAAC,MAAM,CAAC,MAAM,CAAyB;IAE9C;;;;;;;;;OASG;WACU,eAAe,CAC1B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,eAAe,EAC1B,SAAS,EAAE,eAAe,GACzB,OAAO,CAAC,IAAI,CAAC;IAqChB;;;;;;;;;;OAUG;mBACkB,mBAAmB;IAgCxC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAkB3B;;;;;;;;;;OAUG;mBACkB,cAAc;IAoCnC;;;;;;OAMG;mBACkB,kBAAkB;IAuBvC;;;;;;OAMG;mBACkB,uBAAuB;IA4B5C;;OAEG;IACH,MAAM,CAAC,sBAAsB;IAI7B;;OAEG;IACH,MAAM,CAAC,mBAAmB,IAAI,IAAI;IAIlC;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAGvC"}
1
+ {"version":3,"file":"status-change-sync-trigger.d.ts","sourceRoot":"","sources":["../../../../src/core/increment/status-change-sync-trigger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,EAAE,MAAM,EAAiB,MAAM,uBAAuB,CAAC;AAE9D,qBAAa,uBAAuB;IAClC,OAAO,CAAC,MAAM,CAAC,cAAc,CAA4B;IACzD,OAAO,CAAC,MAAM,CAAC,MAAM,CAAyB;IAE9C;;;;;;;;;OASG;WACU,eAAe,CAC1B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,eAAe,EAC1B,SAAS,EAAE,eAAe,GACzB,OAAO,CAAC,IAAI,CAAC;IAqChB;;;;;;;;;;OAUG;mBACkB,mBAAmB;IAgCxC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAkB3B;;;;;;;;;;OAUG;mBACkB,cAAc;IA4CnC;;;;;;OAMG;mBACkB,kBAAkB;IAuBvC;;;;;;OAMG;mBACkB,uBAAuB;IA4B5C;;OAEG;IACH,MAAM,CAAC,sBAAsB;IAI7B;;OAEG;IACH,MAAM,CAAC,mBAAmB,IAAI,IAAI;IAIlC;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAGvC"}
@@ -158,29 +158,37 @@ export class StatusChangeSyncTrigger {
158
158
  static async spawnAsyncSync(incrementId, newStatus) {
159
159
  // Dynamic import to avoid circular dependency
160
160
  const { LivingDocsSync } = await import('../living-docs/living-docs-sync.js');
161
- // Non-blocking: Don't await
162
- setTimeout(async () => {
163
- try {
164
- const projectRoot = process.cwd();
165
- // v1.0.19: Check if we need to auto-create external issues
166
- await this.autoCreateIfNeeded(projectRoot, incrementId);
167
- // Run living docs sync
168
- const sync = new LivingDocsSync(projectRoot, {
169
- logger: this.logger
170
- });
171
- await sync.syncIncrement(incrementId);
172
- // v1.0.19: Auto-close issues on completion
173
- if (newStatus === IncrementStatus.COMPLETED) {
174
- await this.autoCloseExternalIssues(projectRoot, incrementId);
175
- }
176
- this.circuitBreaker.recordSuccess();
177
- this.logger.log(`✅ Auto-synced increment ${incrementId} to external tools`);
178
- }
179
- catch (error) {
180
- // Error will be caught by triggerIfNeeded()
181
- throw error;
161
+ const syncFn = async () => {
162
+ const projectRoot = process.cwd();
163
+ // v1.0.19: Check if we need to auto-create external issues
164
+ await this.autoCreateIfNeeded(projectRoot, incrementId);
165
+ // Run living docs sync
166
+ const sync = new LivingDocsSync(projectRoot, {
167
+ logger: this.logger
168
+ });
169
+ await sync.syncIncrement(incrementId);
170
+ // v1.0.19: Auto-close issues on completion
171
+ if (newStatus === IncrementStatus.COMPLETED) {
172
+ await this.autoCloseExternalIssues(projectRoot, incrementId);
182
173
  }
183
- }, 0);
174
+ this.circuitBreaker.recordSuccess();
175
+ this.logger.log(`✅ Auto-synced increment ${incrementId} to external tools`);
176
+ };
177
+ // Completion transitions run synchronously to ensure issue closure
178
+ // completes before the process exits. Other transitions stay non-blocking.
179
+ if (newStatus === IncrementStatus.COMPLETED) {
180
+ await syncFn();
181
+ }
182
+ else {
183
+ setTimeout(async () => {
184
+ try {
185
+ await syncFn();
186
+ }
187
+ catch (error) {
188
+ throw error;
189
+ }
190
+ }, 0);
191
+ }
184
192
  }
185
193
  /**
186
194
  * Auto-create external issues if:
@@ -219,10 +227,10 @@ export class StatusChangeSyncTrigger {
219
227
  incrementId,
220
228
  logger: this.logger,
221
229
  });
222
- // This will close GitHub/JIRA/ADO issues with proper completion comments
223
- const result = await coordinator.syncIncrementCompletion();
230
+ // Close GitHub/JIRA/ADO issues with proper completion comments
231
+ const result = await coordinator.syncIncrementClosure();
224
232
  if (result.success) {
225
- this.logger.log(`🎉 Auto-closed external issues for ${incrementId} (${result.userStoriesSynced} synced)`);
233
+ this.logger.log(`🎉 Auto-closed external issues for ${incrementId} (${result.closedIssues.length} closed)`);
226
234
  }
227
235
  }
228
236
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"status-change-sync-trigger.js","sourceRoot":"","sources":["../../../../src/core/increment/status-change-sync-trigger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status-change-sync-trigger.js","sourceRoot":"","sources":["../../../../src/core/increment/status-change-sync-trigger.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specweave",
3
- "version": "1.0.273",
3
+ "version": "1.0.274",
4
4
  "description": "Spec-driven development framework for AI coding agents. First-class support for Claude Code — compatible with any LLM-powered coding tool. Living documentation, autonomous execution, quality gates, and multilingual support (9 languages).",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -113,12 +113,32 @@ Runs automatically after successful closure:
113
113
 
114
114
  **B) Sync living docs to GitHub Project**: If `hooks.post_increment_done.sync_to_github_project` enabled, find living docs spec and run `/sw-github:sync-spec`.
115
115
 
116
- **C) Close GitHub issue**: If `hooks.post_increment_done.close_github_issue` enabled and metadata has `github.issue`, close via `gh issue close`.
116
+ **C) Close ALL per-user-story GitHub issues**: If `hooks.post_increment_done.close_github_issue` enabled:
117
+
118
+ 1. Read `sync.github.owner` and `sync.github.repo` from config.json
119
+ 2. Extract the feature ID (e.g. `FS-237`) from spec.md frontmatter or increment ID
120
+ 3. For EACH user story in spec.md (US-001, US-002, etc.):
121
+ - Search GitHub by title pattern: `gh issue list -R {owner}/{repo} --search "[{feature_id}][{us_id}]" --state open --json number`
122
+ - Close each matching open issue: `gh issue close {number} -R {owner}/{repo} -c "Completed as part of increment {increment_id}"`
123
+ 4. Also close the single issue in `metadata.github.issue` if it exists and is still open
124
+ 5. Report: "Closed N of M user-story issues on GitHub"
125
+
126
+ **IMPORTANT**: Do NOT rely only on `metadata.github.issue` — that field tracks only one issue. Always search by title pattern to find ALL per-user-story issues.
117
127
 
118
128
  **D) Close external-origin issue** (E-suffix increments only): Parse `metadata.external_ref` (format: `github#owner/repo#number`). Check `sync.settings.canUpdateStatus` permission. Close via `gh issue close -R`.
119
129
 
120
130
  **E) Sync to external tools**: If `sync.statusSync.enabled`, use `syncACProgressToProviders()` to sync to all enabled providers (GitHub, JIRA, ADO).
121
131
 
132
+ **F) Sync Result Summary**: Display a summary of all closure operations:
133
+ ```
134
+ | Tool | Action | Result |
135
+ |--------|---------------------|---------------------------|
136
+ | GitHub | Close N issues | OK / FAILED: {reason} |
137
+ | JIRA | Transition N issues | OK / SKIPPED |
138
+ | ADO | Close N work items | OK / SKIPPED |
139
+ ```
140
+ If any operation failed, display: "Run `/sw:progress-sync` to retry."
141
+
122
142
  ### Step 10: Sync Living Docs (MANDATORY)
123
143
 
124
144
  Execute: `Skill({ skill: "sw:sync-docs" })` with "review" mode. Do NOT just mention it -- actually invoke it.