specweave 0.32.3 → 0.32.6

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 (102) hide show
  1. package/CLAUDE.md +12 -9
  2. package/bin/specweave.js +78 -0
  3. package/dist/src/cli/commands/docs.d.ts +45 -0
  4. package/dist/src/cli/commands/docs.d.ts.map +1 -0
  5. package/dist/src/cli/commands/docs.js +307 -0
  6. package/dist/src/cli/commands/docs.js.map +1 -0
  7. package/dist/src/cli/commands/init-multiproject.js +1 -1
  8. package/dist/src/cli/commands/init-multiproject.js.map +1 -1
  9. package/dist/src/cli/commands/migrate-to-multiproject.js +2 -2
  10. package/dist/src/cli/commands/migrate-to-multiproject.js.map +1 -1
  11. package/dist/src/cli/helpers/init/repository-setup.d.ts +14 -2
  12. package/dist/src/cli/helpers/init/repository-setup.d.ts.map +1 -1
  13. package/dist/src/cli/helpers/init/repository-setup.js +292 -188
  14. package/dist/src/cli/helpers/init/repository-setup.js.map +1 -1
  15. package/dist/src/cli/helpers/issue-tracker/index.d.ts.map +1 -1
  16. package/dist/src/cli/helpers/issue-tracker/index.js +9 -3
  17. package/dist/src/cli/helpers/issue-tracker/index.js.map +1 -1
  18. package/dist/src/cli/helpers/issue-tracker/jira.d.ts +18 -2
  19. package/dist/src/cli/helpers/issue-tracker/jira.d.ts.map +1 -1
  20. package/dist/src/cli/helpers/issue-tracker/jira.js +325 -25
  21. package/dist/src/cli/helpers/issue-tracker/jira.js.map +1 -1
  22. package/dist/src/cli/helpers/issue-tracker/sync-config-writer.d.ts.map +1 -1
  23. package/dist/src/cli/helpers/issue-tracker/sync-config-writer.js +61 -1
  24. package/dist/src/cli/helpers/issue-tracker/sync-config-writer.js.map +1 -1
  25. package/dist/src/cli/helpers/issue-tracker/types.d.ts +25 -0
  26. package/dist/src/cli/helpers/issue-tracker/types.d.ts.map +1 -1
  27. package/dist/src/cli/helpers/issue-tracker/types.js.map +1 -1
  28. package/dist/src/core/living-docs/cross-project-sync.d.ts +97 -0
  29. package/dist/src/core/living-docs/cross-project-sync.d.ts.map +1 -0
  30. package/dist/src/core/living-docs/cross-project-sync.js +135 -0
  31. package/dist/src/core/living-docs/cross-project-sync.js.map +1 -0
  32. package/dist/src/core/living-docs/external-sync-orchestrator.d.ts +106 -0
  33. package/dist/src/core/living-docs/external-sync-orchestrator.d.ts.map +1 -0
  34. package/dist/src/core/living-docs/external-sync-orchestrator.js +146 -0
  35. package/dist/src/core/living-docs/external-sync-orchestrator.js.map +1 -0
  36. package/dist/src/core/living-docs/intelligent-analyzer/organization-synthesizer.js +1 -1
  37. package/dist/src/core/living-docs/living-docs-sync.d.ts +1 -0
  38. package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -1
  39. package/dist/src/core/living-docs/living-docs-sync.js +77 -2
  40. package/dist/src/core/living-docs/living-docs-sync.js.map +1 -1
  41. package/dist/src/core/living-docs/sync-helpers/generators.d.ts +8 -1
  42. package/dist/src/core/living-docs/sync-helpers/generators.d.ts.map +1 -1
  43. package/dist/src/core/living-docs/sync-helpers/generators.js +18 -1
  44. package/dist/src/core/living-docs/sync-helpers/generators.js.map +1 -1
  45. package/dist/src/core/living-docs/sync-helpers/index.d.ts +1 -1
  46. package/dist/src/core/living-docs/sync-helpers/index.d.ts.map +1 -1
  47. package/dist/src/core/living-docs/sync-helpers/index.js.map +1 -1
  48. package/dist/src/core/living-docs/sync-helpers/parsers.d.ts +3 -1
  49. package/dist/src/core/living-docs/sync-helpers/parsers.d.ts.map +1 -1
  50. package/dist/src/core/living-docs/sync-helpers/parsers.js +24 -2
  51. package/dist/src/core/living-docs/sync-helpers/parsers.js.map +1 -1
  52. package/dist/src/core/living-docs/types.d.ts +6 -0
  53. package/dist/src/core/living-docs/types.d.ts.map +1 -1
  54. package/dist/src/core/living-docs/validators/index.d.ts +7 -0
  55. package/dist/src/core/living-docs/validators/index.d.ts.map +1 -0
  56. package/dist/src/core/living-docs/validators/index.js +7 -0
  57. package/dist/src/core/living-docs/validators/index.js.map +1 -0
  58. package/dist/src/core/living-docs/validators/project-validator.d.ts +92 -0
  59. package/dist/src/core/living-docs/validators/project-validator.d.ts.map +1 -0
  60. package/dist/src/core/living-docs/validators/project-validator.js +142 -0
  61. package/dist/src/core/living-docs/validators/project-validator.js.map +1 -0
  62. package/dist/src/core/project/project-manager.d.ts.map +1 -1
  63. package/dist/src/core/project/project-manager.js +19 -17
  64. package/dist/src/core/project/project-manager.js.map +1 -1
  65. package/dist/src/core/types/config.d.ts +4 -2
  66. package/dist/src/core/types/config.d.ts.map +1 -1
  67. package/dist/src/core/types/config.js.map +1 -1
  68. package/dist/src/core/types/increment-metadata.d.ts +34 -0
  69. package/dist/src/core/types/increment-metadata.d.ts.map +1 -1
  70. package/dist/src/utils/cross-cutting-detector.d.ts +66 -0
  71. package/dist/src/utils/cross-cutting-detector.d.ts.map +1 -0
  72. package/dist/src/utils/cross-cutting-detector.js +179 -0
  73. package/dist/src/utils/cross-cutting-detector.js.map +1 -0
  74. package/dist/src/utils/docs-preview/config-generator.d.ts.map +1 -1
  75. package/dist/src/utils/docs-preview/config-generator.js +12 -16
  76. package/dist/src/utils/docs-preview/config-generator.js.map +1 -1
  77. package/dist/src/utils/docs-preview/docusaurus-setup.d.ts.map +1 -1
  78. package/dist/src/utils/docs-preview/docusaurus-setup.js +24 -5
  79. package/dist/src/utils/docs-preview/docusaurus-setup.js.map +1 -1
  80. package/dist/src/utils/docs-preview/package-installer.d.ts +3 -0
  81. package/dist/src/utils/docs-preview/package-installer.d.ts.map +1 -1
  82. package/dist/src/utils/docs-preview/package-installer.js +18 -9
  83. package/dist/src/utils/docs-preview/package-installer.js.map +1 -1
  84. package/dist/src/utils/docs-preview/server-manager.d.ts.map +1 -1
  85. package/dist/src/utils/docs-preview/server-manager.js +2 -1
  86. package/dist/src/utils/docs-preview/server-manager.js.map +1 -1
  87. package/dist/src/utils/project-detection.d.ts +12 -8
  88. package/dist/src/utils/project-detection.d.ts.map +1 -1
  89. package/dist/src/utils/project-detection.js +13 -19
  90. package/dist/src/utils/project-detection.js.map +1 -1
  91. package/dist/src/utils/validators/jira-validator.d.ts +25 -1
  92. package/dist/src/utils/validators/jira-validator.d.ts.map +1 -1
  93. package/dist/src/utils/validators/jira-validator.js +254 -172
  94. package/dist/src/utils/validators/jira-validator.js.map +1 -1
  95. package/package.json +1 -1
  96. package/plugins/specweave/commands/specweave-status.md +64 -0
  97. package/plugins/specweave/hooks/hooks.json +1 -1
  98. package/plugins/specweave/hooks/spec-project-validator.sh +2 -1
  99. package/plugins/specweave/lib/vendor/core/types/increment-metadata.d.ts +34 -0
  100. package/plugins/specweave/skills/increment-planner/SKILL.md +77 -2
  101. package/plugins/specweave/skills/spec-generator/SKILL.md +78 -7
  102. package/plugins/specweave/commands/specweave-switch-project.md +0 -168
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/issue-tracker/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,YAAY,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,qBAAqB,GACrB,YAAY,GACZ,iBAAiB,CAAC;AAEtB;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,kBAAkB,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAGjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAGjB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,kBAAkB,GAClB,iBAAiB,GACjB,aAAa,CAAC;AAElB;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,gBAAgB,CAAC;IAC/B,QAAQ,CAAC,EAAE,YAAY,CAAC;IAGxB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAGpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAGtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAC3B,kBAAkB,GAClB,iBAAiB,GACjB,YAAY,CAAC;AAEjB;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAE3F;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sEAAsE;IACtE,eAAe,CAAC,EAAE,kBAAkB,CAAC;IACrC,uFAAuF;IACvF,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACtC,2FAA2F;IAC3F,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,gFAAgF;IAChF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,iBAAiB,GACjB,eAAe,GACf,sBAAsB,CAAC;AAE3B;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,kBAAkB,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GACzB,QAAQ,GACR,eAAe,GACf,kBAAkB,GAClB,kBAAkB,GAClB,qBAAqB,GACrB,YAAY,GACZ,eAAe,GACf,OAAO,GACP,cAAc,GACd,iBAAiB,CAAC;AAEtB;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,kGAAkG;IAClG,2BAA2B,CAAC,EAAE,mBAAmB,CAAC;CACnD;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,sBAAsB,EAAE,OAAO,CAAC;IAChC,sBAAsB,EAAE,OAAO,CAAC;IAChC,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,IAAI,CAAC;CACb;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,KAAK;IAG9B,aAAa,EAAE,aAAa;gBADnC,OAAO,EAAE,MAAM,EACR,aAAa,EAAE,aAAa;CAKtC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/issue-tracker/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,YAAY,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,qBAAqB,GACrB,YAAY,GACZ,iBAAiB,CAAC;AAEtB;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,kBAAkB,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAGjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAGjB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,kBAAkB,GAClB,iBAAiB,GACjB,aAAa,CAAC;AAElB;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,0CAA0C;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,kDAAkD;IAClD,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9C,0CAA0C;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,gBAAgB,CAAC;IAC/B,QAAQ,CAAC,EAAE,YAAY,CAAC;IAGxB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAGpB,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAGrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAGtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAC3B,kBAAkB,GAClB,iBAAiB,GACjB,YAAY,CAAC;AAEjB;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAE3F;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sEAAsE;IACtE,eAAe,CAAC,EAAE,kBAAkB,CAAC;IACrC,uFAAuF;IACvF,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACtC,2FAA2F;IAC3F,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,gFAAgF;IAChF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,iBAAiB,GACjB,eAAe,GACf,sBAAsB,CAAC;AAE3B;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,kBAAkB,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GACzB,QAAQ,GACR,eAAe,GACf,kBAAkB,GAClB,kBAAkB,GAClB,qBAAqB,GACrB,YAAY,GACZ,eAAe,GACf,OAAO,GACP,cAAc,GACd,iBAAiB,CAAC;AAEtB;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,kGAAkG;IAClG,2BAA2B,CAAC,EAAE,mBAAmB,CAAC;CACnD;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,sBAAsB,EAAE,OAAO,CAAC;IAChC,sBAAsB,EAAE,OAAO,CAAC;IAChC,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,IAAI,CAAC;CACb;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,KAAK;IAG9B,aAAa,EAAE,aAAa;gBADnC,OAAO,EAAE,MAAM,EACR,aAAa,EAAE,aAAa;CAKtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/issue-tracker/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAuOH;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,YACE,OAAe,EACR,aAA4B;QAEnC,KAAK,CAAC,OAAO,CAAC,CAAC;QAFR,kBAAa,GAAb,aAAa,CAAe;QAGnC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/issue-tracker/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgQH;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,YACE,OAAe,EACR,aAA4B;QAEnC,KAAK,CAAC,OAAO,CAAC,CAAC;QAFR,kBAAa,GAAb,aAAa,CAAe;QAGnC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF"}
@@ -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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"}
@@ -244,7 +244,7 @@ function buildClusteringPrompt(repoSummaries, externalSpecs, externalTeamsContex
244
244
  const context = `Analyze these repositories to understand organization structure.
245
245
 
246
246
  For each TEAM, provide comprehensive documentation:
247
- - name: Team name (e.g., "AssetCare Team", "CDP Platform Team")
247
+ - name: Team name (e.g., "Platform Team", "API Gateway Team")
248
248
  - description: 2-3 sentence summary of what this team does
249
249
  - responsibilities: Array of 3-5 bullet points defining what the team owns and maintains
250
250
  - domainExpertise: Array of technical competencies (e.g., "FHIR integration", "Angular development", "Azure Functions")
@@ -22,6 +22,7 @@ export declare class LivingDocsSync {
22
22
  private projectRoot;
23
23
  private featureIdManager;
24
24
  private boardMatcher;
25
+ private crossProjectSync;
25
26
  private logger;
26
27
  private projectId;
27
28
  constructor(projectRoot: string, options?: {
@@ -1 +1 @@
1
- {"version":3,"file":"living-docs-sync.d.ts","sourceRoot":"","sources":["../../../../src/core/living-docs/living-docs-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AASH,OAAO,EAAE,MAAM,EAAiB,MAAM,uBAAuB,CAAC;AAO9D,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,aAAa,EACb,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAoBpB,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,uBAAuB,EAAE,CAAC;AAE5F,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;gBAEd,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO;IASlE;;;;;;;OAOG;IACH,YAAY,IAAI,MAAM;IAItB;;;;;OAKG;YACW,mBAAmB;IASjC;;OAEG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IA8JxF;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;YACW,wBAAwB;IAwDtC;;;;;;;;;OASG;IACH,OAAO,CAAC,8BAA8B;IA+BtC;;;;;;;;;;;;;OAaG;YACW,2BAA2B;IAmEzC;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IA6BhC;;OAEG;YACW,sBAAsB;IAKpC;;;;;;;;;;;;;;OAcG;YACW,kBAAkB;IA6GhC;;OAEG;YACW,uBAAuB;IAcrC;;OAEG;YACW,wBAAwB;IAmFtC;;;OAGG;YACW,sBAAsB;IAqGpC;;OAEG;YACW,iBAAiB;IA0C/B;;;;;;;;;;;OAWG;YACW,oBAAoB;IAwClC;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,iBAAiB;IAwCzB;;OAEG;YACW,kBAAkB;IAoHhC;;;;OAIG;YACW,sBAAsB;IAkCpC;;OAEG;YACW,kBAAkB;IAmChC;;;;;;;;;;;;OAYG;YACW,mBAAmB;IA6EjC;;;;;;OAMG;IACH;;;;;;;;;;;OAWG;YACW,mBAAmB;IAyIjC;;;;;;;;;OASG;YACW,YAAY;IA0F1B;;;;;;;;;;;;OAYG;YACW,UAAU;IAyFxB;;;;;;;;;;;;OAYG;YACW,SAAS;IAyFvB;;;;;;;;;OASG;YACW,4BAA4B;CAmB3C"}
1
+ {"version":3,"file":"living-docs-sync.d.ts","sourceRoot":"","sources":["../../../../src/core/living-docs/living-docs-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAUH,OAAO,EAAE,MAAM,EAAiB,MAAM,uBAAuB,CAAC;AAO9D,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,aAAa,EACb,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAoBpB,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,uBAAuB,EAAE,CAAC;AAE5F,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;gBAEd,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO;IAUlE;;;;;;;OAOG;IACH,YAAY,IAAI,MAAM;IAItB;;;;;OAKG;YACW,mBAAmB;IASjC;;OAEG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAiPxF;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;YACW,wBAAwB;IAwDtC;;;;;;;;;OASG;IACH,OAAO,CAAC,8BAA8B;IA+BtC;;;;;;;;;;;;;OAaG;YACW,2BAA2B;IAmEzC;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IA6BhC;;OAEG;YACW,sBAAsB;IAKpC;;;;;;;;;;;;;;OAcG;YACW,kBAAkB;IA6GhC;;OAEG;YACW,uBAAuB;IAcrC;;OAEG;YACW,wBAAwB;IAmFtC;;;OAGG;YACW,sBAAsB;IAqGpC;;OAEG;YACW,iBAAiB;IA0C/B;;;;;;;;;;;OAWG;YACW,oBAAoB;IAwClC;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,iBAAiB;IAwCzB;;OAEG;YACW,kBAAkB;IAqHhC;;;;OAIG;YACW,sBAAsB;IAkCpC;;OAEG;YACW,kBAAkB;IAmChC;;;;;;;;;;;;OAYG;YACW,mBAAmB;IA6EjC;;;;;;OAMG;IACH;;;;;;;;;;;OAWG;YACW,mBAAmB;IAyIjC;;;;;;;;;OASG;YACW,YAAY;IA0F1B;;;;;;;;;;;;OAYG;YACW,UAAU;IAyFxB;;;;;;;;;;;;OAYG;YACW,SAAS;IAyFvB;;;;;;;;;OASG;YACW,4BAA4B;CAmB3C"}