specweave 0.32.3 → 0.32.5

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 (62) hide show
  1. package/CLAUDE.md +12 -9
  2. package/dist/src/cli/commands/init-multiproject.js +1 -1
  3. package/dist/src/cli/commands/init-multiproject.js.map +1 -1
  4. package/dist/src/cli/commands/migrate-to-multiproject.js +2 -2
  5. package/dist/src/cli/commands/migrate-to-multiproject.js.map +1 -1
  6. package/dist/src/core/living-docs/cross-project-sync.d.ts +97 -0
  7. package/dist/src/core/living-docs/cross-project-sync.d.ts.map +1 -0
  8. package/dist/src/core/living-docs/cross-project-sync.js +135 -0
  9. package/dist/src/core/living-docs/cross-project-sync.js.map +1 -0
  10. package/dist/src/core/living-docs/external-sync-orchestrator.d.ts +106 -0
  11. package/dist/src/core/living-docs/external-sync-orchestrator.d.ts.map +1 -0
  12. package/dist/src/core/living-docs/external-sync-orchestrator.js +146 -0
  13. package/dist/src/core/living-docs/external-sync-orchestrator.js.map +1 -0
  14. package/dist/src/core/living-docs/living-docs-sync.d.ts +1 -0
  15. package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -1
  16. package/dist/src/core/living-docs/living-docs-sync.js +77 -2
  17. package/dist/src/core/living-docs/living-docs-sync.js.map +1 -1
  18. package/dist/src/core/living-docs/sync-helpers/generators.d.ts +8 -1
  19. package/dist/src/core/living-docs/sync-helpers/generators.d.ts.map +1 -1
  20. package/dist/src/core/living-docs/sync-helpers/generators.js +18 -1
  21. package/dist/src/core/living-docs/sync-helpers/generators.js.map +1 -1
  22. package/dist/src/core/living-docs/sync-helpers/index.d.ts +1 -1
  23. package/dist/src/core/living-docs/sync-helpers/index.d.ts.map +1 -1
  24. package/dist/src/core/living-docs/sync-helpers/index.js.map +1 -1
  25. package/dist/src/core/living-docs/sync-helpers/parsers.d.ts +3 -1
  26. package/dist/src/core/living-docs/sync-helpers/parsers.d.ts.map +1 -1
  27. package/dist/src/core/living-docs/sync-helpers/parsers.js +24 -2
  28. package/dist/src/core/living-docs/sync-helpers/parsers.js.map +1 -1
  29. package/dist/src/core/living-docs/types.d.ts +6 -0
  30. package/dist/src/core/living-docs/types.d.ts.map +1 -1
  31. package/dist/src/core/living-docs/validators/index.d.ts +7 -0
  32. package/dist/src/core/living-docs/validators/index.d.ts.map +1 -0
  33. package/dist/src/core/living-docs/validators/index.js +7 -0
  34. package/dist/src/core/living-docs/validators/index.js.map +1 -0
  35. package/dist/src/core/living-docs/validators/project-validator.d.ts +92 -0
  36. package/dist/src/core/living-docs/validators/project-validator.d.ts.map +1 -0
  37. package/dist/src/core/living-docs/validators/project-validator.js +142 -0
  38. package/dist/src/core/living-docs/validators/project-validator.js.map +1 -0
  39. package/dist/src/core/project/project-manager.d.ts.map +1 -1
  40. package/dist/src/core/project/project-manager.js +19 -17
  41. package/dist/src/core/project/project-manager.js.map +1 -1
  42. package/dist/src/core/types/config.d.ts +4 -2
  43. package/dist/src/core/types/config.d.ts.map +1 -1
  44. package/dist/src/core/types/config.js.map +1 -1
  45. package/dist/src/core/types/increment-metadata.d.ts +34 -0
  46. package/dist/src/core/types/increment-metadata.d.ts.map +1 -1
  47. package/dist/src/utils/cross-cutting-detector.d.ts +66 -0
  48. package/dist/src/utils/cross-cutting-detector.d.ts.map +1 -0
  49. package/dist/src/utils/cross-cutting-detector.js +179 -0
  50. package/dist/src/utils/cross-cutting-detector.js.map +1 -0
  51. package/dist/src/utils/project-detection.d.ts +12 -8
  52. package/dist/src/utils/project-detection.d.ts.map +1 -1
  53. package/dist/src/utils/project-detection.js +13 -19
  54. package/dist/src/utils/project-detection.js.map +1 -1
  55. package/package.json +1 -1
  56. package/plugins/specweave/commands/specweave-status.md +64 -0
  57. package/plugins/specweave/hooks/hooks.json +1 -1
  58. package/plugins/specweave/hooks/spec-project-validator.sh +2 -1
  59. package/plugins/specweave/lib/vendor/core/types/increment-metadata.d.ts +34 -0
  60. package/plugins/specweave/skills/increment-planner/SKILL.md +77 -2
  61. package/plugins/specweave/skills/spec-generator/SKILL.md +78 -7
  62. package/plugins/specweave/commands/specweave-switch-project.md +0 -168
package/CLAUDE.md CHANGED
@@ -19,26 +19,29 @@ For **contributors to SpecWeave itself** (not users).
19
19
  # OR close completed increments: /specweave:done XXXX
20
20
  ```
21
21
 
22
- ### 1b. Max 8 Tasks Per Increment (HARD LIMIT!)
22
+ ### 1b. Max 25 Tasks Per Increment (SOFT LIMIT)
23
23
 
24
- **>8 tasks = context explosion = CRASH**
24
+ **>25 tasks = consider splitting for maintainability**
25
25
 
26
26
  ```bash
27
27
  # Check task count before starting work:
28
28
  grep -c "^### T-" .specweave/increments/*/tasks.md
29
29
 
30
- # If >8 tasks: SPLIT the increment
31
- # Pattern: Feature → Increment-Part1 (T-001 to T-004) + Increment-Part2 (T-005 to T-008)
30
+ # If >25 tasks: Consider splitting by phase
31
+ # Pattern: Feature → Phase1 (T-001 to T-008) + Phase2 (T-009 to T-016) + ...
32
32
  ```
33
33
 
34
- **Splitting large features:**
34
+ **When to split (guidelines, not hard rules):**
35
+ - Tasks span unrelated subsystems
36
+ - Different teams would own different phases
37
+ - Review cycles would benefit from smaller PRs
38
+
39
+ **Phase-by-phase execution** (recommended for 15-25 tasks):
35
40
  ```
36
- 0045-auth-system/ 0045-auth-system-core/ (T-001 to T-004)
37
- → 0046-auth-system-ui/ (T-005 to T-008)
38
- → 0047-auth-system-tests/ (T-009 to T-012)
41
+ Execute Phase 1 validate continue to Phase 2 → ...
39
42
  ```
40
43
 
41
- **Token budget per increment**: ~50k tokens max (tasks + spec + plan + context)
44
+ **Token budget per increment**: ~80k tokens max (tasks + spec + plan + context)
42
45
 
43
46
  ### 2. Source of Truth
44
47
 
@@ -45,10 +45,10 @@ export async function initMultiProject(projectRoot) {
45
45
  return;
46
46
  }
47
47
  // 3. Enable multi-project mode
48
+ // NOTE (v0.33.0): activeProject REMOVED - per-US project targeting replaces it
48
49
  if (!config.multiProject) {
49
50
  config.multiProject = {
50
51
  enabled: true,
51
- activeProject: projectId,
52
52
  projects: {
53
53
  [projectId]: {
54
54
  id: projectId,
@@ -1 +1 @@
1
- {"version":3,"file":"init-multiproject.js","sourceRoot":"","sources":["../../../../src/cli/commands/init-multiproject.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init-multiproject.js","sourceRoot":"","sources":["../../../../src/cli/commands/init-multiproject.ts"],"names":[],"mappings":"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"}
@@ -42,10 +42,10 @@ export async function autoMigrateSingleToMulti(projectRoot) {
42
42
  if (await fs.pathExists(projectPath)) {
43
43
  console.log(`✅ Already using multi-project structure (projects/${projectId}/ exists)`);
44
44
  // Update config to reflect reality
45
+ // NOTE (v0.33.0): activeProject REMOVED - per-US project targeting replaces it
45
46
  if (!config.multiProject) {
46
47
  config.multiProject = {
47
48
  enabled: false,
48
- activeProject: projectId,
49
49
  projects: {
50
50
  [projectId]: {
51
51
  id: projectId,
@@ -79,10 +79,10 @@ export async function autoMigrateSingleToMulti(projectRoot) {
79
79
  // 3. Create project structure with auto-detected ID
80
80
  const projectManager = new ProjectManager(projectRoot);
81
81
  // Ensure multiProject section exists
82
+ // NOTE (v0.33.0): activeProject REMOVED - per-US project targeting replaces it
82
83
  if (!config.multiProject) {
83
84
  config.multiProject = {
84
85
  enabled: false, // Still single project, just using new structure
85
- activeProject: projectId,
86
86
  projects: {
87
87
  [projectId]: {
88
88
  id: projectId,
@@ -1 +1 @@
1
- {"version":3,"file":"migrate-to-multiproject.js","sourceRoot":"","sources":["../../../../src/cli/commands/migrate-to-multiproject.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate-to-multiproject.js","sourceRoot":"","sources":["../../../../src/cli/commands/migrate-to-multiproject.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAiB9F;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,WAAmB;IAEnB,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;IAEjE,MAAM,MAAM,GAAoB;QAC9B,OAAO,EAAE,KAAK;QACd,kBAAkB,EAAE,CAAC;QACrB,aAAa,EAAE,KAAK;QACpB,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,EAAE;KACb,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;QAEpC,iEAAiE;QACjE,MAAM,SAAS,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,wBAAwB,SAAS,EAAE,CAAC,CAAC;QAEjD,4BAA4B;QAC5B,IAAI,MAAM,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;YACjE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YACtB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,2FAA2F;QAC3F,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAC3B,WAAW,EACX,qCAAqC,SAAS,EAAE,CACjD,CAAC;QAEF,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,qDAAqD,SAAS,WAAW,CAAC,CAAC;YAEvF,mCAAmC;YACnC,+EAA+E;YAC/E,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;gBACzB,MAAM,CAAC,YAAY,GAAG;oBACpB,OAAO,EAAE,KAAK;oBACd,QAAQ,EAAE;wBACR,CAAC,SAAS,CAAC,EAAE;4BACX,EAAE,EAAE,SAAS;4BACb,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,iBAAiB,CAAC,SAAS,CAAC;4BAC1D,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,IAAI,GAAG,iBAAiB,CAAC,SAAS,CAAC,UAAU;4BACrF,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,IAAI,EAAE;4BAC1C,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,kBAAkB;yBACjD;qBACF;iBACF,CAAC;gBACF,MAAM,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjC,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;YACtE,CAAC;YAED,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YACtB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,2BAA2B;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,WAAW,EACX,4BAA4B,IAAI,CAAC,GAAG,EAAE,OAAO,CAC9C,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACpE,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;YAC5B,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7G,CAAC;QAED,uCAAuC;QACvC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAC5B,WAAW,EACX,gCAAgC,CACjC,CAAC;QAEF,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAEtD,oDAAoD;QACpD,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,WAAW,CAAC,CAAC;QAEvD,qCAAqC;QACrC,+EAA+E;QAC/E,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YACzB,MAAM,CAAC,YAAY,GAAG;gBACpB,OAAO,EAAE,KAAK,EAAG,iDAAiD;gBAClE,QAAQ,EAAE;oBACR,CAAC,SAAS,CAAC,EAAE;wBACX,EAAE,EAAE,SAAS;wBACb,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,iBAAiB,CAAC,SAAS,CAAC;wBAC1D,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,IAAI,GAAG,iBAAiB,CAAC,SAAS,CAAC,UAAU;wBACrF,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,IAAI,EAAE;wBAC1C,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,kBAAkB;qBACjD;iBACF;aACF,CAAC;QACJ,CAAC;QAED,wEAAwE;QACxE,MAAM,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEjC,mBAAmB;QACnB,MAAM,cAAc,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,uBAAuB,SAAS,aAAa,CAAC,CAAC;QAE3D,qCAAqC;QACrC,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAC5B,WAAW,EACX,kCAAkC,SAAS,EAAE,CAC9C,CAAC;YAEF,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxE,IAAI,aAAa,GAAG,CAAC,CAAC;gBAEtB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;wBACjD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;wBACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;wBAErD,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;wBACpC,aAAa,EAAE,CAAC;oBAClB,CAAC;gBACH,CAAC;gBAED,MAAM,CAAC,kBAAkB,GAAG,aAAa,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,eAAe,aAAa,qBAAqB,SAAS,GAAG,CAAC,CAAC;gBAE3E,yCAAyC;gBACzC,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAClC,WAAW,EACX,oCAAoC,CACrC,CAAC;gBAEF,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,kBAAkB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrE,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;YAC9D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3G,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,iDAAiD,SAAS,aAAa,CAAC,CAAC;QACrF,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;QAElF,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;QAC5C,OAAO,MAAM,CAAC;IAEhB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClG,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,WAAmB;IACzD,yBAAyB;IACzB,MAAM,SAAS,GAAG,uBAAuB,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzE,wCAAwC;IACxC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAC3B,WAAW,EACX,qCAAqC,SAAS,EAAE,CACjD,CAAC;IAEF,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,CAAC,mBAAmB;IACnC,CAAC;IAED,6BAA6B;IAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAC5B,WAAW,EACX,gCAAgC,CACjC,CAAC;IAEF,OAAO,MAAM,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,WAAmB,EACnB,UAAkB;IAElB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAE9C,IAAI,CAAC;QACH,6BAA6B;QAC7B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC;QACpE,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAE7C,wCAAwC;QACxC,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAClC,WAAW,EACX,2CAA2C,CAC5C,CAAC;QAEF,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC5C,MAAM,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAChD,CAAC;QAED,+BAA+B;QAC/B,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAClC,WAAW,EACX,oCAAoC,CACrC,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CACzB,WAAW,EACX,gCAAgC,CACjC,CAAC;QAEF,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC5C,MAAM,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9F,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Cross-Project Sync Orchestrator
3
+ *
4
+ * Handles syncing increments that span multiple projects.
5
+ * Groups user stories by their target project and syncs each group
6
+ * to the appropriate project folder in living docs.
7
+ *
8
+ * @module core/living-docs/cross-project-sync
9
+ * @since v0.33.0
10
+ */
11
+ import type { UserStoryData } from './types.js';
12
+ import { Logger } from '../../utils/logger.js';
13
+ /**
14
+ * Result of syncing to a single project
15
+ */
16
+ export interface ProjectSyncResult {
17
+ projectId: string;
18
+ success: boolean;
19
+ userStories: string[];
20
+ filesCreated: string[];
21
+ filesUpdated: string[];
22
+ errors: string[];
23
+ }
24
+ /**
25
+ * Result of syncing across multiple projects
26
+ */
27
+ export interface MultiProjectSyncResult {
28
+ success: boolean;
29
+ projects: ProjectSyncResult[];
30
+ crossReferences: string[];
31
+ totalUserStories: number;
32
+ projectCount: number;
33
+ }
34
+ /**
35
+ * Options for cross-project sync
36
+ */
37
+ export interface CrossProjectSyncOptions {
38
+ dryRun?: boolean;
39
+ force?: boolean;
40
+ generateCrossReferences?: boolean;
41
+ }
42
+ /**
43
+ * Cross-Project Sync Orchestrator
44
+ */
45
+ export declare class CrossProjectSync {
46
+ private projectRoot;
47
+ private logger;
48
+ constructor(projectRoot: string, options?: {
49
+ logger?: Logger;
50
+ });
51
+ /**
52
+ * Group user stories by their target project
53
+ *
54
+ * @param userStories - User stories to group
55
+ * @param defaultProject - Default project for USs without explicit project
56
+ * @returns Map of project ID to user stories
57
+ */
58
+ groupByProject(userStories: UserStoryData[], defaultProject: string): Map<string, UserStoryData[]>;
59
+ /**
60
+ * Check if an increment is cross-project (spans multiple projects)
61
+ */
62
+ isCrossProject(userStories: UserStoryData[], defaultProject: string): boolean;
63
+ /**
64
+ * Get the specs folder path for a project
65
+ */
66
+ getProjectSpecsPath(projectId: string): string;
67
+ /**
68
+ * Get the feature folder path for a project and feature
69
+ */
70
+ getFeaturePath(projectId: string, featureId: string): string;
71
+ /**
72
+ * Ensure project specs folder exists
73
+ */
74
+ ensureProjectFolder(projectId: string): Promise<string>;
75
+ /**
76
+ * Ensure feature folder exists within a project
77
+ */
78
+ ensureFeatureFolder(projectId: string, featureId: string): Promise<string>;
79
+ /**
80
+ * Generate cross-references section for FEATURE.md
81
+ *
82
+ * @param featureId - The feature ID (e.g., "FS-125")
83
+ * @param allProjects - All projects this feature spans
84
+ * @param currentProject - The current project being generated
85
+ * @returns Markdown content for "Related Projects" section
86
+ */
87
+ generateCrossReferences(featureId: string, allProjects: string[], currentProject: string): string;
88
+ /**
89
+ * Generate cross-reference frontmatter for US files
90
+ */
91
+ generateRelatedProjectsFrontmatter(allProjects: string[], currentProject: string): string;
92
+ /**
93
+ * Log cross-project sync summary
94
+ */
95
+ logSyncSummary(result: MultiProjectSyncResult): void;
96
+ }
97
+ //# sourceMappingURL=cross-project-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-project-sync.d.ts","sourceRoot":"","sources":["../../../../src/core/living-docs/cross-project-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAiB,MAAM,uBAAuB,CAAC;AAG9D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAS;gBAEX,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO;IAKlE;;;;;;OAMG;IACH,cAAc,CACZ,WAAW,EAAE,aAAa,EAAE,EAC5B,cAAc,EAAE,MAAM,GACrB,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC;IAe/B;;OAEG;IACH,cAAc,CACZ,WAAW,EAAE,aAAa,EAAE,EAC5B,cAAc,EAAE,MAAM,GACrB,OAAO;IAKV;;OAEG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAQ9C;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAO5D;;OAEG;IACG,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM7D;;OAEG;IACG,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMhF;;;;;;;OAOG;IACH,uBAAuB,CACrB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EAAE,EACrB,cAAc,EAAE,MAAM,GACrB,MAAM;IAyBT;;OAEG;IACH,kCAAkC,CAChC,WAAW,EAAE,MAAM,EAAE,EACrB,cAAc,EAAE,MAAM,GACrB,MAAM;IAUT;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI;CAqBrD"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Cross-Project Sync Orchestrator
3
+ *
4
+ * Handles syncing increments that span multiple projects.
5
+ * Groups user stories by their target project and syncs each group
6
+ * to the appropriate project folder in living docs.
7
+ *
8
+ * @module core/living-docs/cross-project-sync
9
+ * @since v0.33.0
10
+ */
11
+ import * as path from 'node:path';
12
+ import { consoleLogger } from '../../utils/logger.js';
13
+ import { ensureDir } from '../../utils/fs-native.js';
14
+ /**
15
+ * Cross-Project Sync Orchestrator
16
+ */
17
+ export class CrossProjectSync {
18
+ constructor(projectRoot, options = {}) {
19
+ this.projectRoot = projectRoot;
20
+ this.logger = options.logger ?? consoleLogger;
21
+ }
22
+ /**
23
+ * Group user stories by their target project
24
+ *
25
+ * @param userStories - User stories to group
26
+ * @param defaultProject - Default project for USs without explicit project
27
+ * @returns Map of project ID to user stories
28
+ */
29
+ groupByProject(userStories, defaultProject) {
30
+ const groups = new Map();
31
+ for (const us of userStories) {
32
+ const project = us.project || defaultProject;
33
+ if (!groups.has(project)) {
34
+ groups.set(project, []);
35
+ }
36
+ groups.get(project).push(us);
37
+ }
38
+ return groups;
39
+ }
40
+ /**
41
+ * Check if an increment is cross-project (spans multiple projects)
42
+ */
43
+ isCrossProject(userStories, defaultProject) {
44
+ const groups = this.groupByProject(userStories, defaultProject);
45
+ return groups.size > 1;
46
+ }
47
+ /**
48
+ * Get the specs folder path for a project
49
+ */
50
+ getProjectSpecsPath(projectId) {
51
+ return path.join(this.projectRoot, '.specweave/docs/internal/specs', projectId);
52
+ }
53
+ /**
54
+ * Get the feature folder path for a project and feature
55
+ */
56
+ getFeaturePath(projectId, featureId) {
57
+ return path.join(this.getProjectSpecsPath(projectId), featureId);
58
+ }
59
+ /**
60
+ * Ensure project specs folder exists
61
+ */
62
+ async ensureProjectFolder(projectId) {
63
+ const folderPath = this.getProjectSpecsPath(projectId);
64
+ await ensureDir(folderPath);
65
+ return folderPath;
66
+ }
67
+ /**
68
+ * Ensure feature folder exists within a project
69
+ */
70
+ async ensureFeatureFolder(projectId, featureId) {
71
+ const folderPath = this.getFeaturePath(projectId, featureId);
72
+ await ensureDir(folderPath);
73
+ return folderPath;
74
+ }
75
+ /**
76
+ * Generate cross-references section for FEATURE.md
77
+ *
78
+ * @param featureId - The feature ID (e.g., "FS-125")
79
+ * @param allProjects - All projects this feature spans
80
+ * @param currentProject - The current project being generated
81
+ * @returns Markdown content for "Related Projects" section
82
+ */
83
+ generateCrossReferences(featureId, allProjects, currentProject) {
84
+ const otherProjects = allProjects.filter(p => p !== currentProject);
85
+ if (otherProjects.length === 0) {
86
+ return '';
87
+ }
88
+ const lines = [
89
+ '',
90
+ '## Related Projects',
91
+ '',
92
+ 'This feature spans multiple projects:',
93
+ ''
94
+ ];
95
+ for (const projectId of otherProjects) {
96
+ // Relative path from current project to other project
97
+ const relativePath = `../../${projectId}/${featureId}/`;
98
+ lines.push(`- [${projectId}](${relativePath})`);
99
+ }
100
+ lines.push('');
101
+ return lines.join('\n');
102
+ }
103
+ /**
104
+ * Generate cross-reference frontmatter for US files
105
+ */
106
+ generateRelatedProjectsFrontmatter(allProjects, currentProject) {
107
+ const otherProjects = allProjects.filter(p => p !== currentProject);
108
+ if (otherProjects.length === 0) {
109
+ return '';
110
+ }
111
+ return `related_projects: [${otherProjects.join(', ')}]`;
112
+ }
113
+ /**
114
+ * Log cross-project sync summary
115
+ */
116
+ logSyncSummary(result) {
117
+ this.logger.log('');
118
+ this.logger.log('📦 Cross-Project Sync Summary:');
119
+ this.logger.log(` Projects: ${result.projectCount}`);
120
+ this.logger.log(` User Stories: ${result.totalUserStories}`);
121
+ for (const project of result.projects) {
122
+ const status = project.success ? '✅' : '❌';
123
+ this.logger.log(` ${status} ${project.projectId}: ${project.userStories.length} USs`);
124
+ if (project.errors.length > 0) {
125
+ for (const error of project.errors) {
126
+ this.logger.warn(` ⚠️ ${error}`);
127
+ }
128
+ }
129
+ }
130
+ if (result.crossReferences.length > 0) {
131
+ this.logger.log(` 🔗 Cross-references: ${result.crossReferences.length} links created`);
132
+ }
133
+ }
134
+ }
135
+ //# sourceMappingURL=cross-project-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-project-sync.js","sourceRoot":"","sources":["../../../../src/core/living-docs/cross-project-sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * External Sync Orchestrator
3
+ *
4
+ * Coordinates syncing user stories to multiple external tools based on
5
+ * per-US project targeting. Groups USs by their target project and
6
+ * syncs each group to the appropriate external system.
7
+ *
8
+ * @module core/living-docs/external-sync-orchestrator
9
+ * @since v0.33.0
10
+ */
11
+ import type { UserStoryData } from './types.js';
12
+ import type { USExternalRefsMap } from '../types/increment-metadata.js';
13
+ import { Logger } from '../../utils/logger.js';
14
+ /**
15
+ * Project mapping configuration
16
+ */
17
+ export interface ProjectMapping {
18
+ github?: {
19
+ owner: string;
20
+ repo: string;
21
+ };
22
+ jira?: {
23
+ project: string;
24
+ board?: string;
25
+ };
26
+ ado?: {
27
+ project: string;
28
+ areaPath?: string;
29
+ };
30
+ }
31
+ /**
32
+ * Result of syncing a single US to an external tool
33
+ */
34
+ export interface USSyncResult {
35
+ usId: string;
36
+ provider: 'github' | 'jira' | 'ado';
37
+ success: boolean;
38
+ issueNumber?: number | string;
39
+ url?: string;
40
+ error?: string;
41
+ }
42
+ /**
43
+ * Result of syncing all USs in a project group
44
+ */
45
+ export interface ProjectSyncResult {
46
+ projectId: string;
47
+ provider: 'github' | 'jira' | 'ado';
48
+ success: boolean;
49
+ synced: USSyncResult[];
50
+ errors: string[];
51
+ }
52
+ /**
53
+ * Result of complete cross-project sync
54
+ */
55
+ export interface CrossProjectExternalSyncResult {
56
+ success: boolean;
57
+ projects: ProjectSyncResult[];
58
+ externalRefs: USExternalRefsMap;
59
+ summary: {
60
+ totalUSs: number;
61
+ syncedUSs: number;
62
+ failedUSs: number;
63
+ projectCount: number;
64
+ };
65
+ }
66
+ /**
67
+ * External Sync Orchestrator
68
+ */
69
+ export declare class ExternalSyncOrchestrator {
70
+ private projectRoot;
71
+ private logger;
72
+ private projectMappings;
73
+ constructor(projectRoot: string, options?: {
74
+ logger?: Logger;
75
+ });
76
+ /**
77
+ * Load project mappings from config
78
+ */
79
+ loadProjectMappings(): Promise<void>;
80
+ /**
81
+ * Get project mapping for a project ID
82
+ */
83
+ getProjectMapping(projectId: string): ProjectMapping | undefined;
84
+ /**
85
+ * Group user stories by their target project
86
+ */
87
+ groupUSsByProject(userStories: UserStoryData[], defaultProject: string): Map<string, UserStoryData[]>;
88
+ /**
89
+ * Get preferred provider for a US
90
+ * Priority: US.externalProvider > first available in mapping
91
+ */
92
+ getPreferredProvider(us: UserStoryData, mapping: ProjectMapping): 'github' | 'jira' | 'ado' | null;
93
+ /**
94
+ * Build external refs map from sync results
95
+ */
96
+ buildExternalRefsMap(results: ProjectSyncResult[]): USExternalRefsMap;
97
+ /**
98
+ * Log sync summary
99
+ */
100
+ logSyncSummary(result: CrossProjectExternalSyncResult): void;
101
+ /**
102
+ * Create placeholder sync result for dry-run or when sync is skipped
103
+ */
104
+ createPlaceholderResult(userStories: UserStoryData[], defaultProject: string): CrossProjectExternalSyncResult;
105
+ }
106
+ //# sourceMappingURL=external-sync-orchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-sync-orchestrator.d.ts","sourceRoot":"","sources":["../../../../src/core/living-docs/external-sync-orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAiB,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACvF,OAAO,EAAE,MAAM,EAAiB,MAAM,uBAAuB,CAAC;AAG9D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,IAAI,CAAC,EAAE;QACL,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,GAAG,CAAC,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,YAAY,EAAE,iBAAiB,CAAC;IAChC,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,eAAe,CAAsC;gBAEjD,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO;IAKlE;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAa1C;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAIhE;;OAEG;IACH,iBAAiB,CACf,WAAW,EAAE,aAAa,EAAE,EAC5B,cAAc,EAAE,MAAM,GACrB,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC;IAe/B;;;OAGG;IACH,oBAAoB,CAClB,EAAE,EAAE,aAAa,EACjB,OAAO,EAAE,cAAc,GACtB,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI;IAcnC;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,iBAAiB;IAwBrE;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,8BAA8B,GAAG,IAAI;IAkB5D;;OAEG;IACH,uBAAuB,CACrB,WAAW,EAAE,aAAa,EAAE,EAC5B,cAAc,EAAE,MAAM,GACrB,8BAA8B;CA0BlC"}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * External Sync Orchestrator
3
+ *
4
+ * Coordinates syncing user stories to multiple external tools based on
5
+ * per-US project targeting. Groups USs by their target project and
6
+ * syncs each group to the appropriate external system.
7
+ *
8
+ * @module core/living-docs/external-sync-orchestrator
9
+ * @since v0.33.0
10
+ */
11
+ import * as path from 'node:path';
12
+ import { consoleLogger } from '../../utils/logger.js';
13
+ import { pathExists, readJson } from './sync-helpers/file-utils.js';
14
+ /**
15
+ * External Sync Orchestrator
16
+ */
17
+ export class ExternalSyncOrchestrator {
18
+ constructor(projectRoot, options = {}) {
19
+ this.projectMappings = {};
20
+ this.projectRoot = projectRoot;
21
+ this.logger = options.logger ?? consoleLogger;
22
+ }
23
+ /**
24
+ * Load project mappings from config
25
+ */
26
+ async loadProjectMappings() {
27
+ const configPath = path.join(this.projectRoot, '.specweave/config.json');
28
+ if (await pathExists(configPath)) {
29
+ try {
30
+ const config = await readJson(configPath);
31
+ this.projectMappings = config.projectMappings || {};
32
+ }
33
+ catch (error) {
34
+ this.logger.warn('Failed to load projectMappings from config');
35
+ }
36
+ }
37
+ }
38
+ /**
39
+ * Get project mapping for a project ID
40
+ */
41
+ getProjectMapping(projectId) {
42
+ return this.projectMappings[projectId];
43
+ }
44
+ /**
45
+ * Group user stories by their target project
46
+ */
47
+ groupUSsByProject(userStories, defaultProject) {
48
+ const groups = new Map();
49
+ for (const us of userStories) {
50
+ const project = us.project || defaultProject;
51
+ if (!groups.has(project)) {
52
+ groups.set(project, []);
53
+ }
54
+ groups.get(project).push(us);
55
+ }
56
+ return groups;
57
+ }
58
+ /**
59
+ * Get preferred provider for a US
60
+ * Priority: US.externalProvider > first available in mapping
61
+ */
62
+ getPreferredProvider(us, mapping) {
63
+ // Explicit preference in US
64
+ if (us.externalProvider && mapping[us.externalProvider]) {
65
+ return us.externalProvider;
66
+ }
67
+ // Fall back to first available in mapping
68
+ if (mapping.github)
69
+ return 'github';
70
+ if (mapping.jira)
71
+ return 'jira';
72
+ if (mapping.ado)
73
+ return 'ado';
74
+ return null;
75
+ }
76
+ /**
77
+ * Build external refs map from sync results
78
+ */
79
+ buildExternalRefsMap(results) {
80
+ const refsMap = {};
81
+ for (const projectResult of results) {
82
+ for (const usResult of projectResult.synced) {
83
+ if (!usResult.success)
84
+ continue;
85
+ if (!refsMap[usResult.usId]) {
86
+ refsMap[usResult.usId] = {};
87
+ }
88
+ refsMap[usResult.usId][usResult.provider] = {
89
+ provider: usResult.provider,
90
+ issueNumber: usResult.issueNumber,
91
+ url: usResult.url,
92
+ targetProject: projectResult.projectId,
93
+ lastSynced: new Date().toISOString()
94
+ };
95
+ }
96
+ }
97
+ return refsMap;
98
+ }
99
+ /**
100
+ * Log sync summary
101
+ */
102
+ logSyncSummary(result) {
103
+ this.logger.log('');
104
+ this.logger.log('🔗 Cross-Project External Sync Summary:');
105
+ this.logger.log(` Projects: ${result.summary.projectCount}`);
106
+ this.logger.log(` User Stories: ${result.summary.syncedUSs}/${result.summary.totalUSs} synced`);
107
+ for (const project of result.projects) {
108
+ const status = project.success ? '✅' : '❌';
109
+ this.logger.log(` ${status} ${project.projectId} (${project.provider}): ${project.synced.length} USs`);
110
+ if (project.errors.length > 0) {
111
+ for (const error of project.errors) {
112
+ this.logger.warn(` ⚠️ ${error}`);
113
+ }
114
+ }
115
+ }
116
+ }
117
+ /**
118
+ * Create placeholder sync result for dry-run or when sync is skipped
119
+ */
120
+ createPlaceholderResult(userStories, defaultProject) {
121
+ const groups = this.groupUSsByProject(userStories, defaultProject);
122
+ return {
123
+ success: true,
124
+ projects: [...groups.entries()].map(([projectId, stories]) => ({
125
+ projectId,
126
+ provider: 'github',
127
+ success: true,
128
+ synced: stories.map(us => ({
129
+ usId: us.id,
130
+ provider: 'github',
131
+ success: false,
132
+ error: 'Sync skipped (dry-run or SKIP_EXTERNAL_SYNC)'
133
+ })),
134
+ errors: []
135
+ })),
136
+ externalRefs: {},
137
+ summary: {
138
+ totalUSs: userStories.length,
139
+ syncedUSs: 0,
140
+ failedUSs: 0,
141
+ projectCount: groups.size
142
+ }
143
+ };
144
+ }
145
+ }
146
+ //# sourceMappingURL=external-sync-orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-sync-orchestrator.js","sourceRoot":"","sources":["../../../../src/core/living-docs/external-sync-orchestrator.ts"],"names":[],"mappings":"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"}