specweave 1.0.375 → 1.0.377

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":"github-ac-checkbox-sync.d.ts","sourceRoot":"","sources":["../../../../plugins/specweave-github/lib/github-ac-checkbox-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAAE,MAAM,EAAiB,MAAM,8BAA8B,CAAC;AAWrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAGzE,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,cAAc,CAAiB;gBAE3B,OAAO,EAAE;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB;IAQD;;;;;OAKG;IACG,wBAAwB,CAC5B,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAO,GACrC,OAAO,CAAC,oBAAoB,CAAC;IAsKhC;;;;;;OAMG;IACH,MAAM,CAAC,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAwBvE;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAe1C;;OAEG;YACW,2BAA2B;CA0F1C"}
1
+ {"version":3,"file":"github-ac-checkbox-sync.d.ts","sourceRoot":"","sources":["../../../../plugins/specweave-github/lib/github-ac-checkbox-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAAE,MAAM,EAAiB,MAAM,8BAA8B,CAAC;AAWrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAGzE,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,cAAc,CAAiB;gBAE3B,OAAO,EAAE;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB;IAQD;;;;;OAKG;IACG,wBAAwB,CAC5B,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAO,GACrC,OAAO,CAAC,oBAAoB,CAAC;IAiLhC;;;;;;OAMG;IACH,MAAM,CAAC,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAwBvE;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAe1C;;OAEG;YACW,2BAA2B;CA+G1C"}
@@ -54,14 +54,14 @@ export class GitHubACCheckboxSync {
54
54
  this.logger.log('ℹ️ No user stories found for this increment');
55
55
  return result;
56
56
  }
57
- // Get GitHub repo info
57
+ // Get default GitHub repo info (used when US doesn't have per-repo URL)
58
58
  const githubConfig = config.sync?.github || {};
59
59
  const repoInfo = await this.providerRouter.detectGitHubRepo(githubConfig);
60
60
  if (!repoInfo) {
61
61
  this.logger.log('⚠️ GitHub repository not configured');
62
62
  return result;
63
63
  }
64
- const client = GitHubClientV2.fromRepo(repoInfo.owner, repoInfo.repo);
64
+ const defaultClient = GitHubClientV2.fromRepo(repoInfo.owner, repoInfo.repo);
65
65
  this.logger.log(`\n📊 Syncing AC checkboxes to GitHub issues...`);
66
66
  this.logger.log(` Repository: ${repoInfo.owner}/${repoInfo.repo}`);
67
67
  // Load spec.md to get current AC status
@@ -77,9 +77,10 @@ export class GitHubACCheckboxSync {
77
77
  // Process each user story with a GitHub issue
78
78
  for (const usFile of userStories) {
79
79
  // Find GitHub issue number from frontmatter
80
- const issueNumber = usFile.external_tools?.github?.number ||
81
- usFile.external_id ||
82
- usFile.external_tools?.github?.issue_number;
80
+ // Supports: external_tools.github.number, external.github.issue, external_id
81
+ const ghInfo = usFile.external_tools?.github;
82
+ const issueNumber = ghInfo?.number || ghInfo?.issue || ghInfo?.issue_number ||
83
+ usFile.external_id;
83
84
  if (!issueNumber) {
84
85
  this.logger.log(` ⏭️ ${usFile.id} - No GitHub issue linked`);
85
86
  continue;
@@ -98,6 +99,15 @@ export class GitHubACCheckboxSync {
98
99
  continue;
99
100
  }
100
101
  try {
102
+ // Use per-repo client if URL points to a different repo (cross-project support)
103
+ let client = defaultClient;
104
+ const ghUrl = ghInfo?.url;
105
+ if (ghUrl) {
106
+ const repoMatch = ghUrl.match(/github\.com\/([^/]+)\/([^/]+)\/issues\//);
107
+ if (repoMatch && `${repoMatch[1]}/${repoMatch[2]}` !== `${repoInfo.owner}/${repoInfo.repo}`) {
108
+ client = GitHubClientV2.fromRepo(repoMatch[1], repoMatch[2]);
109
+ }
110
+ }
101
111
  // Fetch and update issue
102
112
  const issue = await client.getIssue(Number(issueNumber));
103
113
  if (!issue) {
@@ -243,33 +253,60 @@ ${[...usAcStatus.entries()].map(([id, done]) => `- ${done ? '✅' : '⬜'} ${id}
243
253
  return [];
244
254
  }
245
255
  }
246
- // Find living docs for this feature
247
- const featurePath = path.join(this.projectRoot, '.specweave/docs/internal/specs', this.projectId, featureId);
248
- if (!existsSync(featurePath)) {
256
+ // Find living docs for this feature — scan all project folders for cross-project support
257
+ const specsRoot = path.join(this.projectRoot, '.specweave/docs/internal/specs');
258
+ const usFiles = [];
259
+ // Collect all project folders that have this feature
260
+ const projectDirs = [];
261
+ const primaryPath = path.join(specsRoot, this.projectId, featureId);
262
+ if (existsSync(primaryPath)) {
263
+ projectDirs.push(primaryPath);
264
+ }
265
+ // For cross-project increments, also scan other project folders
266
+ if (existsSync(specsRoot)) {
267
+ try {
268
+ const allProjects = await fs.readdir(specsRoot);
269
+ for (const proj of allProjects) {
270
+ if (proj === this.projectId)
271
+ continue;
272
+ const projFeaturePath = path.join(specsRoot, proj, featureId);
273
+ if (existsSync(projFeaturePath)) {
274
+ projectDirs.push(projFeaturePath);
275
+ }
276
+ }
277
+ }
278
+ catch {
279
+ // Ignore readdir errors
280
+ }
281
+ }
282
+ if (projectDirs.length === 0) {
249
283
  return [];
250
284
  }
251
- // Load all US files
252
- const files = await fs.readdir(featurePath);
253
- const usFiles = [];
254
- for (const file of files) {
255
- if (file.startsWith('us-') && file.endsWith('.md')) {
256
- const filePath = path.join(featurePath, file);
257
- const fileContent = await fs.readFile(filePath, 'utf-8');
258
- const match = fileContent.match(/^---\n([\s\S]*?)\n---/);
259
- if (match) {
260
- const fm = yaml.parse(match[1]);
261
- usFiles.push({
262
- id: fm.id,
263
- title: fm.title,
264
- format_preservation: fm.format_preservation,
265
- external_title: fm.external_title,
266
- external_source: fm.external_source,
267
- external_id: fm.external_id,
268
- external_url: fm.external_url,
269
- imported_at: fm.imported_at,
270
- origin: fm.origin,
271
- external_tools: fm.external_tools,
272
- });
285
+ // Load all US files from all matching project/feature folders
286
+ for (const featurePath of projectDirs) {
287
+ const files = await fs.readdir(featurePath);
288
+ for (const file of files) {
289
+ if (file.startsWith('us-') && file.endsWith('.md')) {
290
+ const filePath = path.join(featurePath, file);
291
+ const fileContent = await fs.readFile(filePath, 'utf-8');
292
+ const match = fileContent.match(/^---\n([\s\S]*?)\n---/);
293
+ if (match) {
294
+ const fm = yaml.parse(match[1]);
295
+ // Support both external_tools (legacy) and external (living docs) formats
296
+ const externalTools = fm.external_tools || fm.external;
297
+ usFiles.push({
298
+ id: fm.id,
299
+ title: fm.title,
300
+ format_preservation: fm.format_preservation,
301
+ external_title: fm.external_title,
302
+ external_source: fm.external_source,
303
+ external_id: fm.external_id,
304
+ external_url: fm.external_url,
305
+ imported_at: fm.imported_at,
306
+ origin: fm.origin,
307
+ external_tools: externalTools,
308
+ });
309
+ }
273
310
  }
274
311
  }
275
312
  }
@@ -1 +1 @@
1
- {"version":3,"file":"github-ac-checkbox-sync.js","sourceRoot":"","sources":["../../../../plugins/specweave-github/lib/github-ac-checkbox-sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"github-ac-checkbox-sync.js","sourceRoot":"","sources":["../../../../plugins/specweave-github/lib/github-ac-checkbox-sync.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.375",
3
+ "version": "1.0.377",
4
4
  "description": "Spec-driven development framework for AI coding agents. Works with Claude Code, Codex, Antigravity, Cursor, Copilot & more. 100+ skills, 49 CLI commands, verified skill certification, autonomous execution, and living documentation.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -52,7 +52,7 @@ class GitHubACCheckboxSync {
52
52
  this.logger.log("\u26A0\uFE0F GitHub repository not configured");
53
53
  return result;
54
54
  }
55
- const client = GitHubClientV2.fromRepo(repoInfo.owner, repoInfo.repo);
55
+ const defaultClient = GitHubClientV2.fromRepo(repoInfo.owner, repoInfo.repo);
56
56
  this.logger.log(`
57
57
  \u{1F4CA} Syncing AC checkboxes to GitHub issues...`);
58
58
  this.logger.log(` Repository: ${repoInfo.owner}/${repoInfo.repo}`);
@@ -70,7 +70,8 @@ class GitHubACCheckboxSync {
70
70
  const acStatus = GitHubACCheckboxSync.parseACStatusFromSpec(specContent);
71
71
  this.logger.log(` Found ${acStatus.size} ACs in spec.md`);
72
72
  for (const usFile of userStories) {
73
- const issueNumber = usFile.external_tools?.github?.number || usFile.external_id || usFile.external_tools?.github?.issue_number;
73
+ const ghInfo = usFile.external_tools?.github;
74
+ const issueNumber = ghInfo?.number || ghInfo?.issue || ghInfo?.issue_number || usFile.external_id;
74
75
  if (!issueNumber) {
75
76
  this.logger.log(` \u23ED\uFE0F ${usFile.id} - No GitHub issue linked`);
76
77
  continue;
@@ -87,6 +88,14 @@ class GitHubACCheckboxSync {
87
88
  continue;
88
89
  }
89
90
  try {
91
+ let client = defaultClient;
92
+ const ghUrl = ghInfo?.url;
93
+ if (ghUrl) {
94
+ const repoMatch = ghUrl.match(/github\.com\/([^/]+)\/([^/]+)\/issues\//);
95
+ if (repoMatch && `${repoMatch[1]}/${repoMatch[2]}` !== `${repoInfo.owner}/${repoInfo.repo}`) {
96
+ client = GitHubClientV2.fromRepo(repoMatch[1], repoMatch[2]);
97
+ }
98
+ }
90
99
  const issue = await client.getIssue(Number(issueNumber));
91
100
  if (!issue) {
92
101
  this.logger.log(` \u26A0\uFE0F ${usFile.id} - Issue #${issueNumber} not found`);
@@ -231,36 +240,52 @@ ${[...usAcStatus.entries()].map(
231
240
  return [];
232
241
  }
233
242
  }
234
- const featurePath = path.join(
235
- this.projectRoot,
236
- ".specweave/docs/internal/specs",
237
- this.projectId,
238
- featureId
239
- );
240
- if (!existsSync(featurePath)) {
243
+ const specsRoot = path.join(this.projectRoot, ".specweave/docs/internal/specs");
244
+ const usFiles = [];
245
+ const projectDirs = [];
246
+ const primaryPath = path.join(specsRoot, this.projectId, featureId);
247
+ if (existsSync(primaryPath)) {
248
+ projectDirs.push(primaryPath);
249
+ }
250
+ if (existsSync(specsRoot)) {
251
+ try {
252
+ const allProjects = await fs.readdir(specsRoot);
253
+ for (const proj of allProjects) {
254
+ if (proj === this.projectId) continue;
255
+ const projFeaturePath = path.join(specsRoot, proj, featureId);
256
+ if (existsSync(projFeaturePath)) {
257
+ projectDirs.push(projFeaturePath);
258
+ }
259
+ }
260
+ } catch {
261
+ }
262
+ }
263
+ if (projectDirs.length === 0) {
241
264
  return [];
242
265
  }
243
- const files = await fs.readdir(featurePath);
244
- const usFiles = [];
245
- for (const file of files) {
246
- if (file.startsWith("us-") && file.endsWith(".md")) {
247
- const filePath = path.join(featurePath, file);
248
- const fileContent = await fs.readFile(filePath, "utf-8");
249
- const match = fileContent.match(/^---\n([\s\S]*?)\n---/);
250
- if (match) {
251
- const fm = yaml.parse(match[1]);
252
- usFiles.push({
253
- id: fm.id,
254
- title: fm.title,
255
- format_preservation: fm.format_preservation,
256
- external_title: fm.external_title,
257
- external_source: fm.external_source,
258
- external_id: fm.external_id,
259
- external_url: fm.external_url,
260
- imported_at: fm.imported_at,
261
- origin: fm.origin,
262
- external_tools: fm.external_tools
263
- });
266
+ for (const featurePath of projectDirs) {
267
+ const files = await fs.readdir(featurePath);
268
+ for (const file of files) {
269
+ if (file.startsWith("us-") && file.endsWith(".md")) {
270
+ const filePath = path.join(featurePath, file);
271
+ const fileContent = await fs.readFile(filePath, "utf-8");
272
+ const match = fileContent.match(/^---\n([\s\S]*?)\n---/);
273
+ if (match) {
274
+ const fm = yaml.parse(match[1]);
275
+ const externalTools = fm.external_tools || fm.external;
276
+ usFiles.push({
277
+ id: fm.id,
278
+ title: fm.title,
279
+ format_preservation: fm.format_preservation,
280
+ external_title: fm.external_title,
281
+ external_source: fm.external_source,
282
+ external_id: fm.external_id,
283
+ external_url: fm.external_url,
284
+ imported_at: fm.imported_at,
285
+ origin: fm.origin,
286
+ external_tools: externalTools
287
+ });
288
+ }
264
289
  }
265
290
  }
266
291
  }
@@ -87,7 +87,7 @@ export class GitHubACCheckboxSync {
87
87
  return result;
88
88
  }
89
89
 
90
- // Get GitHub repo info
90
+ // Get default GitHub repo info (used when US doesn't have per-repo URL)
91
91
  const githubConfig = config.sync?.github || {};
92
92
  const repoInfo = await this.providerRouter.detectGitHubRepo(githubConfig as GitHubRepoConfig);
93
93
  if (!repoInfo) {
@@ -95,7 +95,7 @@ export class GitHubACCheckboxSync {
95
95
  return result;
96
96
  }
97
97
 
98
- const client = GitHubClientV2.fromRepo(repoInfo.owner, repoInfo.repo);
98
+ const defaultClient = GitHubClientV2.fromRepo(repoInfo.owner, repoInfo.repo);
99
99
 
100
100
  this.logger.log(`\n📊 Syncing AC checkboxes to GitHub issues...`);
101
101
  this.logger.log(` Repository: ${repoInfo.owner}/${repoInfo.repo}`);
@@ -122,9 +122,10 @@ export class GitHubACCheckboxSync {
122
122
  // Process each user story with a GitHub issue
123
123
  for (const usFile of userStories) {
124
124
  // Find GitHub issue number from frontmatter
125
- const issueNumber = usFile.external_tools?.github?.number ||
126
- usFile.external_id ||
127
- (usFile.external_tools?.github as any)?.issue_number;
125
+ // Supports: external_tools.github.number, external.github.issue, external_id
126
+ const ghInfo = usFile.external_tools?.github as Record<string, any> | undefined;
127
+ const issueNumber = ghInfo?.number || ghInfo?.issue || ghInfo?.issue_number ||
128
+ usFile.external_id;
128
129
 
129
130
  if (!issueNumber) {
130
131
  this.logger.log(` ⏭️ ${usFile.id} - No GitHub issue linked`);
@@ -147,6 +148,16 @@ export class GitHubACCheckboxSync {
147
148
  }
148
149
 
149
150
  try {
151
+ // Use per-repo client if URL points to a different repo (cross-project support)
152
+ let client = defaultClient;
153
+ const ghUrl = ghInfo?.url as string | undefined;
154
+ if (ghUrl) {
155
+ const repoMatch = ghUrl.match(/github\.com\/([^/]+)\/([^/]+)\/issues\//);
156
+ if (repoMatch && `${repoMatch[1]}/${repoMatch[2]}` !== `${repoInfo.owner}/${repoInfo.repo}`) {
157
+ client = GitHubClientV2.fromRepo(repoMatch[1], repoMatch[2]);
158
+ }
159
+ }
160
+
150
161
  // Fetch and update issue
151
162
  const issue = await client.getIssue(Number(issueNumber));
152
163
  if (!issue) {
@@ -327,42 +338,63 @@ ${[...usAcStatus.entries()].map(([id, done]) =>
327
338
  }
328
339
  }
329
340
 
330
- // Find living docs for this feature
331
- const featurePath = path.join(
332
- this.projectRoot,
333
- '.specweave/docs/internal/specs',
334
- this.projectId,
335
- featureId
336
- );
341
+ // Find living docs for this feature — scan all project folders for cross-project support
342
+ const specsRoot = path.join(this.projectRoot, '.specweave/docs/internal/specs');
343
+ const usFiles: LivingDocsUSFile[] = [];
337
344
 
338
- if (!existsSync(featurePath)) {
339
- return [];
345
+ // Collect all project folders that have this feature
346
+ const projectDirs: string[] = [];
347
+ const primaryPath = path.join(specsRoot, this.projectId, featureId);
348
+ if (existsSync(primaryPath)) {
349
+ projectDirs.push(primaryPath);
340
350
  }
341
351
 
342
- // Load all US files
343
- const files = await fs.readdir(featurePath);
344
- const usFiles: LivingDocsUSFile[] = [];
352
+ // For cross-project increments, also scan other project folders
353
+ if (existsSync(specsRoot)) {
354
+ try {
355
+ const allProjects = await fs.readdir(specsRoot);
356
+ for (const proj of allProjects) {
357
+ if (proj === this.projectId) continue;
358
+ const projFeaturePath = path.join(specsRoot, proj, featureId);
359
+ if (existsSync(projFeaturePath)) {
360
+ projectDirs.push(projFeaturePath);
361
+ }
362
+ }
363
+ } catch {
364
+ // Ignore readdir errors
365
+ }
366
+ }
345
367
 
346
- for (const file of files) {
347
- if (file.startsWith('us-') && file.endsWith('.md')) {
348
- const filePath = path.join(featurePath, file);
349
- const fileContent = await fs.readFile(filePath, 'utf-8');
350
-
351
- const match = fileContent.match(/^---\n([\s\S]*?)\n---/);
352
- if (match) {
353
- const fm = yaml.parse(match[1]);
354
- usFiles.push({
355
- id: fm.id,
356
- title: fm.title,
357
- format_preservation: fm.format_preservation,
358
- external_title: fm.external_title,
359
- external_source: fm.external_source,
360
- external_id: fm.external_id,
361
- external_url: fm.external_url,
362
- imported_at: fm.imported_at,
363
- origin: fm.origin,
364
- external_tools: fm.external_tools,
365
- });
368
+ if (projectDirs.length === 0) {
369
+ return [];
370
+ }
371
+
372
+ // Load all US files from all matching project/feature folders
373
+ for (const featurePath of projectDirs) {
374
+ const files = await fs.readdir(featurePath);
375
+ for (const file of files) {
376
+ if (file.startsWith('us-') && file.endsWith('.md')) {
377
+ const filePath = path.join(featurePath, file);
378
+ const fileContent = await fs.readFile(filePath, 'utf-8');
379
+
380
+ const match = fileContent.match(/^---\n([\s\S]*?)\n---/);
381
+ if (match) {
382
+ const fm = yaml.parse(match[1]);
383
+ // Support both external_tools (legacy) and external (living docs) formats
384
+ const externalTools = fm.external_tools || fm.external;
385
+ usFiles.push({
386
+ id: fm.id,
387
+ title: fm.title,
388
+ format_preservation: fm.format_preservation,
389
+ external_title: fm.external_title,
390
+ external_source: fm.external_source,
391
+ external_id: fm.external_id,
392
+ external_url: fm.external_url,
393
+ imported_at: fm.imported_at,
394
+ origin: fm.origin,
395
+ external_tools: externalTools,
396
+ });
397
+ }
366
398
  }
367
399
  }
368
400
  }