specweave 1.0.526 → 1.0.528

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 (59) hide show
  1. package/dist/plugins/specweave/lib/integrations/github/duplicate-detector.d.ts.map +1 -1
  2. package/dist/plugins/specweave/lib/integrations/github/duplicate-detector.js +6 -1
  3. package/dist/plugins/specweave/lib/integrations/github/duplicate-detector.js.map +1 -1
  4. package/dist/plugins/specweave/lib/integrations/github/github-feature-sync-cli.js +6 -0
  5. package/dist/plugins/specweave/lib/integrations/github/github-feature-sync-cli.js.map +1 -1
  6. package/dist/plugins/specweave/lib/integrations/github/github-feature-sync.d.ts +1 -0
  7. package/dist/plugins/specweave/lib/integrations/github/github-feature-sync.d.ts.map +1 -1
  8. package/dist/plugins/specweave/lib/integrations/github/github-feature-sync.js +71 -29
  9. package/dist/plugins/specweave/lib/integrations/github/github-feature-sync.js.map +1 -1
  10. package/dist/plugins/specweave/lib/vendor/core/increment/active-increment-manager.d.ts +1 -1
  11. package/dist/plugins/specweave/lib/vendor/core/increment/active-increment-manager.js +20 -5
  12. package/dist/plugins/specweave/lib/vendor/core/increment/active-increment-manager.js.map +1 -1
  13. package/dist/src/cli/commands/auto-status.js +15 -1
  14. package/dist/src/cli/commands/auto-status.js.map +1 -1
  15. package/dist/src/cli/commands/auto.js +19 -1
  16. package/dist/src/cli/commands/auto.js.map +1 -1
  17. package/dist/src/cli/commands/cancel-auto.js +27 -1
  18. package/dist/src/cli/commands/cancel-auto.js.map +1 -1
  19. package/dist/src/core/auto/types.d.ts +1 -0
  20. package/dist/src/core/auto/types.d.ts.map +1 -1
  21. package/dist/src/core/auto/types.js.map +1 -1
  22. package/dist/src/core/increment/active-increment-manager.d.ts +1 -1
  23. package/dist/src/core/increment/active-increment-manager.d.ts.map +1 -1
  24. package/dist/src/core/increment/active-increment-manager.js +20 -5
  25. package/dist/src/core/increment/active-increment-manager.js.map +1 -1
  26. package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -1
  27. package/dist/src/core/living-docs/living-docs-sync.js +7 -1
  28. package/dist/src/core/living-docs/living-docs-sync.js.map +1 -1
  29. package/dist/src/core/session/session-state-manager.d.ts +6 -0
  30. package/dist/src/core/session/session-state-manager.d.ts.map +1 -1
  31. package/dist/src/core/session/session-state-manager.js +19 -2
  32. package/dist/src/core/session/session-state-manager.js.map +1 -1
  33. package/dist/src/hooks/platform.d.ts +1 -22
  34. package/dist/src/hooks/platform.d.ts.map +1 -1
  35. package/dist/src/hooks/platform.js +2 -72
  36. package/dist/src/hooks/platform.js.map +1 -1
  37. package/dist/src/hooks/session-start.js +10 -3
  38. package/dist/src/hooks/session-start.js.map +1 -1
  39. package/dist/src/sync/external-issue-auto-creator.d.ts.map +1 -1
  40. package/dist/src/sync/external-issue-auto-creator.js +8 -0
  41. package/dist/src/sync/external-issue-auto-creator.js.map +1 -1
  42. package/dist/src/utils/file-lock.d.ts +23 -0
  43. package/dist/src/utils/file-lock.d.ts.map +1 -0
  44. package/dist/src/utils/file-lock.js +71 -0
  45. package/dist/src/utils/file-lock.js.map +1 -0
  46. package/dist/src/utils/lock-manager.d.ts.map +1 -1
  47. package/dist/src/utils/lock-manager.js +12 -10
  48. package/dist/src/utils/lock-manager.js.map +1 -1
  49. package/package.json +1 -1
  50. package/plugins/specweave/hooks/stop-auto-v5.sh +8 -2
  51. package/plugins/specweave/lib/integrations/github/duplicate-detector.js +1 -1
  52. package/plugins/specweave/lib/integrations/github/duplicate-detector.ts +6 -1
  53. package/plugins/specweave/lib/integrations/github/github-feature-sync-cli.js +6 -0
  54. package/plugins/specweave/lib/integrations/github/github-feature-sync-cli.ts +7 -0
  55. package/plugins/specweave/lib/integrations/github/github-feature-sync.js +55 -22
  56. package/plugins/specweave/lib/integrations/github/github-feature-sync.ts +82 -29
  57. package/plugins/specweave/lib/vendor/core/increment/active-increment-manager.d.ts +1 -1
  58. package/plugins/specweave/lib/vendor/core/increment/active-increment-manager.js +20 -5
  59. package/plugins/specweave/lib/vendor/core/increment/active-increment-manager.js.map +1 -1
@@ -130,7 +130,45 @@ export class GitHubFeatureSync {
130
130
  issuesCreated: number;
131
131
  issuesUpdated: number;
132
132
  userStoriesProcessed: number;
133
+ rateLimitSkipped?: boolean;
133
134
  }> {
135
+ // FS-609: Rate limit pre-check — abort early if quota is low to prevent 403 errors
136
+ const RATE_LIMIT_THRESHOLD = 250;
137
+ try {
138
+ const rateLimit = await this.client.checkRateLimit();
139
+ if (rateLimit.remaining < RATE_LIMIT_THRESHOLD) {
140
+ console.log(`\n⚠️ GitHub API rate limit low: ${rateLimit.remaining}/${rateLimit.limit} remaining`);
141
+ console.log(` ⏭️ Skipping sync for ${featureId} — will retry after ${rateLimit.reset.toISOString()}`);
142
+ console.log(` 💡 Run /sw:progress-sync to retry when rate limit resets`);
143
+ return {
144
+ milestoneNumber: 0,
145
+ milestoneUrl: '',
146
+ issuesCreated: 0,
147
+ issuesUpdated: 0,
148
+ userStoriesProcessed: 0,
149
+ rateLimitSkipped: true,
150
+ };
151
+ }
152
+ } catch (rateLimitError) {
153
+ // FS-609 edge case fix: fail-closed on network errors.
154
+ // If we can't reach the API to check rate limit, subsequent gh calls will also fail.
155
+ // Abort early instead of cascading failures.
156
+ const msg = rateLimitError instanceof Error ? rateLimitError.message : String(rateLimitError);
157
+ if (msg.includes('ENOTFOUND') || msg.includes('ETIMEDOUT') || msg.includes('ECONNREFUSED') || msg.includes('fetch failed')) {
158
+ console.log(`\n⚠️ GitHub API unreachable: ${msg}`);
159
+ console.log(` ⏭️ Skipping sync for ${featureId} — network appears down`);
160
+ return {
161
+ milestoneNumber: 0,
162
+ milestoneUrl: '',
163
+ issuesCreated: 0,
164
+ issuesUpdated: 0,
165
+ userStoriesProcessed: 0,
166
+ rateLimitSkipped: true,
167
+ };
168
+ }
169
+ // Non-network errors (e.g., JSON parse failure) — proceed with sync (fail-open)
170
+ }
171
+
134
172
  // SYNC LOCK: Cross-process file lock prevents concurrent syncs of the same feature+repo
135
173
  // Root cause: Two sync paths (task completion + status change) can fire simultaneously
136
174
  // Result: Duplicate GitHub comments due to race condition
@@ -1053,16 +1091,22 @@ export class GitHubFeatureSync {
1053
1091
  // ✅ VERIFICATION GATE: Calculate ACTUAL completion from checkboxes
1054
1092
  const completion = await this.calculator.calculateCompletion(userStoryPath);
1055
1093
 
1056
- // Get current issue state
1094
+ // FS-609: Fetch issue state ONCE and reuse throughout this method + downstream calls
1057
1095
  const issueData = await this.client.getIssue(issueNumber);
1058
1096
  const currentlyClosed = issueData.state === 'closed';
1059
1097
 
1098
+ // FS-609: Fetch last comment ONCE and reuse for idempotency checks + downstream
1099
+ const lastComment = await this.client.getLastComment(issueNumber);
1100
+
1101
+ // FS-609: Track whether this method mutated the issue (close/reopen/comment).
1102
+ // If mutations happened, cached data is stale and must not be passed downstream.
1103
+ let mutatedIssue = false;
1104
+
1060
1105
  // DECISION LOGIC: Close/Reopen/Update based on VERIFIED completion
1061
1106
  if (completion.overallComplete) {
1062
1107
  // ✅ SAFE TO CLOSE - All ACs and tasks verified [x]
1063
1108
  if (!currentlyClosed) {
1064
1109
  // Idempotency check: skip completion comment if already posted by another sync path
1065
- const lastComment = await this.client.getLastComment(issueNumber);
1066
1110
  const commentAlreadyPosted = lastComment?.body?.includes('✅ User Story Complete');
1067
1111
  if (commentAlreadyPosted) {
1068
1112
  // Close without duplicate comment
@@ -1090,6 +1134,7 @@ export class GitHubFeatureSync {
1090
1134
  ` ✅ Verified complete: ${completion.acsCompleted}/${completion.acsTotal} ACs, ${completion.tasksCompleted}/${completion.tasksTotal} tasks`
1091
1135
  );
1092
1136
  }
1137
+ mutatedIssue = true;
1093
1138
  }
1094
1139
  } else {
1095
1140
  // ⚠️ INCOMPLETE - Keep open or reopen if needed
@@ -1107,14 +1152,25 @@ export class GitHubFeatureSync {
1107
1152
  console.log(
1108
1153
  ` ⚠️ Reopened: ${completion.blockingAcs.length + completion.blockingTasks.length} items incomplete`
1109
1154
  );
1155
+ mutatedIssue = true;
1110
1156
  } else {
1111
1157
  // Update progress comment (with deduplication)
1112
- await this.postProgressCommentIfChanged(issueNumber, completion);
1158
+ // FS-609: Pass cached lastComment to avoid re-fetching
1159
+ await this.postProgressCommentIfChanged(issueNumber, completion, lastComment);
1160
+ // Note: postProgressCommentIfChanged may or may not post — if it did, cache is stale
1161
+ // but updateStatusLabels only uses lastComment for completion check, and if we're
1162
+ // in the incomplete+open branch, the completion comment check won't trigger anyway.
1113
1163
  }
1114
1164
  }
1115
1165
 
1116
- // **NEW (2025-11-24)**: Update status labels based on completion
1117
- await this.updateStatusLabels(issueNumber, completion);
1166
+ // FS-609: Pass cached data ONLY if no mutations happened.
1167
+ // If we closed/reopened/commented, the cached state is stale — let updateStatusLabels re-fetch.
1168
+ await this.updateStatusLabels(
1169
+ issueNumber,
1170
+ completion,
1171
+ mutatedIssue ? undefined : issueData,
1172
+ mutatedIssue ? undefined : lastComment,
1173
+ );
1118
1174
  }
1119
1175
 
1120
1176
  /**
@@ -1136,11 +1192,13 @@ export class GitHubFeatureSync {
1136
1192
  tasksTotal?: number;
1137
1193
  tasksCompleted?: number;
1138
1194
  frontmatterStatus?: string;
1139
- }
1195
+ },
1196
+ cachedIssueData?: any,
1197
+ cachedLastComment?: any,
1140
1198
  ): Promise<void> {
1141
1199
  try {
1142
- // Get current issue labels
1143
- const issueData = await this.client.getIssue(issueNumber);
1200
+ // FS-609: Use cached issue data if provided, otherwise fetch (backward compat)
1201
+ const issueData = cachedIssueData || await this.client.getIssue(issueNumber);
1144
1202
  const currentLabels = issueData.labels || [];
1145
1203
 
1146
1204
  // Separate status labels from other labels
@@ -1224,13 +1282,15 @@ export class GitHubFeatureSync {
1224
1282
  // preventing issues like #1198 where label is applied but issue stays open
1225
1283
  if (newStatusLabel === 'status:complete' && issueData.state.toLowerCase() !== 'closed') {
1226
1284
  try {
1227
- // Re-fetch issue state to avoid race with updateUserStoryIssue close
1228
- const freshIssueData = await this.client.getIssue(issueNumber);
1229
- if (freshIssueData.state.toLowerCase() === 'closed') {
1285
+ // FS-609: Use cached issue data updateUserStoryIssue already closed if needed,
1286
+ // so if we reach here with status:complete, the issue state from cache is reliable
1287
+ // within the same sync operation. No need to re-fetch.
1288
+ const freshState = issueData.state.toLowerCase();
1289
+ if (freshState === 'closed') {
1230
1290
  console.log(` ⏭️ Issue #${issueNumber} already closed (skipping duplicate close)`);
1231
1291
  } else {
1232
- // Idempotency check: skip completion comment if already posted
1233
- const lastComment = await this.client.getLastComment(issueNumber);
1292
+ // FS-609: Use cached lastComment if available, otherwise fetch
1293
+ const lastComment = cachedLastComment || await this.client.getLastComment(issueNumber);
1234
1294
  if (lastComment?.body?.includes('✅ User Story Complete')) {
1235
1295
  // Comment already exists — close without posting duplicate
1236
1296
  await execFileNoThrow('gh', [
@@ -1281,26 +1341,19 @@ export class GitHubFeatureSync {
1281
1341
  */
1282
1342
  private async postProgressCommentIfChanged(
1283
1343
  issueNumber: number,
1284
- completion: any
1344
+ completion: any,
1345
+ cachedLastComment?: any,
1285
1346
  ): Promise<void> {
1286
1347
  try {
1287
- // 1. Fetch last comment from the issue
1348
+ // FS-609: Use cached last comment if available, otherwise fetch via client
1288
1349
  const repoSlug = this.getRepoSlug();
1289
- const commentsResult = await execFileNoThrow('gh', [
1290
- 'api',
1291
- `repos/${repoSlug}/issues/${issueNumber}/comments`,
1292
- '--jq',
1293
- '.[-1] | {body: .body, created_at: .created_at}', // Get last comment only
1294
- ], { env: this.getGhEnv() });
1295
-
1296
1350
  let lastCommentBody = '';
1297
- if (commentsResult.exitCode === 0 && commentsResult.stdout.trim()) {
1298
- try {
1299
- const lastComment = JSON.parse(commentsResult.stdout);
1300
- lastCommentBody = lastComment.body || '';
1301
- } catch {
1302
- // No valid last comment, proceed with posting
1303
- }
1351
+
1352
+ if (cachedLastComment) {
1353
+ lastCommentBody = cachedLastComment.body || '';
1354
+ } else {
1355
+ const fetchedComment = await this.client.getLastComment(issueNumber);
1356
+ lastCommentBody = fetchedComment?.body || '';
1304
1357
  }
1305
1358
 
1306
1359
  // 2. Build new progress comment
@@ -106,7 +106,7 @@ export declare class ActiveIncrementManager {
106
106
  details: string[];
107
107
  };
108
108
  /**
109
- * Write state file atomically (temp file → rename)
109
+ * Write state file atomically (temp file → rename) with file lock protection
110
110
  */
111
111
  private writeState;
112
112
  /**
@@ -17,6 +17,7 @@ import path from 'path';
17
17
  import { IncrementStatus } from '../types/increment-metadata.js';
18
18
  import { MetadataManager } from './metadata-manager.js';
19
19
  import { resolveEffectiveRoot } from '../../utils/find-project-root.js';
20
+ import { FileLock } from '../../utils/file-lock.js';
20
21
  /**
21
22
  * Active Increment Manager
22
23
  *
@@ -245,7 +246,7 @@ export class ActiveIncrementManager {
245
246
  };
246
247
  }
247
248
  /**
248
- * Write state file atomically (temp file → rename)
249
+ * Write state file atomically (temp file → rename) with file lock protection
249
250
  */
250
251
  writeState(state) {
251
252
  // Ensure state directory exists
@@ -253,10 +254,24 @@ export class ActiveIncrementManager {
253
254
  if (!fs.existsSync(stateDir)) {
254
255
  fs.mkdirSync(stateDir, { recursive: true });
255
256
  }
256
- // Atomic write: temp file → rename
257
- const tempFile = `${this.stateFile}.tmp`;
258
- fs.writeFileSync(tempFile, JSON.stringify(state, null, 2), 'utf-8');
259
- fs.renameSync(tempFile, this.stateFile);
257
+ // Protect shared state with file lock
258
+ const lock = new FileLock(this.stateFile);
259
+ const acquired = lock.acquire(5); // 5 second stale threshold
260
+ if (!acquired) {
261
+ // Log warning but proceed — atomic rename still provides partial safety
262
+ console.warn(`⚠️ Could not acquire lock for ${this.stateFile}, proceeding with unprotected write`);
263
+ }
264
+ try {
265
+ // Atomic write: temp file → rename
266
+ const tempFile = `${this.stateFile}.tmp`;
267
+ fs.writeFileSync(tempFile, JSON.stringify(state, null, 2), 'utf-8');
268
+ fs.renameSync(tempFile, this.stateFile);
269
+ }
270
+ finally {
271
+ if (acquired) {
272
+ lock.release();
273
+ }
274
+ }
260
275
  }
261
276
  /**
262
277
  * Get state file path (for testing)
@@ -1 +1 @@
1
- {"version":3,"file":"active-increment-manager.js","sourceRoot":"","sources":["../../../../src/core/increment/active-increment-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"active-increment-manager.js","sourceRoot":"","sources":["../../../../src/core/increment/active-increment-manager.ts"],"names":[],"mappings":"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"}