specweave 1.0.506 → 1.0.508

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 (1038) hide show
  1. package/.claude-plugin/README.md +25 -32
  2. package/.claude-plugin/marketplace.json +1 -78
  3. package/dist/plugins/specweave/lib/features/release/dashboard-generator.d.ts.map +1 -0
  4. package/dist/plugins/specweave/lib/features/release/dashboard-generator.js.map +1 -0
  5. package/dist/plugins/specweave/lib/features/release/dora-tracker.d.ts.map +1 -0
  6. package/dist/plugins/specweave/lib/features/release/dora-tracker.js.map +1 -0
  7. package/dist/plugins/specweave/lib/integrations/ado/ado-ac-checkbox-sync.d.ts +44 -0
  8. package/dist/plugins/specweave/lib/integrations/ado/ado-ac-checkbox-sync.d.ts.map +1 -0
  9. package/dist/plugins/specweave/lib/integrations/ado/ado-ac-checkbox-sync.js +236 -0
  10. package/dist/plugins/specweave/lib/integrations/ado/ado-ac-checkbox-sync.js.map +1 -0
  11. package/dist/plugins/specweave/lib/integrations/ado/ado-board-resolver.d.ts.map +1 -0
  12. package/dist/plugins/specweave/lib/integrations/ado/ado-board-resolver.js.map +1 -0
  13. package/dist/plugins/specweave/lib/integrations/ado/ado-client-v2.d.ts +139 -0
  14. package/dist/plugins/specweave/lib/integrations/ado/ado-client-v2.d.ts.map +1 -0
  15. package/dist/plugins/specweave/lib/integrations/ado/ado-client-v2.js.map +1 -0
  16. package/dist/plugins/specweave/lib/integrations/ado/ado-client.d.ts.map +1 -0
  17. package/dist/plugins/specweave/lib/integrations/ado/ado-client.js.map +1 -0
  18. package/dist/plugins/specweave/lib/integrations/ado/ado-duplicate-detector.d.ts +100 -0
  19. package/dist/plugins/specweave/lib/integrations/ado/ado-duplicate-detector.d.ts.map +1 -0
  20. package/dist/plugins/specweave/lib/integrations/ado/ado-duplicate-detector.js +292 -0
  21. package/dist/plugins/specweave/lib/integrations/ado/ado-duplicate-detector.js.map +1 -0
  22. package/dist/plugins/specweave/lib/integrations/ado/ado-permission-gate.d.ts.map +1 -0
  23. package/dist/plugins/specweave/lib/integrations/ado/ado-permission-gate.js.map +1 -0
  24. package/dist/plugins/specweave/lib/integrations/ado/ado-profile-resolver.d.ts.map +1 -0
  25. package/dist/plugins/specweave/lib/integrations/ado/ado-profile-resolver.js.map +1 -0
  26. package/dist/plugins/specweave/lib/integrations/ado/ado-pull-sync.d.ts.map +1 -0
  27. package/dist/plugins/specweave/lib/integrations/ado/ado-pull-sync.js.map +1 -0
  28. package/dist/plugins/specweave/lib/integrations/ado/ado-rate-limiter.d.ts.map +1 -0
  29. package/dist/plugins/specweave/lib/integrations/ado/ado-rate-limiter.js.map +1 -0
  30. package/dist/plugins/specweave/lib/integrations/ado/ado-spec-commit-sync.d.ts +38 -0
  31. package/dist/plugins/specweave/lib/integrations/ado/ado-spec-commit-sync.d.ts.map +1 -0
  32. package/dist/plugins/specweave/lib/integrations/ado/ado-spec-commit-sync.js +210 -0
  33. package/dist/plugins/specweave/lib/integrations/ado/ado-spec-commit-sync.js.map +1 -0
  34. package/dist/plugins/specweave/lib/integrations/ado/ado-spec-content-sync.d.ts +28 -0
  35. package/dist/plugins/specweave/lib/integrations/ado/ado-spec-content-sync.d.ts.map +1 -0
  36. package/dist/plugins/specweave/lib/integrations/ado/ado-spec-content-sync.js +300 -0
  37. package/dist/plugins/specweave/lib/integrations/ado/ado-spec-content-sync.js.map +1 -0
  38. package/dist/plugins/specweave/lib/integrations/ado/ado-spec-sync.d.ts +147 -0
  39. package/dist/plugins/specweave/lib/integrations/ado/ado-spec-sync.d.ts.map +1 -0
  40. package/dist/plugins/specweave/lib/integrations/ado/ado-spec-sync.js +749 -0
  41. package/dist/plugins/specweave/lib/integrations/ado/ado-spec-sync.js.map +1 -0
  42. package/dist/plugins/specweave/lib/integrations/ado/ado-status-sync.d.ts +79 -0
  43. package/dist/plugins/specweave/lib/integrations/ado/ado-status-sync.d.ts.map +1 -0
  44. package/dist/plugins/specweave/lib/integrations/ado/ado-status-sync.js +162 -0
  45. package/dist/plugins/specweave/lib/integrations/ado/ado-status-sync.js.map +1 -0
  46. package/dist/plugins/specweave/lib/integrations/ado/conflict-resolver.d.ts.map +1 -0
  47. package/dist/plugins/specweave/lib/integrations/ado/conflict-resolver.js +439 -0
  48. package/dist/plugins/specweave/lib/integrations/ado/conflict-resolver.js.map +1 -0
  49. package/dist/plugins/specweave/lib/integrations/ado/per-us-sync.d.ts +131 -0
  50. package/dist/plugins/specweave/lib/integrations/ado/per-us-sync.d.ts.map +1 -0
  51. package/dist/plugins/specweave/lib/integrations/ado/per-us-sync.js +322 -0
  52. package/dist/plugins/specweave/lib/integrations/ado/per-us-sync.js.map +1 -0
  53. package/dist/plugins/specweave/lib/integrations/github/CodeValidator.d.ts.map +1 -0
  54. package/dist/plugins/specweave/lib/integrations/github/CodeValidator.js +219 -0
  55. package/dist/plugins/specweave/lib/integrations/github/CodeValidator.js.map +1 -0
  56. package/dist/plugins/specweave/lib/integrations/github/IssueStateManager.d.ts.map +1 -0
  57. package/dist/plugins/specweave/lib/integrations/github/IssueStateManager.js.map +1 -0
  58. package/dist/plugins/specweave/lib/integrations/github/completion-calculator.d.ts.map +1 -0
  59. package/dist/plugins/specweave/lib/integrations/github/completion-calculator.js.map +1 -0
  60. package/dist/plugins/specweave/lib/integrations/github/duplicate-detector.d.ts.map +1 -0
  61. package/dist/plugins/specweave/lib/integrations/github/duplicate-detector.js +423 -0
  62. package/dist/plugins/specweave/lib/integrations/github/duplicate-detector.js.map +1 -0
  63. package/dist/plugins/specweave/lib/integrations/github/github-ac-checkbox-sync.d.ts +54 -0
  64. package/dist/plugins/specweave/lib/integrations/github/github-ac-checkbox-sync.d.ts.map +1 -0
  65. package/dist/plugins/specweave/lib/integrations/github/github-ac-checkbox-sync.js +305 -0
  66. package/dist/plugins/specweave/lib/integrations/github/github-ac-checkbox-sync.js.map +1 -0
  67. package/dist/plugins/specweave/lib/integrations/github/github-ac-comment-poster.d.ts.map +1 -0
  68. package/dist/plugins/specweave/lib/integrations/github/github-ac-comment-poster.js +232 -0
  69. package/dist/plugins/specweave/lib/integrations/github/github-ac-comment-poster.js.map +1 -0
  70. package/dist/plugins/specweave/lib/integrations/github/github-batch-sync.d.ts.map +1 -0
  71. package/dist/plugins/specweave/lib/integrations/github/github-batch-sync.js.map +1 -0
  72. package/dist/plugins/specweave/lib/integrations/github/github-board-resolver-v2.d.ts.map +1 -0
  73. package/dist/plugins/specweave/lib/integrations/github/github-board-resolver-v2.js.map +1 -0
  74. package/dist/plugins/specweave/lib/integrations/github/github-client-v2.d.ts +214 -0
  75. package/dist/plugins/specweave/lib/integrations/github/github-client-v2.d.ts.map +1 -0
  76. package/dist/plugins/specweave/lib/integrations/github/github-client-v2.js +812 -0
  77. package/dist/plugins/specweave/lib/integrations/github/github-client-v2.js.map +1 -0
  78. package/dist/plugins/specweave/lib/integrations/github/github-client.d.ts.map +1 -0
  79. package/dist/plugins/specweave/lib/integrations/github/github-client.js.map +1 -0
  80. package/dist/plugins/specweave/lib/integrations/github/github-conflict-resolver.d.ts.map +1 -0
  81. package/dist/plugins/specweave/lib/integrations/github/github-conflict-resolver.js.map +1 -0
  82. package/dist/plugins/specweave/lib/integrations/github/github-cross-repo-sync.d.ts.map +1 -0
  83. package/dist/plugins/specweave/lib/integrations/github/github-cross-repo-sync.js +172 -0
  84. package/dist/plugins/specweave/lib/integrations/github/github-cross-repo-sync.js.map +1 -0
  85. package/dist/plugins/specweave/lib/integrations/github/github-feature-sync-cli.d.ts.map +1 -0
  86. package/dist/plugins/specweave/lib/integrations/github/github-feature-sync-cli.js.map +1 -0
  87. package/dist/plugins/specweave/lib/integrations/github/github-feature-sync.d.ts.map +1 -0
  88. package/dist/plugins/specweave/lib/integrations/github/github-feature-sync.js +1112 -0
  89. package/dist/plugins/specweave/lib/integrations/github/github-feature-sync.js.map +1 -0
  90. package/dist/plugins/specweave/lib/integrations/github/github-field-sync.d.ts.map +1 -0
  91. package/dist/plugins/specweave/lib/integrations/github/github-field-sync.js.map +1 -0
  92. package/dist/plugins/specweave/lib/integrations/github/github-graphql-client.d.ts.map +1 -0
  93. package/dist/plugins/specweave/lib/integrations/github/github-graphql-client.js.map +1 -0
  94. package/dist/plugins/specweave/lib/integrations/github/github-issue-body-generator.d.ts.map +1 -0
  95. package/dist/plugins/specweave/lib/integrations/github/github-issue-body-generator.js.map +1 -0
  96. package/dist/plugins/specweave/lib/integrations/github/github-issue-body-parser.d.ts.map +1 -0
  97. package/dist/plugins/specweave/lib/integrations/github/github-issue-body-parser.js.map +1 -0
  98. package/dist/plugins/specweave/lib/integrations/github/github-issue-updater.d.ts.map +1 -0
  99. package/dist/plugins/specweave/lib/integrations/github/github-issue-updater.js +339 -0
  100. package/dist/plugins/specweave/lib/integrations/github/github-issue-updater.js.map +1 -0
  101. package/dist/plugins/specweave/lib/integrations/github/github-pull-sync.d.ts +94 -0
  102. package/dist/plugins/specweave/lib/integrations/github/github-pull-sync.d.ts.map +1 -0
  103. package/dist/plugins/specweave/lib/integrations/github/github-pull-sync.js +232 -0
  104. package/dist/plugins/specweave/lib/integrations/github/github-pull-sync.js.map +1 -0
  105. package/dist/plugins/specweave/lib/integrations/github/github-push-sync.d.ts.map +1 -0
  106. package/dist/plugins/specweave/lib/integrations/github/github-push-sync.js +127 -0
  107. package/dist/plugins/specweave/lib/integrations/github/github-push-sync.js.map +1 -0
  108. package/dist/plugins/specweave/lib/integrations/github/github-rate-limiter.d.ts.map +1 -0
  109. package/dist/plugins/specweave/lib/integrations/github/github-rate-limiter.js +109 -0
  110. package/dist/plugins/specweave/lib/integrations/github/github-rate-limiter.js.map +1 -0
  111. package/dist/plugins/specweave/lib/integrations/github/github-spec-commit-sync.d.ts +37 -0
  112. package/dist/plugins/specweave/lib/integrations/github/github-spec-commit-sync.d.ts.map +1 -0
  113. package/dist/plugins/specweave/lib/integrations/github/github-spec-commit-sync.js +209 -0
  114. package/dist/plugins/specweave/lib/integrations/github/github-spec-commit-sync.js.map +1 -0
  115. package/dist/plugins/specweave/lib/integrations/github/github-spec-content-sync.d.ts +28 -0
  116. package/dist/plugins/specweave/lib/integrations/github/github-spec-content-sync.d.ts.map +1 -0
  117. package/dist/plugins/specweave/lib/integrations/github/github-spec-content-sync.js +365 -0
  118. package/dist/plugins/specweave/lib/integrations/github/github-spec-content-sync.js.map +1 -0
  119. package/dist/plugins/specweave/lib/integrations/github/github-spec-frontmatter-updater.d.ts +21 -0
  120. package/dist/plugins/specweave/lib/integrations/github/github-spec-frontmatter-updater.d.ts.map +1 -0
  121. package/dist/plugins/specweave/lib/integrations/github/github-spec-frontmatter-updater.js.map +1 -0
  122. package/dist/plugins/specweave/lib/integrations/github/github-spec-sync.d.ts +225 -0
  123. package/dist/plugins/specweave/lib/integrations/github/github-spec-sync.d.ts.map +1 -0
  124. package/dist/plugins/specweave/lib/integrations/github/github-spec-sync.js +974 -0
  125. package/dist/plugins/specweave/lib/integrations/github/github-spec-sync.js.map +1 -0
  126. package/dist/plugins/specweave/lib/integrations/github/github-sync-orchestrator.d.ts +47 -0
  127. package/dist/plugins/specweave/lib/integrations/github/github-sync-orchestrator.d.ts.map +1 -0
  128. package/dist/plugins/specweave/lib/integrations/github/github-sync-orchestrator.js.map +1 -0
  129. package/dist/plugins/specweave/lib/integrations/github/github-us-auto-closer.d.ts.map +1 -0
  130. package/dist/plugins/specweave/lib/integrations/github/github-us-auto-closer.js +219 -0
  131. package/dist/plugins/specweave/lib/integrations/github/github-us-auto-closer.js.map +1 -0
  132. package/dist/plugins/specweave/lib/integrations/github/index.d.ts.map +1 -0
  133. package/dist/plugins/specweave/lib/integrations/github/index.js.map +1 -0
  134. package/dist/plugins/specweave/lib/integrations/github/per-us-sync.d.ts +126 -0
  135. package/dist/plugins/specweave/lib/integrations/github/per-us-sync.d.ts.map +1 -0
  136. package/dist/plugins/specweave/lib/integrations/github/per-us-sync.js +394 -0
  137. package/dist/plugins/specweave/lib/integrations/github/per-us-sync.js.map +1 -0
  138. package/dist/plugins/specweave/lib/integrations/github/progress-comment-builder.d.ts.map +1 -0
  139. package/dist/plugins/specweave/lib/integrations/github/progress-comment-builder.js.map +1 -0
  140. package/dist/plugins/specweave/lib/integrations/github/types.d.ts.map +1 -0
  141. package/dist/plugins/specweave/lib/integrations/github/types.js.map +1 -0
  142. package/dist/plugins/specweave/lib/integrations/github/user-story-content-builder.d.ts.map +1 -0
  143. package/dist/plugins/specweave/lib/integrations/github/user-story-content-builder.js +310 -0
  144. package/dist/plugins/specweave/lib/integrations/github/user-story-content-builder.js.map +1 -0
  145. package/dist/plugins/specweave/lib/integrations/github/user-story-issue-builder.d.ts.map +1 -0
  146. package/dist/plugins/specweave/lib/integrations/github/user-story-issue-builder.js.map +1 -0
  147. package/dist/plugins/specweave/lib/integrations/jira/content-format-adapter.d.ts.map +1 -0
  148. package/dist/plugins/specweave/lib/integrations/jira/content-format-adapter.js.map +1 -0
  149. package/dist/plugins/specweave/lib/integrations/jira/jira-ac-checkbox-sync.d.ts +47 -0
  150. package/dist/plugins/specweave/lib/integrations/jira/jira-ac-checkbox-sync.d.ts.map +1 -0
  151. package/dist/plugins/specweave/lib/integrations/jira/jira-ac-checkbox-sync.js +307 -0
  152. package/dist/plugins/specweave/lib/integrations/jira/jira-ac-checkbox-sync.js.map +1 -0
  153. package/dist/plugins/specweave/lib/integrations/jira/jira-board-resolver.d.ts +50 -0
  154. package/dist/plugins/specweave/lib/integrations/jira/jira-board-resolver.d.ts.map +1 -0
  155. package/dist/plugins/specweave/lib/integrations/jira/jira-board-resolver.js.map +1 -0
  156. package/dist/plugins/specweave/lib/integrations/jira/jira-deployment-detector.d.ts.map +1 -0
  157. package/dist/plugins/specweave/lib/integrations/jira/jira-deployment-detector.js.map +1 -0
  158. package/dist/plugins/specweave/lib/integrations/jira/jira-duplicate-detector.d.ts +103 -0
  159. package/dist/plugins/specweave/lib/integrations/jira/jira-duplicate-detector.d.ts.map +1 -0
  160. package/dist/plugins/specweave/lib/integrations/jira/jira-duplicate-detector.js +295 -0
  161. package/dist/plugins/specweave/lib/integrations/jira/jira-duplicate-detector.js.map +1 -0
  162. package/dist/plugins/specweave/lib/integrations/jira/jira-epic-sync.d.ts +67 -0
  163. package/dist/plugins/specweave/lib/integrations/jira/jira-epic-sync.d.ts.map +1 -0
  164. package/dist/plugins/specweave/lib/integrations/jira/jira-epic-sync.js +286 -0
  165. package/dist/plugins/specweave/lib/integrations/jira/jira-epic-sync.js.map +1 -0
  166. package/dist/plugins/specweave/lib/integrations/jira/jira-field-discovery.d.ts.map +1 -0
  167. package/dist/plugins/specweave/lib/integrations/jira/jira-field-discovery.js.map +1 -0
  168. package/dist/plugins/specweave/lib/integrations/jira/jira-paginated-search.d.ts.map +1 -0
  169. package/dist/plugins/specweave/lib/integrations/jira/jira-paginated-search.js.map +1 -0
  170. package/dist/plugins/specweave/lib/integrations/jira/jira-permission-gate.d.ts.map +1 -0
  171. package/dist/plugins/specweave/lib/integrations/jira/jira-permission-gate.js.map +1 -0
  172. package/dist/plugins/specweave/lib/integrations/jira/jira-spec-commit-sync.d.ts +43 -0
  173. package/dist/plugins/specweave/lib/integrations/jira/jira-spec-commit-sync.d.ts.map +1 -0
  174. package/dist/plugins/specweave/lib/integrations/jira/jira-spec-commit-sync.js +284 -0
  175. package/dist/plugins/specweave/lib/integrations/jira/jira-spec-commit-sync.js.map +1 -0
  176. package/dist/plugins/specweave/lib/integrations/jira/jira-spec-content-sync.d.ts +33 -0
  177. package/dist/plugins/specweave/lib/integrations/jira/jira-spec-content-sync.d.ts.map +1 -0
  178. package/dist/plugins/specweave/lib/integrations/jira/jira-spec-content-sync.js +294 -0
  179. package/dist/plugins/specweave/lib/integrations/jira/jira-spec-content-sync.js.map +1 -0
  180. package/dist/plugins/specweave/lib/integrations/jira/jira-spec-sync.d.ts +180 -0
  181. package/dist/plugins/specweave/lib/integrations/jira/jira-spec-sync.d.ts.map +1 -0
  182. package/dist/plugins/specweave/lib/integrations/jira/jira-spec-sync.js +757 -0
  183. package/dist/plugins/specweave/lib/integrations/jira/jira-spec-sync.js.map +1 -0
  184. package/dist/plugins/specweave/lib/integrations/jira/jira-status-sync.d.ts +116 -0
  185. package/dist/plugins/specweave/lib/integrations/jira/jira-status-sync.d.ts.map +1 -0
  186. package/dist/plugins/specweave/lib/integrations/jira/jira-status-sync.js +302 -0
  187. package/dist/plugins/specweave/lib/integrations/jira/jira-status-sync.js.map +1 -0
  188. package/dist/plugins/specweave/lib/integrations/jira/metadata-paths.d.ts.map +1 -0
  189. package/dist/plugins/specweave/lib/integrations/jira/metadata-paths.js.map +1 -0
  190. package/dist/plugins/specweave/lib/integrations/jira/per-us-sync.d.ts +117 -0
  191. package/dist/plugins/specweave/lib/integrations/jira/per-us-sync.d.ts.map +1 -0
  192. package/dist/plugins/specweave/lib/integrations/jira/per-us-sync.js +274 -0
  193. package/dist/plugins/specweave/lib/integrations/jira/per-us-sync.js.map +1 -0
  194. package/dist/plugins/specweave/lib/integrations/jira/reorganization-detector.d.ts +80 -0
  195. package/dist/plugins/specweave/lib/integrations/jira/reorganization-detector.d.ts.map +1 -0
  196. package/dist/plugins/specweave/lib/integrations/jira/reorganization-detector.js.map +1 -0
  197. package/dist/plugins/specweave/lib/integrations/jira/setup-wizard.d.ts +29 -0
  198. package/dist/plugins/specweave/lib/integrations/jira/setup-wizard.d.ts.map +1 -0
  199. package/dist/plugins/specweave/lib/integrations/jira/setup-wizard.js +198 -0
  200. package/dist/plugins/specweave/lib/integrations/jira/setup-wizard.js.map +1 -0
  201. package/dist/plugins/specweave/lib/vendor/sync/github-reconciler.d.ts +1 -1
  202. package/dist/plugins/specweave/lib/vendor/sync/github-reconciler.js +2 -2
  203. package/dist/plugins/specweave/lib/vendor/sync/github-reconciler.js.map +1 -1
  204. package/dist/src/cli/commands/refresh-plugins.d.ts.map +1 -1
  205. package/dist/src/cli/commands/refresh-plugins.js +9 -1
  206. package/dist/src/cli/commands/refresh-plugins.js.map +1 -1
  207. package/dist/src/cli/commands/sync-progress.js +1 -1
  208. package/dist/src/cli/commands/sync-progress.js.map +1 -1
  209. package/dist/src/cli/helpers/async-project-loader.js +1 -1
  210. package/dist/src/cli/helpers/async-project-loader.js.map +1 -1
  211. package/dist/src/cli/helpers/cancelation-handler.d.ts +1 -1
  212. package/dist/src/cli/helpers/cancelation-handler.js +1 -1
  213. package/dist/src/cli/helpers/init/ado-repo-cloning.js +1 -1
  214. package/dist/src/cli/helpers/init/ado-repo-cloning.js.map +1 -1
  215. package/dist/src/cli/helpers/init/github-repo-cloning.js +1 -1
  216. package/dist/src/cli/helpers/init/github-repo-cloning.js.map +1 -1
  217. package/dist/src/cli/helpers/init/jira-ado-auto-detect.d.ts +2 -2
  218. package/dist/src/cli/helpers/init/jira-ado-auto-detect.d.ts.map +1 -1
  219. package/dist/src/cli/helpers/init/jira-ado-auto-detect.js +2 -2
  220. package/dist/src/cli/helpers/init/jira-ado-auto-detect.js.map +1 -1
  221. package/dist/src/cli/helpers/init/plugin-installer.d.ts.map +1 -1
  222. package/dist/src/cli/helpers/init/plugin-installer.js +11 -3
  223. package/dist/src/cli/helpers/init/plugin-installer.js.map +1 -1
  224. package/dist/src/cli/helpers/issue-tracker/ado-area-selection.js +1 -1
  225. package/dist/src/cli/helpers/issue-tracker/ado-area-selection.js.map +1 -1
  226. package/dist/src/cli/helpers/issue-tracker/ado.js +3 -3
  227. package/dist/src/cli/helpers/issue-tracker/ado.js.map +1 -1
  228. package/dist/src/cli/helpers/issue-tracker/github-multi-repo.js +1 -1
  229. package/dist/src/cli/helpers/issue-tracker/github-multi-repo.js.map +1 -1
  230. package/dist/src/cli/helpers/issue-tracker/github.js +4 -4
  231. package/dist/src/cli/helpers/issue-tracker/github.js.map +1 -1
  232. package/dist/src/cli/helpers/issue-tracker/index.js +1 -1
  233. package/dist/src/cli/helpers/issue-tracker/index.js.map +1 -1
  234. package/dist/src/cli/helpers/issue-tracker/jira-board-selection.js +1 -1
  235. package/dist/src/cli/helpers/issue-tracker/jira-board-selection.js.map +1 -1
  236. package/dist/src/core/ac-progress-sync.js +5 -5
  237. package/dist/src/core/ac-progress-sync.js.map +1 -1
  238. package/dist/src/core/analytics/types.d.ts +1 -1
  239. package/dist/src/core/analytics/types.d.ts.map +1 -1
  240. package/dist/src/core/config/types.d.ts +1 -1
  241. package/dist/src/core/hooks/github-project-sync.js +4 -4
  242. package/dist/src/core/hooks/github-project-sync.js.map +1 -1
  243. package/dist/src/core/living-docs/living-docs-sync.js +5 -5
  244. package/dist/src/core/living-docs/living-docs-sync.js.map +1 -1
  245. package/dist/src/core/types/plugin.d.ts +1 -1
  246. package/dist/src/core/types/plugin.d.ts.map +1 -1
  247. package/dist/src/integrations/ado/ado-client-factory.d.ts +1 -1
  248. package/dist/src/integrations/ado/ado-client-factory.d.ts.map +1 -1
  249. package/dist/src/integrations/ado/ado-client-factory.js +1 -1
  250. package/dist/src/integrations/ado/ado-client-factory.js.map +1 -1
  251. package/dist/src/integrations/ado/ado-dependency-loader.js +1 -1
  252. package/dist/src/integrations/ado/ado-dependency-loader.js.map +1 -1
  253. package/dist/src/living-docs/smart-doc-organizer.js +1 -1
  254. package/dist/src/living-docs/smart-doc-organizer.js.map +1 -1
  255. package/dist/src/sync/ado-reconciler.d.ts +1 -1
  256. package/dist/src/sync/ado-reconciler.js +1 -1
  257. package/dist/src/sync/external-change-puller.js +1 -1
  258. package/dist/src/sync/external-change-puller.js.map +1 -1
  259. package/dist/src/sync/external-issue-auto-creator.js +1 -1
  260. package/dist/src/sync/external-issue-auto-creator.js.map +1 -1
  261. package/dist/src/sync/external-item-sync-service.js +2 -2
  262. package/dist/src/sync/external-item-sync-service.js.map +1 -1
  263. package/dist/src/sync/format-preservation-sync.d.ts +1 -1
  264. package/dist/src/sync/format-preservation-sync.d.ts.map +1 -1
  265. package/dist/src/sync/format-preservation-sync.js +1 -1
  266. package/dist/src/sync/format-preservation-sync.js.map +1 -1
  267. package/dist/src/sync/github-reconciler.d.ts +1 -1
  268. package/dist/src/sync/github-reconciler.js +2 -2
  269. package/dist/src/sync/github-reconciler.js.map +1 -1
  270. package/dist/src/sync/github-sync-wrapper.d.ts +2 -2
  271. package/dist/src/sync/github-sync-wrapper.d.ts.map +1 -1
  272. package/dist/src/sync/github-sync-wrapper.js +1 -1
  273. package/dist/src/sync/github-sync-wrapper.js.map +1 -1
  274. package/dist/src/sync/jira-reconciler.d.ts +1 -1
  275. package/dist/src/sync/jira-reconciler.js +1 -1
  276. package/dist/src/sync/living-docs-updater.d.ts +1 -1
  277. package/dist/src/sync/living-docs-updater.d.ts.map +1 -1
  278. package/dist/src/sync/living-docs-updater.js +1 -1
  279. package/dist/src/sync/living-docs-updater.js.map +1 -1
  280. package/dist/src/sync/pr-linker.js +1 -1
  281. package/dist/src/sync/pr-linker.js.map +1 -1
  282. package/dist/src/sync/providers/github.d.ts +1 -1
  283. package/dist/src/sync/providers/github.js +1 -1
  284. package/dist/src/sync/sync-coordinator.js +4 -4
  285. package/dist/src/sync/sync-coordinator.js.map +1 -1
  286. package/dist/src/utils/cleanup-stale-plugins.d.ts.map +1 -1
  287. package/dist/src/utils/cleanup-stale-plugins.js +7 -0
  288. package/dist/src/utils/cleanup-stale-plugins.js.map +1 -1
  289. package/dist/src/utils/docs-validator.js +1 -1
  290. package/dist/src/utils/docs-validator.js.map +1 -1
  291. package/dist/src/utils/plugin-copier.d.ts +16 -0
  292. package/dist/src/utils/plugin-copier.d.ts.map +1 -1
  293. package/dist/src/utils/plugin-copier.js +79 -0
  294. package/dist/src/utils/plugin-copier.js.map +1 -1
  295. package/package.json +1 -1
  296. package/plugins/PLUGINS-INDEX.md +23 -42
  297. package/plugins/specweave/.claude-plugin/plugin.json +9 -2
  298. package/plugins/specweave/lib/integrations/ado/ado-ac-checkbox-sync.js +241 -0
  299. package/plugins/specweave/lib/integrations/ado/ado-ac-checkbox-sync.ts +311 -0
  300. package/plugins/specweave/lib/integrations/ado/ado-client-v2.d.ts +134 -0
  301. package/plugins/specweave/lib/integrations/ado/ado-client-v2.ts +742 -0
  302. package/plugins/specweave/lib/integrations/ado/ado-duplicate-detector.js +279 -0
  303. package/plugins/specweave/lib/integrations/ado/ado-duplicate-detector.ts +408 -0
  304. package/plugins/specweave/lib/integrations/ado/ado-hierarchical-sync.d.ts +40 -0
  305. package/plugins/specweave/lib/integrations/ado/ado-hierarchical-sync.js +300 -0
  306. package/plugins/specweave/lib/integrations/ado/ado-hierarchical-sync.ts +554 -0
  307. package/plugins/specweave/lib/integrations/ado/ado-multi-project-sync.js +486 -0
  308. package/plugins/specweave/lib/integrations/ado/ado-multi-project-sync.ts +675 -0
  309. package/plugins/specweave/lib/integrations/ado/ado-project-detector.js +502 -0
  310. package/plugins/specweave/lib/integrations/ado/ado-project-detector.ts +560 -0
  311. package/plugins/specweave/lib/integrations/ado/ado-spec-commit-sync.d.ts +38 -0
  312. package/plugins/specweave/lib/integrations/ado/ado-spec-commit-sync.js +189 -0
  313. package/plugins/specweave/lib/integrations/ado/ado-spec-commit-sync.ts +288 -0
  314. package/plugins/specweave/lib/integrations/ado/ado-spec-content-sync.js +249 -0
  315. package/plugins/specweave/lib/integrations/ado/ado-spec-content-sync.ts +379 -0
  316. package/plugins/specweave/lib/integrations/ado/ado-spec-sync.d.ts +100 -0
  317. package/plugins/specweave/lib/integrations/ado/ado-spec-sync.js +681 -0
  318. package/plugins/specweave/lib/integrations/ado/ado-spec-sync.ts +893 -0
  319. package/plugins/specweave/lib/integrations/ado/ado-status-sync.js +150 -0
  320. package/plugins/specweave/lib/integrations/ado/ado-status-sync.ts +213 -0
  321. package/plugins/specweave/lib/integrations/ado/conflict-resolver.js +400 -0
  322. package/plugins/specweave/lib/integrations/ado/conflict-resolver.ts +583 -0
  323. package/plugins/specweave/lib/integrations/ado/per-us-sync.js +272 -0
  324. package/plugins/specweave/lib/integrations/ado/per-us-sync.ts +457 -0
  325. package/plugins/specweave/lib/integrations/ado/project-selector.d.ts +42 -0
  326. package/plugins/specweave/lib/integrations/ado/project-selector.ts +304 -0
  327. package/plugins/specweave/lib/integrations/github/CodeValidator.js +195 -0
  328. package/plugins/specweave/lib/integrations/github/CodeValidator.ts +284 -0
  329. package/plugins/specweave/lib/integrations/github/duplicate-detector.js +397 -0
  330. package/plugins/specweave/lib/integrations/github/duplicate-detector.ts +561 -0
  331. package/plugins/specweave/lib/integrations/github/github-ac-checkbox-sync.js +287 -0
  332. package/plugins/specweave/lib/integrations/github/github-ac-checkbox-sync.ts +391 -0
  333. package/plugins/specweave/lib/integrations/github/github-ac-comment-poster.js +191 -0
  334. package/plugins/specweave/lib/integrations/github/github-ac-comment-poster.ts +315 -0
  335. package/plugins/specweave/lib/integrations/github/github-board-resolver.js +81 -0
  336. package/plugins/specweave/lib/integrations/github/github-board-resolver.ts +175 -0
  337. package/plugins/specweave/lib/integrations/github/github-client-v2.js +814 -0
  338. package/plugins/specweave/lib/integrations/github/github-client-v2.ts +1035 -0
  339. package/plugins/specweave/lib/integrations/github/github-cross-repo-sync.js +182 -0
  340. package/plugins/specweave/lib/integrations/github/github-cross-repo-sync.ts +265 -0
  341. package/plugins/specweave/lib/integrations/github/github-feature-sync.js +1007 -0
  342. package/plugins/specweave/lib/integrations/github/github-feature-sync.ts +1403 -0
  343. package/plugins/specweave/lib/integrations/github/github-hierarchical-sync.d.ts +29 -0
  344. package/plugins/specweave/lib/integrations/github/github-hierarchical-sync.js +190 -0
  345. package/plugins/specweave/lib/integrations/github/github-hierarchical-sync.ts +355 -0
  346. package/plugins/specweave/lib/integrations/github/github-issue-updater.js +275 -0
  347. package/plugins/specweave/lib/integrations/github/github-issue-updater.ts +462 -0
  348. package/plugins/specweave/lib/integrations/github/github-multi-project-sync.js +409 -0
  349. package/plugins/specweave/lib/integrations/github/github-multi-project-sync.ts +555 -0
  350. package/plugins/specweave/lib/integrations/github/github-pull-sync.js +185 -0
  351. package/plugins/specweave/lib/integrations/github/github-pull-sync.ts +343 -0
  352. package/plugins/specweave/lib/integrations/github/github-push-sync.js +129 -0
  353. package/plugins/specweave/lib/integrations/github/github-push-sync.ts +188 -0
  354. package/plugins/specweave/lib/integrations/github/github-rate-limiter.js +96 -0
  355. package/plugins/specweave/lib/integrations/github/github-rate-limiter.ts +143 -0
  356. package/plugins/specweave/lib/integrations/github/github-spec-commit-sync.d.ts +37 -0
  357. package/plugins/specweave/lib/integrations/github/github-spec-commit-sync.js +186 -0
  358. package/plugins/specweave/lib/integrations/github/github-spec-commit-sync.ts +285 -0
  359. package/plugins/specweave/lib/integrations/github/github-spec-content-sync.js +298 -0
  360. package/plugins/specweave/lib/integrations/github/github-spec-content-sync.ts +465 -0
  361. package/plugins/specweave/lib/integrations/github/github-spec-frontmatter-updater.ts +306 -0
  362. package/plugins/specweave/lib/integrations/github/github-spec-sync.d.ts +108 -0
  363. package/plugins/specweave/lib/integrations/github/github-spec-sync.js +900 -0
  364. package/plugins/specweave/lib/integrations/github/github-spec-sync.ts +1281 -0
  365. package/plugins/specweave/lib/integrations/github/github-sync-orchestrator.ts +158 -0
  366. package/plugins/specweave/lib/integrations/github/github-us-auto-closer.js +190 -0
  367. package/plugins/specweave/lib/integrations/github/github-us-auto-closer.ts +313 -0
  368. package/plugins/specweave/lib/integrations/github/per-us-sync.js +330 -0
  369. package/plugins/specweave/lib/integrations/github/per-us-sync.ts +515 -0
  370. package/plugins/specweave/lib/integrations/github/user-story-content-builder.js +306 -0
  371. package/plugins/specweave/lib/integrations/github/user-story-content-builder.ts +424 -0
  372. package/plugins/specweave/lib/integrations/jira/jira-ac-checkbox-sync.js +300 -0
  373. package/plugins/specweave/lib/integrations/jira/jira-ac-checkbox-sync.ts +380 -0
  374. package/plugins/specweave/lib/integrations/jira/jira-board-resolver.d.ts +50 -0
  375. package/plugins/specweave/lib/integrations/jira/jira-board-resolver.ts +127 -0
  376. package/plugins/specweave/lib/integrations/jira/jira-duplicate-detector.js +279 -0
  377. package/plugins/specweave/lib/integrations/jira/jira-duplicate-detector.ts +420 -0
  378. package/plugins/specweave/lib/integrations/jira/jira-epic-sync.js +314 -0
  379. package/plugins/specweave/lib/integrations/jira/jira-epic-sync.ts +474 -0
  380. package/plugins/specweave/lib/integrations/jira/jira-hierarchical-sync.d.ts +33 -0
  381. package/plugins/specweave/lib/integrations/jira/jira-hierarchical-sync.js +144 -0
  382. package/plugins/specweave/lib/integrations/jira/jira-hierarchical-sync.ts +294 -0
  383. package/plugins/specweave/lib/integrations/jira/jira-multi-project-sync.js +279 -0
  384. package/plugins/specweave/lib/integrations/jira/jira-multi-project-sync.ts +398 -0
  385. package/plugins/specweave/lib/integrations/jira/jira-spec-commit-sync.d.ts +43 -0
  386. package/plugins/specweave/lib/integrations/jira/jira-spec-commit-sync.js +262 -0
  387. package/plugins/specweave/lib/integrations/jira/jira-spec-commit-sync.ts +370 -0
  388. package/plugins/specweave/lib/integrations/jira/jira-spec-content-sync.js +260 -0
  389. package/plugins/specweave/lib/integrations/jira/jira-spec-content-sync.ts +367 -0
  390. package/plugins/specweave/lib/integrations/jira/jira-spec-sync.d.ts +105 -0
  391. package/plugins/specweave/lib/integrations/jira/jira-spec-sync.js +689 -0
  392. package/plugins/specweave/lib/integrations/jira/jira-spec-sync.ts +947 -0
  393. package/plugins/specweave/lib/integrations/jira/jira-status-sync.js +215 -0
  394. package/plugins/specweave/lib/integrations/jira/jira-status-sync.ts +375 -0
  395. package/plugins/specweave/lib/integrations/jira/per-us-sync.js +235 -0
  396. package/plugins/specweave/lib/integrations/jira/per-us-sync.ts +384 -0
  397. package/plugins/specweave/lib/integrations/jira/project-selector.d.ts +42 -0
  398. package/plugins/specweave/lib/integrations/jira/project-selector.ts +310 -0
  399. package/plugins/specweave/lib/integrations/jira/reorganization-detector.d.ts +67 -0
  400. package/plugins/specweave/lib/integrations/jira/reorganization-detector.ts +449 -0
  401. package/plugins/specweave/lib/integrations/jira/setup-wizard.d.js +4 -0
  402. package/plugins/specweave/lib/integrations/jira/setup-wizard.d.ts +29 -0
  403. package/plugins/specweave/lib/integrations/jira/setup-wizard.js +156 -0
  404. package/plugins/specweave/lib/integrations/jira/setup-wizard.ts +238 -0
  405. package/plugins/specweave/lib/vendor/sync/github-reconciler.d.ts +1 -1
  406. package/plugins/specweave/lib/vendor/sync/github-reconciler.js +2 -2
  407. package/plugins/specweave/lib/vendor/sync/github-reconciler.js.map +1 -1
  408. package/plugins/specweave/skills/team-lead/SKILL.md +10 -5
  409. package/plugins/specweave/skills/team-lead/agents/brainstorm-advocate.md +12 -6
  410. package/plugins/specweave/skills/team-lead/agents/brainstorm-critic.md +12 -6
  411. package/plugins/specweave/skills/team-lead/agents/brainstorm-pragmatist.md +12 -6
  412. package/dist/plugins/specweave-ado/lib/ado-ac-checkbox-sync.d.ts +0 -44
  413. package/dist/plugins/specweave-ado/lib/ado-ac-checkbox-sync.d.ts.map +0 -1
  414. package/dist/plugins/specweave-ado/lib/ado-ac-checkbox-sync.js +0 -236
  415. package/dist/plugins/specweave-ado/lib/ado-ac-checkbox-sync.js.map +0 -1
  416. package/dist/plugins/specweave-ado/lib/ado-board-resolver.d.ts.map +0 -1
  417. package/dist/plugins/specweave-ado/lib/ado-board-resolver.js.map +0 -1
  418. package/dist/plugins/specweave-ado/lib/ado-client-v2.d.ts +0 -139
  419. package/dist/plugins/specweave-ado/lib/ado-client-v2.d.ts.map +0 -1
  420. package/dist/plugins/specweave-ado/lib/ado-client-v2.js.map +0 -1
  421. package/dist/plugins/specweave-ado/lib/ado-client.d.ts.map +0 -1
  422. package/dist/plugins/specweave-ado/lib/ado-client.js.map +0 -1
  423. package/dist/plugins/specweave-ado/lib/ado-duplicate-detector.d.ts +0 -100
  424. package/dist/plugins/specweave-ado/lib/ado-duplicate-detector.d.ts.map +0 -1
  425. package/dist/plugins/specweave-ado/lib/ado-duplicate-detector.js +0 -292
  426. package/dist/plugins/specweave-ado/lib/ado-duplicate-detector.js.map +0 -1
  427. package/dist/plugins/specweave-ado/lib/ado-permission-gate.d.ts.map +0 -1
  428. package/dist/plugins/specweave-ado/lib/ado-permission-gate.js.map +0 -1
  429. package/dist/plugins/specweave-ado/lib/ado-profile-resolver.d.ts.map +0 -1
  430. package/dist/plugins/specweave-ado/lib/ado-profile-resolver.js.map +0 -1
  431. package/dist/plugins/specweave-ado/lib/ado-pull-sync.d.ts.map +0 -1
  432. package/dist/plugins/specweave-ado/lib/ado-pull-sync.js.map +0 -1
  433. package/dist/plugins/specweave-ado/lib/ado-rate-limiter.d.ts.map +0 -1
  434. package/dist/plugins/specweave-ado/lib/ado-rate-limiter.js.map +0 -1
  435. package/dist/plugins/specweave-ado/lib/ado-spec-commit-sync.d.ts +0 -38
  436. package/dist/plugins/specweave-ado/lib/ado-spec-commit-sync.d.ts.map +0 -1
  437. package/dist/plugins/specweave-ado/lib/ado-spec-commit-sync.js +0 -210
  438. package/dist/plugins/specweave-ado/lib/ado-spec-commit-sync.js.map +0 -1
  439. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.d.ts +0 -28
  440. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.d.ts.map +0 -1
  441. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.js +0 -300
  442. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.js.map +0 -1
  443. package/dist/plugins/specweave-ado/lib/ado-spec-sync.d.ts +0 -147
  444. package/dist/plugins/specweave-ado/lib/ado-spec-sync.d.ts.map +0 -1
  445. package/dist/plugins/specweave-ado/lib/ado-spec-sync.js +0 -749
  446. package/dist/plugins/specweave-ado/lib/ado-spec-sync.js.map +0 -1
  447. package/dist/plugins/specweave-ado/lib/ado-status-sync.d.ts +0 -79
  448. package/dist/plugins/specweave-ado/lib/ado-status-sync.d.ts.map +0 -1
  449. package/dist/plugins/specweave-ado/lib/ado-status-sync.js +0 -162
  450. package/dist/plugins/specweave-ado/lib/ado-status-sync.js.map +0 -1
  451. package/dist/plugins/specweave-ado/lib/conflict-resolver.d.ts.map +0 -1
  452. package/dist/plugins/specweave-ado/lib/conflict-resolver.js +0 -439
  453. package/dist/plugins/specweave-ado/lib/conflict-resolver.js.map +0 -1
  454. package/dist/plugins/specweave-ado/lib/per-us-sync.d.ts +0 -131
  455. package/dist/plugins/specweave-ado/lib/per-us-sync.d.ts.map +0 -1
  456. package/dist/plugins/specweave-ado/lib/per-us-sync.js +0 -322
  457. package/dist/plugins/specweave-ado/lib/per-us-sync.js.map +0 -1
  458. package/dist/plugins/specweave-github/lib/CodeValidator.d.ts.map +0 -1
  459. package/dist/plugins/specweave-github/lib/CodeValidator.js +0 -219
  460. package/dist/plugins/specweave-github/lib/CodeValidator.js.map +0 -1
  461. package/dist/plugins/specweave-github/lib/IssueStateManager.d.ts.map +0 -1
  462. package/dist/plugins/specweave-github/lib/IssueStateManager.js.map +0 -1
  463. package/dist/plugins/specweave-github/lib/completion-calculator.d.ts.map +0 -1
  464. package/dist/plugins/specweave-github/lib/completion-calculator.js.map +0 -1
  465. package/dist/plugins/specweave-github/lib/duplicate-detector.d.ts.map +0 -1
  466. package/dist/plugins/specweave-github/lib/duplicate-detector.js +0 -423
  467. package/dist/plugins/specweave-github/lib/duplicate-detector.js.map +0 -1
  468. package/dist/plugins/specweave-github/lib/github-ac-checkbox-sync.d.ts +0 -54
  469. package/dist/plugins/specweave-github/lib/github-ac-checkbox-sync.d.ts.map +0 -1
  470. package/dist/plugins/specweave-github/lib/github-ac-checkbox-sync.js +0 -305
  471. package/dist/plugins/specweave-github/lib/github-ac-checkbox-sync.js.map +0 -1
  472. package/dist/plugins/specweave-github/lib/github-ac-comment-poster.d.ts.map +0 -1
  473. package/dist/plugins/specweave-github/lib/github-ac-comment-poster.js +0 -232
  474. package/dist/plugins/specweave-github/lib/github-ac-comment-poster.js.map +0 -1
  475. package/dist/plugins/specweave-github/lib/github-batch-sync.d.ts.map +0 -1
  476. package/dist/plugins/specweave-github/lib/github-batch-sync.js.map +0 -1
  477. package/dist/plugins/specweave-github/lib/github-board-resolver-v2.d.ts.map +0 -1
  478. package/dist/plugins/specweave-github/lib/github-board-resolver-v2.js.map +0 -1
  479. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts +0 -214
  480. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts.map +0 -1
  481. package/dist/plugins/specweave-github/lib/github-client-v2.js +0 -812
  482. package/dist/plugins/specweave-github/lib/github-client-v2.js.map +0 -1
  483. package/dist/plugins/specweave-github/lib/github-client.d.ts.map +0 -1
  484. package/dist/plugins/specweave-github/lib/github-client.js.map +0 -1
  485. package/dist/plugins/specweave-github/lib/github-conflict-resolver.d.ts.map +0 -1
  486. package/dist/plugins/specweave-github/lib/github-conflict-resolver.js.map +0 -1
  487. package/dist/plugins/specweave-github/lib/github-cross-repo-sync.d.ts.map +0 -1
  488. package/dist/plugins/specweave-github/lib/github-cross-repo-sync.js +0 -172
  489. package/dist/plugins/specweave-github/lib/github-cross-repo-sync.js.map +0 -1
  490. package/dist/plugins/specweave-github/lib/github-feature-sync-cli.d.ts.map +0 -1
  491. package/dist/plugins/specweave-github/lib/github-feature-sync-cli.js.map +0 -1
  492. package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts.map +0 -1
  493. package/dist/plugins/specweave-github/lib/github-feature-sync.js +0 -1112
  494. package/dist/plugins/specweave-github/lib/github-feature-sync.js.map +0 -1
  495. package/dist/plugins/specweave-github/lib/github-field-sync.d.ts.map +0 -1
  496. package/dist/plugins/specweave-github/lib/github-field-sync.js.map +0 -1
  497. package/dist/plugins/specweave-github/lib/github-graphql-client.d.ts.map +0 -1
  498. package/dist/plugins/specweave-github/lib/github-graphql-client.js.map +0 -1
  499. package/dist/plugins/specweave-github/lib/github-issue-body-generator.d.ts.map +0 -1
  500. package/dist/plugins/specweave-github/lib/github-issue-body-generator.js.map +0 -1
  501. package/dist/plugins/specweave-github/lib/github-issue-body-parser.d.ts.map +0 -1
  502. package/dist/plugins/specweave-github/lib/github-issue-body-parser.js.map +0 -1
  503. package/dist/plugins/specweave-github/lib/github-issue-updater.d.ts.map +0 -1
  504. package/dist/plugins/specweave-github/lib/github-issue-updater.js +0 -339
  505. package/dist/plugins/specweave-github/lib/github-issue-updater.js.map +0 -1
  506. package/dist/plugins/specweave-github/lib/github-pull-sync.d.ts +0 -94
  507. package/dist/plugins/specweave-github/lib/github-pull-sync.d.ts.map +0 -1
  508. package/dist/plugins/specweave-github/lib/github-pull-sync.js +0 -232
  509. package/dist/plugins/specweave-github/lib/github-pull-sync.js.map +0 -1
  510. package/dist/plugins/specweave-github/lib/github-push-sync.d.ts.map +0 -1
  511. package/dist/plugins/specweave-github/lib/github-push-sync.js +0 -127
  512. package/dist/plugins/specweave-github/lib/github-push-sync.js.map +0 -1
  513. package/dist/plugins/specweave-github/lib/github-rate-limiter.d.ts.map +0 -1
  514. package/dist/plugins/specweave-github/lib/github-rate-limiter.js +0 -109
  515. package/dist/plugins/specweave-github/lib/github-rate-limiter.js.map +0 -1
  516. package/dist/plugins/specweave-github/lib/github-spec-commit-sync.d.ts +0 -37
  517. package/dist/plugins/specweave-github/lib/github-spec-commit-sync.d.ts.map +0 -1
  518. package/dist/plugins/specweave-github/lib/github-spec-commit-sync.js +0 -209
  519. package/dist/plugins/specweave-github/lib/github-spec-commit-sync.js.map +0 -1
  520. package/dist/plugins/specweave-github/lib/github-spec-content-sync.d.ts +0 -28
  521. package/dist/plugins/specweave-github/lib/github-spec-content-sync.d.ts.map +0 -1
  522. package/dist/plugins/specweave-github/lib/github-spec-content-sync.js +0 -365
  523. package/dist/plugins/specweave-github/lib/github-spec-content-sync.js.map +0 -1
  524. package/dist/plugins/specweave-github/lib/github-spec-frontmatter-updater.d.ts +0 -21
  525. package/dist/plugins/specweave-github/lib/github-spec-frontmatter-updater.d.ts.map +0 -1
  526. package/dist/plugins/specweave-github/lib/github-spec-frontmatter-updater.js.map +0 -1
  527. package/dist/plugins/specweave-github/lib/github-spec-sync.d.ts +0 -225
  528. package/dist/plugins/specweave-github/lib/github-spec-sync.d.ts.map +0 -1
  529. package/dist/plugins/specweave-github/lib/github-spec-sync.js +0 -974
  530. package/dist/plugins/specweave-github/lib/github-spec-sync.js.map +0 -1
  531. package/dist/plugins/specweave-github/lib/github-sync-orchestrator.d.ts +0 -47
  532. package/dist/plugins/specweave-github/lib/github-sync-orchestrator.d.ts.map +0 -1
  533. package/dist/plugins/specweave-github/lib/github-sync-orchestrator.js.map +0 -1
  534. package/dist/plugins/specweave-github/lib/github-us-auto-closer.d.ts.map +0 -1
  535. package/dist/plugins/specweave-github/lib/github-us-auto-closer.js +0 -219
  536. package/dist/plugins/specweave-github/lib/github-us-auto-closer.js.map +0 -1
  537. package/dist/plugins/specweave-github/lib/index.d.ts.map +0 -1
  538. package/dist/plugins/specweave-github/lib/index.js.map +0 -1
  539. package/dist/plugins/specweave-github/lib/per-us-sync.d.ts +0 -126
  540. package/dist/plugins/specweave-github/lib/per-us-sync.d.ts.map +0 -1
  541. package/dist/plugins/specweave-github/lib/per-us-sync.js +0 -394
  542. package/dist/plugins/specweave-github/lib/per-us-sync.js.map +0 -1
  543. package/dist/plugins/specweave-github/lib/progress-comment-builder.d.ts.map +0 -1
  544. package/dist/plugins/specweave-github/lib/progress-comment-builder.js.map +0 -1
  545. package/dist/plugins/specweave-github/lib/types.d.ts.map +0 -1
  546. package/dist/plugins/specweave-github/lib/types.js.map +0 -1
  547. package/dist/plugins/specweave-github/lib/user-story-content-builder.d.ts.map +0 -1
  548. package/dist/plugins/specweave-github/lib/user-story-content-builder.js +0 -310
  549. package/dist/plugins/specweave-github/lib/user-story-content-builder.js.map +0 -1
  550. package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts.map +0 -1
  551. package/dist/plugins/specweave-github/lib/user-story-issue-builder.js.map +0 -1
  552. package/dist/plugins/specweave-jira/lib/content-format-adapter.d.ts.map +0 -1
  553. package/dist/plugins/specweave-jira/lib/content-format-adapter.js.map +0 -1
  554. package/dist/plugins/specweave-jira/lib/jira-ac-checkbox-sync.d.ts +0 -47
  555. package/dist/plugins/specweave-jira/lib/jira-ac-checkbox-sync.d.ts.map +0 -1
  556. package/dist/plugins/specweave-jira/lib/jira-ac-checkbox-sync.js +0 -307
  557. package/dist/plugins/specweave-jira/lib/jira-ac-checkbox-sync.js.map +0 -1
  558. package/dist/plugins/specweave-jira/lib/jira-board-resolver.d.ts +0 -50
  559. package/dist/plugins/specweave-jira/lib/jira-board-resolver.d.ts.map +0 -1
  560. package/dist/plugins/specweave-jira/lib/jira-board-resolver.js.map +0 -1
  561. package/dist/plugins/specweave-jira/lib/jira-deployment-detector.d.ts.map +0 -1
  562. package/dist/plugins/specweave-jira/lib/jira-deployment-detector.js.map +0 -1
  563. package/dist/plugins/specweave-jira/lib/jira-duplicate-detector.d.ts +0 -103
  564. package/dist/plugins/specweave-jira/lib/jira-duplicate-detector.d.ts.map +0 -1
  565. package/dist/plugins/specweave-jira/lib/jira-duplicate-detector.js +0 -295
  566. package/dist/plugins/specweave-jira/lib/jira-duplicate-detector.js.map +0 -1
  567. package/dist/plugins/specweave-jira/lib/jira-epic-sync.d.ts +0 -67
  568. package/dist/plugins/specweave-jira/lib/jira-epic-sync.d.ts.map +0 -1
  569. package/dist/plugins/specweave-jira/lib/jira-epic-sync.js +0 -286
  570. package/dist/plugins/specweave-jira/lib/jira-epic-sync.js.map +0 -1
  571. package/dist/plugins/specweave-jira/lib/jira-field-discovery.d.ts.map +0 -1
  572. package/dist/plugins/specweave-jira/lib/jira-field-discovery.js.map +0 -1
  573. package/dist/plugins/specweave-jira/lib/jira-paginated-search.d.ts.map +0 -1
  574. package/dist/plugins/specweave-jira/lib/jira-paginated-search.js.map +0 -1
  575. package/dist/plugins/specweave-jira/lib/jira-permission-gate.d.ts.map +0 -1
  576. package/dist/plugins/specweave-jira/lib/jira-permission-gate.js.map +0 -1
  577. package/dist/plugins/specweave-jira/lib/jira-spec-commit-sync.d.ts +0 -43
  578. package/dist/plugins/specweave-jira/lib/jira-spec-commit-sync.d.ts.map +0 -1
  579. package/dist/plugins/specweave-jira/lib/jira-spec-commit-sync.js +0 -284
  580. package/dist/plugins/specweave-jira/lib/jira-spec-commit-sync.js.map +0 -1
  581. package/dist/plugins/specweave-jira/lib/jira-spec-content-sync.d.ts +0 -33
  582. package/dist/plugins/specweave-jira/lib/jira-spec-content-sync.d.ts.map +0 -1
  583. package/dist/plugins/specweave-jira/lib/jira-spec-content-sync.js +0 -294
  584. package/dist/plugins/specweave-jira/lib/jira-spec-content-sync.js.map +0 -1
  585. package/dist/plugins/specweave-jira/lib/jira-spec-sync.d.ts +0 -180
  586. package/dist/plugins/specweave-jira/lib/jira-spec-sync.d.ts.map +0 -1
  587. package/dist/plugins/specweave-jira/lib/jira-spec-sync.js +0 -757
  588. package/dist/plugins/specweave-jira/lib/jira-spec-sync.js.map +0 -1
  589. package/dist/plugins/specweave-jira/lib/jira-status-sync.d.ts +0 -116
  590. package/dist/plugins/specweave-jira/lib/jira-status-sync.d.ts.map +0 -1
  591. package/dist/plugins/specweave-jira/lib/jira-status-sync.js +0 -302
  592. package/dist/plugins/specweave-jira/lib/jira-status-sync.js.map +0 -1
  593. package/dist/plugins/specweave-jira/lib/metadata-paths.d.ts.map +0 -1
  594. package/dist/plugins/specweave-jira/lib/metadata-paths.js.map +0 -1
  595. package/dist/plugins/specweave-jira/lib/per-us-sync.d.ts +0 -117
  596. package/dist/plugins/specweave-jira/lib/per-us-sync.d.ts.map +0 -1
  597. package/dist/plugins/specweave-jira/lib/per-us-sync.js +0 -274
  598. package/dist/plugins/specweave-jira/lib/per-us-sync.js.map +0 -1
  599. package/dist/plugins/specweave-jira/lib/reorganization-detector.d.ts +0 -80
  600. package/dist/plugins/specweave-jira/lib/reorganization-detector.d.ts.map +0 -1
  601. package/dist/plugins/specweave-jira/lib/reorganization-detector.js.map +0 -1
  602. package/dist/plugins/specweave-jira/lib/setup-wizard.d.ts +0 -29
  603. package/dist/plugins/specweave-jira/lib/setup-wizard.d.ts.map +0 -1
  604. package/dist/plugins/specweave-jira/lib/setup-wizard.js +0 -198
  605. package/dist/plugins/specweave-jira/lib/setup-wizard.js.map +0 -1
  606. package/dist/plugins/specweave-release/lib/dashboard-generator.d.ts.map +0 -1
  607. package/dist/plugins/specweave-release/lib/dashboard-generator.js.map +0 -1
  608. package/dist/plugins/specweave-release/lib/dora-tracker.d.ts.map +0 -1
  609. package/dist/plugins/specweave-release/lib/dora-tracker.js.map +0 -1
  610. package/plugins/specweave-ado/.claude-plugin/plugin.json +0 -20
  611. package/plugins/specweave-ado/PLUGIN.md +0 -39
  612. package/plugins/specweave-ado/hooks/README.md +0 -201
  613. package/plugins/specweave-ado/lib/ado-ac-checkbox-sync.js +0 -241
  614. package/plugins/specweave-ado/lib/ado-ac-checkbox-sync.ts +0 -311
  615. package/plugins/specweave-ado/lib/ado-client-v2.d.ts +0 -134
  616. package/plugins/specweave-ado/lib/ado-client-v2.ts +0 -742
  617. package/plugins/specweave-ado/lib/ado-duplicate-detector.js +0 -279
  618. package/plugins/specweave-ado/lib/ado-duplicate-detector.ts +0 -408
  619. package/plugins/specweave-ado/lib/ado-hierarchical-sync.d.ts +0 -40
  620. package/plugins/specweave-ado/lib/ado-hierarchical-sync.js +0 -300
  621. package/plugins/specweave-ado/lib/ado-hierarchical-sync.ts +0 -554
  622. package/plugins/specweave-ado/lib/ado-multi-project-sync.js +0 -486
  623. package/plugins/specweave-ado/lib/ado-multi-project-sync.ts +0 -675
  624. package/plugins/specweave-ado/lib/ado-project-detector.js +0 -502
  625. package/plugins/specweave-ado/lib/ado-project-detector.ts +0 -560
  626. package/plugins/specweave-ado/lib/ado-spec-commit-sync.d.ts +0 -38
  627. package/plugins/specweave-ado/lib/ado-spec-commit-sync.js +0 -189
  628. package/plugins/specweave-ado/lib/ado-spec-commit-sync.ts +0 -288
  629. package/plugins/specweave-ado/lib/ado-spec-content-sync.js +0 -249
  630. package/plugins/specweave-ado/lib/ado-spec-content-sync.ts +0 -379
  631. package/plugins/specweave-ado/lib/ado-spec-sync.d.ts +0 -100
  632. package/plugins/specweave-ado/lib/ado-spec-sync.js +0 -681
  633. package/plugins/specweave-ado/lib/ado-spec-sync.ts +0 -893
  634. package/plugins/specweave-ado/lib/ado-status-sync.js +0 -150
  635. package/plugins/specweave-ado/lib/ado-status-sync.ts +0 -213
  636. package/plugins/specweave-ado/lib/conflict-resolver.js +0 -400
  637. package/plugins/specweave-ado/lib/conflict-resolver.ts +0 -583
  638. package/plugins/specweave-ado/lib/per-us-sync.js +0 -272
  639. package/plugins/specweave-ado/lib/per-us-sync.ts +0 -457
  640. package/plugins/specweave-ado/lib/project-selector.d.ts +0 -42
  641. package/plugins/specweave-ado/lib/project-selector.ts +0 -304
  642. package/plugins/specweave-diagrams/.claude-plugin/plugin.json +0 -20
  643. package/plugins/specweave-diagrams/PLUGIN.md +0 -32
  644. package/plugins/specweave-docs/.claude-plugin/plugin.json +0 -10
  645. package/plugins/specweave-docs/PLUGIN.md +0 -27
  646. package/plugins/specweave-github/.claude-plugin/plugin.json +0 -19
  647. package/plugins/specweave-github/MULTI-PROJECT-SYNC-ARCHITECTURE.md +0 -744
  648. package/plugins/specweave-github/PLUGIN.md +0 -29
  649. package/plugins/specweave-github/SYNC-ARCHITECTURE-FIX-SUMMARY.md +0 -302
  650. package/plugins/specweave-github/hooks/README.md +0 -289
  651. package/plugins/specweave-github/lib/CodeValidator.js +0 -195
  652. package/plugins/specweave-github/lib/CodeValidator.ts +0 -284
  653. package/plugins/specweave-github/lib/duplicate-detector.js +0 -397
  654. package/plugins/specweave-github/lib/duplicate-detector.ts +0 -561
  655. package/plugins/specweave-github/lib/github-ac-checkbox-sync.js +0 -287
  656. package/plugins/specweave-github/lib/github-ac-checkbox-sync.ts +0 -391
  657. package/plugins/specweave-github/lib/github-ac-comment-poster.js +0 -191
  658. package/plugins/specweave-github/lib/github-ac-comment-poster.ts +0 -315
  659. package/plugins/specweave-github/lib/github-board-resolver.js +0 -81
  660. package/plugins/specweave-github/lib/github-board-resolver.ts +0 -175
  661. package/plugins/specweave-github/lib/github-client-v2.js +0 -814
  662. package/plugins/specweave-github/lib/github-client-v2.ts +0 -1035
  663. package/plugins/specweave-github/lib/github-cross-repo-sync.js +0 -182
  664. package/plugins/specweave-github/lib/github-cross-repo-sync.ts +0 -265
  665. package/plugins/specweave-github/lib/github-feature-sync.js +0 -1007
  666. package/plugins/specweave-github/lib/github-feature-sync.ts +0 -1403
  667. package/plugins/specweave-github/lib/github-hierarchical-sync.d.ts +0 -29
  668. package/plugins/specweave-github/lib/github-hierarchical-sync.js +0 -190
  669. package/plugins/specweave-github/lib/github-hierarchical-sync.ts +0 -355
  670. package/plugins/specweave-github/lib/github-issue-updater.js +0 -275
  671. package/plugins/specweave-github/lib/github-issue-updater.ts +0 -462
  672. package/plugins/specweave-github/lib/github-multi-project-sync.js +0 -409
  673. package/plugins/specweave-github/lib/github-multi-project-sync.ts +0 -555
  674. package/plugins/specweave-github/lib/github-pull-sync.js +0 -185
  675. package/plugins/specweave-github/lib/github-pull-sync.ts +0 -343
  676. package/plugins/specweave-github/lib/github-push-sync.js +0 -129
  677. package/plugins/specweave-github/lib/github-push-sync.ts +0 -188
  678. package/plugins/specweave-github/lib/github-rate-limiter.js +0 -96
  679. package/plugins/specweave-github/lib/github-rate-limiter.ts +0 -143
  680. package/plugins/specweave-github/lib/github-spec-commit-sync.d.ts +0 -37
  681. package/plugins/specweave-github/lib/github-spec-commit-sync.js +0 -186
  682. package/plugins/specweave-github/lib/github-spec-commit-sync.ts +0 -285
  683. package/plugins/specweave-github/lib/github-spec-content-sync.js +0 -298
  684. package/plugins/specweave-github/lib/github-spec-content-sync.ts +0 -465
  685. package/plugins/specweave-github/lib/github-spec-frontmatter-updater.ts +0 -306
  686. package/plugins/specweave-github/lib/github-spec-sync.d.ts +0 -108
  687. package/plugins/specweave-github/lib/github-spec-sync.js +0 -900
  688. package/plugins/specweave-github/lib/github-spec-sync.ts +0 -1281
  689. package/plugins/specweave-github/lib/github-sync-orchestrator.ts +0 -158
  690. package/plugins/specweave-github/lib/github-us-auto-closer.js +0 -190
  691. package/plugins/specweave-github/lib/github-us-auto-closer.ts +0 -313
  692. package/plugins/specweave-github/lib/per-us-sync.js +0 -330
  693. package/plugins/specweave-github/lib/per-us-sync.ts +0 -515
  694. package/plugins/specweave-github/lib/user-story-content-builder.js +0 -306
  695. package/plugins/specweave-github/lib/user-story-content-builder.ts +0 -424
  696. package/plugins/specweave-jira/.claude-plugin/plugin.json +0 -20
  697. package/plugins/specweave-jira/PLUGIN.md +0 -28
  698. package/plugins/specweave-jira/hooks/README.md +0 -201
  699. package/plugins/specweave-jira/lib/jira-ac-checkbox-sync.js +0 -300
  700. package/plugins/specweave-jira/lib/jira-ac-checkbox-sync.ts +0 -380
  701. package/plugins/specweave-jira/lib/jira-board-resolver.d.ts +0 -50
  702. package/plugins/specweave-jira/lib/jira-board-resolver.ts +0 -127
  703. package/plugins/specweave-jira/lib/jira-duplicate-detector.js +0 -279
  704. package/plugins/specweave-jira/lib/jira-duplicate-detector.ts +0 -420
  705. package/plugins/specweave-jira/lib/jira-epic-sync.js +0 -314
  706. package/plugins/specweave-jira/lib/jira-epic-sync.ts +0 -474
  707. package/plugins/specweave-jira/lib/jira-hierarchical-sync.d.ts +0 -33
  708. package/plugins/specweave-jira/lib/jira-hierarchical-sync.js +0 -144
  709. package/plugins/specweave-jira/lib/jira-hierarchical-sync.ts +0 -294
  710. package/plugins/specweave-jira/lib/jira-multi-project-sync.js +0 -279
  711. package/plugins/specweave-jira/lib/jira-multi-project-sync.ts +0 -398
  712. package/plugins/specweave-jira/lib/jira-spec-commit-sync.d.ts +0 -43
  713. package/plugins/specweave-jira/lib/jira-spec-commit-sync.js +0 -262
  714. package/plugins/specweave-jira/lib/jira-spec-commit-sync.ts +0 -370
  715. package/plugins/specweave-jira/lib/jira-spec-content-sync.js +0 -260
  716. package/plugins/specweave-jira/lib/jira-spec-content-sync.ts +0 -367
  717. package/plugins/specweave-jira/lib/jira-spec-sync.d.ts +0 -105
  718. package/plugins/specweave-jira/lib/jira-spec-sync.js +0 -689
  719. package/plugins/specweave-jira/lib/jira-spec-sync.ts +0 -947
  720. package/plugins/specweave-jira/lib/jira-status-sync.js +0 -215
  721. package/plugins/specweave-jira/lib/jira-status-sync.ts +0 -375
  722. package/plugins/specweave-jira/lib/per-us-sync.js +0 -235
  723. package/plugins/specweave-jira/lib/per-us-sync.ts +0 -384
  724. package/plugins/specweave-jira/lib/project-selector.d.ts +0 -42
  725. package/plugins/specweave-jira/lib/project-selector.ts +0 -310
  726. package/plugins/specweave-jira/lib/reorganization-detector.d.ts +0 -67
  727. package/plugins/specweave-jira/lib/reorganization-detector.ts +0 -449
  728. package/plugins/specweave-jira/lib/setup-wizard.d.js +0 -4
  729. package/plugins/specweave-jira/lib/setup-wizard.d.ts +0 -29
  730. package/plugins/specweave-jira/lib/setup-wizard.js +0 -156
  731. package/plugins/specweave-jira/lib/setup-wizard.ts +0 -238
  732. package/plugins/specweave-media/.claude-plugin/plugin.json +0 -24
  733. package/plugins/specweave-media/PLUGIN.md +0 -37
  734. package/plugins/specweave-media/test-providers.sh +0 -308
  735. package/plugins/specweave-release/.claude-plugin/plugin.json +0 -29
  736. package/plugins/specweave-release/IMPLEMENTATION.md +0 -446
  737. package/plugins/specweave-release/PLUGIN.md +0 -38
  738. package/plugins/specweave-release/README.md +0 -508
  739. package/plugins/specweave-release/hooks/post-task-completion.sh +0 -113
  740. /package/dist/plugins/{specweave-release/lib → specweave/lib/features/release}/dashboard-generator.d.ts +0 -0
  741. /package/dist/plugins/{specweave-release/lib → specweave/lib/features/release}/dashboard-generator.js +0 -0
  742. /package/dist/plugins/{specweave-release/lib → specweave/lib/features/release}/dora-tracker.d.ts +0 -0
  743. /package/dist/plugins/{specweave-release/lib → specweave/lib/features/release}/dora-tracker.js +0 -0
  744. /package/dist/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-board-resolver.d.ts +0 -0
  745. /package/dist/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-board-resolver.js +0 -0
  746. /package/dist/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-client-v2.js +0 -0
  747. /package/dist/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-client.d.ts +0 -0
  748. /package/dist/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-client.js +0 -0
  749. /package/dist/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-permission-gate.d.ts +0 -0
  750. /package/dist/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-permission-gate.js +0 -0
  751. /package/dist/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-profile-resolver.d.ts +0 -0
  752. /package/dist/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-profile-resolver.js +0 -0
  753. /package/dist/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-pull-sync.d.ts +0 -0
  754. /package/dist/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-pull-sync.js +0 -0
  755. /package/dist/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-rate-limiter.d.ts +0 -0
  756. /package/dist/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-rate-limiter.js +0 -0
  757. /package/dist/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/conflict-resolver.d.ts +0 -0
  758. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/CodeValidator.d.ts +0 -0
  759. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/IssueStateManager.d.ts +0 -0
  760. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/IssueStateManager.js +0 -0
  761. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/completion-calculator.d.ts +0 -0
  762. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/completion-calculator.js +0 -0
  763. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/duplicate-detector.d.ts +0 -0
  764. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-ac-comment-poster.d.ts +0 -0
  765. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-batch-sync.d.ts +0 -0
  766. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-batch-sync.js +0 -0
  767. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-board-resolver-v2.d.ts +0 -0
  768. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-board-resolver-v2.js +0 -0
  769. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-client.d.ts +0 -0
  770. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-client.js +0 -0
  771. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-conflict-resolver.d.ts +0 -0
  772. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-conflict-resolver.js +0 -0
  773. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-cross-repo-sync.d.ts +0 -0
  774. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-feature-sync-cli.d.ts +0 -0
  775. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-feature-sync-cli.js +0 -0
  776. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-feature-sync.d.ts +0 -0
  777. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-field-sync.d.ts +0 -0
  778. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-field-sync.js +0 -0
  779. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-graphql-client.d.ts +0 -0
  780. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-graphql-client.js +0 -0
  781. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-issue-body-generator.d.ts +0 -0
  782. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-issue-body-generator.js +0 -0
  783. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-issue-body-parser.d.ts +0 -0
  784. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-issue-body-parser.js +0 -0
  785. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-issue-updater.d.ts +0 -0
  786. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-push-sync.d.ts +0 -0
  787. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-rate-limiter.d.ts +0 -0
  788. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-spec-frontmatter-updater.js +0 -0
  789. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-sync-orchestrator.js +0 -0
  790. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-us-auto-closer.d.ts +0 -0
  791. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/index.d.ts +0 -0
  792. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/index.js +0 -0
  793. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/progress-comment-builder.d.ts +0 -0
  794. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/progress-comment-builder.js +0 -0
  795. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/types.d.ts +0 -0
  796. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/types.js +0 -0
  797. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/user-story-content-builder.d.ts +0 -0
  798. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/user-story-issue-builder.d.ts +0 -0
  799. /package/dist/plugins/{specweave-github/lib → specweave/lib/integrations/github}/user-story-issue-builder.js +0 -0
  800. /package/dist/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/content-format-adapter.d.ts +0 -0
  801. /package/dist/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/content-format-adapter.js +0 -0
  802. /package/dist/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-board-resolver.js +0 -0
  803. /package/dist/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-deployment-detector.d.ts +0 -0
  804. /package/dist/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-deployment-detector.js +0 -0
  805. /package/dist/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-field-discovery.d.ts +0 -0
  806. /package/dist/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-field-discovery.js +0 -0
  807. /package/dist/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-paginated-search.d.ts +0 -0
  808. /package/dist/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-paginated-search.js +0 -0
  809. /package/dist/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-permission-gate.d.ts +0 -0
  810. /package/dist/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-permission-gate.js +0 -0
  811. /package/dist/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/metadata-paths.d.ts +0 -0
  812. /package/dist/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/metadata-paths.js +0 -0
  813. /package/dist/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/reorganization-detector.js +0 -0
  814. /package/plugins/{specweave-ado/commands/cleanup-duplicates.md → specweave/commands/ado-cleanup-duplicates.md} +0 -0
  815. /package/plugins/{specweave-ado/commands/clone.md → specweave/commands/ado-clone.md} +0 -0
  816. /package/plugins/{specweave-ado/commands/close.md → specweave/commands/ado-close.md} +0 -0
  817. /package/plugins/{specweave-ado/commands/create.md → specweave/commands/ado-create.md} +0 -0
  818. /package/plugins/{specweave-ado/commands/import-areas.md → specweave/commands/ado-import-areas.md} +0 -0
  819. /package/plugins/{specweave-ado/commands/import-projects.md → specweave/commands/ado-import-projects.md} +0 -0
  820. /package/plugins/{specweave-ado/commands/pull.md → specweave/commands/ado-pull.md} +0 -0
  821. /package/plugins/{specweave-ado/commands/push.md → specweave/commands/ado-push.md} +0 -0
  822. /package/plugins/{specweave-ado/commands/reconcile.md → specweave/commands/ado-reconcile.md} +0 -0
  823. /package/plugins/{specweave-ado/commands/status.md → specweave/commands/ado-status.md} +0 -0
  824. /package/plugins/{specweave-ado/commands/sync.md → specweave/commands/ado-sync.md} +0 -0
  825. /package/plugins/{specweave-diagrams → specweave}/commands/diagrams-generate.md +0 -0
  826. /package/plugins/{specweave-docs/commands/build.md → specweave/commands/docs-build.md} +0 -0
  827. /package/plugins/{specweave-docs/commands/generate.md → specweave/commands/docs-generate.md} +0 -0
  828. /package/plugins/{specweave-docs/commands/health.md → specweave/commands/docs-health.md} +0 -0
  829. /package/plugins/{specweave-docs/commands/init.md → specweave/commands/docs-init.md} +0 -0
  830. /package/plugins/{specweave-docs/commands/organize.md → specweave/commands/docs-organize.md} +0 -0
  831. /package/plugins/{specweave-docs/commands/validate.md → specweave/commands/docs-validate.md} +0 -0
  832. /package/plugins/{specweave-docs/commands/view.md → specweave/commands/docs-view.md} +0 -0
  833. /package/plugins/{specweave-github/commands/cleanup-duplicates.md → specweave/commands/github-cleanup-duplicates.md} +0 -0
  834. /package/plugins/{specweave-github/commands/clone.md → specweave/commands/github-clone.md} +0 -0
  835. /package/plugins/{specweave-github/commands/close.md → specweave/commands/github-close.md} +0 -0
  836. /package/plugins/{specweave-github/commands/create.md → specweave/commands/github-create.md} +0 -0
  837. /package/plugins/{specweave-github/commands/pull.md → specweave/commands/github-pull.md} +0 -0
  838. /package/plugins/{specweave-github/commands/push.md → specweave/commands/github-push.md} +0 -0
  839. /package/plugins/{specweave-github/commands/reconcile.md → specweave/commands/github-reconcile.md} +0 -0
  840. /package/plugins/{specweave-github/commands/status.md → specweave/commands/github-status.md} +0 -0
  841. /package/plugins/{specweave-github/commands/sync.md → specweave/commands/github-sync.md} +0 -0
  842. /package/plugins/{specweave-github/commands/update-user-story.md → specweave/commands/github-update-user-story.md} +0 -0
  843. /package/plugins/{specweave-jira/commands/cleanup-duplicates.md → specweave/commands/jira-cleanup-duplicates.md} +0 -0
  844. /package/plugins/{specweave-jira/commands/close.md → specweave/commands/jira-close.md} +0 -0
  845. /package/plugins/{specweave-jira/commands/create.md → specweave/commands/jira-create.md} +0 -0
  846. /package/plugins/{specweave-jira/commands/import-boards.md → specweave/commands/jira-import-boards.md} +0 -0
  847. /package/plugins/{specweave-jira/commands/import-projects-full.md → specweave/commands/jira-import-projects-full.md} +0 -0
  848. /package/plugins/{specweave-jira/commands/import-projects.md → specweave/commands/jira-import-projects.md} +0 -0
  849. /package/plugins/{specweave-jira/commands/pull.md → specweave/commands/jira-pull.md} +0 -0
  850. /package/plugins/{specweave-jira/commands/push.md → specweave/commands/jira-push.md} +0 -0
  851. /package/plugins/{specweave-jira/commands/reconcile.md → specweave/commands/jira-reconcile.md} +0 -0
  852. /package/plugins/{specweave-jira/commands/status.md → specweave/commands/jira-status.md} +0 -0
  853. /package/plugins/{specweave-jira/commands/sync.md → specweave/commands/jira-sync.md} +0 -0
  854. /package/plugins/{specweave-release/commands/align.md → specweave/commands/release-align.md} +0 -0
  855. /package/plugins/{specweave-release/commands/init.md → specweave/commands/release-init.md} +0 -0
  856. /package/plugins/{specweave-release/commands/npm.md → specweave/commands/release-npm.md} +0 -0
  857. /package/plugins/{specweave-release/commands/platform.md → specweave/commands/release-platform.md} +0 -0
  858. /package/plugins/{specweave-release/commands/rc.md → specweave/commands/release-rc.md} +0 -0
  859. /package/plugins/{specweave-ado/hooks/post-living-docs-update.sh → specweave/hooks/v2/integrations/ado-post-living-docs-update.sh} +0 -0
  860. /package/plugins/{specweave-ado/hooks/post-task-completion.sh → specweave/hooks/v2/integrations/ado-post-task.sh} +0 -0
  861. /package/plugins/{specweave-github/hooks → specweave/hooks/v2/integrations}/github-auto-create-handler.sh +0 -0
  862. /package/plugins/{specweave-github/hooks/post-task-completion.sh → specweave/hooks/v2/integrations/github-post-task.sh} +0 -0
  863. /package/plugins/{specweave-jira/hooks/post-task-completion.sh → specweave/hooks/v2/integrations/jira-post-task.sh} +0 -0
  864. /package/plugins/{specweave-release/lib → specweave/lib/features/release}/dashboard-generator.js +0 -0
  865. /package/plugins/{specweave-release/lib → specweave/lib/features/release}/dashboard-generator.ts +0 -0
  866. /package/plugins/{specweave-release/lib → specweave/lib/features/release}/dora-tracker.js +0 -0
  867. /package/plugins/{specweave-release/lib → specweave/lib/features/release}/dora-tracker.ts +0 -0
  868. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-board-resolver.d.js +0 -0
  869. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-board-resolver.d.ts +0 -0
  870. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-board-resolver.d.ts.map +0 -0
  871. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-board-resolver.js +0 -0
  872. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-board-resolver.js.map +0 -0
  873. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-board-resolver.ts +0 -0
  874. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-client-v2.d.js +0 -0
  875. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-client-v2.d.ts.map +0 -0
  876. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-client-v2.js +0 -0
  877. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-client-v2.js.map +0 -0
  878. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-client.d.js +0 -0
  879. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-client.d.ts +0 -0
  880. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-client.d.ts.map +0 -0
  881. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-client.js +0 -0
  882. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-client.js.map +0 -0
  883. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-client.ts +0 -0
  884. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-hierarchical-sync.d.js +0 -0
  885. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-hierarchical-sync.d.ts.map +0 -0
  886. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-hierarchical-sync.js.map +0 -0
  887. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-permission-gate.js +0 -0
  888. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-permission-gate.ts +0 -0
  889. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-profile-resolver.js +0 -0
  890. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-profile-resolver.ts +0 -0
  891. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-pull-sync.js +0 -0
  892. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-pull-sync.ts +0 -0
  893. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-rate-limiter.js +0 -0
  894. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-rate-limiter.ts +0 -0
  895. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-spec-commit-sync.d.js +0 -0
  896. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-spec-commit-sync.d.ts.map +0 -0
  897. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-spec-commit-sync.js.map +0 -0
  898. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-spec-sync.d.js +0 -0
  899. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-spec-sync.d.ts.map +0 -0
  900. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/ado-spec-sync.js.map +0 -0
  901. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/project-selector.d.js +0 -0
  902. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/project-selector.d.ts.map +0 -0
  903. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/project-selector.js +0 -0
  904. /package/plugins/{specweave-ado/lib → specweave/lib/integrations/ado}/project-selector.js.map +0 -0
  905. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/IssueStateManager.js +0 -0
  906. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/IssueStateManager.ts +0 -0
  907. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/completion-calculator.js +0 -0
  908. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/completion-calculator.ts +0 -0
  909. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-batch-sync.js +0 -0
  910. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-batch-sync.ts +0 -0
  911. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-board-resolver-v2.js +0 -0
  912. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-board-resolver-v2.ts +0 -0
  913. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-board-resolver.d.js +0 -0
  914. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-board-resolver.d.ts +0 -0
  915. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-board-resolver.d.ts.map +0 -0
  916. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-board-resolver.js.map +0 -0
  917. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-client.d.js +0 -0
  918. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-client.d.ts +0 -0
  919. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-client.d.ts.map +0 -0
  920. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-client.js +0 -0
  921. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-client.js.map +0 -0
  922. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-client.ts +0 -0
  923. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-conflict-resolver.js +0 -0
  924. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-conflict-resolver.ts +0 -0
  925. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-feature-sync-cli.js +0 -0
  926. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-feature-sync-cli.ts +0 -0
  927. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-field-sync.js +0 -0
  928. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-field-sync.ts +0 -0
  929. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-graphql-client.js +0 -0
  930. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-graphql-client.ts +0 -0
  931. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-hierarchical-sync.d.js +0 -0
  932. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-hierarchical-sync.d.ts.map +0 -0
  933. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-hierarchical-sync.js.map +0 -0
  934. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-issue-body-generator.js +0 -0
  935. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-issue-body-generator.ts +0 -0
  936. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-issue-body-parser.js +0 -0
  937. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-issue-body-parser.ts +0 -0
  938. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-issue-updater.d.js +0 -0
  939. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-issue-updater.d.ts +0 -0
  940. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-issue-updater.d.ts.map +0 -0
  941. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-issue-updater.js.map +0 -0
  942. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-spec-commit-sync.d.js +0 -0
  943. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-spec-commit-sync.d.ts.map +0 -0
  944. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-spec-commit-sync.js.map +0 -0
  945. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-spec-frontmatter-updater.js +0 -0
  946. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-spec-sync.d.js +0 -0
  947. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-spec-sync.d.ts.map +0 -0
  948. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-spec-sync.js.map +0 -0
  949. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/github-sync-orchestrator.js +0 -0
  950. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/index.d.js +0 -0
  951. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/index.d.ts +0 -0
  952. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/index.d.ts.map +0 -0
  953. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/index.js +0 -0
  954. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/index.js.map +0 -0
  955. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/index.ts +0 -0
  956. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/progress-comment-builder.js +0 -0
  957. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/progress-comment-builder.ts +0 -0
  958. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/repo-selector.d.js +0 -0
  959. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/repo-selector.d.ts +0 -0
  960. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/repo-selector.d.ts.map +0 -0
  961. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/repo-selector.js +0 -0
  962. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/repo-selector.js.map +0 -0
  963. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/repo-selector.ts +0 -0
  964. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/types.d.js +0 -0
  965. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/types.d.ts +0 -0
  966. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/types.d.ts.map +0 -0
  967. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/types.js +0 -0
  968. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/types.js.map +0 -0
  969. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/types.ts +0 -0
  970. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/user-story-issue-builder.js +0 -0
  971. /package/plugins/{specweave-github/lib → specweave/lib/integrations/github}/user-story-issue-builder.ts +0 -0
  972. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/content-format-adapter.js +0 -0
  973. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/content-format-adapter.ts +0 -0
  974. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-board-resolver.d.js +0 -0
  975. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-board-resolver.d.ts.map +0 -0
  976. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-board-resolver.js +0 -0
  977. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-board-resolver.js.map +0 -0
  978. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-deployment-detector.js +0 -0
  979. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-deployment-detector.ts +0 -0
  980. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-field-discovery.js +0 -0
  981. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-field-discovery.ts +0 -0
  982. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-hierarchical-sync.d.js +0 -0
  983. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-hierarchical-sync.d.ts.map +0 -0
  984. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-hierarchical-sync.js.map +0 -0
  985. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-paginated-search.js +0 -0
  986. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-paginated-search.ts +0 -0
  987. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-permission-gate.js +0 -0
  988. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-permission-gate.ts +0 -0
  989. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-profile-resolver.js +0 -0
  990. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-profile-resolver.ts +0 -0
  991. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-spec-commit-sync.d.js +0 -0
  992. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-spec-commit-sync.d.ts.map +0 -0
  993. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-spec-commit-sync.js.map +0 -0
  994. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-spec-sync.d.js +0 -0
  995. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-spec-sync.d.ts.map +0 -0
  996. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/jira-spec-sync.js.map +0 -0
  997. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/metadata-paths.js +0 -0
  998. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/metadata-paths.ts +0 -0
  999. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/project-selector.d.js +0 -0
  1000. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/project-selector.d.ts.map +0 -0
  1001. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/project-selector.js +0 -0
  1002. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/project-selector.js.map +0 -0
  1003. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/reorganization-detector.d.js +0 -0
  1004. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/reorganization-detector.d.ts.map +0 -0
  1005. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/reorganization-detector.js +0 -0
  1006. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/reorganization-detector.js.map +0 -0
  1007. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/setup-wizard.d.ts.map +0 -0
  1008. /package/plugins/{specweave-jira/lib → specweave/lib/integrations/jira}/setup-wizard.js.map +0 -0
  1009. /package/plugins/{specweave-ado/reference → specweave/reference/ado}/ado-specweave-mapping.md +0 -0
  1010. /package/plugins/{specweave-github/reference → specweave/reference/github}/github-specweave-mapping.md +0 -0
  1011. /package/plugins/{specweave-jira/reference → specweave/reference/jira}/confluence-page-api.md +0 -0
  1012. /package/plugins/{specweave-jira/reference → specweave/reference/jira}/jira-specweave-mapping.md +0 -0
  1013. /package/plugins/{specweave-ado/scripts → specweave/scripts/ado}/refresh-cache.js +0 -0
  1014. /package/plugins/{specweave-ado/scripts → specweave/scripts/ado}/refresh-cache.ts +0 -0
  1015. /package/plugins/{specweave-jira/scripts → specweave/scripts/jira}/import-projects.js +0 -0
  1016. /package/plugins/{specweave-jira/scripts → specweave/scripts/jira}/import-projects.ts +0 -0
  1017. /package/plugins/{specweave-jira/scripts → specweave/scripts/jira}/refresh-cache.js +0 -0
  1018. /package/plugins/{specweave-jira/scripts → specweave/scripts/jira}/refresh-cache.ts +0 -0
  1019. /package/plugins/{specweave-ado → specweave}/skills/ado-mapper/SKILL.md +0 -0
  1020. /package/plugins/{specweave-ado → specweave}/skills/ado-multi-project/SKILL.md +0 -0
  1021. /package/plugins/{specweave-ado → specweave}/skills/ado-resource-validator/SKILL.md +0 -0
  1022. /package/plugins/{specweave-ado → specweave}/skills/ado-sync/README.md +0 -0
  1023. /package/plugins/{specweave-ado → specweave}/skills/ado-sync/SKILL.md +0 -0
  1024. /package/plugins/{specweave-diagrams → specweave}/skills/diagrams/SKILL.md +0 -0
  1025. /package/plugins/{specweave-github → specweave}/skills/github-issue-standard/SKILL.md +0 -0
  1026. /package/plugins/{specweave-github → specweave}/skills/github-multi-project/SKILL.md +0 -0
  1027. /package/plugins/{specweave-github → specweave}/skills/github-sync/SKILL.md +0 -0
  1028. /package/plugins/{specweave-github → specweave}/skills/github-sync/evals/HOW-TO-RUN-EVALS.md +0 -0
  1029. /package/plugins/{specweave-github → specweave}/skills/github-sync/evals/evals.json +0 -0
  1030. /package/plugins/{specweave-media → specweave}/skills/image/SKILL.md +0 -0
  1031. /package/plugins/{specweave-jira → specweave}/skills/jira-mapper/SKILL.md +0 -0
  1032. /package/plugins/{specweave-jira → specweave}/skills/jira-resource-validator/SKILL.md +0 -0
  1033. /package/plugins/{specweave-jira → specweave}/skills/jira-sync/README.md +0 -0
  1034. /package/plugins/{specweave-jira → specweave}/skills/jira-sync/SKILL.md +0 -0
  1035. /package/plugins/{specweave-github → specweave}/skills/pr-review/SKILL.md +0 -0
  1036. /package/plugins/{specweave-release → specweave}/skills/release-expert/SKILL.md +0 -0
  1037. /package/plugins/{specweave-media → specweave}/skills/remotion/SKILL.md +0 -0
  1038. /package/plugins/{specweave-media → specweave}/skills/video/SKILL.md +0 -0
@@ -1,1007 +0,0 @@
1
- import { readdir, readFile, writeFile, mkdir } from "fs/promises";
2
- import { existsSync } from "fs";
3
- import * as path from "path";
4
- import * as yaml from "yaml";
5
- import { UserStoryIssueBuilder } from "./user-story-issue-builder.js";
6
- import { CompletionCalculator } from "./completion-calculator.js";
7
- import { DuplicateDetector } from "./duplicate-detector.js";
8
- import { execFileNoThrow } from "../../specweave/lib/vendor/utils/execFileNoThrow.js";
9
- import { getGitHubAuthFromProject } from "../../specweave/lib/vendor/utils/auth-helpers.js";
10
- const _GitHubFeatureSync = class _GitHubFeatureSync {
11
- // 30 seconds
12
- constructor(client, specsDir, projectRoot) {
13
- // Cached default branch for the sync session (one API call per session)
14
- this.defaultBranch = null;
15
- this.client = client;
16
- this.specsDir = specsDir;
17
- this.projectRoot = projectRoot;
18
- this.calculator = new CompletionCalculator(projectRoot);
19
- this.token = getGitHubAuthFromProject(projectRoot).token;
20
- }
21
- /**
22
- * Detect the default branch from the GitHub API.
23
- * Caches the result per sync session to avoid repeated API calls.
24
- * Falls back to 'main' if API call fails.
25
- */
26
- async detectDefaultBranch() {
27
- if (this.defaultBranch) {
28
- return this.defaultBranch;
29
- }
30
- const owner = this.client.getOwner();
31
- const repo = this.client.getRepo();
32
- const result = await execFileNoThrow("gh", [
33
- "api",
34
- `repos/${owner}/${repo}`,
35
- "--jq",
36
- ".default_branch"
37
- ], { env: this.getGhEnv() });
38
- if (result.exitCode === 0 && result.stdout.trim()) {
39
- this.defaultBranch = result.stdout.trim();
40
- } else {
41
- console.warn(` \u26A0\uFE0F Failed to detect default branch, falling back to 'main': ${result.stderr}`);
42
- this.defaultBranch = "main";
43
- }
44
- return this.defaultBranch;
45
- }
46
- /**
47
- * Get environment object with GH_TOKEN for gh CLI commands.
48
- * This ensures the token from .env is passed to all gh operations,
49
- * regardless of `gh auth` status.
50
- */
51
- getGhEnv() {
52
- return this.token ? { ...process.env, GH_TOKEN: this.token } : process.env;
53
- }
54
- /**
55
- * Get the repo slug (owner/repo) for `-R` flag in gh CLI commands.
56
- * CRITICAL: All gh issue commands MUST use `-R` to target the correct repo,
57
- * not the repo inferred from the current working directory.
58
- */
59
- getRepoSlug() {
60
- return `${this.client.getOwner()}/${this.client.getRepo()}`;
61
- }
62
- /**
63
- * Sync Feature folder to GitHub (Milestone + User Story Issues)
64
- *
65
- * Process:
66
- * 1. Create/update GitHub Milestone for Feature
67
- * 2. Find all us-*.md files across all projects
68
- * 3. Create/update GitHub Issue for EACH user story
69
- * 4. Update frontmatter with GitHub issue links
70
- */
71
- async syncFeatureToGitHub(featureId, projectName) {
72
- const lockKey = `${this.client.getOwner()}/${this.client.getRepo()}:${featureId}`;
73
- const now = Date.now();
74
- const lastSync = _GitHubFeatureSync.syncLocks.get(lockKey);
75
- if (lastSync && now - lastSync < _GitHubFeatureSync.LOCK_DURATION_MS) {
76
- const secondsRemaining = Math.ceil((_GitHubFeatureSync.LOCK_DURATION_MS - (now - lastSync)) / 1e3);
77
- console.log(`
78
- \u23ED\uFE0F Sync already in progress for ${featureId} (or completed ${Math.floor((now - lastSync) / 1e3)}s ago)`);
79
- console.log(` \u2139\uFE0F Sync will be available in ${secondsRemaining}s to prevent duplicates`);
80
- console.log(` \u{1F4A1} This prevents race conditions between task completion and status change syncs`);
81
- return {
82
- milestoneNumber: 0,
83
- milestoneUrl: "",
84
- issuesCreated: 0,
85
- issuesUpdated: 0,
86
- userStoriesProcessed: 0
87
- };
88
- }
89
- _GitHubFeatureSync.syncLocks.set(lockKey, now);
90
- console.log(`
91
- \u{1F504} Syncing Feature ${featureId} to GitHub...`);
92
- const featureFolder = await this.findFeatureFolder(featureId, projectName);
93
- if (!featureFolder) {
94
- console.log(` \u26A0\uFE0F Feature ${featureId} not found in ${this.specsDir} (no living docs and auto-create failed)`);
95
- console.log(` \u{1F4A1} Run /sw:sync-docs or /sw:living-docs to generate living docs first`);
96
- return {
97
- milestoneNumber: 0,
98
- milestoneUrl: "",
99
- issuesCreated: 0,
100
- issuesUpdated: 0,
101
- userStoriesProcessed: 0
102
- };
103
- }
104
- const featurePath = path.join(featureFolder, "FEATURE.md");
105
- const featureData = await this.parseFeatureMd(featurePath);
106
- console.log(` \u{1F4E6} Feature: ${featureData.title}`);
107
- console.log(` \u{1F4CA} Status: ${featureData.status}`);
108
- let milestoneNumber = featureData.external_tools?.github?.id;
109
- let milestoneUrl = featureData.external_tools?.github?.url;
110
- if (!milestoneNumber) {
111
- console.log(` \u{1F680} Creating GitHub Milestone...`);
112
- const milestone = await this.createMilestone(featureData);
113
- milestoneNumber = milestone.number;
114
- milestoneUrl = milestone.url;
115
- console.log(` \u2705 Created Milestone #${milestoneNumber}`);
116
- await this.updateFeatureMd(featurePath, {
117
- type: "milestone",
118
- id: milestoneNumber,
119
- url: milestoneUrl
120
- });
121
- } else {
122
- console.log(` \u267B\uFE0F Using existing Milestone #${milestoneNumber}`);
123
- milestoneUrl = featureData.external_tools?.github?.url || milestoneUrl;
124
- }
125
- const userStories = await this.findUserStories(featureId, projectName);
126
- console.log(`
127
- \u{1F4DD} Found ${userStories.length} User Stories to sync...`);
128
- let issuesCreated = 0;
129
- let issuesUpdated = 0;
130
- const detectedBranch = await this.detectDefaultBranch();
131
- console.log(` \u{1F33F} Default branch: ${detectedBranch}`);
132
- for (const userStory of userStories) {
133
- console.log(`
134
- \u{1F539} Processing ${userStory.id}: ${userStory.title}`);
135
- const repoInfo = {
136
- owner: this.client.getOwner(),
137
- repo: this.client.getRepo(),
138
- branch: detectedBranch
139
- };
140
- const builder = new UserStoryIssueBuilder(
141
- userStory.filePath,
142
- this.projectRoot,
143
- featureId,
144
- repoInfo
145
- );
146
- const issueContent = await builder.buildIssueBody();
147
- issueContent.status = userStory.status;
148
- let issueNumber;
149
- let wasUpdated = false;
150
- if (userStory.existingIssue) {
151
- console.log(` \u267B\uFE0F Issue #${userStory.existingIssue} exists in frontmatter`);
152
- try {
153
- await this.client.getIssue(userStory.existingIssue);
154
- await this.updateUserStoryIssue(userStory.existingIssue, issueContent, userStory.filePath);
155
- issuesUpdated++;
156
- console.log(` \u2705 Updated Issue #${userStory.existingIssue}`);
157
- continue;
158
- } catch (err) {
159
- console.log(` \u26A0\uFE0F Issue #${userStory.existingIssue} deleted on GitHub, creating new`);
160
- }
161
- }
162
- const titlePattern = `[${featureId}][${userStory.id}]`;
163
- const milestoneTitle = `${featureData.id}: ${featureData.title}`;
164
- console.log(` \u{1F6E1}\uFE0F Using DuplicateDetector (pattern: ${titlePattern})`);
165
- const result = await DuplicateDetector.createWithProtection({
166
- title: issueContent.title,
167
- body: issueContent.body,
168
- titlePattern,
169
- incrementId: userStory.id,
170
- labels: issueContent.labels,
171
- milestone: milestoneTitle,
172
- repo: `${this.client.getOwner()}/${this.client.getRepo()}`
173
- });
174
- issueNumber = result.issue.number;
175
- if (result.wasReused) {
176
- console.log(` \u267B\uFE0F Reused existing issue #${issueNumber} (duplicate prevented!)`);
177
- wasUpdated = true;
178
- } else {
179
- console.log(` \u2705 Created issue #${issueNumber}`);
180
- }
181
- if (result.duplicatesFound > 0) {
182
- console.log(` \u{1F6E1}\uFE0F Duplicates detected: ${result.duplicatesFound}, auto-closed: ${result.duplicatesClosed}`);
183
- }
184
- await this.updateUserStoryFrontmatter(userStory.filePath, issueNumber);
185
- await this.backfillIncrementMetadata(featureId, userStory.id, issueNumber, milestoneNumber);
186
- await this.updateUserStoryIssue(issueNumber, issueContent, userStory.filePath);
187
- if (result.wasReused) {
188
- issuesUpdated++;
189
- } else {
190
- issuesCreated++;
191
- }
192
- }
193
- console.log(`
194
- \u2705 Feature sync complete!`);
195
- console.log(` Milestone: ${milestoneUrl}`);
196
- console.log(` User Stories: ${userStories.length}`);
197
- console.log(` Issues created: ${issuesCreated}`);
198
- console.log(` Issues updated: ${issuesUpdated}`);
199
- return {
200
- milestoneNumber,
201
- milestoneUrl,
202
- issuesCreated,
203
- issuesUpdated,
204
- userStoriesProcessed: userStories.length
205
- };
206
- }
207
- /**
208
- * Find Feature folder in specs directory.
209
- * Falls back to auto-creating from increment spec.md if living docs don't exist.
210
- */
211
- async findFeatureFolder(featureId, projectName) {
212
- if (projectName) {
213
- const projectSpecific = path.join(this.specsDir, projectName, featureId);
214
- if (existsSync(projectSpecific) && existsSync(path.join(projectSpecific, "FEATURE.md"))) {
215
- return projectSpecific;
216
- }
217
- }
218
- const projectFolders = await this.findProjectFolders();
219
- for (const projectFolder of projectFolders) {
220
- const featureFolder = path.join(projectFolder, featureId);
221
- if (existsSync(featureFolder) && existsSync(path.join(featureFolder, "FEATURE.md"))) {
222
- return featureFolder;
223
- }
224
- }
225
- const legacyFolder = path.join(this.specsDir, "_features", featureId);
226
- if (existsSync(legacyFolder)) {
227
- console.log(` \u26A0\uFE0F Found feature in legacy _features folder - consider migrating to project folder`);
228
- return legacyFolder;
229
- }
230
- console.log(` \u2139\uFE0F Feature folder not found in living docs, attempting auto-create from spec.md...`);
231
- const created = await this.createFeatureFolderFromSpec(featureId, projectFolders);
232
- if (created) {
233
- return created;
234
- }
235
- return null;
236
- }
237
- /**
238
- * Find the increment folder for a given feature ID.
239
- * Converts FS-271 -> finds 0271-xxx-xxx/ in .specweave/increments/
240
- */
241
- async findIncrementFolder(featureId) {
242
- const numMatch = featureId.match(/FS-0*(\d+)E?/i);
243
- if (!numMatch) return null;
244
- const num = parseInt(numMatch[1], 10);
245
- const paddedNum = String(num).padStart(4, "0");
246
- const incrementsDir = path.join(this.projectRoot, ".specweave/increments");
247
- if (!existsSync(incrementsDir)) return null;
248
- const entries = await readdir(incrementsDir);
249
- const match = entries.find((e) => e.startsWith(paddedNum + "-"));
250
- if (!match) return null;
251
- return path.join(incrementsDir, match);
252
- }
253
- /**
254
- * Auto-create a feature folder (FEATURE.md + us-NNN.md files) from an
255
- * increment's spec.md. This enables GitHub sync even when the living docs
256
- * builder hasn't run yet.
257
- */
258
- async createFeatureFolderFromSpec(featureId, projectFolders) {
259
- try {
260
- const incrementFolder = await this.findIncrementFolder(featureId);
261
- if (!incrementFolder) {
262
- console.log(` \u26A0\uFE0F No increment folder found for ${featureId}`);
263
- return null;
264
- }
265
- const specPath = path.join(incrementFolder, "spec.md");
266
- if (!existsSync(specPath)) {
267
- console.log(` \u26A0\uFE0F No spec.md found in ${path.basename(incrementFolder)}`);
268
- return null;
269
- }
270
- const specContent = await readFile(specPath, "utf-8");
271
- const fmMatch = specContent.match(/^---\n([\s\S]*?)\n---/);
272
- let frontmatter = {};
273
- if (fmMatch) {
274
- try {
275
- frontmatter = yaml.parse(fmMatch[1]) || {};
276
- } catch {
277
- }
278
- }
279
- const incrementBasename = path.basename(incrementFolder);
280
- const title = frontmatter.title || specContent.match(/^#\s+(.+)/m)?.[1]?.trim() || incrementBasename.replace(/^\d+-/, "").replace(/-/g, " ");
281
- const status = frontmatter.status || "active";
282
- const priority = frontmatter.priority || "P2";
283
- const created = frontmatter.created || (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
284
- const incrementId = frontmatter.increment || incrementBasename;
285
- let targetProjectFolder = projectFolders[0];
286
- const projectMatch = specContent.match(/\*\*Project\*\*:\s*(\S+)/);
287
- if (projectMatch) {
288
- const projectName = projectMatch[1];
289
- const matchingFolder = projectFolders.find((f) => path.basename(f) === projectName);
290
- if (matchingFolder) {
291
- targetProjectFolder = matchingFolder;
292
- }
293
- }
294
- if (!targetProjectFolder) {
295
- console.log(` \u26A0\uFE0F No project folder available for feature creation`);
296
- return null;
297
- }
298
- const featureFolder = path.join(targetProjectFolder, featureId);
299
- await mkdir(featureFolder, { recursive: true });
300
- const userStories = this.parseUserStoriesFromSpec(specContent, featureId);
301
- const featureMd = this.buildFeatureMd(featureId, title, status, priority, created, incrementId, userStories);
302
- await writeFile(path.join(featureFolder, "FEATURE.md"), featureMd, "utf-8");
303
- for (const us of userStories) {
304
- const usFilename = `us-${us.id.replace("US-", "").padStart(3, "0")}-${this.slugify(us.title)}.md`;
305
- const usMd = this.buildUserStoryMd(us, featureId, incrementId);
306
- await writeFile(path.join(featureFolder, usFilename), usMd, "utf-8");
307
- }
308
- console.log(` \u2705 Auto-created feature folder with ${userStories.length} user stories`);
309
- return featureFolder;
310
- } catch (error) {
311
- console.log(` \u26A0\uFE0F Failed to auto-create feature folder: ${error.message}`);
312
- return null;
313
- }
314
- }
315
- /**
316
- * Parse user stories from spec.md markdown content.
317
- */
318
- parseUserStoriesFromSpec(specContent, featureId) {
319
- const stories = [];
320
- const usRegex = /### (US-\d+):\s*(.+?)(?:\s*\((P\d)\))?\s*\n([\s\S]*?)(?=\n### US-|\n## |\n---\s*\n### US-|$)/g;
321
- let match;
322
- while ((match = usRegex.exec(specContent)) !== null) {
323
- const usId = match[1];
324
- const rawTitle = match[2].trim();
325
- const priority = match[3] || "P2";
326
- const body = match[4];
327
- if (rawTitle === "[Story Title]") continue;
328
- const projectMatch = body.match(/\*\*Project\*\*:\s*(\S+)/);
329
- const project = projectMatch ? projectMatch[1] : "specweave";
330
- const storyMatch = body.match(/\*\*As a\*\*\s+([\s\S]*?)(?=\n\*\*Acceptance Criteria|$)/);
331
- const storyText = storyMatch ? storyMatch[1].trim() : "";
332
- const acs = [];
333
- const acRegex = /- \[[ x]\] \*\*AC-[^*]+\*\*:\s*(.+)/g;
334
- let acMatch;
335
- while ((acMatch = acRegex.exec(body)) !== null) {
336
- acs.push(acMatch[0]);
337
- }
338
- const totalAcs = acs.length;
339
- const completedAcs = acs.filter((ac) => ac.startsWith("- [x]")).length;
340
- let status = "not-started";
341
- if (totalAcs > 0 && completedAcs === totalAcs) status = "complete";
342
- else if (completedAcs > 0) status = "active";
343
- stories.push({
344
- id: usId,
345
- title: rawTitle,
346
- priority,
347
- project,
348
- storyText,
349
- acceptanceCriteria: acs,
350
- status
351
- });
352
- }
353
- return stories;
354
- }
355
- /**
356
- * Build FEATURE.md content matching the living docs format.
357
- */
358
- buildFeatureMd(featureId, title, status, priority, created, incrementId, userStories) {
359
- const now = (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
360
- const mappedStatus = status === "planned" ? "planning" : status === "completed" ? "complete" : status === "active" ? "active" : "planning";
361
- const fm = {
362
- id: featureId,
363
- title,
364
- type: "feature",
365
- status: mappedStatus,
366
- priority,
367
- created,
368
- lastUpdated: now,
369
- tldr: title,
370
- complexity: "medium",
371
- auto_created: true
372
- };
373
- const yamlFm = yaml.stringify(fm);
374
- let body = `
375
- # ${title}
376
-
377
- ## TL;DR
378
-
379
- **What**: ${title}
380
- **Status**: ${mappedStatus} | **Priority**: ${priority}
381
- **User Stories**: ${userStories.length}
382
-
383
- ## Overview
384
-
385
- ${title}
386
-
387
- ## Implementation History
388
-
389
- | Increment | Status |
390
- |-----------|--------|
391
- | [${incrementId}](../../../../../increments/${incrementId}/spec.md) | ${mappedStatus} |
392
-
393
- ## User Stories
394
- `;
395
- for (const us of userStories) {
396
- body += `
397
- - [${us.id}: ${us.title}](./${us.id.toLowerCase()}.md)`;
398
- }
399
- return `---
400
- ${yamlFm}---${body}
401
- `;
402
- }
403
- /**
404
- * Build us-NNN.md content matching the living docs format.
405
- */
406
- buildUserStoryMd(us, featureId, incrementId) {
407
- const now = (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
408
- const fm = {
409
- id: us.id,
410
- feature: featureId,
411
- title: us.title,
412
- status: us.status,
413
- priority: us.priority,
414
- created: now,
415
- project: us.project
416
- };
417
- const yamlFm = yaml.stringify(fm);
418
- let body = `
419
- # ${us.id}: ${us.title}
420
-
421
- **Feature**: [${featureId}](./FEATURE.md)
422
-
423
- `;
424
- if (us.storyText) {
425
- body += `${us.storyText}
426
-
427
- `;
428
- }
429
- body += `---
430
-
431
- ## Acceptance Criteria
432
-
433
- `;
434
- if (us.acceptanceCriteria.length > 0) {
435
- body += us.acceptanceCriteria.join("\n") + "\n";
436
- } else {
437
- body += `- [ ] **AC-${us.id.replace("US-", "US")}-01**: Pending specification
438
- `;
439
- }
440
- body += `
441
- ---
442
-
443
- ## Implementation
444
-
445
- **Increment**: [${incrementId}](../../../../../increments/${incrementId}/spec.md)
446
- `;
447
- return `---
448
- ${yamlFm}---${body}
449
- `;
450
- }
451
- /**
452
- * Convert a title to a URL-safe slug.
453
- */
454
- slugify(text) {
455
- return text.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").substring(0, 60);
456
- }
457
- /**
458
- * Backfill increment metadata.json with GitHub issue reference (v1.0.240)
459
- *
460
- * Writes in BOTH formats:
461
- * - OLD format (metadata.github.issues[]) for backward compatibility
462
- * - NEW format (metadata.externalLinks.github) for reconciler/closure flows
463
- * Non-blocking — errors are logged but don't halt sync.
464
- */
465
- async backfillIncrementMetadata(featureId, userStoryId, issueNumber, milestoneNumber) {
466
- try {
467
- const featureNumMatch = featureId.match(/FS-0*(\d+)E?/i);
468
- if (!featureNumMatch) return;
469
- const num = parseInt(featureNumMatch[1], 10);
470
- const paddedNum = String(num).padStart(4, "0");
471
- const incrementsDir = path.join(this.projectRoot, ".specweave/increments");
472
- if (!existsSync(incrementsDir)) return;
473
- const entries = await readdir(incrementsDir);
474
- const match = entries.find((e) => e.startsWith(paddedNum + "-"));
475
- if (!match) return;
476
- const metadataPath = path.join(incrementsDir, match, "metadata.json");
477
- if (!existsSync(metadataPath)) return;
478
- const metadata = JSON.parse(await readFile(metadataPath, "utf-8"));
479
- const issueUrl = `https://github.com/${this.client.getOwner()}/${this.client.getRepo()}/issues/${issueNumber}`;
480
- let changed = false;
481
- if (!metadata.github) metadata.github = {};
482
- if (!metadata.github.issues) metadata.github.issues = [];
483
- const existsOld = metadata.github.issues.some(
484
- (i) => i.userStory === userStoryId
485
- );
486
- if (!existsOld) {
487
- metadata.github.issues.push({
488
- userStory: userStoryId,
489
- number: issueNumber,
490
- url: issueUrl,
491
- createdAt: (/* @__PURE__ */ new Date()).toISOString()
492
- });
493
- metadata.github.lastSync = (/* @__PURE__ */ new Date()).toISOString();
494
- changed = true;
495
- }
496
- if (!metadata.externalLinks) metadata.externalLinks = {};
497
- if (!metadata.externalLinks.github) metadata.externalLinks.github = {};
498
- if (!metadata.externalLinks.github.issues) metadata.externalLinks.github.issues = {};
499
- const existsNew = metadata.externalLinks.github.issues[userStoryId];
500
- if (!existsNew) {
501
- metadata.externalLinks.github.issues[userStoryId] = {
502
- issueNumber,
503
- issueUrl,
504
- status: "active"
505
- };
506
- changed = true;
507
- }
508
- if (milestoneNumber && metadata.externalLinks.github.milestone !== milestoneNumber) {
509
- metadata.externalLinks.github.milestone = milestoneNumber;
510
- changed = true;
511
- }
512
- if (changed) {
513
- metadata.externalLinks.github.syncedAt = (/* @__PURE__ */ new Date()).toISOString();
514
- await writeFile(metadataPath, JSON.stringify(metadata, null, 2) + "\n", "utf-8");
515
- console.log(` \u{1F4DD} Backfilled metadata.json for ${userStoryId} (dual-format)`);
516
- }
517
- } catch (error) {
518
- console.warn(` \u26A0\uFE0F Metadata backfill failed: ${error.message}`);
519
- }
520
- }
521
- /**
522
- * Parse FEATURE.md frontmatter
523
- */
524
- async parseFeatureMd(featurePath) {
525
- const content = await readFile(featurePath, "utf-8");
526
- const match = content.match(/^---\n([\s\S]*?)\n---/);
527
- if (!match) {
528
- throw new Error(`${featurePath}: Missing YAML frontmatter`);
529
- }
530
- return yaml.parse(match[1]);
531
- }
532
- /**
533
- * Find all User Story files for this feature across all projects
534
- */
535
- async findUserStories(featureId, projectName) {
536
- const userStories = [];
537
- let projectFolders;
538
- if (projectName) {
539
- const projectSpecific = path.join(this.specsDir, projectName);
540
- projectFolders = existsSync(projectSpecific) ? [projectSpecific] : [];
541
- } else {
542
- projectFolders = await this.findProjectFolders();
543
- }
544
- for (const projectFolder of projectFolders) {
545
- const featureSpecsFolder = path.join(projectFolder, featureId);
546
- if (!existsSync(featureSpecsFolder)) {
547
- continue;
548
- }
549
- const files = await readdir(featureSpecsFolder);
550
- const usFiles = files.filter((f) => f.startsWith("us-") && f.endsWith(".md"));
551
- for (const file of usFiles.sort()) {
552
- const filePath = path.join(featureSpecsFolder, file);
553
- const content = await readFile(filePath, "utf-8");
554
- const match = content.match(/^---\n([\s\S]*?)\n---/);
555
- if (!match) {
556
- console.warn(` \u26A0\uFE0F ${file}: Missing frontmatter, skipping`);
557
- continue;
558
- }
559
- const frontmatter = yaml.parse(match[1]);
560
- const projectName2 = path.basename(projectFolder);
561
- userStories.push({
562
- id: frontmatter.id || file.match(/us-(\d+)/)?.[0]?.toUpperCase() || "UNKNOWN",
563
- title: frontmatter.title || "Untitled User Story",
564
- filePath,
565
- project: projectName2,
566
- status: frontmatter.status || "not-started",
567
- existingIssue: frontmatter.external?.github?.issue || null
568
- });
569
- }
570
- }
571
- return userStories;
572
- }
573
- /**
574
- * Find all project folders (default, backend, frontend, etc.)
575
- */
576
- async findProjectFolders() {
577
- const folders = [];
578
- const specsRoot = this.specsDir;
579
- const entries = await readdir(specsRoot, { withFileTypes: true });
580
- for (const entry of entries) {
581
- if (entry.isDirectory() && !entry.name.startsWith("_")) {
582
- folders.push(path.join(specsRoot, entry.name));
583
- }
584
- }
585
- return folders;
586
- }
587
- /**
588
- * Create GitHub Milestone for Feature (with duplicate detection)
589
- */
590
- async createMilestone(featureData) {
591
- const title = `${featureData.id}: ${featureData.title}`;
592
- const owner = this.client.getOwner();
593
- const repo = this.client.getRepo();
594
- const existingResult = await execFileNoThrow("gh", [
595
- "api",
596
- `repos/${owner}/${repo}/milestones?per_page=100&state=all`,
597
- "--paginate",
598
- "--jq",
599
- `.[] | select(.title == "${title}") | {number, html_url}`
600
- ], { env: this.getGhEnv() });
601
- console.log(` \u{1F50D} Milestone detection: exitCode=${existingResult.exitCode}, stdout length=${existingResult.stdout.length}`);
602
- if (existingResult.exitCode !== 0) {
603
- console.log(` \u26A0\uFE0F Detection failed: ${existingResult.stderr}`);
604
- }
605
- if (existingResult.exitCode === 0 && existingResult.stdout.trim()) {
606
- const existing = JSON.parse(existingResult.stdout);
607
- console.log(` \u267B\uFE0F Reusing existing Milestone #${existing.number}`);
608
- return {
609
- number: existing.number,
610
- url: existing.html_url
611
- };
612
- }
613
- console.log(` \u2139\uFE0F No existing milestone found, creating new one...`);
614
- const description = `Feature ${featureData.id}
615
-
616
- Status: ${featureData.status}
617
- Created: ${featureData.created}`;
618
- const result = await execFileNoThrow("gh", [
619
- "api",
620
- `repos/${owner}/${repo}/milestones`,
621
- "-X",
622
- "POST",
623
- "-f",
624
- `title=${title}`,
625
- "-f",
626
- `description=${description}`,
627
- "-f",
628
- "state=open"
629
- ], { env: this.getGhEnv() });
630
- if (result.exitCode !== 0) {
631
- throw new Error(`Failed to create Milestone: ${result.stderr || result.stdout}`);
632
- }
633
- const milestone = JSON.parse(result.stdout);
634
- return {
635
- number: milestone.number,
636
- url: milestone.html_url
637
- };
638
- }
639
- /**
640
- * Create GitHub Issue for User Story with AC/Task Verification
641
- *
642
- * ✅ VERIFICATION GATE FIX:
643
- * - Verifies actual completion before closing
644
- * - Prevents premature closure on creation
645
- */
646
- async createUserStoryIssue(issueContent, milestoneTitle, userStoryPath) {
647
- const repoSlug = `${this.client.getOwner()}/${this.client.getRepo()}`;
648
- for (const label of issueContent.labels) {
649
- await execFileNoThrow("gh", [
650
- "label",
651
- "create",
652
- label,
653
- "--repo",
654
- repoSlug,
655
- "--color",
656
- "ededed",
657
- "--description",
658
- "SpecWeave auto-label",
659
- "--force"
660
- ], { env: this.getGhEnv() });
661
- }
662
- const result = await execFileNoThrow("gh", [
663
- "issue",
664
- "create",
665
- "--repo",
666
- repoSlug,
667
- "--title",
668
- issueContent.title,
669
- "--body",
670
- issueContent.body,
671
- "--milestone",
672
- milestoneTitle,
673
- ...issueContent.labels.flatMap((label) => ["--label", label])
674
- ], { env: this.getGhEnv() });
675
- if (result.exitCode !== 0) {
676
- throw new Error(`Failed to create GitHub Issue: ${result.stderr || result.stdout}`);
677
- }
678
- const match = result.stdout.match(/issues\/(\d+)/);
679
- if (!match) {
680
- throw new Error(`Failed to parse issue number from: ${result.stdout}`);
681
- }
682
- const issueNumber = parseInt(match[1], 10);
683
- const completion = await this.calculator.calculateCompletion(userStoryPath);
684
- if (completion.overallComplete) {
685
- await execFileNoThrow("gh", [
686
- "issue",
687
- "close",
688
- issueNumber.toString(),
689
- "--comment",
690
- this.calculator.buildCompletionComment(completion),
691
- "-R",
692
- repoSlug
693
- ], { env: this.getGhEnv() });
694
- console.log(
695
- ` \u2705 Created and verified complete: ${completion.acsCompleted}/${completion.acsTotal} ACs, ${completion.tasksCompleted}/${completion.tasksTotal} tasks`
696
- );
697
- } else {
698
- await this.postProgressCommentIfChanged(issueNumber, completion);
699
- }
700
- return issueNumber;
701
- }
702
- /**
703
- * Update existing GitHub Issue for User Story with AC/Task Verification
704
- *
705
- * ✅ VERIFICATION GATE FIX:
706
- * - OLD: Closed based on frontmatter `status: complete`
707
- * - NEW: Closes ONLY if all ACs and tasks are [x]
708
- *
709
- * This prevents Issue #574 type bugs (premature closure)
710
- */
711
- async updateUserStoryIssue(issueNumber, issueContent, userStoryPath) {
712
- const repoSlug = this.getRepoSlug();
713
- await execFileNoThrow("gh", [
714
- "issue",
715
- "edit",
716
- issueNumber.toString(),
717
- "--title",
718
- issueContent.title,
719
- "--body",
720
- issueContent.body,
721
- "-R",
722
- repoSlug
723
- ], { env: this.getGhEnv() });
724
- const completion = await this.calculator.calculateCompletion(userStoryPath);
725
- const issueData = await this.client.getIssue(issueNumber);
726
- const currentlyClosed = issueData.state === "closed";
727
- if (completion.overallComplete) {
728
- if (!currentlyClosed) {
729
- const lastComment = await this.client.getLastComment(issueNumber);
730
- const commentAlreadyPosted = lastComment?.body?.includes("\u2705 User Story Complete");
731
- if (commentAlreadyPosted) {
732
- await execFileNoThrow("gh", [
733
- "issue",
734
- "close",
735
- issueNumber.toString(),
736
- "-R",
737
- repoSlug
738
- ], { env: this.getGhEnv() });
739
- console.log(
740
- ` \u2705 Verified complete (comment already posted): ${completion.acsCompleted}/${completion.acsTotal} ACs, ${completion.tasksCompleted}/${completion.tasksTotal} tasks`
741
- );
742
- } else {
743
- await execFileNoThrow("gh", [
744
- "issue",
745
- "close",
746
- issueNumber.toString(),
747
- "--comment",
748
- this.calculator.buildCompletionComment(completion),
749
- "-R",
750
- repoSlug
751
- ], { env: this.getGhEnv() });
752
- console.log(
753
- ` \u2705 Verified complete: ${completion.acsCompleted}/${completion.acsTotal} ACs, ${completion.tasksCompleted}/${completion.tasksTotal} tasks`
754
- );
755
- }
756
- }
757
- } else {
758
- if (currentlyClosed) {
759
- await execFileNoThrow("gh", [
760
- "issue",
761
- "reopen",
762
- issueNumber.toString(),
763
- "--comment",
764
- this.calculator.buildReopenComment(completion, "Work verification failed"),
765
- "-R",
766
- repoSlug
767
- ], { env: this.getGhEnv() });
768
- console.log(
769
- ` \u26A0\uFE0F Reopened: ${completion.blockingAcs.length + completion.blockingTasks.length} items incomplete`
770
- );
771
- } else {
772
- await this.postProgressCommentIfChanged(issueNumber, completion);
773
- }
774
- }
775
- await this.updateStatusLabels(issueNumber, completion);
776
- }
777
- /**
778
- * Update status labels on GitHub issue based on completion state
779
- *
780
- * SMART LABEL MANAGEMENT:
781
- * - Only manages status:* labels (status:not_started, status:in-progress, status:completed)
782
- * - Preserves all other labels (priority, type, custom labels)
783
- * - Ensures exactly one status label is present
784
- */
785
- async updateStatusLabels(issueNumber, completion) {
786
- try {
787
- const issueData = await this.client.getIssue(issueNumber);
788
- const currentLabels = issueData.labels || [];
789
- const statusLabels = currentLabels.filter((label) => label.startsWith("status:"));
790
- const otherLabels = currentLabels.filter((label) => !label.startsWith("status:"));
791
- let newStatusLabel;
792
- if (completion.overallComplete) {
793
- newStatusLabel = "status:complete";
794
- } else if (completion.acsPercentage > 0 || completion.tasksPercentage > 0) {
795
- newStatusLabel = "status:active";
796
- } else if (
797
- // v0.35.1 FIX: For external-origin USs without ACs/tasks, use frontmatter status
798
- // This fixes issue #889 where external USs always showed "not_started"
799
- (completion.acsTotal === 0 || completion.acsTotal === void 0) && (completion.tasksTotal === 0 || completion.tasksTotal === void 0) && completion.frontmatterStatus
800
- ) {
801
- switch (completion.frontmatterStatus) {
802
- case "complete":
803
- case "completed":
804
- newStatusLabel = "status:complete";
805
- break;
806
- case "active":
807
- case "in-progress":
808
- newStatusLabel = "status:active";
809
- break;
810
- case "planning":
811
- case "not-started":
812
- default:
813
- newStatusLabel = "status:not_started";
814
- }
815
- console.log(` \u2139\uFE0F Using frontmatter status (no ACs/tasks): ${completion.frontmatterStatus} \u2192 ${newStatusLabel}`);
816
- } else {
817
- newStatusLabel = "status:not_started";
818
- }
819
- const needsUpdate = statusLabels.length !== 1 || !statusLabels.includes(newStatusLabel);
820
- if (!needsUpdate) {
821
- return;
822
- }
823
- if (statusLabels.length > 0) {
824
- await execFileNoThrow("gh", [
825
- "issue",
826
- "edit",
827
- issueNumber.toString(),
828
- "-R",
829
- this.getRepoSlug(),
830
- "--remove-label",
831
- ...statusLabels
832
- ], { env: this.getGhEnv() });
833
- }
834
- const result = await execFileNoThrow("gh", [
835
- "issue",
836
- "edit",
837
- issueNumber.toString(),
838
- "-R",
839
- this.getRepoSlug(),
840
- "--add-label",
841
- newStatusLabel
842
- ], { env: this.getGhEnv() });
843
- if (result.exitCode === 0) {
844
- console.log(` \u{1F3F7}\uFE0F Updated label: ${newStatusLabel}`);
845
- } else {
846
- console.warn(` \u26A0\uFE0F Failed to add label ${newStatusLabel}: ${result.stderr}`);
847
- }
848
- if (newStatusLabel === "status:complete" && issueData.state.toLowerCase() !== "closed") {
849
- try {
850
- const freshIssueData = await this.client.getIssue(issueNumber);
851
- if (freshIssueData.state.toLowerCase() === "closed") {
852
- console.log(` \u23ED\uFE0F Issue #${issueNumber} already closed (skipping duplicate close)`);
853
- } else {
854
- const lastComment = await this.client.getLastComment(issueNumber);
855
- if (lastComment?.body?.includes("\u2705 User Story Complete")) {
856
- await execFileNoThrow("gh", [
857
- "issue",
858
- "close",
859
- issueNumber.toString(),
860
- "-R",
861
- this.getRepoSlug()
862
- ], { env: this.getGhEnv() });
863
- console.log(` \u2705 Auto-closed issue #${issueNumber} (comment already posted)`);
864
- } else {
865
- const completionComment = this.calculator.buildCompletionComment(completion);
866
- await execFileNoThrow("gh", [
867
- "issue",
868
- "close",
869
- issueNumber.toString(),
870
- "-R",
871
- this.getRepoSlug(),
872
- "--comment",
873
- completionComment
874
- ], { env: this.getGhEnv() });
875
- console.log(` \u2705 Auto-closed issue #${issueNumber} (status:complete)`);
876
- }
877
- }
878
- } catch (closeError) {
879
- console.warn(` \u26A0\uFE0F Failed to auto-close issue #${issueNumber}: ${closeError.message}`);
880
- }
881
- }
882
- } catch (error) {
883
- console.warn(` \u26A0\uFE0F Failed to update status labels: ${error.message}`);
884
- }
885
- }
886
- /**
887
- * Post progress comment only if it differs from the last comment
888
- *
889
- * DEDUPLICATION FIX (2025-11-24):
890
- * - Prevents posting identical consecutive comments
891
- * - Fetches last comment from issue
892
- * - Compares content (ignoring timestamps)
893
- * - Only posts if progress has changed
894
- *
895
- * Root Cause: updateUserStoryIssue() was posting progress comments on EVERY sync,
896
- * even when progress hadn't changed, causing 4+ duplicate comments.
897
- *
898
- * @param issueNumber - GitHub issue number
899
- * @param completion - Completion status with AC/task metrics
900
- */
901
- async postProgressCommentIfChanged(issueNumber, completion) {
902
- try {
903
- const repoSlug = this.getRepoSlug();
904
- const commentsResult = await execFileNoThrow("gh", [
905
- "api",
906
- `repos/${repoSlug}/issues/${issueNumber}/comments`,
907
- "--jq",
908
- ".[-1] | {body: .body, created_at: .created_at}"
909
- // Get last comment only
910
- ], { env: this.getGhEnv() });
911
- let lastCommentBody = "";
912
- if (commentsResult.exitCode === 0 && commentsResult.stdout.trim()) {
913
- try {
914
- const lastComment = JSON.parse(commentsResult.stdout);
915
- lastCommentBody = lastComment.body || "";
916
- } catch {
917
- }
918
- }
919
- const newCommentBody = this.calculator.buildProgressComment(completion);
920
- const normalizeComment = (text) => {
921
- return text.replace(/🤖 Auto-updated by SpecWeave AC Completion Gate/g, "").replace(/\s+/g, " ").trim();
922
- };
923
- const normalizedLast = normalizeComment(lastCommentBody);
924
- const normalizedNew = normalizeComment(newCommentBody);
925
- if (normalizedLast === normalizedNew) {
926
- console.log(
927
- ` \u23ED\uFE0F Progress unchanged (${completion.acsPercentage.toFixed(0)}% ACs, ${completion.tasksPercentage.toFixed(0)}% tasks) - skipping duplicate comment`
928
- );
929
- return;
930
- }
931
- await execFileNoThrow("gh", [
932
- "issue",
933
- "comment",
934
- issueNumber.toString(),
935
- "-R",
936
- repoSlug,
937
- "--body",
938
- newCommentBody
939
- ], { env: this.getGhEnv() });
940
- console.log(
941
- ` \u{1F4CA} Progress: ${completion.acsPercentage.toFixed(0)}% ACs, ${completion.tasksPercentage.toFixed(0)}% tasks (updated)`
942
- );
943
- } catch (error) {
944
- console.error(` \u26A0\uFE0F Failed to check/post progress comment: ${error.message}`);
945
- }
946
- }
947
- /**
948
- * Update FEATURE.md with GitHub Milestone link
949
- */
950
- async updateFeatureMd(featurePath, milestone) {
951
- const content = await readFile(featurePath, "utf-8");
952
- const match = content.match(/^---\n([\s\S]*?)\n---/);
953
- if (!match) {
954
- throw new Error(`${featurePath}: Missing YAML frontmatter`);
955
- }
956
- const frontmatter = yaml.parse(match[1]);
957
- if (!frontmatter.external_tools) {
958
- frontmatter.external_tools = {};
959
- }
960
- frontmatter.external_tools.github = milestone;
961
- const newFrontmatter = yaml.stringify(frontmatter);
962
- const bodyContent = content.slice(match[0].length);
963
- const newContent = `---
964
- ${newFrontmatter}---${bodyContent}`;
965
- await writeFile(featurePath, newContent, "utf-8");
966
- }
967
- /**
968
- * Update User Story frontmatter with GitHub issue link
969
- */
970
- async updateUserStoryFrontmatter(userStoryPath, issueNumber) {
971
- const content = await readFile(userStoryPath, "utf-8");
972
- const match = content.match(/^---\n([\s\S]*?)\n---/);
973
- if (!match) {
974
- throw new Error(`${userStoryPath}: Missing YAML frontmatter`);
975
- }
976
- const frontmatter = yaml.parse(match[1]);
977
- if (!frontmatter.external_tools) {
978
- frontmatter.external_tools = {};
979
- }
980
- if (!frontmatter.external_tools.github) {
981
- frontmatter.external_tools.github = {};
982
- }
983
- frontmatter.external_tools.github.issue = issueNumber;
984
- frontmatter.external_tools.github.url = `https://github.com/${this.client.getOwner()}/${this.client.getRepo()}/issues/${issueNumber}`;
985
- if (!frontmatter.external) {
986
- frontmatter.external = {};
987
- }
988
- if (!frontmatter.external.github) {
989
- frontmatter.external.github = {};
990
- }
991
- frontmatter.external.github.issue = issueNumber;
992
- frontmatter.external.github.url = frontmatter.external_tools.github.url;
993
- const newFrontmatter = yaml.stringify(frontmatter);
994
- const bodyContent = content.slice(match[0].length);
995
- const newContent = `---
996
- ${newFrontmatter}---${bodyContent}`;
997
- await writeFile(userStoryPath, newContent, "utf-8");
998
- }
999
- };
1000
- // SYNC LOCK: Prevent concurrent syncs of the same feature
1001
- // Maps featureId → last sync timestamp
1002
- _GitHubFeatureSync.syncLocks = /* @__PURE__ */ new Map();
1003
- _GitHubFeatureSync.LOCK_DURATION_MS = 3e4;
1004
- let GitHubFeatureSync = _GitHubFeatureSync;
1005
- export {
1006
- GitHubFeatureSync
1007
- };