specweave 1.0.520 → 1.0.522

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 (129) hide show
  1. package/.claude-plugin/README.md +1 -1
  2. package/CLAUDE.md +1 -1
  3. package/README.md +1 -1
  4. package/bin/specweave.js +8 -8
  5. package/dist/plugins/specweave/lib/integrations/github/duplicate-detector.js +6 -6
  6. package/dist/plugins/specweave/lib/integrations/github/duplicate-detector.js.map +1 -1
  7. package/dist/plugins/specweave/lib/integrations/github/github-ac-comment-poster.d.ts.map +1 -1
  8. package/dist/plugins/specweave/lib/integrations/github/github-ac-comment-poster.js +34 -9
  9. package/dist/plugins/specweave/lib/integrations/github/github-ac-comment-poster.js.map +1 -1
  10. package/dist/plugins/specweave/lib/integrations/github/github-body-utils.d.ts +38 -0
  11. package/dist/plugins/specweave/lib/integrations/github/github-body-utils.d.ts.map +1 -0
  12. package/dist/plugins/specweave/lib/integrations/github/github-body-utils.js +50 -0
  13. package/dist/plugins/specweave/lib/integrations/github/github-body-utils.js.map +1 -0
  14. package/dist/plugins/specweave/lib/integrations/github/github-feature-sync.d.ts +0 -2
  15. package/dist/plugins/specweave/lib/integrations/github/github-feature-sync.d.ts.map +1 -1
  16. package/dist/plugins/specweave/lib/integrations/github/github-feature-sync.js +194 -173
  17. package/dist/plugins/specweave/lib/integrations/github/github-feature-sync.js.map +1 -1
  18. package/dist/src/adapters/codex/README.md +1 -1
  19. package/dist/src/adapters/gemini/README.md +1 -1
  20. package/dist/src/cli/commands/complete.d.ts +10 -7
  21. package/dist/src/cli/commands/complete.d.ts.map +1 -1
  22. package/dist/src/cli/commands/complete.js +60 -14
  23. package/dist/src/cli/commands/complete.js.map +1 -1
  24. package/dist/src/cli/commands/create-increment.d.ts.map +1 -1
  25. package/dist/src/cli/commands/create-increment.js +2 -10
  26. package/dist/src/cli/commands/create-increment.js.map +1 -1
  27. package/dist/src/cli/commands/evaluate-completion.d.ts.map +1 -1
  28. package/dist/src/cli/commands/evaluate-completion.js +8 -38
  29. package/dist/src/cli/commands/evaluate-completion.js.map +1 -1
  30. package/dist/src/cli/commands/init.d.ts.map +1 -1
  31. package/dist/src/cli/commands/init.js +25 -0
  32. package/dist/src/cli/commands/init.js.map +1 -1
  33. package/dist/src/cli/commands/save.js +1 -1
  34. package/dist/src/cli/commands/save.js.map +1 -1
  35. package/dist/src/cli/commands/sync-progress.d.ts.map +1 -1
  36. package/dist/src/cli/commands/sync-progress.js +10 -0
  37. package/dist/src/cli/commands/sync-progress.js.map +1 -1
  38. package/dist/src/cli/helpers/init/claude-settings-lsp.js +1 -1
  39. package/dist/src/cli/helpers/init/claude-settings-lsp.js.map +1 -1
  40. package/dist/src/cli/helpers/issue-tracker/github-multi-repo.d.ts +1 -8
  41. package/dist/src/cli/helpers/issue-tracker/github-multi-repo.d.ts.map +1 -1
  42. package/dist/src/cli/helpers/issue-tracker/github-multi-repo.js +57 -88
  43. package/dist/src/cli/helpers/issue-tracker/github-multi-repo.js.map +1 -1
  44. package/dist/src/cli/helpers/issue-tracker/github.d.ts.map +1 -1
  45. package/dist/src/cli/helpers/issue-tracker/github.js +1 -3
  46. package/dist/src/cli/helpers/issue-tracker/github.js.map +1 -1
  47. package/dist/src/core/increment/completion-validator.d.ts.map +1 -1
  48. package/dist/src/core/increment/completion-validator.js +2 -3
  49. package/dist/src/core/increment/completion-validator.js.map +1 -1
  50. package/dist/src/core/increment/increment-utils.d.ts +7 -7
  51. package/dist/src/core/increment/increment-utils.d.ts.map +1 -1
  52. package/dist/src/core/increment/increment-utils.js +19 -13
  53. package/dist/src/core/increment/increment-utils.js.map +1 -1
  54. package/dist/src/core/increment/status-change-sync-trigger.d.ts.map +1 -1
  55. package/dist/src/core/increment/status-change-sync-trigger.js +9 -0
  56. package/dist/src/core/increment/status-change-sync-trigger.js.map +1 -1
  57. package/dist/src/core/repo-structure/prompt-consolidator.d.ts +3 -17
  58. package/dist/src/core/repo-structure/prompt-consolidator.d.ts.map +1 -1
  59. package/dist/src/core/repo-structure/prompt-consolidator.js +1 -55
  60. package/dist/src/core/repo-structure/prompt-consolidator.js.map +1 -1
  61. package/dist/src/core/repo-structure/repo-structure-manager.d.ts.map +1 -1
  62. package/dist/src/core/repo-structure/repo-structure-manager.js +3 -1
  63. package/dist/src/core/repo-structure/repo-structure-manager.js.map +1 -1
  64. package/dist/src/core/repo-structure/setup-state-manager.d.ts.map +1 -1
  65. package/dist/src/core/repo-structure/setup-state-manager.js +2 -1
  66. package/dist/src/core/repo-structure/setup-state-manager.js.map +1 -1
  67. package/dist/src/core/repo-structure/setup-summary.js +1 -1
  68. package/dist/src/core/repo-structure/setup-summary.js.map +1 -1
  69. package/dist/src/core/sync-throttle.d.ts +49 -0
  70. package/dist/src/core/sync-throttle.d.ts.map +1 -0
  71. package/dist/src/core/sync-throttle.js +94 -0
  72. package/dist/src/core/sync-throttle.js.map +1 -0
  73. package/dist/src/dashboard/server/dashboard-server.js +1 -1
  74. package/dist/src/dashboard/server/dashboard-server.js.map +1 -1
  75. package/dist/src/hooks/auto-create-external-issue.js +11 -0
  76. package/dist/src/hooks/auto-create-external-issue.js.map +1 -1
  77. package/dist/src/init/InitFlow.d.ts.map +1 -1
  78. package/dist/src/init/InitFlow.js +4 -8
  79. package/dist/src/init/InitFlow.js.map +1 -1
  80. package/dist/src/init/research/src/config/ConfigManager.js +1 -1
  81. package/dist/src/init/research/src/config/ConfigManager.js.map +1 -1
  82. package/dist/src/init/research/src/config/types.d.ts +0 -1
  83. package/dist/src/init/research/src/config/types.d.ts.map +1 -1
  84. package/dist/src/init/research/src/config/types.js +1 -1
  85. package/dist/src/init/research/src/config/types.js.map +1 -1
  86. package/dist/src/locales/de/cli.json +1 -1
  87. package/dist/src/locales/en/cli.json +1 -1
  88. package/dist/src/locales/es/cli.json +1 -1
  89. package/dist/src/locales/fr/cli.json +1 -1
  90. package/dist/src/locales/ja/cli.json +1 -1
  91. package/dist/src/locales/ko/cli.json +1 -1
  92. package/dist/src/locales/pt/cli.json +1 -1
  93. package/dist/src/locales/ru/cli.json +1 -1
  94. package/dist/src/locales/zh/cli.json +1 -1
  95. package/dist/src/utils/resolve-increment-id.d.ts +24 -0
  96. package/dist/src/utils/resolve-increment-id.d.ts.map +1 -0
  97. package/dist/src/utils/resolve-increment-id.js +53 -0
  98. package/dist/src/utils/resolve-increment-id.js.map +1 -0
  99. package/package.json +1 -1
  100. package/plugins/specweave/.claude-plugin/plugin.json +2 -2
  101. package/plugins/specweave/commands/import-external.md +4 -4
  102. package/plugins/specweave/lib/integrations/github/duplicate-detector.js +1 -1
  103. package/plugins/specweave/lib/integrations/github/duplicate-detector.ts +6 -6
  104. package/plugins/specweave/lib/integrations/github/github-ac-comment-poster.js +39 -13
  105. package/plugins/specweave/lib/integrations/github/github-ac-comment-poster.ts +43 -13
  106. package/plugins/specweave/lib/integrations/github/github-body-utils.js +15 -0
  107. package/plugins/specweave/lib/integrations/github/github-body-utils.ts +52 -0
  108. package/plugins/specweave/lib/integrations/github/github-feature-sync.js +160 -136
  109. package/plugins/specweave/lib/integrations/github/github-feature-sync.ts +49 -29
  110. package/plugins/specweave/skills/increment/SKILL.md +45 -88
  111. package/plugins/specweave/skills/team-lead/SKILL.md +68 -4
  112. package/scripts/check-node-version.js +1 -1
  113. package/src/templates/lsp-plugin/plugin.json +1 -1
  114. package/dist/src/core/migration/consolidation-engine.d.ts +0 -59
  115. package/dist/src/core/migration/consolidation-engine.d.ts.map +0 -1
  116. package/dist/src/core/migration/consolidation-engine.js +0 -177
  117. package/dist/src/core/migration/consolidation-engine.js.map +0 -1
  118. package/dist/src/core/migration/spec-project-mapper.d.ts +0 -51
  119. package/dist/src/core/migration/spec-project-mapper.d.ts.map +0 -1
  120. package/dist/src/core/migration/spec-project-mapper.js +0 -299
  121. package/dist/src/core/migration/spec-project-mapper.js.map +0 -1
  122. package/dist/src/core/migration/types.d.ts +0 -132
  123. package/dist/src/core/migration/types.d.ts.map +0 -1
  124. package/dist/src/core/migration/types.js +0 -10
  125. package/dist/src/core/migration/types.js.map +0 -1
  126. package/dist/src/core/migration/umbrella-migrator.d.ts +0 -58
  127. package/dist/src/core/migration/umbrella-migrator.d.ts.map +0 -1
  128. package/dist/src/core/migration/umbrella-migrator.js +0 -617
  129. package/dist/src/core/migration/umbrella-migrator.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"InitFlow.js","sourceRoot":"","sources":["../../../src/init/InitFlow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InitFlow.js","sourceRoot":"","sources":["../../../src/init/InitFlow.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ export class ConfigManager {
18
18
  if (error.code === 'ENOENT') {
19
19
  return {
20
20
  version: '1.0.0',
21
- project: { name: 'specweave-project', type: 'single' },
21
+ project: { name: 'specweave-project', type: 'multi' },
22
22
  research: {},
23
23
  livingDocs: { enabled: true, baseDir: '.specweave/docs' }
24
24
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigManager.js","sourceRoot":"","sources":["../../../../../../src/init/research/src/config/ConfigManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAA6C,MAAM,YAAY,CAAC;AAEpH,MAAM,OAAO,aAAa;IAGxB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,aAAqB,aAAa,CAAC,WAAW;QAC9D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,OAAO,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5B,OAAO;oBACL,OAAO,EAAE,OAAO;oBAChB,OAAO,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACtD,QAAQ,EAAE,EAAE;oBACZ,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,iBAAiB,EAAE;iBAC1D,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAuB,EAAE,aAAqB,aAAa,CAAC,WAAW;QACvF,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACrC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAgC,EAAE,aAAqB,aAAa,CAAC,WAAW;QAC1G,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,CAAC,QAAQ,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC;QACrD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC/C,CAAC;;AAlCe,yBAAW,GAAG,wBAAwB,CAAC"}
1
+ {"version":3,"file":"ConfigManager.js","sourceRoot":"","sources":["../../../../../../src/init/research/src/config/ConfigManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAA6C,MAAM,YAAY,CAAC;AAEpH,MAAM,OAAO,aAAa;IAGxB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,aAAqB,aAAa,CAAC,WAAW;QAC9D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,OAAO,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5B,OAAO;oBACL,OAAO,EAAE,OAAO;oBAChB,OAAO,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,OAAO,EAAE;oBACrD,QAAQ,EAAE,EAAE;oBACZ,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,iBAAiB,EAAE;iBAC1D,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAuB,EAAE,aAAqB,aAAa,CAAC,WAAW;QACvF,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACrC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAgC,EAAE,aAAqB,aAAa,CAAC,WAAW;QAC1G,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,CAAC,QAAQ,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC;QACrD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC/C,CAAC;;AAlCe,yBAAW,GAAG,wBAAwB,CAAC"}
@@ -14,7 +14,6 @@ export declare const SpecWeaveConfigSchema: z.ZodObject<{
14
14
  project: z.ZodObject<{
15
15
  name: z.ZodString;
16
16
  type: z.ZodEnum<{
17
- single: "single";
18
17
  multi: "multi";
19
18
  }>;
20
19
  }, z.core.$strip>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/init/research/src/config/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,oBAAoB;;;;;;kBAMpB,CAAC;AAEd,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;iBAWhC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/init/research/src/config/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,oBAAoB;;;;;;kBAMpB,CAAC;AAEd,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;iBAWhC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -13,7 +13,7 @@ export const SpecWeaveConfigSchema = z.object({
13
13
  version: z.string(),
14
14
  project: z.object({
15
15
  name: z.string(),
16
- type: z.enum(['single', 'multi'])
16
+ type: z.enum(['multi'])
17
17
  }),
18
18
  research: ResearchConfigSchema,
19
19
  livingDocs: z.object({
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../src/init/research/src/config/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC1B,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE;IACvC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE;IAClC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC5C,YAAY,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC,QAAQ,EAAE,CAAC;AAEd,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;KAClC,CAAC;IACF,QAAQ,EAAE,oBAAoB;IAC9B,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;QACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;KACpB,CAAC,CAAC,QAAQ,EAAE;CACd,CAAC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../src/init/research/src/config/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC1B,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE;IACvC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE;IAClC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC5C,YAAY,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC,QAAQ,EAAE,CAAC;AAEd,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;KACxB,CAAC;IACF,QAAQ,EAAE,oBAAoB;IAC9B,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;QACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;KACpB,CAAC,CAAC,QAAQ,EAAE;CACd,CAAC,CAAC"}
@@ -130,7 +130,7 @@
130
130
  "header": "🎯 Nächste Schritte:",
131
131
  "cd": "cd {{projectName}}",
132
132
  "footer": "🚀 Bereit zum Entwickeln mit SpecWeave!",
133
- "docsLink": "Dokumentation: https://verified-skill.com",
133
+ "docsLink": "Dokumentation: https://spec-weave.com",
134
134
  "githubLink": "GitHub: https://github.com/anton-abyzov/specweave",
135
135
  "claude": {
136
136
  "step1": "Öffnen Sie Claude Code in diesem Verzeichnis",
@@ -130,7 +130,7 @@
130
130
  "header": "🎯 Next steps:",
131
131
  "cd": "cd {{projectName}}",
132
132
  "footer": "🚀 Ready to build with SpecWeave!",
133
- "docsLink": "Documentation: https://verified-skill.com",
133
+ "docsLink": "Documentation: https://spec-weave.com",
134
134
  "githubLink": "GitHub: https://github.com/anton-abyzov/specweave",
135
135
  "claude": {
136
136
  "step1": "Open Claude Code in this directory",
@@ -130,7 +130,7 @@
130
130
  "header": "🎯 Próximos pasos:",
131
131
  "cd": "cd {{projectName}}",
132
132
  "footer": "🚀 ¡Listo para construir con SpecWeave!",
133
- "docsLink": "Documentación: https://verified-skill.com",
133
+ "docsLink": "Documentación: https://spec-weave.com",
134
134
  "githubLink": "GitHub: https://github.com/anton-abyzov/specweave",
135
135
  "claude": {
136
136
  "step1": "Abre Claude Code en este directorio",
@@ -130,7 +130,7 @@
130
130
  "header": "🎯 Prochaines etapes :",
131
131
  "cd": "cd {{projectName}}",
132
132
  "footer": "🚀 Pret a developper avec SpecWeave !",
133
- "docsLink": "Documentation : https://verified-skill.com",
133
+ "docsLink": "Documentation : https://spec-weave.com",
134
134
  "githubLink": "GitHub : https://github.com/anton-abyzov/specweave",
135
135
  "claude": {
136
136
  "step1": "Ouvrez Claude Code dans ce repertoire",
@@ -130,7 +130,7 @@
130
130
  "header": "🎯 次のステップ:",
131
131
  "cd": "cd {{projectName}}",
132
132
  "footer": "🚀 SpecWeave でビルドする準備ができました!",
133
- "docsLink": "ドキュメント: https://verified-skill.com",
133
+ "docsLink": "ドキュメント: https://spec-weave.com",
134
134
  "githubLink": "GitHub: https://github.com/anton-abyzov/specweave",
135
135
  "claude": {
136
136
  "step1": "このディレクトリで Claude Code を開いてください",
@@ -130,7 +130,7 @@
130
130
  "header": "🎯 다음 단계:",
131
131
  "cd": "cd {{projectName}}",
132
132
  "footer": "🚀 SpecWeave 로 빌드할 준비가 되었습니다!",
133
- "docsLink": "문서: https://verified-skill.com",
133
+ "docsLink": "문서: https://spec-weave.com",
134
134
  "githubLink": "GitHub: https://github.com/anton-abyzov/specweave",
135
135
  "claude": {
136
136
  "step1": "이 디렉터리에서 Claude Code 를 열어 주십시오",
@@ -130,7 +130,7 @@
130
130
  "header": "🎯 Próximos passos:",
131
131
  "cd": "cd {{projectName}}",
132
132
  "footer": "🚀 Pronto para construir com SpecWeave!",
133
- "docsLink": "Documentação: https://verified-skill.com",
133
+ "docsLink": "Documentação: https://spec-weave.com",
134
134
  "githubLink": "GitHub: https://github.com/anton-abyzov/specweave",
135
135
  "claude": {
136
136
  "step1": "Abra Claude Code neste diretório",
@@ -130,7 +130,7 @@
130
130
  "header": "🎯 Следующие шаги:",
131
131
  "cd": "cd {{projectName}}",
132
132
  "footer": "🚀 Готов к разработке с SpecWeave!",
133
- "docsLink": "Документация: https://verified-skill.com",
133
+ "docsLink": "Документация: https://spec-weave.com",
134
134
  "githubLink": "GitHub: https://github.com/anton-abyzov/specweave",
135
135
  "claude": {
136
136
  "step1": "Откройте Claude Code в этой директории",
@@ -130,7 +130,7 @@
130
130
  "header": "🎯 后续步骤:",
131
131
  "cd": "cd {{projectName}}",
132
132
  "footer": "🚀 准备好使用 SpecWeave 构建了!",
133
- "docsLink": "文档:https://verified-skill.com",
133
+ "docsLink": "文档:https://spec-weave.com",
134
134
  "githubLink": "GitHub:https://github.com/anton-abyzov/specweave",
135
135
  "claude": {
136
136
  "step1": "在此目录中打开 Claude Code",
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Resolve Increment ID Utility
3
+ *
4
+ * Resolves a potentially short increment ID (e.g., "0589") to the full
5
+ * directory name (e.g., "0589-cli-complete-improvements") by matching
6
+ * against .specweave/increments/ entries.
7
+ *
8
+ * Supports:
9
+ * - Exact match: "0589-cli-complete-improvements" → same
10
+ * - Prefix match: "0589" → "0589-cli-complete-improvements"
11
+ * - Ambiguous match: "0573" → ["0573-fix-a", "0573-fix-b"]
12
+ * - No match: "9999" → null
13
+ *
14
+ * @module utils/resolve-increment-id
15
+ */
16
+ /**
17
+ * Resolve a potentially short increment ID to the full directory name.
18
+ *
19
+ * @param incrementId - Short or full increment ID
20
+ * @param projectRoot - Project root directory containing .specweave/
21
+ * @returns Full increment directory name (string), array of matches (string[]) if ambiguous, or null if not found
22
+ */
23
+ export declare function resolveIncrementId(incrementId: string, projectRoot: string): string | string[] | null;
24
+ //# sourceMappingURL=resolve-increment-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-increment-id.d.ts","sourceRoot":"","sources":["../../../src/utils/resolve-increment-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAiC1B"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Resolve Increment ID Utility
3
+ *
4
+ * Resolves a potentially short increment ID (e.g., "0589") to the full
5
+ * directory name (e.g., "0589-cli-complete-improvements") by matching
6
+ * against .specweave/increments/ entries.
7
+ *
8
+ * Supports:
9
+ * - Exact match: "0589-cli-complete-improvements" → same
10
+ * - Prefix match: "0589" → "0589-cli-complete-improvements"
11
+ * - Ambiguous match: "0573" → ["0573-fix-a", "0573-fix-b"]
12
+ * - No match: "9999" → null
13
+ *
14
+ * @module utils/resolve-increment-id
15
+ */
16
+ import * as fs from 'fs';
17
+ import * as path from 'path';
18
+ /**
19
+ * Resolve a potentially short increment ID to the full directory name.
20
+ *
21
+ * @param incrementId - Short or full increment ID
22
+ * @param projectRoot - Project root directory containing .specweave/
23
+ * @returns Full increment directory name (string), array of matches (string[]) if ambiguous, or null if not found
24
+ */
25
+ export function resolveIncrementId(incrementId, projectRoot) {
26
+ const incrementsDir = path.join(projectRoot, '.specweave', 'increments');
27
+ if (!fs.existsSync(incrementsDir)) {
28
+ return null;
29
+ }
30
+ // Check for exact match first
31
+ const exactPath = path.join(incrementsDir, incrementId);
32
+ if (fs.existsSync(exactPath)) {
33
+ return incrementId;
34
+ }
35
+ // Try prefix match
36
+ let entries;
37
+ try {
38
+ entries = fs.readdirSync(incrementsDir);
39
+ }
40
+ catch {
41
+ return null;
42
+ }
43
+ const matches = entries.filter((e) => e.startsWith(incrementId));
44
+ if (matches.length === 0) {
45
+ return null;
46
+ }
47
+ if (matches.length === 1) {
48
+ return matches[0];
49
+ }
50
+ // Ambiguous — multiple matches
51
+ return matches.sort();
52
+ }
53
+ //# sourceMappingURL=resolve-increment-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-increment-id.js","sourceRoot":"","sources":["../../../src/utils/resolve-increment-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,WAAmB,EACnB,WAAmB;IAEnB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;IAEzE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8BAA8B;IAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IACxD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,mBAAmB;IACnB,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;IAEjE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,+BAA+B;IAC/B,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;AACxB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specweave",
3
- "version": "1.0.520",
3
+ "version": "1.0.522",
4
4
  "description": "100+ domain-expert AI skills — PM, Architect, Frontend, QA, Security and more. Skills learn your team's patterns permanently. Spec-first planning, autonomous execution, multi-agent teams, synced to GitHub/JIRA. Claude Code, Cursor, Copilot & more.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -4,9 +4,9 @@
4
4
  "version": "1.0.0",
5
5
  "author": {
6
6
  "name": "SpecWeave Team",
7
- "url": "https://verified-skill.com"
7
+ "url": "https://spec-weave.com"
8
8
  },
9
- "homepage": "https://verified-skill.com",
9
+ "homepage": "https://spec-weave.com",
10
10
  "repository": "https://github.com/anton-abyzov/specweave",
11
11
  "license": "MIT",
12
12
  "keywords": [
@@ -451,10 +451,10 @@ No tasks defined.
451
451
  ## See Also
452
452
 
453
453
  - `specweave init` - Initial project setup with external tool import
454
- - [External Import Guide](https://docs.verified-skill.com/guides/external-import)
455
- - [GitHub Integration](https://docs.verified-skill.com/integrations/github)
456
- - [JIRA Integration](https://docs.verified-skill.com/integrations/jira)
457
- - [Azure DevOps Integration](https://docs.verified-skill.com/integrations/ado)
454
+ - [External Import Guide](https://spec-weave.com/docs/guides/external-import)
455
+ - [GitHub Integration](https://spec-weave.com/docs/integrations/github)
456
+ - [JIRA Integration](https://spec-weave.com/docs/integrations/jira)
457
+ - [Azure DevOps Integration](https://spec-weave.com/docs/integrations/ado)
458
458
 
459
459
  ---
460
460
 
@@ -326,7 +326,7 @@ The original issue (#${keepIssueNumber}) should be used for tracking instead.
326
326
  }
327
327
  }
328
328
  let duplicatesClosed = 0;
329
- if (process.env.SPECWEAVE_VERIFY_DUPLICATES === "1") {
329
+ if (process.env.SPECWEAVE_SKIP_VERIFY_DUPLICATES !== "1") {
330
330
  console.log(`
331
331
  \u2501\u2501\u2501 PHASE 3: VERIFICATION \u2501\u2501\u2501`);
332
332
  const verification = await this.verifyAfterCreate(titlePattern, 1, repo);
@@ -480,13 +480,13 @@ The original issue (#${keepIssueNumber}) should be used for tracking instead.
480
480
  }
481
481
  }
482
482
 
483
- // PHASE 3: Verification — SKIPPED BY DEFAULT to reduce API calls (FS-529)
484
- // Phase 1 already searched for duplicates. Phase 3 only adds value if there's a
485
- // race condition from parallel sync sessions, which is rare. Enable with
486
- // SPECWEAVE_VERIFY_DUPLICATES=1 env var if needed.
483
+ // PHASE 3: Verification — ENABLED BY DEFAULT (FS-587)
484
+ // Phase 1 searches before create, but Phase 3 catches race conditions from
485
+ // parallel sync sessions. Disable with SPECWEAVE_SKIP_VERIFY_DUPLICATES=1
486
+ // if you want to reduce API calls at the cost of duplicate safety.
487
487
  let duplicatesClosed = 0;
488
488
 
489
- if (process.env.SPECWEAVE_VERIFY_DUPLICATES === '1') {
489
+ if (process.env.SPECWEAVE_SKIP_VERIFY_DUPLICATES !== '1') {
490
490
  console.log(`\n━━━ PHASE 3: VERIFICATION ━━━`);
491
491
  const verification = await this.verifyAfterCreate(titlePattern, 1, repo);
492
492
 
@@ -510,7 +510,7 @@ The original issue (#${keepIssueNumber}) should be used for tracking instead.
510
510
  } else if (verification.success) {
511
511
  console.log(` ✅ No duplicates detected!`);
512
512
  }
513
- } // end SPECWEAVE_VERIFY_DUPLICATES guard
513
+ } // end SPECWEAVE_SKIP_VERIFY_DUPLICATES guard
514
514
 
515
515
  // Final Summary
516
516
  console.log(`\n✅ Issue creation complete!`);
@@ -2,6 +2,7 @@ import { readFile } from "fs/promises";
2
2
  import { existsSync } from "fs";
3
3
  import * as path from "path";
4
4
  import { execFileNoThrow } from "../../../../../src/utils/execFileNoThrow.js";
5
+ import { buildFingerprint, extractFingerprint } from "./github-body-utils.js";
5
6
  async function postACProgressComments(incrementId, affectedUSIds, specPath, options) {
6
7
  const result = { posted: [], errors: [] };
7
8
  if (affectedUSIds.length === 0) {
@@ -28,19 +29,44 @@ async function postACProgressComments(incrementId, affectedUSIds, specPath, opti
28
29
  const acStates = parseACStatesForUS(content, usId);
29
30
  const allComplete = acStates.length > 0 && acStates.every((ac) => ac.completed);
30
31
  if (!allComplete) {
31
- const commentBody = buildProgressCommentForUS(incrementId, usId, acStates);
32
- const execResult = await execFileNoThrow(
33
- "gh",
34
- ["issue", "comment", String(link.issueNumber), "--body", commentBody, "-R", repoSlug],
35
- env ? { env } : {}
36
- );
37
- if (execResult.success) {
38
- result.posted.push({ usId, issueNumber: link.issueNumber });
39
- } else {
40
- result.errors.push({
41
- usId,
42
- error: execResult.stderr || "Unknown error posting comment"
43
- });
32
+ const total = acStates.length;
33
+ const completed = acStates.filter((ac) => ac.completed).length;
34
+ const currentFingerprint = buildFingerprint(completed, total);
35
+ let shouldPost = true;
36
+ try {
37
+ const commentsResult = await execFileNoThrow(
38
+ "gh",
39
+ [
40
+ "api",
41
+ `repos/${repoSlug}/issues/${link.issueNumber}/comments`,
42
+ "--jq",
43
+ ".[-1].body"
44
+ ],
45
+ env ? { env } : {}
46
+ );
47
+ if (commentsResult.success && commentsResult.stdout.trim()) {
48
+ const lastFingerprint = extractFingerprint(commentsResult.stdout);
49
+ if (lastFingerprint === `${completed}/${total}`) {
50
+ shouldPost = false;
51
+ }
52
+ }
53
+ } catch {
54
+ }
55
+ if (shouldPost) {
56
+ const commentBody = buildProgressCommentForUS(incrementId, usId, acStates) + currentFingerprint + "\n";
57
+ const execResult = await execFileNoThrow(
58
+ "gh",
59
+ ["issue", "comment", String(link.issueNumber), "--body", commentBody, "-R", repoSlug],
60
+ env ? { env } : {}
61
+ );
62
+ if (execResult.success) {
63
+ result.posted.push({ usId, issueNumber: link.issueNumber });
64
+ } else {
65
+ result.errors.push({
66
+ usId,
67
+ error: execResult.stderr || "Unknown error posting comment"
68
+ });
69
+ }
44
70
  }
45
71
  }
46
72
  if (acStates.length > 0) {
@@ -12,6 +12,7 @@ import { readFile } from 'fs/promises';
12
12
  import { existsSync } from 'fs';
13
13
  import * as path from 'path';
14
14
  import { execFileNoThrow } from '../../../../../src/utils/execFileNoThrow.js';
15
+ import { buildFingerprint, extractFingerprint } from './github-body-utils.js';
15
16
 
16
17
  export interface CommentPostOptions {
17
18
  owner: string;
@@ -87,21 +88,50 @@ export async function postACProgressComments(
87
88
  const allComplete = acStates.length > 0 && acStates.every(ac => ac.completed);
88
89
 
89
90
  if (!allComplete) {
90
- const commentBody = buildProgressCommentForUS(incrementId, usId, acStates);
91
+ const total = acStates.length;
92
+ const completed = acStates.filter(ac => ac.completed).length;
93
+ const currentFingerprint = buildFingerprint(completed, total);
91
94
 
92
- const execResult = await execFileNoThrow(
93
- 'gh',
94
- ['issue', 'comment', String(link.issueNumber), '--body', commentBody, '-R', repoSlug],
95
- env ? { env } : {},
96
- );
95
+ // Dedup: fetch last comment and check fingerprint before posting
96
+ let shouldPost = true;
97
+ try {
98
+ const commentsResult = await execFileNoThrow(
99
+ 'gh',
100
+ [
101
+ 'api',
102
+ `repos/${repoSlug}/issues/${link.issueNumber}/comments`,
103
+ '--jq', '.[-1].body',
104
+ ],
105
+ env ? { env } : {},
106
+ );
107
+ if (commentsResult.success && commentsResult.stdout.trim()) {
108
+ const lastFingerprint = extractFingerprint(commentsResult.stdout);
109
+ if (lastFingerprint === `${completed}/${total}`) {
110
+ shouldPost = false;
111
+ }
112
+ }
113
+ } catch {
114
+ // If comment fetch fails, proceed with posting
115
+ }
97
116
 
98
- if (execResult.success) {
99
- result.posted.push({ usId, issueNumber: link.issueNumber });
100
- } else {
101
- result.errors.push({
102
- usId,
103
- error: execResult.stderr || 'Unknown error posting comment',
104
- });
117
+ if (shouldPost) {
118
+ const commentBody = buildProgressCommentForUS(incrementId, usId, acStates)
119
+ + currentFingerprint + '\n';
120
+
121
+ const execResult = await execFileNoThrow(
122
+ 'gh',
123
+ ['issue', 'comment', String(link.issueNumber), '--body', commentBody, '-R', repoSlug],
124
+ env ? { env } : {},
125
+ );
126
+
127
+ if (execResult.success) {
128
+ result.posted.push({ usId, issueNumber: link.issueNumber });
129
+ } else {
130
+ result.errors.push({
131
+ usId,
132
+ error: execResult.stderr || 'Unknown error posting comment',
133
+ });
134
+ }
105
135
  }
106
136
  }
107
137
 
@@ -0,0 +1,15 @@
1
+ function buildFingerprint(completed, total) {
2
+ return `<!-- sw-progress:${completed}/${total} -->`;
3
+ }
4
+ function extractFingerprint(text) {
5
+ const match = text.match(/<!-- sw-progress:(\d+\/\d+) -->/);
6
+ return match ? match[1] : null;
7
+ }
8
+ function normalizeIssueBody(body) {
9
+ return body.split("\n").map((line) => line.trimEnd()).join("\n").replace(/\n{3,}/g, "\n\n").trim();
10
+ }
11
+ export {
12
+ buildFingerprint,
13
+ extractFingerprint,
14
+ normalizeIssueBody
15
+ };
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Shared utilities for GitHub issue body fingerprinting, extraction,
3
+ * and normalization. Used by the AC comment poster and feature sync
4
+ * to deduplicate progress comments and skip no-op edits.
5
+ *
6
+ * Fingerprint format: `<!-- sw-progress:N/M -->` (HTML comment,
7
+ * invisible in rendered Markdown, consistent with JIRA fingerprint
8
+ * pattern in jira-status-sync.ts).
9
+ *
10
+ * @module github-body-utils
11
+ */
12
+
13
+ /**
14
+ * Build an HTML comment fingerprint for the current AC progress state.
15
+ *
16
+ * @param completed - Number of completed acceptance criteria
17
+ * @param total - Total number of acceptance criteria
18
+ * @returns HTML comment string, e.g. `<!-- sw-progress:3/5 -->`
19
+ */
20
+ export function buildFingerprint(completed: number, total: number): string {
21
+ return `<!-- sw-progress:${completed}/${total} -->`;
22
+ }
23
+
24
+ /**
25
+ * Extract the progress fingerprint value from a block of text.
26
+ * Returns the `N/M` portion if found, or `null` if no fingerprint is present.
27
+ *
28
+ * @param text - Text to search (e.g. a GitHub comment body)
29
+ * @returns The fingerprint value like `"3/5"`, or `null`
30
+ */
31
+ export function extractFingerprint(text: string): string | null {
32
+ const match = text.match(/<!-- sw-progress:(\d+\/\d+) -->/);
33
+ return match ? match[1] : null;
34
+ }
35
+
36
+ /**
37
+ * Normalize a GitHub issue body for comparison purposes.
38
+ * - Strips trailing whitespace from each line
39
+ * - Collapses multiple consecutive blank lines into a single blank line
40
+ * - Trims leading/trailing whitespace from the entire body
41
+ *
42
+ * @param body - Raw issue body text
43
+ * @returns Normalized body string
44
+ */
45
+ export function normalizeIssueBody(body: string): string {
46
+ return body
47
+ .split('\n')
48
+ .map(line => line.trimEnd())
49
+ .join('\n')
50
+ .replace(/\n{3,}/g, '\n\n')
51
+ .trim();
52
+ }