specweave 1.0.18 → 1.0.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 (46) hide show
  1. package/CLAUDE.md +48 -0
  2. package/dist/src/core/config/types.d.ts +15 -0
  3. package/dist/src/core/config/types.d.ts.map +1 -1
  4. package/dist/src/core/config/types.js.map +1 -1
  5. package/dist/src/core/increment/increment-utils.d.ts +40 -0
  6. package/dist/src/core/increment/increment-utils.d.ts.map +1 -1
  7. package/dist/src/core/increment/increment-utils.js +56 -2
  8. package/dist/src/core/increment/increment-utils.js.map +1 -1
  9. package/dist/src/core/increment/status-change-sync-trigger.d.ts +26 -2
  10. package/dist/src/core/increment/status-change-sync-trigger.d.ts.map +1 -1
  11. package/dist/src/core/increment/status-change-sync-trigger.js +70 -6
  12. package/dist/src/core/increment/status-change-sync-trigger.js.map +1 -1
  13. package/dist/src/hooks/auto-create-external-issue.d.ts +19 -0
  14. package/dist/src/hooks/auto-create-external-issue.d.ts.map +1 -0
  15. package/dist/src/hooks/auto-create-external-issue.js +54 -0
  16. package/dist/src/hooks/auto-create-external-issue.js.map +1 -0
  17. package/dist/src/integrations/jira/jira-incremental-mapper.d.ts +3 -1
  18. package/dist/src/integrations/jira/jira-incremental-mapper.d.ts.map +1 -1
  19. package/dist/src/integrations/jira/jira-incremental-mapper.js +7 -1
  20. package/dist/src/integrations/jira/jira-incremental-mapper.js.map +1 -1
  21. package/dist/src/integrations/jira/jira-mapper.d.ts +3 -1
  22. package/dist/src/integrations/jira/jira-mapper.d.ts.map +1 -1
  23. package/dist/src/integrations/jira/jira-mapper.js +7 -1
  24. package/dist/src/integrations/jira/jira-mapper.js.map +1 -1
  25. package/dist/src/sync/external-issue-auto-creator.d.ts +156 -0
  26. package/dist/src/sync/external-issue-auto-creator.d.ts.map +1 -0
  27. package/dist/src/sync/external-issue-auto-creator.js +694 -0
  28. package/dist/src/sync/external-issue-auto-creator.js.map +1 -0
  29. package/dist/src/sync/format-preservation-sync.d.ts +18 -0
  30. package/dist/src/sync/format-preservation-sync.d.ts.map +1 -1
  31. package/dist/src/sync/format-preservation-sync.js +126 -24
  32. package/dist/src/sync/format-preservation-sync.js.map +1 -1
  33. package/dist/src/sync/frontmatter-updater.d.ts +3 -0
  34. package/dist/src/sync/frontmatter-updater.d.ts.map +1 -1
  35. package/dist/src/sync/frontmatter-updater.js +28 -4
  36. package/dist/src/sync/frontmatter-updater.js.map +1 -1
  37. package/dist/src/sync/sync-coordinator.d.ts.map +1 -1
  38. package/dist/src/sync/sync-coordinator.js +23 -1
  39. package/dist/src/sync/sync-coordinator.js.map +1 -1
  40. package/dist/src/utils/feature-id-collision.d.ts +51 -0
  41. package/dist/src/utils/feature-id-collision.d.ts.map +1 -1
  42. package/dist/src/utils/feature-id-collision.js +149 -0
  43. package/dist/src/utils/feature-id-collision.js.map +1 -1
  44. package/package.json +1 -1
  45. package/plugins/specweave/commands/sync-progress.md +92 -0
  46. package/plugins/specweave/scripts/cleanup-state.sh +26 -0
package/CLAUDE.md CHANGED
@@ -398,6 +398,54 @@ IncrementNumberManager.getNextIncrementNumber(); // "0001" ← Starts from begin
398
398
 
399
399
  **Details:** See ADR-0142 (`.specweave/docs/internal/architecture/adr/0142-gap-filling-increment-ids.md`)
400
400
 
401
+ ### 2f-bis. Per-Project Increment ID Collision Prevention (v1.0.19+)
402
+
403
+ **In multi-project setups, increment IDs are now checked against the target project's feature space!**
404
+
405
+ **PROBLEM (before v1.0.19):**
406
+ ```
407
+ Project ec-web-ui imports external GitHub issue → creates FS-001E
408
+ User creates internal increment → 0001-feature → derives to FS-001
409
+ ⚠️ FS-001 and FS-001E share same base number → COLLISION!
410
+ ```
411
+
412
+ **SOLUTION (v1.0.19+):**
413
+ When `projectId` is provided to `generateIncrementId()`, it checks the target project's `specs/{projectId}/` folder for existing FS-IDs and skips colliding numbers:
414
+
415
+ ```typescript
416
+ import { IncrementNumberManager } from './core/increment/increment-utils.js';
417
+
418
+ // WITHOUT projectId - uses global increment pool (backward compatible)
419
+ const globalId = IncrementNumberManager.generateIncrementId('feature');
420
+ // → "0001-feature" (no project-specific collision check)
421
+
422
+ // WITH projectId - checks target project's FS-ID space
423
+ const safeId = IncrementNumberManager.generateIncrementId('feature', {
424
+ projectId: 'ec-web-ui' // ← Checks specs/ec-web-ui/ for FS-001, FS-001E
425
+ });
426
+ // → "0002-feature" (skipped 0001 because FS-001E exists in ec-web-ui)
427
+
428
+ // Direct method for project-scoped number
429
+ const nextNum = IncrementNumberManager.getNextIncrementNumberForProject(
430
+ process.cwd(),
431
+ 'ec-web-ui'
432
+ );
433
+ // → "0002" (skips numbers with existing FS-IDs)
434
+ ```
435
+
436
+ **JIRA/ADO Mappers (v1.0.19+):**
437
+ - `JiraMapper` and `JiraIncrementalMapper` now accept optional `targetProjectId` constructor param
438
+ - When set, uses project-scoped ID generation to prevent collisions
439
+
440
+ **MULTI-PROJECT INDEPENDENCE:**
441
+ ```
442
+ Project A (specs/project-a/): FS-001, FS-002 exist
443
+ Project B (specs/project-b/): FS-001E exists
444
+
445
+ IncrementNumberManager.getNextIncrementNumberForProject(root, 'project-a'); // "0003"
446
+ IncrementNumberManager.getNextIncrementNumberForProject(root, 'project-b'); // "0002"
447
+ ```
448
+
401
449
  ### 2g. NEVER Create Project Folders Without Validation (v0.34.0+, fixed v0.35.1)
402
450
 
403
451
  **Project folders MUST exist in config.json before creation!**
@@ -179,6 +179,21 @@ export interface SyncConfiguration {
179
179
  * Default profile (fallback when increment doesn't specify one)
180
180
  */
181
181
  defaultProfile?: string;
182
+ /**
183
+ * GATE 5: Auto-create external issues on increment creation (v1.0.19+)
184
+ *
185
+ * When true, automatically creates GitHub/JIRA/ADO issues when:
186
+ * - A new increment is created (post-increment-planning hook)
187
+ * - sync-progress runs and no issue exists
188
+ *
189
+ * When false (default), user must manually run:
190
+ * - /sw-github:create for GitHub
191
+ * - /sw-jira:create for JIRA
192
+ * - /sw-ado:create for Azure DevOps
193
+ *
194
+ * @default false (opt-in for safety)
195
+ */
196
+ autoCreateOnIncrement?: boolean;
182
197
  settings?: SyncSettings;
183
198
  profiles?: Record<string, SyncProfile>;
184
199
  github?: GitHubConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/config/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/config/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/core/config/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAujBH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAoB;IAC7C,OAAO,EAAE,KAAK;IACd,UAAU,EAAE;QACV,QAAQ,EAAE,OAAO;KAClB;IACD,YAAY,EAAE;QACZ,QAAQ,EAAE,MAAM;KACjB;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,eAAe;QAC1B,QAAQ,EAAE,KAAK;QACf,aAAa,EAAE,IAAI;QACnB,eAAe,EAAE,IAAI;KACtB;IACD,UAAU,EAAE;QACV,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,KAAK,EAAE,aAAa;QACjC,gBAAgB,EAAE,CAAC;QACnB,aAAa,EAAE,EAAE;KAClB;CACF,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/core/config/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAukBH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAoB;IAC7C,OAAO,EAAE,KAAK;IACd,UAAU,EAAE;QACV,QAAQ,EAAE,OAAO;KAClB;IACD,YAAY,EAAE;QACZ,QAAQ,EAAE,MAAM;KACjB;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,eAAe;QAC1B,QAAQ,EAAE,KAAK;QACf,aAAa,EAAE,IAAI;QACnB,eAAe,EAAE,IAAI;KACtB;IACD,UAAU,EAAE;QACV,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,KAAK,EAAE,aAAa;QACjC,gBAAgB,EAAE,CAAC;QACnB,aAAa,EAAE,EAAE;KAClB;CACF,CAAC"}
@@ -63,6 +63,40 @@ export declare class IncrementNumberManager {
63
63
  * ```
64
64
  */
65
65
  static getNextIncrementNumber(projectRoot?: string, _useCache?: boolean): string;
66
+ /**
67
+ * Get the next available increment number that won't collide in the target project's feature ID space.
68
+ *
69
+ * PER-PROJECT COLLISION PREVENTION (v1.0.19+):
70
+ * - First gets candidate from global increment pool (gap-filling)
71
+ * - Then checks if that number would collide with existing FS-IDs in the target project
72
+ * - If collision (FS-XXX or FS-XXXE exists), finds next available number
73
+ *
74
+ * This prevents the scenario where:
75
+ * - Project ec-web-ui has external import FS-001E
76
+ * - User creates internal increment 0001-feature → would derive to FS-001
77
+ * - But FS-001 collides with FS-001E (same base number in unified sequence)
78
+ *
79
+ * @param projectRoot - Project root directory
80
+ * @param projectId - Target project ID (from spec.md **Project**: field or config)
81
+ * @param options - Additional options
82
+ * @param options.isExternal - If true, checks for external collision (FS-XXXE)
83
+ * @returns Next increment number as 4-digit string that won't collide in the project
84
+ *
85
+ * @example
86
+ * ```typescript
87
+ * // Project 'ec-web-ui' has FS-001E (from external import)
88
+ * const nextId = IncrementNumberManager.getNextIncrementNumberForProject(
89
+ * process.cwd(),
90
+ * 'ec-web-ui'
91
+ * );
92
+ * // Returns "0002" (skips 0001 because FS-001E exists)
93
+ * ```
94
+ *
95
+ * @since 1.0.19
96
+ */
97
+ static getNextIncrementNumberForProject(projectRoot: string, projectId: string, options?: {
98
+ isExternal?: boolean;
99
+ }): string;
66
100
  /**
67
101
  * Check if an increment number already exists in any directory.
68
102
  *
@@ -135,6 +169,7 @@ export declare class IncrementNumberManager {
135
169
  * @param options - Options for ID generation
136
170
  * @param options.isExternal - If true, adds E suffix for external items
137
171
  * @param options.projectRoot - Project root directory
172
+ * @param options.projectId - Target project ID for per-project collision prevention (v1.0.19+)
138
173
  * @param options.skipValidation - If true, skips uniqueness validation (DANGEROUS - use only for testing)
139
174
  * @returns Full increment folder name (e.g., "0033E-dora-metrics-fix")
140
175
  *
@@ -147,6 +182,10 @@ export declare class IncrementNumberManager {
147
182
  * // External increment (GitHub/JIRA/ADO item)
148
183
  * const extId = IncrementNumberManager.generateIncrementId('dora-fix', { isExternal: true });
149
184
  * // "0033E-dora-fix"
185
+ *
186
+ * // With per-project collision prevention (v1.0.19+)
187
+ * // If project 'ec-web-ui' has FS-001E, this returns "0002-feature" instead of "0001-feature"
188
+ * const safeId = IncrementNumberManager.generateIncrementId('feature', { projectId: 'ec-web-ui' });
150
189
  * ```
151
190
  *
152
191
  * @since 0.32.0
@@ -154,6 +193,7 @@ export declare class IncrementNumberManager {
154
193
  static generateIncrementId(name: string, options?: {
155
194
  isExternal?: boolean;
156
195
  projectRoot?: string;
196
+ projectId?: string;
157
197
  skipValidation?: boolean;
158
198
  }): string;
159
199
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"increment-utils.d.ts","sourceRoot":"","sources":["../../../../src/core/increment/increment-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,sBAAsB;IACjC;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,MAAM,CAAC,sBAAsB,CAC3B,WAAW,GAAE,MAAsB,EACnC,SAAS,GAAE,OAAc,GACxB,MAAM;IAeT;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,qBAAqB,CAC1B,eAAe,EAAE,MAAM,GAAG,MAAM,EAChC,WAAW,GAAE,MAAsB,GAClC,OAAO;IA2CV;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAsCrC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAqD1C;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,8BAA8B,CACnC,WAAW,GAAE,MAAsB,GAClC,MAAM;IAKT;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,MAAM,CAAC,mBAAmB,CACxB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAA;KAAO,GACrF,MAAM;IAcT;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,CAAC,kBAAkB,CACvB,WAAW,EAAE,MAAM,EACnB,WAAW,GAAE,MAAsB,GAClC,IAAI;IAyBP;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAIxD;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQxD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CAAC,cAAc,CACnB,eAAe,EAAE,MAAM,GAAG,MAAM,EAChC,WAAW,GAAE,MAAsB,GAClC,MAAM,EAAE;IAqCX;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CAAC,cAAc,CACnB,WAAW,EAAE,MAAM,EACnB,WAAW,GAAE,MAAsB,GAClC,IAAI;IAqBP;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,CAAC,yBAAyB,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAO,GAC3D,MAAM;IAQT;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,MAAM,CAAC,iBAAiB,CACtB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAO,GAC3D,MAAM;CAIV"}
1
+ {"version":3,"file":"increment-utils.d.ts","sourceRoot":"","sources":["../../../../src/core/increment/increment-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAMH;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,sBAAsB;IACjC;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,MAAM,CAAC,sBAAsB,CAC3B,WAAW,GAAE,MAAsB,EACnC,SAAS,GAAE,OAAc,GACxB,MAAM;IAeT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,MAAM,CAAC,gCAAgC,CACrC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAO,GACrC,MAAM;IAeT;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,qBAAqB,CAC1B,eAAe,EAAE,MAAM,GAAG,MAAM,EAChC,WAAW,GAAE,MAAsB,GAClC,OAAO;IA2CV;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAsCrC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAqD1C;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,8BAA8B,CACnC,WAAW,GAAE,MAAsB,GAClC,MAAM;IAKT;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,MAAM,CAAC,mBAAmB,CACxB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAA;KAAO,GACzG,MAAM;IAqBT;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,CAAC,kBAAkB,CACvB,WAAW,EAAE,MAAM,EACnB,WAAW,GAAE,MAAsB,GAClC,IAAI;IAyBP;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAIxD;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAQxD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CAAC,cAAc,CACnB,eAAe,EAAE,MAAM,GAAG,MAAM,EAChC,WAAW,GAAE,MAAsB,GAClC,MAAM,EAAE;IAqCX;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CAAC,cAAc,CACnB,WAAW,EAAE,MAAM,EACnB,WAAW,GAAE,MAAsB,GAClC,IAAI;IAqBP;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,CAAC,yBAAyB,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAO,GAC3D,MAAM;IAQT;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,MAAM,CAAC,iBAAiB,CACtB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAO,GAC3D,MAAM;CAIV"}
@@ -20,6 +20,7 @@
20
20
  */
21
21
  import * as fs from 'fs';
22
22
  import * as path from 'path';
23
+ import { findNextAvailableIdForProject } from '../../utils/feature-id-collision.js';
23
24
  /**
24
25
  * Centralized manager for increment number generation and validation.
25
26
  *
@@ -76,6 +77,49 @@ export class IncrementNumberManager {
76
77
  }
77
78
  return String(candidate).padStart(4, '0');
78
79
  }
80
+ /**
81
+ * Get the next available increment number that won't collide in the target project's feature ID space.
82
+ *
83
+ * PER-PROJECT COLLISION PREVENTION (v1.0.19+):
84
+ * - First gets candidate from global increment pool (gap-filling)
85
+ * - Then checks if that number would collide with existing FS-IDs in the target project
86
+ * - If collision (FS-XXX or FS-XXXE exists), finds next available number
87
+ *
88
+ * This prevents the scenario where:
89
+ * - Project ec-web-ui has external import FS-001E
90
+ * - User creates internal increment 0001-feature → would derive to FS-001
91
+ * - But FS-001 collides with FS-001E (same base number in unified sequence)
92
+ *
93
+ * @param projectRoot - Project root directory
94
+ * @param projectId - Target project ID (from spec.md **Project**: field or config)
95
+ * @param options - Additional options
96
+ * @param options.isExternal - If true, checks for external collision (FS-XXXE)
97
+ * @returns Next increment number as 4-digit string that won't collide in the project
98
+ *
99
+ * @example
100
+ * ```typescript
101
+ * // Project 'ec-web-ui' has FS-001E (from external import)
102
+ * const nextId = IncrementNumberManager.getNextIncrementNumberForProject(
103
+ * process.cwd(),
104
+ * 'ec-web-ui'
105
+ * );
106
+ * // Returns "0002" (skips 0001 because FS-001E exists)
107
+ * ```
108
+ *
109
+ * @since 1.0.19
110
+ */
111
+ static getNextIncrementNumberForProject(projectRoot, projectId, options = {}) {
112
+ // 1. Get candidate from global increment pool (existing gap-filling logic)
113
+ const candidate = parseInt(this.getNextIncrementNumber(projectRoot), 10);
114
+ // 2. Check per-project feature ID collision across ALL locations
115
+ // For 2-level structures (JIRA boards, ADO area paths), this scans:
116
+ // - specs/{project}/FS-XXX (1-level)
117
+ // - specs/{board}/{project}/FS-XXX (2-level)
118
+ // Returns the first available number that doesn't conflict with any existing FS-ID
119
+ const specsPath = path.join(projectRoot, '.specweave/docs/internal/specs');
120
+ const safeNumber = findNextAvailableIdForProject(candidate, specsPath, projectId);
121
+ return String(safeNumber).padStart(4, '0');
122
+ }
79
123
  /**
80
124
  * Check if an increment number already exists in any directory.
81
125
  *
@@ -265,6 +309,7 @@ export class IncrementNumberManager {
265
309
  * @param options - Options for ID generation
266
310
  * @param options.isExternal - If true, adds E suffix for external items
267
311
  * @param options.projectRoot - Project root directory
312
+ * @param options.projectId - Target project ID for per-project collision prevention (v1.0.19+)
268
313
  * @param options.skipValidation - If true, skips uniqueness validation (DANGEROUS - use only for testing)
269
314
  * @returns Full increment folder name (e.g., "0033E-dora-metrics-fix")
270
315
  *
@@ -277,13 +322,22 @@ export class IncrementNumberManager {
277
322
  * // External increment (GitHub/JIRA/ADO item)
278
323
  * const extId = IncrementNumberManager.generateIncrementId('dora-fix', { isExternal: true });
279
324
  * // "0033E-dora-fix"
325
+ *
326
+ * // With per-project collision prevention (v1.0.19+)
327
+ * // If project 'ec-web-ui' has FS-001E, this returns "0002-feature" instead of "0001-feature"
328
+ * const safeId = IncrementNumberManager.generateIncrementId('feature', { projectId: 'ec-web-ui' });
280
329
  * ```
281
330
  *
282
331
  * @since 0.32.0
283
332
  */
284
333
  static generateIncrementId(name, options = {}) {
285
- const { isExternal = false, projectRoot = process.cwd(), skipValidation = false } = options;
286
- const number = this.getNextIncrementNumber(projectRoot);
334
+ const { isExternal = false, projectRoot = process.cwd(), projectId, skipValidation = false } = options;
335
+ // PER-PROJECT COLLISION PREVENTION (v1.0.19+):
336
+ // When projectId is provided, use project-scoped number generation
337
+ // This checks the target project's FS-ID space and skips colliding numbers
338
+ const number = projectId
339
+ ? this.getNextIncrementNumberForProject(projectRoot, projectId, { isExternal })
340
+ : this.getNextIncrementNumber(projectRoot);
287
341
  const suffix = isExternal ? 'E' : '';
288
342
  const id = `${number}${suffix}-${name}`;
289
343
  // Validate by default to prevent duplicates (v0.34.0+)
@@ -1 +1 @@
1
- {"version":3,"file":"increment-utils.js","sourceRoot":"","sources":["../../../../src/core/increment/increment-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"increment-utils.js","sourceRoot":"","sources":["../../../../src/core/increment/increment-utils.ts"],"names":[],"mappings":"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"}
@@ -20,9 +20,14 @@
20
20
  * └─> StatusChangeSyncTrigger.triggerIfNeeded()
21
21
  * ├─ Is transition sync-worthy?
22
22
  * ├─ Circuit breaker open?
23
- * └─> LivingDocsSync.syncIncrement()
24
- * └─> GitHub/JIRA/ADO sync
23
+ * ├─> Auto-create issues if missing (v1.0.19+)
24
+ * ├─> LivingDocsSync.syncIncrement()
25
+ * └─> Auto-close issues on completion (v1.0.19+)
25
26
  * ```
27
+ *
28
+ * v1.0.19 ADDITIONS:
29
+ * - Auto-create external issues if config.sync.autoCreateOnIncrement = true
30
+ * - Auto-close external issues when status → completed
26
31
  */
27
32
  import { IncrementStatus } from '../types/increment-metadata.js';
28
33
  import { Logger } from '../../utils/logger.js';
@@ -80,9 +85,28 @@ export declare class StatusChangeSyncTrigger {
80
85
  * Uses setTimeout(..., 0) to ensure updateStatus() returns immediately.
81
86
  * LivingDocsSync will handle GitHub/JIRA/ADO sync based on config.
82
87
  *
88
+ * v1.0.19: Also handles auto-create if issues don't exist
89
+ *
83
90
  * @param incrementId - Increment ID
91
+ * @param newStatus - Optional new status (for completion handling)
84
92
  */
85
93
  private static spawnAsyncSync;
94
+ /**
95
+ * Auto-create external issues if:
96
+ * 1. config.sync.autoCreateOnIncrement = true
97
+ * 2. No external issue linked to this increment
98
+ *
99
+ * @since v1.0.19
100
+ */
101
+ private static autoCreateIfNeeded;
102
+ /**
103
+ * Auto-close external issues when increment status becomes COMPLETED
104
+ *
105
+ * Uses SyncCoordinator for safe closure with proper comments and labels.
106
+ *
107
+ * @since v1.0.19
108
+ */
109
+ private static autoCloseExternalIssues;
86
110
  /**
87
111
  * Get circuit breaker state (for diagnostics)
88
112
  */
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;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;;;;;;;OAOG;mBACkB,cAAc;IAsBnC;;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;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"}
@@ -20,9 +20,14 @@
20
20
  * └─> StatusChangeSyncTrigger.triggerIfNeeded()
21
21
  * ├─ Is transition sync-worthy?
22
22
  * ├─ Circuit breaker open?
23
- * └─> LivingDocsSync.syncIncrement()
24
- * └─> GitHub/JIRA/ADO sync
23
+ * ├─> Auto-create issues if missing (v1.0.19+)
24
+ * ├─> LivingDocsSync.syncIncrement()
25
+ * └─> Auto-close issues on completion (v1.0.19+)
25
26
  * ```
27
+ *
28
+ * v1.0.19 ADDITIONS:
29
+ * - Auto-create external issues if config.sync.autoCreateOnIncrement = true
30
+ * - Auto-close external issues when status → completed
26
31
  */
27
32
  import { IncrementStatus } from '../types/increment-metadata.js';
28
33
  import { SyncCircuitBreaker } from './sync-circuit-breaker.js';
@@ -63,8 +68,8 @@ export class StatusChangeSyncTrigger {
63
68
  this.logger.warn('💡 Run /sw:sync-progress manually to retry');
64
69
  return;
65
70
  }
66
- // Spawn non-blocking sync
67
- this.spawnAsyncSync(incrementId)
71
+ // Spawn non-blocking sync (pass newStatus for completion handling)
72
+ this.spawnAsyncSync(incrementId, newStatus)
68
73
  .catch(error => {
69
74
  this.circuitBreaker.recordFailure();
70
75
  this.logger.error(`❌ Auto-sync failed for ${incrementId}:`, error.message);
@@ -145,18 +150,29 @@ export class StatusChangeSyncTrigger {
145
150
  * Uses setTimeout(..., 0) to ensure updateStatus() returns immediately.
146
151
  * LivingDocsSync will handle GitHub/JIRA/ADO sync based on config.
147
152
  *
153
+ * v1.0.19: Also handles auto-create if issues don't exist
154
+ *
148
155
  * @param incrementId - Increment ID
156
+ * @param newStatus - Optional new status (for completion handling)
149
157
  */
150
- static async spawnAsyncSync(incrementId) {
158
+ static async spawnAsyncSync(incrementId, newStatus) {
151
159
  // Dynamic import to avoid circular dependency
152
160
  const { LivingDocsSync } = await import('../living-docs/living-docs-sync.js');
153
161
  // Non-blocking: Don't await
154
162
  setTimeout(async () => {
155
163
  try {
156
- const sync = new LivingDocsSync(process.cwd(), {
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, {
157
169
  logger: this.logger
158
170
  });
159
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
+ }
160
176
  this.circuitBreaker.recordSuccess();
161
177
  this.logger.log(`✅ Auto-synced increment ${incrementId} to external tools`);
162
178
  }
@@ -166,6 +182,54 @@ export class StatusChangeSyncTrigger {
166
182
  }
167
183
  }, 0);
168
184
  }
185
+ /**
186
+ * Auto-create external issues if:
187
+ * 1. config.sync.autoCreateOnIncrement = true
188
+ * 2. No external issue linked to this increment
189
+ *
190
+ * @since v1.0.19
191
+ */
192
+ static async autoCreateIfNeeded(projectRoot, incrementId) {
193
+ try {
194
+ // Dynamic import to avoid circular dependency
195
+ const { autoCreateExternalIssue } = await import('../../sync/external-issue-auto-creator.js');
196
+ const result = await autoCreateExternalIssue(projectRoot, incrementId, this.logger);
197
+ if (result.success && !result.skipped) {
198
+ this.logger.log(`📝 Auto-created ${result.provider} issue for ${incrementId}: ${result.issueNumber}`);
199
+ }
200
+ }
201
+ catch (error) {
202
+ // Non-blocking - log and continue
203
+ this.logger.warn(`⚠️ Auto-create check failed (non-blocking): ${error}`);
204
+ }
205
+ }
206
+ /**
207
+ * Auto-close external issues when increment status becomes COMPLETED
208
+ *
209
+ * Uses SyncCoordinator for safe closure with proper comments and labels.
210
+ *
211
+ * @since v1.0.19
212
+ */
213
+ static async autoCloseExternalIssues(projectRoot, incrementId) {
214
+ try {
215
+ // Dynamic import to avoid circular dependency
216
+ const { SyncCoordinator } = await import('../../sync/sync-coordinator.js');
217
+ const coordinator = new SyncCoordinator({
218
+ projectRoot,
219
+ incrementId,
220
+ logger: this.logger,
221
+ });
222
+ // This will close GitHub/JIRA/ADO issues with proper completion comments
223
+ const result = await coordinator.syncIncrementCompletion();
224
+ if (result.success) {
225
+ this.logger.log(`🎉 Auto-closed external issues for ${incrementId} (${result.userStoriesSynced} synced)`);
226
+ }
227
+ }
228
+ catch (error) {
229
+ // Non-blocking - log and continue
230
+ this.logger.warn(`⚠️ Auto-close failed (non-blocking): ${error}`);
231
+ }
232
+ }
169
233
  /**
170
234
  * Get circuit breaker state (for diagnostics)
171
235
  */
@@ -1 +1 @@
1
- {"version":3,"file":"status-change-sync-trigger.js","sourceRoot":"","sources":["../../../../src/core/increment/status-change-sync-trigger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAU,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,OAAO,uBAAuB;IAIlC;;;;;;;;;OASG;IACH,MAAM,CAAC,KAAK,CAAC,eAAe,CAC1B,WAAmB,EACnB,SAA0B,EAC1B,SAA0B;QAE1B,mFAAmF;QACnF,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAC1D,OAAO;QACT,CAAC;QACD,+EAA+E;QAC/E,kFAAkF;QAClF,4DAA4D;QAC5D,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,SAAS,KAAK,eAAe,CAAC,MAAM,EAAE,CAAC;YACzC,SAAS,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;YACxD,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,WAAW,mDAAmD,CAAC,CAAC;YAClG,CAAC;QACH,CAAC;QAED,6EAA6E;QAC7E,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,wBAAwB;QACxB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;YACvE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,0BAA0B;QAC1B,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;aAC7B,KAAK,CAAC,KAAK,CAAC,EAAE;YACb,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,WAAW,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;;;;;;;OAUG;IACK,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,WAAmB;QAC1D,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;YAElC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAC7B,OAAO,CAAC,GAAG,EAAE,EACb,uBAAuB,EACvB,WAAW,CACZ,CAAC;YAEF,iEAAiE;YACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;YACrD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1B,+CAA+C;gBAC/C,4CAA4C;gBAC5C,OAAO,KAAK,CAAC;YACf,CAAC;YAED,qCAAqC;YACrC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAErC,0DAA0D;YAC1D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,yDAAyD;YACzD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACK,MAAM,CAAC,YAAY,CACzB,SAA0B,EAC1B,SAA0B;QAE1B,MAAM,UAAU,GAAG,GAAG,SAAS,MAAM,SAAS,EAAE,CAAC;QAEjD,MAAM,WAAW,GAAG;YAClB,mBAAmB,EAAa,eAAe;YAC/C,oBAAoB,EAAY,2CAA2C;YAC3E,8BAA8B,EAAE,8CAA8C;YAC9E,oBAAoB,EAAY,gBAAgB;YAChD,kBAAkB,EAAc,uBAAuB;YACvD,iBAAiB,CAAe,eAAe;SAChD,CAAC;QAEF,OAAO,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,WAAmB;QACrD,8CAA8C;QAC9C,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAAC;QAE9E,4BAA4B;QAC5B,UAAU,CAAC,KAAK,IAAI,EAAE;YACpB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE;oBAC7C,MAAM,EAAE,IAAI,CAAC,MAAM;iBACpB,CAAC,CAAC;gBAEH,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;gBAEtC,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;gBACpC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,2BAA2B,WAAW,oBAAoB,CAAC,CAAC;YAC9E,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,4CAA4C;gBAC5C,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,EAAE,CAAC,CAAC,CAAC;IACR,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,sBAAsB;QAC3B,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,mBAAmB;QACxB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,MAAc;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;;AAzLc,sCAAc,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAC1C,8BAAM,GAAW,aAAa,CAAC"}
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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"}
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Auto-Create External Issue Hook Helper (v1.0.19)
4
+ *
5
+ * Called by post-increment-planning.sh to automatically create
6
+ * external issues (GitHub/JIRA/ADO) for new increments.
7
+ *
8
+ * Usage:
9
+ * node auto-create-external-issue.js <increment-id>
10
+ *
11
+ * Example:
12
+ * node auto-create-external-issue.js 0001-feature-name
13
+ *
14
+ * Exit codes:
15
+ * 0 - Success (or skipped - no action needed)
16
+ * 1 - Error
17
+ */
18
+ export {};
19
+ //# sourceMappingURL=auto-create-external-issue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-create-external-issue.d.ts","sourceRoot":"","sources":["../../../src/hooks/auto-create-external-issue.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG"}
@@ -0,0 +1,54 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Auto-Create External Issue Hook Helper (v1.0.19)
4
+ *
5
+ * Called by post-increment-planning.sh to automatically create
6
+ * external issues (GitHub/JIRA/ADO) for new increments.
7
+ *
8
+ * Usage:
9
+ * node auto-create-external-issue.js <increment-id>
10
+ *
11
+ * Example:
12
+ * node auto-create-external-issue.js 0001-feature-name
13
+ *
14
+ * Exit codes:
15
+ * 0 - Success (or skipped - no action needed)
16
+ * 1 - Error
17
+ */
18
+ import { autoCreateExternalIssue } from '../sync/external-issue-auto-creator.js';
19
+ import { consoleLogger } from '../utils/logger.js';
20
+ async function main() {
21
+ const incrementId = process.argv[2];
22
+ if (!incrementId) {
23
+ console.error('Usage: node auto-create-external-issue.js <increment-id>');
24
+ console.error('Example: node auto-create-external-issue.js 0001-feature-name');
25
+ process.exit(1);
26
+ }
27
+ console.log(`\n🔗 Auto-creating external issue for ${incrementId}...`);
28
+ const projectRoot = process.cwd();
29
+ const result = await autoCreateExternalIssue(projectRoot, incrementId, consoleLogger);
30
+ printResult(result);
31
+ // Exit 0 even on skip (not an error)
32
+ process.exit(result.success ? 0 : 1);
33
+ }
34
+ function printResult(result) {
35
+ if (result.skipped) {
36
+ console.log(` ℹ️ Skipped: ${result.skipReason}`);
37
+ return;
38
+ }
39
+ if (result.success) {
40
+ console.log(` ✅ Created ${result.provider} issue: ${result.issueNumber}`);
41
+ if (result.issueUrl) {
42
+ console.log(` 🔗 ${result.issueUrl}`);
43
+ }
44
+ }
45
+ else {
46
+ console.error(` ❌ Failed to create ${result.provider} issue: ${result.error}`);
47
+ }
48
+ }
49
+ // Run
50
+ main().catch((error) => {
51
+ console.error('❌ Fatal error:', error);
52
+ process.exit(1);
53
+ });
54
+ //# sourceMappingURL=auto-create-external-issue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-create-external-issue.js","sourceRoot":"","sources":["../../../src/hooks/auto-create-external-issue.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,uBAAuB,EAAoB,MAAM,wCAAwC,CAAC;AACnG,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,KAAK,UAAU,IAAI;IACjB,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEpC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC1E,OAAO,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;QAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,yCAAyC,WAAW,KAAK,CAAC,CAAC;IAEvE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;IAEtF,WAAW,CAAC,MAAM,CAAC,CAAC;IAEpB,qCAAqC;IACrC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,WAAW,CAAC,MAAwB;IAC3C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACpD,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,QAAQ,WAAW,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5E,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,yBAAyB,MAAM,CAAC,QAAQ,WAAW,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAED,MAAM;AACN,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -47,14 +47,16 @@ export declare class JiraIncrementalMapper {
47
47
  private projectRoot;
48
48
  private rfcGenerator;
49
49
  private domain;
50
+ private targetProjectId?;
50
51
  /**
51
52
  * Create a JiraIncrementalMapper
52
53
  *
53
54
  * @param client - JiraClient instance
54
55
  * @param config - Configuration with domain from ConfigManager
55
56
  * @param projectRoot - Project root path
57
+ * @param targetProjectId - Target SpecWeave project ID for per-project collision prevention (v1.0.19+)
56
58
  */
57
- constructor(client: JiraClient, config: JiraIncrementalMapperConfig, projectRoot?: string);
59
+ constructor(client: JiraClient, config: JiraIncrementalMapperConfig, projectRoot?: string, targetProjectId?: string);
58
60
  /**
59
61
  * Add a specific Jira item (Story, Bug, Task) to an existing increment
60
62
  */
@@ -1 +1 @@
1
- {"version":3,"file":"jira-incremental-mapper.d.ts","sourceRoot":"","sources":["../../../../src/integrations/jira/jira-incremental-mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAa,MAAM,kBAAkB,CAAC;AAKzD,OAAO,EAAE,MAAM,EAAiB,MAAM,uBAAuB,CAAC;AAQ9D;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAEnE;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,UAAU,GAAG,aAAa,GAAG,WAAW,CAAC;IACjD,QAAQ,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,MAAM,CAAS;IAEvB;;;;;;OAMG;gBACS,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,2BAA2B,EAAE,WAAW,GAAE,MAAsB;IAOxG;;OAEG;IACU,kBAAkB,CAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;KAAE,CAAC;IA6DtE;;OAEG;IACU,wBAAwB,CACnC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IA6EtE;;OAEG;IACI,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB;IA+BrE,OAAO,CAAC,yBAAyB;IASjC,OAAO,CAAC,uBAAuB;IA2C/B,OAAO,CAAC,iBAAiB;YAyCX,kBAAkB;YAmBlB,qBAAqB;YAoBrB,yBAAyB;YA4DzB,0BAA0B;YAkB1B,wBAAwB;IA6EtC,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,4BAA4B;IAUpC,OAAO,CAAC,gCAAgC;IAKxC,OAAO,CAAC,8BAA8B;IActC,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,0BAA0B;IAQlC,OAAO,CAAC,OAAO;YAID,uBAAuB;CAetC"}
1
+ {"version":3,"file":"jira-incremental-mapper.d.ts","sourceRoot":"","sources":["../../../../src/integrations/jira/jira-incremental-mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAa,MAAM,kBAAkB,CAAC;AAKzD,OAAO,EAAE,MAAM,EAAiB,MAAM,uBAAuB,CAAC;AAQ9D;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAEnE;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,UAAU,GAAG,aAAa,GAAG,WAAW,CAAC;IACjD,QAAQ,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,eAAe,CAAC,CAAS;IAEjC;;;;;;;OAOG;gBAED,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,2BAA2B,EACnC,WAAW,GAAE,MAAsB,EACnC,eAAe,CAAC,EAAE,MAAM;IAS1B;;OAEG;IACU,kBAAkB,CAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;KAAE,CAAC;IA6DtE;;OAEG;IACU,wBAAwB,CACnC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IA6EtE;;OAEG;IACI,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB;IA+BrE,OAAO,CAAC,yBAAyB;IASjC,OAAO,CAAC,uBAAuB;IA2C/B,OAAO,CAAC,iBAAiB;YAyCX,kBAAkB;YAmBlB,qBAAqB;YAoBrB,yBAAyB;YA4DzB,0BAA0B;YAkB1B,wBAAwB;IA6EtC,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,4BAA4B;IAUpC,OAAO,CAAC,gCAAgC;IAKxC,OAAO,CAAC,8BAA8B;IActC,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,0BAA0B;IAQlC,OAAO,CAAC,OAAO;YAID,uBAAuB;CAetC"}