specweave 0.28.19 → 0.28.20

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 (85) hide show
  1. package/dist/plugins/specweave-ado/lib/ado-spec-sync.d.ts +16 -0
  2. package/dist/plugins/specweave-ado/lib/ado-spec-sync.d.ts.map +1 -1
  3. package/dist/plugins/specweave-ado/lib/ado-spec-sync.js +63 -3
  4. package/dist/plugins/specweave-ado/lib/ado-spec-sync.js.map +1 -1
  5. package/dist/plugins/specweave-ado/lib/ado-status-sync.d.ts +12 -3
  6. package/dist/plugins/specweave-ado/lib/ado-status-sync.d.ts.map +1 -1
  7. package/dist/plugins/specweave-ado/lib/ado-status-sync.js +37 -3
  8. package/dist/plugins/specweave-ado/lib/ado-status-sync.js.map +1 -1
  9. package/dist/plugins/specweave-github/lib/github-increment-sync-cli.d.ts +8 -6
  10. package/dist/plugins/specweave-github/lib/github-increment-sync-cli.d.ts.map +1 -1
  11. package/dist/plugins/specweave-github/lib/github-increment-sync-cli.js +230 -165
  12. package/dist/plugins/specweave-github/lib/github-increment-sync-cli.js.map +1 -1
  13. package/dist/plugins/specweave-github/lib/github-status-sync.d.ts +10 -0
  14. package/dist/plugins/specweave-github/lib/github-status-sync.d.ts.map +1 -1
  15. package/dist/plugins/specweave-github/lib/github-status-sync.js +40 -2
  16. package/dist/plugins/specweave-github/lib/github-status-sync.js.map +1 -1
  17. package/dist/plugins/specweave-github/lib/increment-issue-builder.d.ts +2 -0
  18. package/dist/plugins/specweave-github/lib/increment-issue-builder.d.ts.map +1 -1
  19. package/dist/plugins/specweave-github/lib/increment-issue-builder.js +25 -5
  20. package/dist/plugins/specweave-github/lib/increment-issue-builder.js.map +1 -1
  21. package/dist/plugins/specweave-jira/lib/jira-spec-sync.d.ts +12 -0
  22. package/dist/plugins/specweave-jira/lib/jira-spec-sync.d.ts.map +1 -1
  23. package/dist/plugins/specweave-jira/lib/jira-spec-sync.js +57 -5
  24. package/dist/plugins/specweave-jira/lib/jira-spec-sync.js.map +1 -1
  25. package/dist/plugins/specweave-jira/lib/jira-status-sync.d.ts +5 -1
  26. package/dist/plugins/specweave-jira/lib/jira-status-sync.d.ts.map +1 -1
  27. package/dist/plugins/specweave-jira/lib/jira-status-sync.js +12 -4
  28. package/dist/plugins/specweave-jira/lib/jira-status-sync.js.map +1 -1
  29. package/dist/src/cli/helpers/init/external-import.d.ts.map +1 -1
  30. package/dist/src/cli/helpers/init/external-import.js +186 -19
  31. package/dist/src/cli/helpers/init/external-import.js.map +1 -1
  32. package/dist/src/cli/helpers/init/jira-ado-auto-detect.d.ts +115 -0
  33. package/dist/src/cli/helpers/init/jira-ado-auto-detect.d.ts.map +1 -0
  34. package/dist/src/cli/helpers/init/jira-ado-auto-detect.js +590 -0
  35. package/dist/src/cli/helpers/init/jira-ado-auto-detect.js.map +1 -0
  36. package/dist/src/config/types.d.ts +6 -6
  37. package/dist/src/core/background/index.d.ts +11 -0
  38. package/dist/src/core/background/index.d.ts.map +1 -0
  39. package/dist/src/core/background/index.js +11 -0
  40. package/dist/src/core/background/index.js.map +1 -0
  41. package/dist/src/core/background/job-manager.d.ts +65 -0
  42. package/dist/src/core/background/job-manager.d.ts.map +1 -0
  43. package/dist/src/core/background/job-manager.js +192 -0
  44. package/dist/src/core/background/job-manager.js.map +1 -0
  45. package/dist/src/core/background/types.d.ts +59 -0
  46. package/dist/src/core/background/types.d.ts.map +1 -0
  47. package/dist/src/core/background/types.js +8 -0
  48. package/dist/src/core/background/types.js.map +1 -0
  49. package/dist/src/core/repo-structure/multi-repo-configurator.d.ts +25 -0
  50. package/dist/src/core/repo-structure/multi-repo-configurator.d.ts.map +1 -0
  51. package/dist/src/core/repo-structure/multi-repo-configurator.js +614 -0
  52. package/dist/src/core/repo-structure/multi-repo-configurator.js.map +1 -0
  53. package/dist/src/core/repo-structure/repo-initializer.d.ts +40 -0
  54. package/dist/src/core/repo-structure/repo-initializer.d.ts.map +1 -0
  55. package/dist/src/core/repo-structure/repo-initializer.js +252 -0
  56. package/dist/src/core/repo-structure/repo-initializer.js.map +1 -0
  57. package/dist/src/core/repo-structure/repo-structure-manager.d.ts +3 -37
  58. package/dist/src/core/repo-structure/repo-structure-manager.d.ts.map +1 -1
  59. package/dist/src/core/repo-structure/repo-structure-manager.js +23 -803
  60. package/dist/src/core/repo-structure/repo-structure-manager.js.map +1 -1
  61. package/dist/src/core/types/spec-metadata.d.ts +2 -0
  62. package/dist/src/core/types/spec-metadata.d.ts.map +1 -1
  63. package/dist/src/importers/import-coordinator.d.ts +20 -0
  64. package/dist/src/importers/import-coordinator.d.ts.map +1 -1
  65. package/dist/src/importers/import-coordinator.js.map +1 -1
  66. package/dist/src/init/architecture/types.d.ts +2 -2
  67. package/dist/src/init/compliance/types.d.ts +1 -1
  68. package/package.json +1 -1
  69. package/plugins/specweave/commands/specweave-jobs.md +160 -0
  70. package/plugins/specweave-ado/lib/ado-spec-sync.js +59 -3
  71. package/plugins/specweave-ado/lib/ado-spec-sync.ts +72 -3
  72. package/plugins/specweave-ado/lib/ado-status-sync.js +35 -3
  73. package/plugins/specweave-ado/lib/ado-status-sync.ts +48 -4
  74. package/plugins/specweave-github/hooks/.specweave/logs/hooks-debug.log +6 -0
  75. package/plugins/specweave-github/lib/github-increment-sync-cli.js +268 -155
  76. package/plugins/specweave-github/lib/github-increment-sync-cli.ts +313 -209
  77. package/plugins/specweave-github/lib/github-status-sync.js +37 -1
  78. package/plugins/specweave-github/lib/github-status-sync.ts +60 -4
  79. package/plugins/specweave-github/lib/increment-issue-builder.js +26 -5
  80. package/plugins/specweave-github/lib/increment-issue-builder.ts +36 -5
  81. package/plugins/specweave-jira/lib/jira-spec-sync.js +53 -5
  82. package/plugins/specweave-jira/lib/jira-spec-sync.ts +87 -7
  83. package/plugins/specweave-jira/lib/jira-status-sync.js +9 -3
  84. package/plugins/specweave-jira/lib/jira-status-sync.ts +15 -6
  85. package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +9 -0
@@ -3,17 +3,19 @@
3
3
  * GitHub Increment Sync CLI
4
4
  *
5
5
  * For brownfield projects without living docs structure.
6
- * Creates GitHub issues directly from increment spec.md with proper format.
6
+ * Creates GitHub issues directly from increment spec.md with CORRECT format.
7
7
  *
8
- * CORRECT FORMAT:
9
- * - Single issue per increment: [FS-XXX] Increment Title
10
- * - With User Stories and ACs as sections
8
+ * CORRECT FORMAT (SpecWeave Universal Hierarchy):
9
+ * - Feature (FS-XXX) GitHub Milestone
10
+ * - User Story (US-XXX) GitHub Issue with [FS-XXX][US-YYY] Title
11
+ * - Tasks (T-XXX) → Checkboxes in User Story issue
12
+ * - ACs → Checkboxes in User Story issue
11
13
  *
12
14
  * Usage:
13
15
  * node github-increment-sync-cli.js <increment-id>
14
- * node github-increment-sync-cli.js 0063-fix-external-import
16
+ * node github-increment-sync-cli.js 0002-thumbnail-optimizer-mvp
15
17
  *
16
- * @see ADR-0143 (GitHub Issue Format)
18
+ * @see CLAUDE.md (GitHub Issue Format rules)
17
19
  */
18
20
  import { existsSync, readFileSync } from 'fs';
19
21
  import * as fs from 'fs/promises';
@@ -111,150 +113,233 @@ async function findIncrementFolder(incrementId) {
111
113
  return null;
112
114
  }
113
115
  /**
114
- * Check if GitHub issue already exists for this increment
116
+ * Load existing GitHub links from metadata.json
115
117
  */
116
- async function findExistingIssue(owner, repo, featureId) {
117
- // Search for issues with this feature ID in title
118
- const result = await execFileNoThrow('gh', [
119
- 'search', 'issues',
120
- `repo:${owner}/${repo}`,
121
- `"[${featureId}]" in:title`,
122
- 'is:open',
123
- '--json', 'number,title',
124
- '--limit', '5'
125
- ]);
126
- if (result.exitCode !== 0 || !result.stdout.trim()) {
127
- return null;
118
+ function loadExistingGitHubLinks(incrementPath) {
119
+ const metadataPath = path.join(incrementPath, 'metadata.json');
120
+ if (!existsSync(metadataPath)) {
121
+ return { userStoryIssues: {} };
128
122
  }
129
123
  try {
130
- const issues = JSON.parse(result.stdout);
131
- if (issues.length > 0) {
132
- return issues[0].number;
133
- }
124
+ const metadata = JSON.parse(readFileSync(metadataPath, 'utf-8'));
125
+ return {
126
+ milestone: metadata.github?.milestone,
127
+ userStoryIssues: metadata.github?.userStoryIssues || {}
128
+ };
134
129
  }
135
130
  catch {
136
- // Parse error, no existing issue
131
+ return { userStoryIssues: {} };
137
132
  }
138
- return null;
139
133
  }
140
134
  /**
141
- * Create GitHub issue via gh CLI
135
+ * Update increment metadata with GitHub links
142
136
  */
143
- async function createGitHubIssue(owner, repo, title, body, labels) {
144
- const args = [
145
- 'issue', 'create',
146
- '--repo', `${owner}/${repo}`,
147
- '--title', title,
148
- '--body', body
149
- ];
150
- // Add labels
151
- if (labels.length > 0) {
152
- args.push('--label', labels.join(','));
153
- }
154
- const result = await execFileNoThrow('gh', args);
155
- if (result.exitCode !== 0) {
156
- throw new Error(`Failed to create issue: ${result.stderr || result.stdout}`);
157
- }
158
- // Parse issue URL from output
159
- const urlMatch = result.stdout.match(/https:\/\/github\.com\/[^\s]+\/issues\/(\d+)/);
160
- if (!urlMatch) {
161
- throw new Error('Could not parse issue URL from gh output');
137
+ async function updateIncrementMetadata(incrementPath, milestoneNumber, userStoryIssues) {
138
+ const metadataPath = path.join(incrementPath, 'metadata.json');
139
+ let metadata = {};
140
+ if (existsSync(metadataPath)) {
141
+ try {
142
+ metadata = JSON.parse(readFileSync(metadataPath, 'utf-8'));
143
+ }
144
+ catch {
145
+ // Start fresh
146
+ }
162
147
  }
163
- return {
164
- number: parseInt(urlMatch[1], 10),
165
- url: urlMatch[0]
148
+ // Update github section
149
+ metadata.github = {
150
+ milestone: milestoneNumber,
151
+ userStoryIssues,
152
+ lastSync: new Date().toISOString()
166
153
  };
154
+ await fs.writeFile(metadataPath, JSON.stringify(metadata, null, 2) + '\n');
167
155
  }
168
156
  /**
169
- * Update existing GitHub issue
157
+ * Create or get GitHub milestone for the feature
170
158
  */
171
- async function updateGitHubIssue(owner, repo, issueNumber, body) {
172
- const result = await execFileNoThrow('gh', [
173
- 'issue', 'edit',
174
- String(issueNumber),
175
- '--repo', `${owner}/${repo}`,
176
- '--body', body
159
+ async function createOrGetMilestone(owner, repo, featureId, title, existingMilestone) {
160
+ // If we have an existing milestone, verify it exists
161
+ if (existingMilestone) {
162
+ const verifyResult = await execFileNoThrow('gh', [
163
+ 'api', `repos/${owner}/${repo}/milestones/${existingMilestone}`,
164
+ '--jq', '.number'
165
+ ]);
166
+ if (verifyResult.exitCode === 0) {
167
+ return {
168
+ number: existingMilestone,
169
+ url: `https://github.com/${owner}/${repo}/milestone/${existingMilestone}`
170
+ };
171
+ }
172
+ }
173
+ // Search for existing milestone by title
174
+ const searchResult = await execFileNoThrow('gh', [
175
+ 'api', `repos/${owner}/${repo}/milestones`,
176
+ '--jq', `.[] | select(.title | contains("${featureId}")) | .number`
177
177
  ]);
178
- if (result.exitCode !== 0) {
179
- throw new Error(`Failed to update issue: ${result.stderr || result.stdout}`);
178
+ if (searchResult.exitCode === 0 && searchResult.stdout.trim()) {
179
+ const milestoneNumber = parseInt(searchResult.stdout.trim().split('\n')[0], 10);
180
+ return {
181
+ number: milestoneNumber,
182
+ url: `https://github.com/${owner}/${repo}/milestone/${milestoneNumber}`
183
+ };
180
184
  }
185
+ // Create new milestone
186
+ const milestoneTitle = `[${featureId}] ${title}`;
187
+ const createResult = await execFileNoThrow('gh', [
188
+ 'api', `repos/${owner}/${repo}/milestones`,
189
+ '-X', 'POST',
190
+ '-f', `title=${milestoneTitle}`,
191
+ '-f', `description=Feature milestone for ${featureId}`,
192
+ '--jq', '.number'
193
+ ]);
194
+ if (createResult.exitCode !== 0) {
195
+ throw new Error(`Failed to create milestone: ${createResult.stderr || createResult.stdout}`);
196
+ }
197
+ const milestoneNumber = parseInt(createResult.stdout.trim(), 10);
198
+ return {
199
+ number: milestoneNumber,
200
+ url: `https://github.com/${owner}/${repo}/milestone/${milestoneNumber}`
201
+ };
181
202
  }
182
203
  /**
183
- * Load existing GitHub issue link from metadata.json
184
- * This is the PRIMARY source for existing issue detection
204
+ * Build issue body for a single user story
185
205
  */
186
- function loadExistingGitHubLink(incrementPath) {
187
- const metadataPath = path.join(incrementPath, 'metadata.json');
188
- if (!existsSync(metadataPath)) {
189
- return null;
206
+ function buildUserStoryIssueBody(story, tasks, incrementData, githubRepo) {
207
+ const incrementId = incrementData.frontmatter.increment;
208
+ let body = '';
209
+ // Header with metadata
210
+ body += `**Feature**: ${incrementData.frontmatter.feature_id || 'N/A'}\n`;
211
+ body += `**Status**: ${story.acceptanceCriteria.every(ac => ac.completed) ? 'complete' : 'in-progress'}\n`;
212
+ body += `**Priority**: ${story.priority || incrementData.frontmatter.priority || 'P2'}\n`;
213
+ body += `\n---\n\n`;
214
+ // User Story description
215
+ body += `## User Story\n\n`;
216
+ if (story.asA && story.iWant && story.soThat) {
217
+ body += `**As a** ${story.asA}\n`;
218
+ body += `**I want** ${story.iWant}\n`;
219
+ body += `**So that** ${story.soThat}\n\n`;
190
220
  }
191
- try {
192
- const metadata = JSON.parse(readFileSync(metadataPath, 'utf-8'));
193
- // Check for github.issue (new format)
194
- if (metadata.github?.issue) {
195
- return {
196
- issue: metadata.github.issue,
197
- url: metadata.github.url
198
- };
199
- }
200
- // Check for sync.issueNumber (alternative format)
201
- if (metadata.sync?.issueNumber) {
202
- return {
203
- issue: metadata.sync.issueNumber,
204
- url: metadata.sync.issueUrl
205
- };
221
+ else {
222
+ body += `${story.title}\n\n`;
223
+ }
224
+ body += `---\n\n`;
225
+ // Acceptance Criteria
226
+ body += `## Acceptance Criteria\n\n`;
227
+ if (story.acceptanceCriteria.length > 0) {
228
+ const completed = story.acceptanceCriteria.filter(ac => ac.completed).length;
229
+ const total = story.acceptanceCriteria.length;
230
+ const percentage = total > 0 ? Math.round((completed / total) * 100) : 0;
231
+ body += `Progress: ${completed}/${total} criteria met (${percentage}%)\n\n`;
232
+ for (const ac of story.acceptanceCriteria) {
233
+ const checkbox = ac.completed ? '[x]' : '[ ]';
234
+ body += `- ${checkbox} **${ac.id}**: ${ac.description}\n`;
206
235
  }
207
- return null;
236
+ body += '\n';
208
237
  }
209
- catch {
210
- return null;
238
+ else {
239
+ body += `*No acceptance criteria defined*\n\n`;
240
+ }
241
+ body += `---\n\n`;
242
+ // Tasks for this user story
243
+ const storyTasks = tasks.filter(t => t.userStories.includes(story.id) ||
244
+ t.userStories.some(us => us.includes(story.id.replace('US-', ''))));
245
+ if (storyTasks.length > 0) {
246
+ body += `## Implementation Tasks\n\n`;
247
+ const completedTasks = storyTasks.filter(t => t.completed).length;
248
+ const totalTasks = storyTasks.length;
249
+ const taskPercentage = totalTasks > 0 ? Math.round((completedTasks / totalTasks) * 100) : 0;
250
+ body += `Progress: ${completedTasks}/${totalTasks} tasks (${taskPercentage}%)\n\n`;
251
+ for (const task of storyTasks) {
252
+ const checkbox = task.completed ? '[x]' : '[ ]';
253
+ body += `- ${checkbox} **${task.id}**: ${task.title}\n`;
254
+ }
255
+ body += '\n';
256
+ body += `---\n\n`;
211
257
  }
258
+ // Link to increment
259
+ body += `## SpecWeave Increment\n\n`;
260
+ body += `**Increment**: [${incrementId}](https://github.com/${githubRepo}/tree/develop/.specweave/increments/${incrementId})\n\n`;
261
+ body += `---\n\n`;
262
+ body += `🤖 Auto-synced by SpecWeave`;
263
+ return body;
212
264
  }
213
265
  /**
214
- * Update increment metadata with GitHub issue link
266
+ * Create or update GitHub issue for a user story
215
267
  */
216
- async function updateIncrementMetadata(incrementPath, issueNumber, issueUrl) {
217
- const metadataPath = path.join(incrementPath, 'metadata.json');
218
- let metadata = {};
219
- if (existsSync(metadataPath)) {
220
- try {
221
- metadata = JSON.parse(readFileSync(metadataPath, 'utf-8'));
222
- }
223
- catch {
224
- // Start fresh
268
+ async function syncUserStoryIssue(owner, repo, featureId, story, tasks, incrementData, milestoneNumber, existingIssueNumber) {
269
+ // CORRECT FORMAT: [FS-XXX][US-YYY] User Story Title
270
+ const title = `[${featureId}][${story.id}] ${story.title}`;
271
+ const body = buildUserStoryIssueBody(story, tasks, incrementData, `${owner}/${repo}`);
272
+ // Labels
273
+ const labels = ['specweave', 'user-story'];
274
+ const priority = story.priority?.toLowerCase() || incrementData.frontmatter.priority?.toLowerCase() || 'p2';
275
+ labels.push(priority);
276
+ if (existingIssueNumber) {
277
+ // Update existing issue
278
+ const updateResult = await execFileNoThrow('gh', [
279
+ 'issue', 'edit',
280
+ String(existingIssueNumber),
281
+ '--repo', `${owner}/${repo}`,
282
+ '--title', title,
283
+ '--body', body
284
+ ]);
285
+ if (updateResult.exitCode !== 0) {
286
+ throw new Error(`Failed to update issue #${existingIssueNumber}: ${updateResult.stderr}`);
225
287
  }
288
+ return {
289
+ number: existingIssueNumber,
290
+ url: `https://github.com/${owner}/${repo}/issues/${existingIssueNumber}`
291
+ };
226
292
  }
227
- // Update github section
228
- metadata.github = {
229
- issue: issueNumber,
230
- url: issueUrl,
231
- lastSync: new Date().toISOString()
293
+ // Create new issue
294
+ const createArgs = [
295
+ 'issue', 'create',
296
+ '--repo', `${owner}/${repo}`,
297
+ '--title', title,
298
+ '--body', body,
299
+ '--milestone', String(milestoneNumber)
300
+ ];
301
+ if (labels.length > 0) {
302
+ createArgs.push('--label', labels.join(','));
303
+ }
304
+ const createResult = await execFileNoThrow('gh', createArgs);
305
+ if (createResult.exitCode !== 0) {
306
+ throw new Error(`Failed to create issue: ${createResult.stderr || createResult.stdout}`);
307
+ }
308
+ // Parse issue URL from output
309
+ const urlMatch = createResult.stdout.match(/https:\/\/github\.com\/[^\s]+\/issues\/(\d+)/);
310
+ if (!urlMatch) {
311
+ throw new Error('Could not parse issue URL from gh output');
312
+ }
313
+ return {
314
+ number: parseInt(urlMatch[1], 10),
315
+ url: urlMatch[0]
232
316
  };
233
- await fs.writeFile(metadataPath, JSON.stringify(metadata, null, 2) + '\n');
234
317
  }
235
318
  async function main() {
236
319
  const args = process.argv.slice(2);
237
320
  if (args.length === 0 || args[0] === '--help' || args[0] === '-h') {
238
321
  console.log('Usage: node github-increment-sync-cli.js <increment-id> [options]');
239
322
  console.log('');
323
+ console.log('Creates GitHub issues with CORRECT format:');
324
+ console.log(' - Milestone: [FS-XXX] Feature Title');
325
+ console.log(' - Issues: [FS-XXX][US-YYY] User Story Title (one per US)');
326
+ console.log('');
240
327
  console.log('Arguments:');
241
- console.log(' increment-id Increment ID (e.g., 0063 or 0063-fix-external-import)');
328
+ console.log(' increment-id Increment ID (e.g., 0002 or 0002-thumbnail-mvp)');
242
329
  console.log('');
243
330
  console.log('Options:');
244
- console.log(' --force Force create even if issue exists');
245
- console.log(' --dry-run Preview issue without creating');
331
+ console.log(' --dry-run Preview issues without creating');
246
332
  console.log('');
247
333
  console.log('Environment:');
248
334
  console.log(' GITHUB_TOKEN Required - GitHub personal access token');
249
335
  console.log('');
250
336
  console.log('Example:');
251
- console.log(' GITHUB_TOKEN=ghp_xxx node github-increment-sync-cli.js 0063');
337
+ console.log(' GITHUB_TOKEN=ghp_xxx node github-increment-sync-cli.js 0002');
252
338
  process.exit(args.length === 0 ? 1 : 0);
253
339
  }
254
340
  const incrementId = args[0];
255
- const force = args.includes('--force');
256
341
  const dryRun = args.includes('--dry-run');
257
- console.log(`\n🐙 GitHub Increment Sync CLI`);
342
+ console.log(`\n🐙 GitHub Increment Sync CLI (Per-User-Story Mode)`);
258
343
  console.log(` Increment: ${incrementId}`);
259
344
  // Find increment folder
260
345
  const incrementPath = await findIncrementFolder(incrementId);
@@ -275,7 +360,6 @@ async function main() {
275
360
  console.log(` Repository: ${config.owner}/${config.repo}`);
276
361
  }
277
362
  else {
278
- // Try to detect repo for dry-run preview (non-fatal)
279
363
  config = await loadGitHubConfig().catch(() => null);
280
364
  if (config) {
281
365
  console.log(` Repository: ${config.owner}/${config.repo}`);
@@ -284,26 +368,39 @@ async function main() {
284
368
  console.log(` Repository: (not detected - dry run mode)`);
285
369
  }
286
370
  }
287
- // Parse increment and build issue
371
+ // Parse increment
288
372
  const projectRoot = process.cwd();
289
373
  const builder = new IncrementIssueBuilder(incrementPath, projectRoot);
290
374
  try {
291
375
  console.log(`\n🔄 Parsing increment spec.md...`);
292
376
  const incrementData = await builder.parse();
377
+ const featureId = incrementData.frontmatter.feature_id ||
378
+ `FS-${fullIncrementId.match(/^(\d+)/)?.[1]?.padStart(3, '0') || 'UNKNOWN'}`;
379
+ console.log(` 📦 Feature: ${featureId}`);
293
380
  console.log(` 📦 Title: ${incrementData.title}`);
294
381
  console.log(` 📝 User Stories: ${incrementData.userStories.length}`);
295
382
  const totalACs = incrementData.userStories.reduce((sum, us) => sum + us.acceptanceCriteria.length, 0);
296
383
  console.log(` ✓ Acceptance Criteria: ${totalACs}`);
297
- // Build issue content
298
- const githubRepo = config ? `${config.owner}/${config.repo}` : undefined;
299
- const issue = builder.buildIncrementIssue(incrementData, githubRepo);
300
- console.log(`\n📋 Issue Preview:`);
301
- console.log(` Title: ${issue.title}`);
302
- console.log(` Labels: ${issue.labels.join(', ')}`);
384
+ console.log(` 🔧 Tasks: ${incrementData.tasks.length}`);
385
+ if (incrementData.userStories.length === 0) {
386
+ console.error(`\n❌ No user stories found in spec.md`);
387
+ console.error(' Ensure spec.md has ### US-XXX: Title sections');
388
+ process.exit(1);
389
+ }
390
+ // Preview issues
391
+ console.log(`\n📋 Issues to Create/Update:`);
392
+ console.log(` 🎯 Milestone: [${featureId}] ${incrementData.title}`);
393
+ for (const story of incrementData.userStories) {
394
+ const storyTasks = incrementData.tasks.filter(t => t.userStories.includes(story.id) ||
395
+ t.userStories.some(us => us.includes(story.id.replace('US-', ''))));
396
+ console.log(` 📝 [${featureId}][${story.id}] ${story.title}`);
397
+ console.log(` └─ ${story.acceptanceCriteria.length} ACs, ${storyTasks.length} tasks`);
398
+ }
303
399
  if (dryRun) {
304
- console.log(`\n📄 Issue Body Preview:\n`);
305
- console.log(issue.body);
306
- console.log(`\n✅ Dry run complete (no issue created)`);
400
+ console.log(`\n📄 Sample Issue Body (${incrementData.userStories[0].id}):\n`);
401
+ const sampleBody = buildUserStoryIssueBody(incrementData.userStories[0], incrementData.tasks, incrementData, config ? `${config.owner}/${config.repo}` : 'owner/repo');
402
+ console.log(sampleBody);
403
+ console.log(`\n✅ Dry run complete (no issues created)`);
307
404
  process.exit(0);
308
405
  }
309
406
  // After dry-run check, config is guaranteed to be non-null
@@ -311,60 +408,28 @@ async function main() {
311
408
  console.error('❌ GitHub config not available');
312
409
  process.exit(1);
313
410
  }
314
- // STEP 1: Check metadata.json for existing issue link (PRIMARY detection)
315
- const metadataLink = loadExistingGitHubLink(incrementPath);
316
- if (metadataLink) {
317
- console.log(`\n📎 Found existing issue link in metadata: #${metadataLink.issue}`);
318
- // Update existing issue with new format
319
- console.log(`🔄 Updating issue #${metadataLink.issue} with new format...`);
320
- // Update body
321
- await updateGitHubIssue(config.owner, config.repo, metadataLink.issue, issue.body);
322
- console.log(` ✅ Body updated with User Stories and ACs`);
323
- // Update title to new format (fix the [0002] [FS-XXX] issue)
324
- const updateTitleResult = await execFileNoThrow('gh', [
325
- 'issue', 'edit',
326
- String(metadataLink.issue),
327
- '--repo', `${config.owner}/${config.repo}`,
328
- '--title', issue.title
329
- ]);
330
- if (updateTitleResult.exitCode === 0) {
331
- console.log(` ✅ Title updated to: ${issue.title}`);
332
- }
333
- else {
334
- console.log(` ⚠️ Could not update title (may need permissions)`);
335
- }
336
- // Update metadata with lastSync
337
- await updateIncrementMetadata(incrementPath, metadataLink.issue, `https://github.com/${config.owner}/${config.repo}/issues/${metadataLink.issue}`);
338
- console.log(`\n✅ Sync complete!`);
339
- console.log(` 🔗 https://github.com/${config.owner}/${config.repo}/issues/${metadataLink.issue}`);
340
- process.exit(0);
341
- }
342
- // STEP 2: Search GitHub by feature ID (fallback)
343
- const featureId = incrementData.frontmatter.feature_id ||
344
- `FS-${fullIncrementId.match(/^(\d+)/)?.[1]?.padStart(3, '0') || 'UNKNOWN'}`;
345
- console.log(`\n🔍 Searching GitHub for existing issue [${featureId}]...`);
346
- const existingIssue = await findExistingIssue(config.owner, config.repo, featureId);
347
- if (existingIssue) {
348
- console.log(` Found existing issue: #${existingIssue}`);
349
- // Update existing issue
350
- console.log(`🔄 Updating issue #${existingIssue}...`);
351
- await updateGitHubIssue(config.owner, config.repo, existingIssue, issue.body);
352
- console.log(` ✅ Issue #${existingIssue} updated`);
353
- await updateIncrementMetadata(incrementPath, existingIssue, `https://github.com/${config.owner}/${config.repo}/issues/${existingIssue}`);
354
- console.log(`\n✅ Sync complete!`);
355
- console.log(` 🔗 https://github.com/${config.owner}/${config.repo}/issues/${existingIssue}`);
356
- process.exit(0);
411
+ // Load existing links
412
+ const existingLinks = loadExistingGitHubLinks(incrementPath);
413
+ // Create or get milestone
414
+ console.log(`\n🎯 Creating/updating milestone...`);
415
+ const milestone = await createOrGetMilestone(config.owner, config.repo, featureId, incrementData.title, existingLinks.milestone);
416
+ console.log(` ✅ Milestone #${milestone.number}: [${featureId}] ${incrementData.title}`);
417
+ // Create/update issues for each user story
418
+ console.log(`\n📝 Creating/updating user story issues...`);
419
+ const userStoryIssues = {};
420
+ for (const story of incrementData.userStories) {
421
+ const existingIssue = existingLinks.userStoryIssues[story.id];
422
+ const issue = await syncUserStoryIssue(config.owner, config.repo, featureId, story, incrementData.tasks, incrementData, milestone.number, existingIssue);
423
+ userStoryIssues[story.id] = issue.number;
424
+ const action = existingIssue ? '♻️ Updated' : '✅ Created';
425
+ console.log(` ${action} #${issue.number}: [${featureId}][${story.id}] ${story.title}`);
357
426
  }
358
- // STEP 3: Create new issue (no existing found)
359
- console.log(` No existing issue found`);
360
- console.log(`\n🚀 Creating GitHub issue...`);
361
- const created = await createGitHubIssue(config.owner, config.repo, issue.title, issue.body, issue.labels);
362
- console.log(` ✅ Issue #${created.number} created`);
363
427
  // Update metadata
364
- await updateIncrementMetadata(incrementPath, created.number, created.url);
365
- console.log(` 📝 Metadata updated`);
428
+ await updateIncrementMetadata(incrementPath, milestone.number, userStoryIssues);
429
+ console.log(`\n📝 Metadata updated`);
366
430
  console.log(`\n✅ Sync complete!`);
367
- console.log(` 🔗 ${created.url}`);
431
+ console.log(` 🎯 Milestone: ${milestone.url}`);
432
+ console.log(` 📝 Issues: ${Object.keys(userStoryIssues).length} user stories synced`);
368
433
  process.exit(0);
369
434
  }
370
435
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"github-increment-sync-cli.js","sourceRoot":"","sources":["../../../../plugins/specweave-github/lib/github-increment-sync-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"github-increment-sync-cli.js","sourceRoot":"","sources":["../../../../plugins/specweave-github/lib/github-increment-sync-cli.ts"],"names":[],"mappings":"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"}
@@ -27,10 +27,20 @@ export declare class GitHubStatusSync {
27
27
  /**
28
28
  * Update GitHub issue status
29
29
  *
30
+ * Preserves existing labels that are not status-related.
31
+ * Only replaces labels that start with "status:" prefix.
32
+ *
30
33
  * @param issueNumber - GitHub issue number
31
34
  * @param status - New status (state and labels)
32
35
  */
33
36
  updateStatus(issueNumber: number, status: ExternalStatus): Promise<void>;
37
+ /**
38
+ * Get current labels from GitHub issue
39
+ *
40
+ * @param issueNumber - GitHub issue number
41
+ * @returns Array of current label names
42
+ */
43
+ private getCurrentLabels;
34
44
  /**
35
45
  * Post status change comment to GitHub issue
36
46
  *
@@ -1 +1 @@
1
- {"version":3,"file":"github-status-sync.d.ts","sourceRoot":"","sources":["../../../../plugins/specweave-github/lib/github-status-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,IAAI,CAAS;gBAET,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAMtD;;;;;OAKG;IACU,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAiBpE;;;;;OAKG;IACU,YAAY,CACvB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;IAgBhB;;;;;;OAMG;IACU,iBAAiB,CAC5B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;CAkBjB"}
1
+ {"version":3,"file":"github-status-sync.d.ts","sourceRoot":"","sources":["../../../../plugins/specweave-github/lib/github-status-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,IAAI,CAAS;gBAET,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAMtD;;;;;OAKG;IACU,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAiBpE;;;;;;;;OAQG;IACU,YAAY,CACvB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;IA+ChB;;;;;OAKG;YACW,gBAAgB;IAgB9B;;;;;;OAMG;IACU,iBAAiB,CAC5B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;CAkBjB"}