specweave 0.17.1 → 0.17.3

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 (807) hide show
  1. package/bin/specweave.js +16 -16
  2. package/dist/plugins/specweave-github/lib/github-spec-sync.d.ts +109 -6
  3. package/dist/plugins/specweave-github/lib/github-spec-sync.d.ts.map +1 -1
  4. package/dist/plugins/specweave-github/lib/github-spec-sync.js +435 -49
  5. package/dist/plugins/specweave-github/lib/github-spec-sync.js.map +1 -1
  6. package/dist/src/cli/helpers/issue-tracker/github-multi-repo.d.ts +10 -2
  7. package/dist/src/cli/helpers/issue-tracker/github-multi-repo.d.ts.map +1 -1
  8. package/dist/src/cli/helpers/issue-tracker/github-multi-repo.js +28 -14
  9. package/dist/src/cli/helpers/issue-tracker/github-multi-repo.js.map +1 -1
  10. package/dist/src/cli/helpers/issue-tracker/github.d.ts.map +1 -1
  11. package/dist/src/cli/helpers/issue-tracker/github.js +10 -1
  12. package/dist/src/cli/helpers/issue-tracker/github.js.map +1 -1
  13. package/dist/src/cli/helpers/issue-tracker/index.d.ts.map +1 -1
  14. package/dist/src/cli/helpers/issue-tracker/index.js +20 -0
  15. package/dist/src/cli/helpers/issue-tracker/index.js.map +1 -1
  16. package/dist/src/core/project-manager.d.ts +25 -21
  17. package/dist/src/core/project-manager.d.ts.map +1 -1
  18. package/dist/src/core/project-manager.js +41 -51
  19. package/dist/src/core/project-manager.js.map +1 -1
  20. package/dist/src/core/repo-structure/folder-detector.d.ts +19 -0
  21. package/dist/src/core/repo-structure/folder-detector.d.ts.map +1 -0
  22. package/dist/src/core/repo-structure/folder-detector.js +95 -0
  23. package/dist/src/core/repo-structure/folder-detector.js.map +1 -0
  24. package/dist/src/core/repo-structure/repo-structure-manager.d.ts +4 -1
  25. package/dist/src/core/repo-structure/repo-structure-manager.d.ts.map +1 -1
  26. package/dist/src/core/repo-structure/repo-structure-manager.js +41 -27
  27. package/dist/src/core/repo-structure/repo-structure-manager.js.map +1 -1
  28. package/dist/src/core/types/spec-metadata.d.ts +34 -1
  29. package/dist/src/core/types/spec-metadata.d.ts.map +1 -1
  30. package/dist/src/core/types/sync-profile.d.ts +30 -0
  31. package/dist/src/core/types/sync-profile.d.ts.map +1 -1
  32. package/dist/src/core/types/sync-profile.js.map +1 -1
  33. package/dist/src/utils/project-validator.d.ts +27 -0
  34. package/dist/src/utils/project-validator.d.ts.map +1 -0
  35. package/dist/src/utils/project-validator.js +68 -0
  36. package/dist/src/utils/project-validator.js.map +1 -0
  37. package/package.json +1 -1
  38. package/plugins/specweave/lib/hooks/git-diff-analyzer.js +129 -213
  39. package/plugins/specweave/lib/hooks/invoke-translator-skill.js +146 -192
  40. package/plugins/specweave/lib/hooks/prepare-reflection-context.js +103 -116
  41. package/plugins/specweave/lib/hooks/reflection-config-loader.js +85 -125
  42. package/plugins/specweave/lib/hooks/reflection-parser.js +267 -385
  43. package/plugins/specweave/lib/hooks/reflection-prompt-builder.js +169 -226
  44. package/plugins/specweave/lib/hooks/reflection-storage.js +223 -297
  45. package/plugins/specweave/lib/hooks/run-self-reflection.js +120 -191
  46. package/plugins/specweave/lib/hooks/translate-file.js +239 -300
  47. package/plugins/specweave/lib/hooks/translate-living-docs.js +88 -144
  48. package/plugins/specweave/lib/hooks/types/reflection-types.js +57 -72
  49. package/plugins/specweave/lib/hooks/update-tasks-md.js +117 -179
  50. package/plugins/specweave-ado/lib/ado-board-resolver.js +135 -205
  51. package/plugins/specweave-ado/lib/ado-client-v2.js +405 -449
  52. package/plugins/specweave-ado/lib/ado-hierarchical-sync.js +223 -335
  53. package/plugins/specweave-ado/lib/ado-spec-commit-sync.js +173 -194
  54. package/plugins/specweave-ado/lib/ado-spec-sync.js +380 -414
  55. package/plugins/specweave-ado/lib/conflict-resolver.ts +1 -1
  56. package/plugins/specweave-ado/lib/project-selector.js +168 -196
  57. package/plugins/specweave-github/MULTI-PROJECT-SYNC-ARCHITECTURE.md +658 -0
  58. package/plugins/specweave-github/SYNC-ARCHITECTURE-FIX-SUMMARY.md +302 -0
  59. package/plugins/specweave-github/hooks/post-task-completion.sh +55 -157
  60. package/plugins/specweave-github/lib/cli-sync-increment-changes.js +9 -20
  61. package/plugins/specweave-github/lib/github-board-resolver.js +69 -115
  62. package/plugins/specweave-github/lib/github-client-v2.js +400 -389
  63. package/plugins/specweave-github/lib/github-client.js +246 -280
  64. package/plugins/specweave-github/lib/github-hierarchical-sync.js +168 -251
  65. package/plugins/specweave-github/lib/github-spec-commit-sync.js +171 -194
  66. package/plugins/specweave-github/lib/github-spec-sync.js +742 -418
  67. package/plugins/specweave-github/lib/github-spec-sync.ts +597 -61
  68. package/plugins/specweave-github/lib/index.js +11 -10
  69. package/plugins/specweave-github/lib/repo-selector.js +174 -201
  70. package/plugins/specweave-github/lib/subtask-sync.js +132 -125
  71. package/plugins/specweave-github/lib/task-parser.js +191 -207
  72. package/plugins/specweave-github/lib/task-sync.js +344 -296
  73. package/plugins/specweave-github/lib/types.js +0 -5
  74. package/plugins/specweave-github/skills/github-sync/SKILL.md +234 -242
  75. package/plugins/specweave-jira/lib/jira-board-resolver.js +50 -79
  76. package/plugins/specweave-jira/lib/jira-hierarchical-sync.js +119 -191
  77. package/plugins/specweave-jira/lib/jira-spec-commit-sync.js +241 -263
  78. package/plugins/specweave-jira/lib/jira-spec-sync.js +366 -405
  79. package/plugins/specweave-jira/lib/project-selector.js +172 -201
  80. package/plugins/specweave-jira/lib/reorganization-detector.js +202 -237
  81. package/plugins/specweave-jira/lib/setup-wizard.js +162 -204
  82. package/dist/adapters/adapter-base.d.ts +0 -71
  83. package/dist/adapters/adapter-base.d.ts.map +0 -1
  84. package/dist/adapters/adapter-base.js +0 -139
  85. package/dist/adapters/adapter-base.js.map +0 -1
  86. package/dist/adapters/adapter-interface.d.ts +0 -149
  87. package/dist/adapters/adapter-interface.d.ts.map +0 -1
  88. package/dist/adapters/adapter-interface.js +0 -8
  89. package/dist/adapters/adapter-interface.js.map +0 -1
  90. package/dist/adapters/adapter-loader.d.ts +0 -91
  91. package/dist/adapters/adapter-loader.d.ts.map +0 -1
  92. package/dist/adapters/adapter-loader.js +0 -238
  93. package/dist/adapters/adapter-loader.js.map +0 -1
  94. package/dist/adapters/agents-md-generator.d.ts +0 -48
  95. package/dist/adapters/agents-md-generator.d.ts.map +0 -1
  96. package/dist/adapters/agents-md-generator.js +0 -193
  97. package/dist/adapters/agents-md-generator.js.map +0 -1
  98. package/dist/adapters/claude/adapter.d.ts +0 -128
  99. package/dist/adapters/claude/adapter.d.ts.map +0 -1
  100. package/dist/adapters/claude/adapter.js +0 -415
  101. package/dist/adapters/claude/adapter.js.map +0 -1
  102. package/dist/adapters/claude-md-generator.d.ts +0 -78
  103. package/dist/adapters/claude-md-generator.d.ts.map +0 -1
  104. package/dist/adapters/claude-md-generator.js +0 -307
  105. package/dist/adapters/claude-md-generator.js.map +0 -1
  106. package/dist/adapters/codex/adapter.d.ts +0 -50
  107. package/dist/adapters/codex/adapter.d.ts.map +0 -1
  108. package/dist/adapters/codex/adapter.js +0 -316
  109. package/dist/adapters/codex/adapter.js.map +0 -1
  110. package/dist/adapters/cursor/adapter.d.ts +0 -98
  111. package/dist/adapters/cursor/adapter.d.ts.map +0 -1
  112. package/dist/adapters/cursor/adapter.js +0 -406
  113. package/dist/adapters/cursor/adapter.js.map +0 -1
  114. package/dist/adapters/doc-generator.d.ts +0 -69
  115. package/dist/adapters/doc-generator.d.ts.map +0 -1
  116. package/dist/adapters/doc-generator.js +0 -247
  117. package/dist/adapters/doc-generator.js.map +0 -1
  118. package/dist/adapters/gemini/adapter.d.ts +0 -50
  119. package/dist/adapters/gemini/adapter.d.ts.map +0 -1
  120. package/dist/adapters/gemini/adapter.js +0 -281
  121. package/dist/adapters/gemini/adapter.js.map +0 -1
  122. package/dist/adapters/generic/adapter.d.ts +0 -86
  123. package/dist/adapters/generic/adapter.d.ts.map +0 -1
  124. package/dist/adapters/generic/adapter.js +0 -338
  125. package/dist/adapters/generic/adapter.js.map +0 -1
  126. package/dist/cli/commands/abandon.d.ts +0 -13
  127. package/dist/cli/commands/abandon.d.ts.map +0 -1
  128. package/dist/cli/commands/abandon.js +0 -15
  129. package/dist/cli/commands/abandon.js.map +0 -1
  130. package/dist/cli/commands/check-discipline.d.ts +0 -16
  131. package/dist/cli/commands/check-discipline.d.ts.map +0 -1
  132. package/dist/cli/commands/check-discipline.js +0 -79
  133. package/dist/cli/commands/check-discipline.js.map +0 -1
  134. package/dist/cli/commands/import-docs.d.ts +0 -21
  135. package/dist/cli/commands/import-docs.d.ts.map +0 -1
  136. package/dist/cli/commands/import-docs.js +0 -146
  137. package/dist/cli/commands/import-docs.js.map +0 -1
  138. package/dist/cli/commands/init-multiproject.d.ts +0 -11
  139. package/dist/cli/commands/init-multiproject.d.ts.map +0 -1
  140. package/dist/cli/commands/init-multiproject.js +0 -202
  141. package/dist/cli/commands/init-multiproject.js.map +0 -1
  142. package/dist/cli/commands/init.d.ts +0 -10
  143. package/dist/cli/commands/init.d.ts.map +0 -1
  144. package/dist/cli/commands/init.js +0 -1328
  145. package/dist/cli/commands/init.js.map +0 -1
  146. package/dist/cli/commands/install.d.ts +0 -9
  147. package/dist/cli/commands/install.d.ts.map +0 -1
  148. package/dist/cli/commands/install.js +0 -127
  149. package/dist/cli/commands/install.js.map +0 -1
  150. package/dist/cli/commands/list.d.ts +0 -8
  151. package/dist/cli/commands/list.d.ts.map +0 -1
  152. package/dist/cli/commands/list.js +0 -119
  153. package/dist/cli/commands/list.js.map +0 -1
  154. package/dist/cli/commands/migrate-to-multiproject.d.ts +0 -37
  155. package/dist/cli/commands/migrate-to-multiproject.d.ts.map +0 -1
  156. package/dist/cli/commands/migrate-to-multiproject.js +0 -189
  157. package/dist/cli/commands/migrate-to-multiproject.js.map +0 -1
  158. package/dist/cli/commands/migrate-to-profiles.d.ts +0 -25
  159. package/dist/cli/commands/migrate-to-profiles.d.ts.map +0 -1
  160. package/dist/cli/commands/migrate-to-profiles.js +0 -348
  161. package/dist/cli/commands/migrate-to-profiles.js.map +0 -1
  162. package/dist/cli/commands/pause.d.ts +0 -13
  163. package/dist/cli/commands/pause.d.ts.map +0 -1
  164. package/dist/cli/commands/pause.js +0 -15
  165. package/dist/cli/commands/pause.js.map +0 -1
  166. package/dist/cli/commands/qa.d.ts +0 -54
  167. package/dist/cli/commands/qa.d.ts.map +0 -1
  168. package/dist/cli/commands/qa.js +0 -98
  169. package/dist/cli/commands/qa.js.map +0 -1
  170. package/dist/cli/commands/resume.d.ts +0 -12
  171. package/dist/cli/commands/resume.d.ts.map +0 -1
  172. package/dist/cli/commands/resume.js +0 -14
  173. package/dist/cli/commands/resume.js.map +0 -1
  174. package/dist/cli/commands/revert-wip-limit.js +0 -60
  175. package/dist/cli/commands/status-line.d.ts +0 -14
  176. package/dist/cli/commands/status-line.d.ts.map +0 -1
  177. package/dist/cli/commands/status-line.js +0 -75
  178. package/dist/cli/commands/status-line.js.map +0 -1
  179. package/dist/cli/commands/status.d.ts +0 -12
  180. package/dist/cli/commands/status.d.ts.map +0 -1
  181. package/dist/cli/commands/status.js +0 -23
  182. package/dist/cli/commands/status.js.map +0 -1
  183. package/dist/cli/commands/switch-project.d.ts +0 -13
  184. package/dist/cli/commands/switch-project.d.ts.map +0 -1
  185. package/dist/cli/commands/switch-project.js +0 -91
  186. package/dist/cli/commands/switch-project.js.map +0 -1
  187. package/dist/cli/commands/sync-spec-commits.d.ts +0 -9
  188. package/dist/cli/commands/sync-spec-commits.d.ts.map +0 -1
  189. package/dist/cli/commands/sync-spec-commits.js +0 -186
  190. package/dist/cli/commands/sync-spec-commits.js.map +0 -1
  191. package/dist/cli/commands/validate-jira.d.ts +0 -35
  192. package/dist/cli/commands/validate-jira.d.ts.map +0 -1
  193. package/dist/cli/commands/validate-jira.js +0 -112
  194. package/dist/cli/commands/validate-jira.js.map +0 -1
  195. package/dist/cli/commands/validate-plugins.d.ts +0 -41
  196. package/dist/cli/commands/validate-plugins.d.ts.map +0 -1
  197. package/dist/cli/commands/validate-plugins.js +0 -171
  198. package/dist/cli/commands/validate-plugins.js.map +0 -1
  199. package/dist/cli/helpers/github/increment-profile-selector.d.ts +0 -47
  200. package/dist/cli/helpers/github/increment-profile-selector.d.ts.map +0 -1
  201. package/dist/cli/helpers/github/increment-profile-selector.js +0 -186
  202. package/dist/cli/helpers/github/increment-profile-selector.js.map +0 -1
  203. package/dist/cli/helpers/github/profile-manager.d.ts +0 -119
  204. package/dist/cli/helpers/github/profile-manager.d.ts.map +0 -1
  205. package/dist/cli/helpers/github/profile-manager.js +0 -311
  206. package/dist/cli/helpers/github/profile-manager.js.map +0 -1
  207. package/dist/cli/helpers/issue-tracker/ado.d.ts +0 -57
  208. package/dist/cli/helpers/issue-tracker/ado.d.ts.map +0 -1
  209. package/dist/cli/helpers/issue-tracker/ado.js +0 -243
  210. package/dist/cli/helpers/issue-tracker/ado.js.map +0 -1
  211. package/dist/cli/helpers/issue-tracker/github-multi-repo.d.ts +0 -86
  212. package/dist/cli/helpers/issue-tracker/github-multi-repo.d.ts.map +0 -1
  213. package/dist/cli/helpers/issue-tracker/github-multi-repo.js +0 -417
  214. package/dist/cli/helpers/issue-tracker/github-multi-repo.js.map +0 -1
  215. package/dist/cli/helpers/issue-tracker/github.d.ts +0 -80
  216. package/dist/cli/helpers/issue-tracker/github.d.ts.map +0 -1
  217. package/dist/cli/helpers/issue-tracker/github.js +0 -324
  218. package/dist/cli/helpers/issue-tracker/github.js.map +0 -1
  219. package/dist/cli/helpers/issue-tracker/index.d.ts +0 -22
  220. package/dist/cli/helpers/issue-tracker/index.d.ts.map +0 -1
  221. package/dist/cli/helpers/issue-tracker/index.js +0 -562
  222. package/dist/cli/helpers/issue-tracker/index.js.map +0 -1
  223. package/dist/cli/helpers/issue-tracker/jira.d.ts +0 -61
  224. package/dist/cli/helpers/issue-tracker/jira.d.ts.map +0 -1
  225. package/dist/cli/helpers/issue-tracker/jira.js +0 -404
  226. package/dist/cli/helpers/issue-tracker/jira.js.map +0 -1
  227. package/dist/cli/helpers/issue-tracker/types.d.ts +0 -108
  228. package/dist/cli/helpers/issue-tracker/types.d.ts.map +0 -1
  229. package/dist/cli/helpers/issue-tracker/types.js +0 -16
  230. package/dist/cli/helpers/issue-tracker/types.js.map +0 -1
  231. package/dist/cli/helpers/issue-tracker/utils.d.ts +0 -120
  232. package/dist/cli/helpers/issue-tracker/utils.d.ts.map +0 -1
  233. package/dist/cli/helpers/issue-tracker/utils.js +0 -293
  234. package/dist/cli/helpers/issue-tracker/utils.js.map +0 -1
  235. package/dist/core/agent-model-manager.d.ts +0 -52
  236. package/dist/core/agent-model-manager.d.ts.map +0 -1
  237. package/dist/core/agent-model-manager.js +0 -120
  238. package/dist/core/agent-model-manager.js.map +0 -1
  239. package/dist/core/brownfield/analyzer.d.ts +0 -86
  240. package/dist/core/brownfield/analyzer.d.ts.map +0 -1
  241. package/dist/core/brownfield/analyzer.js +0 -365
  242. package/dist/core/brownfield/analyzer.js.map +0 -1
  243. package/dist/core/brownfield/importer.d.ts +0 -76
  244. package/dist/core/brownfield/importer.d.ts.map +0 -1
  245. package/dist/core/brownfield/importer.js +0 -287
  246. package/dist/core/brownfield/importer.js.map +0 -1
  247. package/dist/core/comment-builder.d.ts +0 -57
  248. package/dist/core/comment-builder.d.ts.map +0 -1
  249. package/dist/core/comment-builder.js +0 -239
  250. package/dist/core/comment-builder.js.map +0 -1
  251. package/dist/core/config-manager.d.ts +0 -47
  252. package/dist/core/config-manager.d.ts.map +0 -1
  253. package/dist/core/config-manager.js +0 -136
  254. package/dist/core/config-manager.js.map +0 -1
  255. package/dist/core/cost-tracker.d.ts +0 -108
  256. package/dist/core/cost-tracker.d.ts.map +0 -1
  257. package/dist/core/cost-tracker.js +0 -281
  258. package/dist/core/cost-tracker.js.map +0 -1
  259. package/dist/core/credentials-manager.d.ts +0 -107
  260. package/dist/core/credentials-manager.d.ts.map +0 -1
  261. package/dist/core/credentials-manager.js +0 -457
  262. package/dist/core/credentials-manager.js.map +0 -1
  263. package/dist/core/i18n/language-detector.d.ts +0 -29
  264. package/dist/core/i18n/language-detector.d.ts.map +0 -1
  265. package/dist/core/i18n/language-detector.js +0 -143
  266. package/dist/core/i18n/language-detector.js.map +0 -1
  267. package/dist/core/i18n/language-manager.d.ts +0 -101
  268. package/dist/core/i18n/language-manager.d.ts.map +0 -1
  269. package/dist/core/i18n/language-manager.js +0 -232
  270. package/dist/core/i18n/language-manager.js.map +0 -1
  271. package/dist/core/i18n/language-registry.d.ts +0 -44
  272. package/dist/core/i18n/language-registry.d.ts.map +0 -1
  273. package/dist/core/i18n/language-registry.js +0 -234
  274. package/dist/core/i18n/language-registry.js.map +0 -1
  275. package/dist/core/i18n/locale-manager.d.ts +0 -62
  276. package/dist/core/i18n/locale-manager.d.ts.map +0 -1
  277. package/dist/core/i18n/locale-manager.js +0 -137
  278. package/dist/core/i18n/locale-manager.js.map +0 -1
  279. package/dist/core/i18n/system-prompt-injector.d.ts +0 -33
  280. package/dist/core/i18n/system-prompt-injector.d.ts.map +0 -1
  281. package/dist/core/i18n/system-prompt-injector.js +0 -131
  282. package/dist/core/i18n/system-prompt-injector.js.map +0 -1
  283. package/dist/core/i18n/types.d.ts +0 -151
  284. package/dist/core/i18n/types.d.ts.map +0 -1
  285. package/dist/core/i18n/types.js +0 -11
  286. package/dist/core/i18n/types.js.map +0 -1
  287. package/dist/core/increment/active-increment-manager.d.ts +0 -79
  288. package/dist/core/increment/active-increment-manager.d.ts.map +0 -1
  289. package/dist/core/increment/active-increment-manager.js +0 -153
  290. package/dist/core/increment/active-increment-manager.js.map +0 -1
  291. package/dist/core/increment/discipline-checker.d.ts +0 -60
  292. package/dist/core/increment/discipline-checker.d.ts.map +0 -1
  293. package/dist/core/increment/discipline-checker.js +0 -274
  294. package/dist/core/increment/discipline-checker.js.map +0 -1
  295. package/dist/core/increment/limits.d.ts +0 -68
  296. package/dist/core/increment/limits.d.ts.map +0 -1
  297. package/dist/core/increment/limits.js +0 -224
  298. package/dist/core/increment/limits.js.map +0 -1
  299. package/dist/core/increment/metadata-manager.d.ts +0 -116
  300. package/dist/core/increment/metadata-manager.d.ts.map +0 -1
  301. package/dist/core/increment/metadata-manager.js.map +0 -1
  302. package/dist/core/increment/metadata-validator.d.ts +0 -33
  303. package/dist/core/increment/metadata-validator.d.ts.map +0 -1
  304. package/dist/core/increment/metadata-validator.js +0 -147
  305. package/dist/core/increment/metadata-validator.js.map +0 -1
  306. package/dist/core/increment/status-commands.d.ts +0 -43
  307. package/dist/core/increment/status-commands.d.ts.map +0 -1
  308. package/dist/core/increment/status-commands.js +0 -277
  309. package/dist/core/increment/status-commands.js.map +0 -1
  310. package/dist/core/increment/types.d.ts +0 -88
  311. package/dist/core/increment/types.d.ts.map +0 -1
  312. package/dist/core/increment/types.js +0 -8
  313. package/dist/core/increment/types.js.map +0 -1
  314. package/dist/core/increment-status.d.ts +0 -72
  315. package/dist/core/increment-status.d.ts.map +0 -1
  316. package/dist/core/increment-status.js +0 -227
  317. package/dist/core/increment-status.js.map +0 -1
  318. package/dist/core/model-selector.d.ts +0 -57
  319. package/dist/core/model-selector.d.ts.map +0 -1
  320. package/dist/core/model-selector.js +0 -115
  321. package/dist/core/model-selector.js.map +0 -1
  322. package/dist/core/phase-detector.d.ts +0 -62
  323. package/dist/core/phase-detector.d.ts.map +0 -1
  324. package/dist/core/phase-detector.js +0 -229
  325. package/dist/core/phase-detector.js.map +0 -1
  326. package/dist/core/plugin-loader.d.ts +0 -131
  327. package/dist/core/plugin-loader.d.ts.map +0 -1
  328. package/dist/core/plugin-loader.js +0 -421
  329. package/dist/core/plugin-loader.js.map +0 -1
  330. package/dist/core/project-manager.d.ts +0 -127
  331. package/dist/core/project-manager.d.ts.map +0 -1
  332. package/dist/core/project-manager.js +0 -524
  333. package/dist/core/project-manager.js.map +0 -1
  334. package/dist/core/project-structure-detector.d.ts +0 -92
  335. package/dist/core/project-structure-detector.d.ts.map +0 -1
  336. package/dist/core/project-structure-detector.js +0 -289
  337. package/dist/core/project-structure-detector.js.map +0 -1
  338. package/dist/core/qa/qa-runner.d.ts +0 -16
  339. package/dist/core/qa/qa-runner.d.ts.map +0 -1
  340. package/dist/core/qa/qa-runner.js +0 -422
  341. package/dist/core/qa/qa-runner.js.map +0 -1
  342. package/dist/core/qa/quality-gate-decider.d.ts +0 -53
  343. package/dist/core/qa/quality-gate-decider.d.ts.map +0 -1
  344. package/dist/core/qa/quality-gate-decider.js +0 -268
  345. package/dist/core/qa/quality-gate-decider.js.map +0 -1
  346. package/dist/core/qa/risk-calculator.d.ts +0 -126
  347. package/dist/core/qa/risk-calculator.d.ts.map +0 -1
  348. package/dist/core/qa/risk-calculator.js +0 -247
  349. package/dist/core/qa/risk-calculator.js.map +0 -1
  350. package/dist/core/qa/types.d.ts +0 -315
  351. package/dist/core/qa/types.d.ts.map +0 -1
  352. package/dist/core/qa/types.js +0 -8
  353. package/dist/core/qa/types.js.map +0 -1
  354. package/dist/core/repo-structure/repo-structure-manager.d.ts +0 -82
  355. package/dist/core/repo-structure/repo-structure-manager.d.ts.map +0 -1
  356. package/dist/core/repo-structure/repo-structure-manager.js +0 -581
  357. package/dist/core/repo-structure/repo-structure-manager.js.map +0 -1
  358. package/dist/core/rfc-generator-v2.d.ts +0 -149
  359. package/dist/core/rfc-generator-v2.d.ts.map +0 -1
  360. package/dist/core/rfc-generator-v2.js +0 -399
  361. package/dist/core/rfc-generator-v2.js.map +0 -1
  362. package/dist/core/spec-task-mapper.d.ts +0 -71
  363. package/dist/core/spec-task-mapper.d.ts.map +0 -1
  364. package/dist/core/spec-task-mapper.js +0 -208
  365. package/dist/core/spec-task-mapper.js.map +0 -1
  366. package/dist/core/specs/spec-metadata-manager.d.ts +0 -70
  367. package/dist/core/specs/spec-metadata-manager.d.ts.map +0 -1
  368. package/dist/core/specs/spec-metadata-manager.js +0 -371
  369. package/dist/core/specs/spec-metadata-manager.js.map +0 -1
  370. package/dist/core/specs/spec-parser.d.ts +0 -66
  371. package/dist/core/specs/spec-parser.d.ts.map +0 -1
  372. package/dist/core/specs/spec-parser.js +0 -276
  373. package/dist/core/specs/spec-parser.js.map +0 -1
  374. package/dist/core/status-line/status-line-manager.d.ts +0 -62
  375. package/dist/core/status-line/status-line-manager.d.ts.map +0 -1
  376. package/dist/core/status-line/status-line-manager.js +0 -169
  377. package/dist/core/status-line/status-line-manager.js.map +0 -1
  378. package/dist/core/status-line/types.d.ts +0 -50
  379. package/dist/core/status-line/types.d.ts.map +0 -1
  380. package/dist/core/status-line/types.js +0 -17
  381. package/dist/core/status-line/types.js.map +0 -1
  382. package/dist/core/sync/bidirectional-engine.d.ts +0 -110
  383. package/dist/core/sync/bidirectional-engine.d.ts.map +0 -1
  384. package/dist/core/sync/bidirectional-engine.js +0 -356
  385. package/dist/core/sync/bidirectional-engine.js.map +0 -1
  386. package/dist/core/sync/folder-mapper.d.ts +0 -71
  387. package/dist/core/sync/folder-mapper.d.ts.map +0 -1
  388. package/dist/core/sync/folder-mapper.js +0 -203
  389. package/dist/core/sync/folder-mapper.js.map +0 -1
  390. package/dist/core/sync/profile-manager.d.ts +0 -72
  391. package/dist/core/sync/profile-manager.d.ts.map +0 -1
  392. package/dist/core/sync/profile-manager.js +0 -338
  393. package/dist/core/sync/profile-manager.js.map +0 -1
  394. package/dist/core/sync/profile-selector.d.ts +0 -52
  395. package/dist/core/sync/profile-selector.d.ts.map +0 -1
  396. package/dist/core/sync/profile-selector.js +0 -179
  397. package/dist/core/sync/profile-selector.js.map +0 -1
  398. package/dist/core/sync/profile-validator.d.ts +0 -52
  399. package/dist/core/sync/profile-validator.d.ts.map +0 -1
  400. package/dist/core/sync/profile-validator.js +0 -170
  401. package/dist/core/sync/profile-validator.js.map +0 -1
  402. package/dist/core/sync/project-context.d.ts +0 -81
  403. package/dist/core/sync/project-context.d.ts.map +0 -1
  404. package/dist/core/sync/project-context.js +0 -354
  405. package/dist/core/sync/project-context.js.map +0 -1
  406. package/dist/core/sync/rate-limiter.d.ts +0 -116
  407. package/dist/core/sync/rate-limiter.d.ts.map +0 -1
  408. package/dist/core/sync/rate-limiter.js +0 -308
  409. package/dist/core/sync/rate-limiter.js.map +0 -1
  410. package/dist/core/sync/time-range-selector.d.ts +0 -48
  411. package/dist/core/sync/time-range-selector.d.ts.map +0 -1
  412. package/dist/core/sync/time-range-selector.js +0 -224
  413. package/dist/core/sync/time-range-selector.js.map +0 -1
  414. package/dist/core/types/config.d.ts +0 -90
  415. package/dist/core/types/config.d.ts.map +0 -1
  416. package/dist/core/types/config.js +0 -44
  417. package/dist/core/types/config.js.map +0 -1
  418. package/dist/core/types/increment-metadata.d.ts +0 -120
  419. package/dist/core/types/increment-metadata.d.ts.map +0 -1
  420. package/dist/core/types/increment-metadata.js +0 -138
  421. package/dist/core/types/increment-metadata.js.map +0 -1
  422. package/dist/core/types/plugin.d.ts +0 -283
  423. package/dist/core/types/plugin.d.ts.map +0 -1
  424. package/dist/core/types/plugin.js +0 -49
  425. package/dist/core/types/plugin.js.map +0 -1
  426. package/dist/core/types/spec-metadata.d.ts +0 -229
  427. package/dist/core/types/spec-metadata.d.ts.map +0 -1
  428. package/dist/core/types/spec-metadata.js +0 -14
  429. package/dist/core/types/spec-metadata.js.map +0 -1
  430. package/dist/core/types/sync-profile.d.ts +0 -349
  431. package/dist/core/types/sync-profile.d.ts.map +0 -1
  432. package/dist/core/types/sync-profile.js +0 -79
  433. package/dist/core/types/sync-profile.js.map +0 -1
  434. package/dist/hooks/lib/git-diff-analyzer.d.ts +0 -89
  435. package/dist/hooks/lib/git-diff-analyzer.d.ts.map +0 -1
  436. package/dist/hooks/lib/git-diff-analyzer.js +0 -226
  437. package/dist/hooks/lib/git-diff-analyzer.js.map +0 -1
  438. package/dist/hooks/lib/invoke-translator-skill.d.ts +0 -60
  439. package/dist/hooks/lib/invoke-translator-skill.d.ts.map +0 -1
  440. package/dist/hooks/lib/invoke-translator-skill.js +0 -201
  441. package/dist/hooks/lib/invoke-translator-skill.js.map +0 -1
  442. package/dist/hooks/lib/prepare-reflection-context.d.ts +0 -42
  443. package/dist/hooks/lib/prepare-reflection-context.d.ts.map +0 -1
  444. package/dist/hooks/lib/prepare-reflection-context.js +0 -123
  445. package/dist/hooks/lib/prepare-reflection-context.js.map +0 -1
  446. package/dist/hooks/lib/reflection-config-loader.d.ts +0 -45
  447. package/dist/hooks/lib/reflection-config-loader.d.ts.map +0 -1
  448. package/dist/hooks/lib/reflection-config-loader.js +0 -132
  449. package/dist/hooks/lib/reflection-config-loader.js.map +0 -1
  450. package/dist/hooks/lib/reflection-parser.d.ts +0 -33
  451. package/dist/hooks/lib/reflection-parser.d.ts.map +0 -1
  452. package/dist/hooks/lib/reflection-parser.js +0 -419
  453. package/dist/hooks/lib/reflection-parser.js.map +0 -1
  454. package/dist/hooks/lib/reflection-prompt-builder.d.ts +0 -56
  455. package/dist/hooks/lib/reflection-prompt-builder.d.ts.map +0 -1
  456. package/dist/hooks/lib/reflection-prompt-builder.js +0 -239
  457. package/dist/hooks/lib/reflection-prompt-builder.js.map +0 -1
  458. package/dist/hooks/lib/reflection-storage.d.ts +0 -64
  459. package/dist/hooks/lib/reflection-storage.d.ts.map +0 -1
  460. package/dist/hooks/lib/reflection-storage.js +0 -305
  461. package/dist/hooks/lib/reflection-storage.js.map +0 -1
  462. package/dist/hooks/lib/run-self-reflection.d.ts +0 -43
  463. package/dist/hooks/lib/run-self-reflection.d.ts.map +0 -1
  464. package/dist/hooks/lib/run-self-reflection.js +0 -203
  465. package/dist/hooks/lib/run-self-reflection.js.map +0 -1
  466. package/dist/hooks/lib/sync-living-docs.d.ts +0 -27
  467. package/dist/hooks/lib/sync-living-docs.d.ts.map +0 -1
  468. package/dist/hooks/lib/sync-living-docs.js +0 -116
  469. package/dist/hooks/lib/sync-living-docs.js.map +0 -1
  470. package/dist/hooks/lib/translate-file.d.ts +0 -59
  471. package/dist/hooks/lib/translate-file.d.ts.map +0 -1
  472. package/dist/hooks/lib/translate-file.js +0 -350
  473. package/dist/hooks/lib/translate-file.js.map +0 -1
  474. package/dist/hooks/lib/translate-living-docs.d.ts +0 -13
  475. package/dist/hooks/lib/translate-living-docs.d.ts.map +0 -1
  476. package/dist/hooks/lib/translate-living-docs.js +0 -175
  477. package/dist/hooks/lib/translate-living-docs.js.map +0 -1
  478. package/dist/hooks/lib/types/reflection-types.d.ts +0 -164
  479. package/dist/hooks/lib/types/reflection-types.d.ts.map +0 -1
  480. package/dist/hooks/lib/types/reflection-types.js +0 -73
  481. package/dist/hooks/lib/types/reflection-types.js.map +0 -1
  482. package/dist/hooks/lib/update-tasks-md.d.ts +0 -29
  483. package/dist/hooks/lib/update-tasks-md.d.ts.map +0 -1
  484. package/dist/hooks/lib/update-tasks-md.js +0 -203
  485. package/dist/hooks/lib/update-tasks-md.js.map +0 -1
  486. package/dist/integrations/ado/ado-client.d.ts +0 -127
  487. package/dist/integrations/ado/ado-client.d.ts.map +0 -1
  488. package/dist/integrations/ado/ado-client.js +0 -416
  489. package/dist/integrations/ado/ado-client.js.map +0 -1
  490. package/dist/integrations/jira/jira-client.d.ts +0 -139
  491. package/dist/integrations/jira/jira-client.d.ts.map +0 -1
  492. package/dist/integrations/jira/jira-client.js +0 -386
  493. package/dist/integrations/jira/jira-client.js.map +0 -1
  494. package/dist/integrations/jira/jira-incremental-mapper.d.ts +0 -75
  495. package/dist/integrations/jira/jira-incremental-mapper.d.ts.map +0 -1
  496. package/dist/integrations/jira/jira-incremental-mapper.js +0 -474
  497. package/dist/integrations/jira/jira-incremental-mapper.js.map +0 -1
  498. package/dist/integrations/jira/jira-mapper.d.ts +0 -105
  499. package/dist/integrations/jira/jira-mapper.d.ts.map +0 -1
  500. package/dist/integrations/jira/jira-mapper.js +0 -494
  501. package/dist/integrations/jira/jira-mapper.js.map +0 -1
  502. package/dist/metrics/calculators/change-failure-rate.d.ts +0 -22
  503. package/dist/metrics/calculators/change-failure-rate.d.ts.map +0 -1
  504. package/dist/metrics/calculators/change-failure-rate.js +0 -70
  505. package/dist/metrics/calculators/change-failure-rate.js.map +0 -1
  506. package/dist/metrics/calculators/deployment-frequency.d.ts +0 -20
  507. package/dist/metrics/calculators/deployment-frequency.d.ts.map +0 -1
  508. package/dist/metrics/calculators/deployment-frequency.js +0 -61
  509. package/dist/metrics/calculators/deployment-frequency.js.map +0 -1
  510. package/dist/metrics/calculators/lead-time.d.ts +0 -22
  511. package/dist/metrics/calculators/lead-time.d.ts.map +0 -1
  512. package/dist/metrics/calculators/lead-time.js +0 -82
  513. package/dist/metrics/calculators/lead-time.js.map +0 -1
  514. package/dist/metrics/calculators/mttr.d.ts +0 -21
  515. package/dist/metrics/calculators/mttr.d.ts.map +0 -1
  516. package/dist/metrics/calculators/mttr.js +0 -60
  517. package/dist/metrics/calculators/mttr.js.map +0 -1
  518. package/dist/metrics/dora-calculator.d.ts +0 -28
  519. package/dist/metrics/dora-calculator.d.ts.map +0 -1
  520. package/dist/metrics/dora-calculator.js +0 -117
  521. package/dist/metrics/dora-calculator.js.map +0 -1
  522. package/dist/metrics/github-client.d.ts +0 -51
  523. package/dist/metrics/github-client.d.ts.map +0 -1
  524. package/dist/metrics/github-client.js +0 -133
  525. package/dist/metrics/github-client.js.map +0 -1
  526. package/dist/metrics/report-generator.d.ts +0 -17
  527. package/dist/metrics/report-generator.d.ts.map +0 -1
  528. package/dist/metrics/report-generator.js +0 -403
  529. package/dist/metrics/report-generator.js.map +0 -1
  530. package/dist/metrics/types.d.ts +0 -112
  531. package/dist/metrics/types.d.ts.map +0 -1
  532. package/dist/metrics/types.js +0 -10
  533. package/dist/metrics/types.js.map +0 -1
  534. package/dist/metrics/utils/percentile.d.ts +0 -25
  535. package/dist/metrics/utils/percentile.d.ts.map +0 -1
  536. package/dist/metrics/utils/percentile.js +0 -46
  537. package/dist/metrics/utils/percentile.js.map +0 -1
  538. package/dist/metrics/utils/tier-classifier.d.ts +0 -61
  539. package/dist/metrics/utils/tier-classifier.d.ts.map +0 -1
  540. package/dist/metrics/utils/tier-classifier.js +0 -100
  541. package/dist/metrics/utils/tier-classifier.js.map +0 -1
  542. package/dist/plugins/specweave-ado/lib/ado-board-resolver.d.ts +0 -94
  543. package/dist/plugins/specweave-ado/lib/ado-board-resolver.d.ts.map +0 -1
  544. package/dist/plugins/specweave-ado/lib/ado-board-resolver.js +0 -219
  545. package/dist/plugins/specweave-ado/lib/ado-board-resolver.js.map +0 -1
  546. package/dist/plugins/specweave-ado/lib/ado-hierarchical-sync.d.ts +0 -40
  547. package/dist/plugins/specweave-ado/lib/ado-hierarchical-sync.d.ts.map +0 -1
  548. package/dist/plugins/specweave-ado/lib/ado-hierarchical-sync.js +0 -370
  549. package/dist/plugins/specweave-ado/lib/ado-hierarchical-sync.js.map +0 -1
  550. package/dist/plugins/specweave-ado/lib/ado-multi-project-sync.d.ts +0 -149
  551. package/dist/plugins/specweave-ado/lib/ado-multi-project-sync.d.ts.map +0 -1
  552. package/dist/plugins/specweave-ado/lib/ado-multi-project-sync.js +0 -517
  553. package/dist/plugins/specweave-ado/lib/ado-multi-project-sync.js.map +0 -1
  554. package/dist/plugins/specweave-ado/lib/ado-project-detector.d.ts +0 -72
  555. package/dist/plugins/specweave-ado/lib/ado-project-detector.d.ts.map +0 -1
  556. package/dist/plugins/specweave-ado/lib/ado-project-detector.js +0 -416
  557. package/dist/plugins/specweave-ado/lib/ado-project-detector.js.map +0 -1
  558. package/dist/plugins/specweave-ado/lib/conflict-resolver.d.ts +0 -99
  559. package/dist/plugins/specweave-ado/lib/conflict-resolver.d.ts.map +0 -1
  560. package/dist/plugins/specweave-ado/lib/conflict-resolver.js +0 -331
  561. package/dist/plugins/specweave-ado/lib/conflict-resolver.js.map +0 -1
  562. package/dist/plugins/specweave-ado/lib/project-selector.d.ts +0 -42
  563. package/dist/plugins/specweave-ado/lib/project-selector.d.ts.map +0 -1
  564. package/dist/plugins/specweave-ado/lib/project-selector.js +0 -211
  565. package/dist/plugins/specweave-ado/lib/project-selector.js.map +0 -1
  566. package/dist/plugins/specweave-github/lib/github-board-resolver.d.ts +0 -54
  567. package/dist/plugins/specweave-github/lib/github-board-resolver.d.ts.map +0 -1
  568. package/dist/plugins/specweave-github/lib/github-board-resolver.js +0 -122
  569. package/dist/plugins/specweave-github/lib/github-board-resolver.js.map +0 -1
  570. package/dist/plugins/specweave-github/lib/github-hierarchical-sync.d.ts +0 -29
  571. package/dist/plugins/specweave-github/lib/github-hierarchical-sync.d.ts.map +0 -1
  572. package/dist/plugins/specweave-github/lib/github-hierarchical-sync.js +0 -268
  573. package/dist/plugins/specweave-github/lib/github-hierarchical-sync.js.map +0 -1
  574. package/dist/plugins/specweave-github/lib/github-multi-project-sync.d.ts +0 -126
  575. package/dist/plugins/specweave-github/lib/github-multi-project-sync.d.ts.map +0 -1
  576. package/dist/plugins/specweave-github/lib/github-multi-project-sync.js +0 -420
  577. package/dist/plugins/specweave-github/lib/github-multi-project-sync.js.map +0 -1
  578. package/dist/plugins/specweave-github/lib/repo-selector.d.ts +0 -49
  579. package/dist/plugins/specweave-github/lib/repo-selector.d.ts.map +0 -1
  580. package/dist/plugins/specweave-github/lib/repo-selector.js +0 -216
  581. package/dist/plugins/specweave-github/lib/repo-selector.js.map +0 -1
  582. package/dist/plugins/specweave-jira/lib/jira-board-resolver.d.ts +0 -50
  583. package/dist/plugins/specweave-jira/lib/jira-board-resolver.d.ts.map +0 -1
  584. package/dist/plugins/specweave-jira/lib/jira-board-resolver.js +0 -84
  585. package/dist/plugins/specweave-jira/lib/jira-board-resolver.js.map +0 -1
  586. package/dist/plugins/specweave-jira/lib/jira-hierarchical-sync.d.ts +0 -33
  587. package/dist/plugins/specweave-jira/lib/jira-hierarchical-sync.d.ts.map +0 -1
  588. package/dist/plugins/specweave-jira/lib/jira-hierarchical-sync.js +0 -206
  589. package/dist/plugins/specweave-jira/lib/jira-hierarchical-sync.js.map +0 -1
  590. package/dist/plugins/specweave-jira/lib/jira-multi-project-sync.d.ts +0 -95
  591. package/dist/plugins/specweave-jira/lib/jira-multi-project-sync.d.ts.map +0 -1
  592. package/dist/plugins/specweave-jira/lib/jira-multi-project-sync.js +0 -301
  593. package/dist/plugins/specweave-jira/lib/jira-multi-project-sync.js.map +0 -1
  594. package/dist/plugins/specweave-jira/lib/project-selector.d.ts +0 -42
  595. package/dist/plugins/specweave-jira/lib/project-selector.d.ts.map +0 -1
  596. package/dist/plugins/specweave-jira/lib/project-selector.js +0 -216
  597. package/dist/plugins/specweave-jira/lib/project-selector.js.map +0 -1
  598. package/dist/project-mapper.js +0 -272
  599. package/dist/scripts/split-spec-by-project.js +0 -105
  600. package/dist/spec-splitter.js +0 -283
  601. package/dist/src/core/agent-model-manager.d.ts +0 -52
  602. package/dist/src/core/agent-model-manager.d.ts.map +0 -1
  603. package/dist/src/core/agent-model-manager.js +0 -120
  604. package/dist/src/core/agent-model-manager.js.map +0 -1
  605. package/dist/src/core/model-selector.d.ts +0 -57
  606. package/dist/src/core/model-selector.d.ts.map +0 -1
  607. package/dist/src/core/model-selector.js +0 -115
  608. package/dist/src/core/model-selector.js.map +0 -1
  609. package/dist/src/core/phase-detector.d.ts +0 -62
  610. package/dist/src/core/phase-detector.d.ts.map +0 -1
  611. package/dist/src/core/phase-detector.js +0 -229
  612. package/dist/src/core/phase-detector.js.map +0 -1
  613. package/dist/src/hooks/lib/git-diff-analyzer.d.ts +0 -89
  614. package/dist/src/hooks/lib/git-diff-analyzer.d.ts.map +0 -1
  615. package/dist/src/hooks/lib/git-diff-analyzer.js +0 -226
  616. package/dist/src/hooks/lib/git-diff-analyzer.js.map +0 -1
  617. package/dist/src/hooks/lib/invoke-translator-skill.d.ts +0 -60
  618. package/dist/src/hooks/lib/invoke-translator-skill.d.ts.map +0 -1
  619. package/dist/src/hooks/lib/invoke-translator-skill.js +0 -201
  620. package/dist/src/hooks/lib/invoke-translator-skill.js.map +0 -1
  621. package/dist/src/hooks/lib/prepare-reflection-context.d.ts +0 -42
  622. package/dist/src/hooks/lib/prepare-reflection-context.d.ts.map +0 -1
  623. package/dist/src/hooks/lib/prepare-reflection-context.js +0 -123
  624. package/dist/src/hooks/lib/prepare-reflection-context.js.map +0 -1
  625. package/dist/src/hooks/lib/reflection-config-loader.d.ts +0 -45
  626. package/dist/src/hooks/lib/reflection-config-loader.d.ts.map +0 -1
  627. package/dist/src/hooks/lib/reflection-config-loader.js +0 -132
  628. package/dist/src/hooks/lib/reflection-config-loader.js.map +0 -1
  629. package/dist/src/hooks/lib/reflection-parser.d.ts +0 -33
  630. package/dist/src/hooks/lib/reflection-parser.d.ts.map +0 -1
  631. package/dist/src/hooks/lib/reflection-parser.js +0 -419
  632. package/dist/src/hooks/lib/reflection-parser.js.map +0 -1
  633. package/dist/src/hooks/lib/reflection-prompt-builder.d.ts +0 -56
  634. package/dist/src/hooks/lib/reflection-prompt-builder.d.ts.map +0 -1
  635. package/dist/src/hooks/lib/reflection-prompt-builder.js +0 -239
  636. package/dist/src/hooks/lib/reflection-prompt-builder.js.map +0 -1
  637. package/dist/src/hooks/lib/reflection-storage.d.ts +0 -64
  638. package/dist/src/hooks/lib/reflection-storage.d.ts.map +0 -1
  639. package/dist/src/hooks/lib/reflection-storage.js +0 -305
  640. package/dist/src/hooks/lib/reflection-storage.js.map +0 -1
  641. package/dist/src/hooks/lib/run-self-reflection.d.ts +0 -43
  642. package/dist/src/hooks/lib/run-self-reflection.d.ts.map +0 -1
  643. package/dist/src/hooks/lib/run-self-reflection.js +0 -203
  644. package/dist/src/hooks/lib/run-self-reflection.js.map +0 -1
  645. package/dist/src/hooks/lib/sync-living-docs.d.ts +0 -27
  646. package/dist/src/hooks/lib/sync-living-docs.d.ts.map +0 -1
  647. package/dist/src/hooks/lib/sync-living-docs.js +0 -116
  648. package/dist/src/hooks/lib/sync-living-docs.js.map +0 -1
  649. package/dist/src/hooks/lib/translate-file.d.ts +0 -59
  650. package/dist/src/hooks/lib/translate-file.d.ts.map +0 -1
  651. package/dist/src/hooks/lib/translate-file.js +0 -350
  652. package/dist/src/hooks/lib/translate-file.js.map +0 -1
  653. package/dist/src/hooks/lib/translate-living-docs.d.ts +0 -13
  654. package/dist/src/hooks/lib/translate-living-docs.d.ts.map +0 -1
  655. package/dist/src/hooks/lib/translate-living-docs.js +0 -175
  656. package/dist/src/hooks/lib/translate-living-docs.js.map +0 -1
  657. package/dist/src/hooks/lib/types/reflection-types.d.ts +0 -164
  658. package/dist/src/hooks/lib/types/reflection-types.d.ts.map +0 -1
  659. package/dist/src/hooks/lib/types/reflection-types.js +0 -73
  660. package/dist/src/hooks/lib/types/reflection-types.js.map +0 -1
  661. package/dist/src/hooks/lib/update-tasks-md.d.ts +0 -29
  662. package/dist/src/hooks/lib/update-tasks-md.d.ts.map +0 -1
  663. package/dist/src/hooks/lib/update-tasks-md.js +0 -203
  664. package/dist/src/hooks/lib/update-tasks-md.js.map +0 -1
  665. package/dist/testing/test-generator.d.ts +0 -117
  666. package/dist/testing/test-generator.d.ts.map +0 -1
  667. package/dist/testing/test-generator.js +0 -370
  668. package/dist/testing/test-generator.js.map +0 -1
  669. package/dist/types/cost-tracking.d.ts +0 -43
  670. package/dist/types/cost-tracking.d.ts.map +0 -1
  671. package/dist/types/cost-tracking.js +0 -8
  672. package/dist/types/cost-tracking.js.map +0 -1
  673. package/dist/types/model-selection.d.ts +0 -53
  674. package/dist/types/model-selection.d.ts.map +0 -1
  675. package/dist/types/model-selection.js +0 -12
  676. package/dist/types/model-selection.js.map +0 -1
  677. package/dist/utils/agents-md-compiler.d.ts +0 -68
  678. package/dist/utils/agents-md-compiler.d.ts.map +0 -1
  679. package/dist/utils/agents-md-compiler.js +0 -420
  680. package/dist/utils/agents-md-compiler.js.map +0 -1
  681. package/dist/utils/auth-helpers.d.ts +0 -58
  682. package/dist/utils/auth-helpers.d.ts.map +0 -1
  683. package/dist/utils/auth-helpers.js +0 -108
  684. package/dist/utils/auth-helpers.js.map +0 -1
  685. package/dist/utils/auto-install.d.ts +0 -47
  686. package/dist/utils/auto-install.d.ts.map +0 -1
  687. package/dist/utils/auto-install.js +0 -211
  688. package/dist/utils/auto-install.js.map +0 -1
  689. package/dist/utils/claude-cli-detector.d.ts +0 -75
  690. package/dist/utils/claude-cli-detector.d.ts.map +0 -1
  691. package/dist/utils/claude-cli-detector.js +0 -285
  692. package/dist/utils/claude-cli-detector.js.map +0 -1
  693. package/dist/utils/cost-reporter.d.ts +0 -58
  694. package/dist/utils/cost-reporter.d.ts.map +0 -1
  695. package/dist/utils/cost-reporter.js +0 -224
  696. package/dist/utils/cost-reporter.js.map +0 -1
  697. package/dist/utils/docs-preview/config-generator.d.ts +0 -46
  698. package/dist/utils/docs-preview/config-generator.d.ts.map +0 -1
  699. package/dist/utils/docs-preview/config-generator.js +0 -377
  700. package/dist/utils/docs-preview/config-generator.js.map +0 -1
  701. package/dist/utils/docs-preview/docusaurus-setup.d.ts +0 -38
  702. package/dist/utils/docs-preview/docusaurus-setup.d.ts.map +0 -1
  703. package/dist/utils/docs-preview/docusaurus-setup.js +0 -177
  704. package/dist/utils/docs-preview/docusaurus-setup.js.map +0 -1
  705. package/dist/utils/docs-preview/index.d.ts +0 -7
  706. package/dist/utils/docs-preview/index.d.ts.map +0 -1
  707. package/dist/utils/docs-preview/index.js +0 -7
  708. package/dist/utils/docs-preview/index.js.map +0 -1
  709. package/dist/utils/docs-preview/package-installer.d.ts +0 -42
  710. package/dist/utils/docs-preview/package-installer.d.ts.map +0 -1
  711. package/dist/utils/docs-preview/package-installer.js +0 -182
  712. package/dist/utils/docs-preview/package-installer.js.map +0 -1
  713. package/dist/utils/docs-preview/server-manager.d.ts +0 -30
  714. package/dist/utils/docs-preview/server-manager.d.ts.map +0 -1
  715. package/dist/utils/docs-preview/server-manager.js +0 -212
  716. package/dist/utils/docs-preview/server-manager.js.map +0 -1
  717. package/dist/utils/docs-preview/sidebar-builder.d.ts +0 -32
  718. package/dist/utils/docs-preview/sidebar-builder.d.ts.map +0 -1
  719. package/dist/utils/docs-preview/sidebar-builder.js +0 -202
  720. package/dist/utils/docs-preview/sidebar-builder.js.map +0 -1
  721. package/dist/utils/docs-preview/types.d.ts +0 -57
  722. package/dist/utils/docs-preview/types.d.ts.map +0 -1
  723. package/dist/utils/docs-preview/types.js +0 -2
  724. package/dist/utils/docs-preview/types.js.map +0 -1
  725. package/dist/utils/env-file.d.ts +0 -88
  726. package/dist/utils/env-file.d.ts.map +0 -1
  727. package/dist/utils/env-file.js +0 -180
  728. package/dist/utils/env-file.js.map +0 -1
  729. package/dist/utils/env-multi-project-parser.d.ts +0 -220
  730. package/dist/utils/env-multi-project-parser.d.ts.map +0 -1
  731. package/dist/utils/env-multi-project-parser.js +0 -401
  732. package/dist/utils/env-multi-project-parser.js.map +0 -1
  733. package/dist/utils/esm-helpers.d.ts +0 -50
  734. package/dist/utils/esm-helpers.d.ts.map +0 -1
  735. package/dist/utils/esm-helpers.js +0 -57
  736. package/dist/utils/esm-helpers.js.map +0 -1
  737. package/dist/utils/execFileNoThrow.d.ts +0 -99
  738. package/dist/utils/execFileNoThrow.d.ts.map +0 -1
  739. package/dist/utils/execFileNoThrow.js +0 -137
  740. package/dist/utils/execFileNoThrow.js.map +0 -1
  741. package/dist/utils/external-resource-validator.d.ts +0 -102
  742. package/dist/utils/external-resource-validator.d.ts.map +0 -1
  743. package/dist/utils/external-resource-validator.js +0 -504
  744. package/dist/utils/external-resource-validator.js.map +0 -1
  745. package/dist/utils/generate-skills-index.d.ts +0 -24
  746. package/dist/utils/generate-skills-index.d.ts.map +0 -1
  747. package/dist/utils/generate-skills-index.js +0 -410
  748. package/dist/utils/generate-skills-index.js.map +0 -1
  749. package/dist/utils/git-detector.d.ts +0 -84
  750. package/dist/utils/git-detector.d.ts.map +0 -1
  751. package/dist/utils/git-detector.js +0 -233
  752. package/dist/utils/git-detector.js.map +0 -1
  753. package/dist/utils/git-utils.d.ts +0 -74
  754. package/dist/utils/git-utils.d.ts.map +0 -1
  755. package/dist/utils/git-utils.js +0 -272
  756. package/dist/utils/git-utils.js.map +0 -1
  757. package/dist/utils/model-selection.d.ts +0 -75
  758. package/dist/utils/model-selection.d.ts.map +0 -1
  759. package/dist/utils/model-selection.js +0 -204
  760. package/dist/utils/model-selection.js.map +0 -1
  761. package/dist/utils/plugin-validator.d.ts +0 -161
  762. package/dist/utils/plugin-validator.d.ts.map +0 -1
  763. package/dist/utils/plugin-validator.js +0 -558
  764. package/dist/utils/plugin-validator.js.map +0 -1
  765. package/dist/utils/pricing-constants.d.ts +0 -70
  766. package/dist/utils/pricing-constants.d.ts.map +0 -1
  767. package/dist/utils/pricing-constants.js +0 -71
  768. package/dist/utils/pricing-constants.js.map +0 -1
  769. package/dist/utils/project-detection.d.ts +0 -141
  770. package/dist/utils/project-detection.d.ts.map +0 -1
  771. package/dist/utils/project-detection.js +0 -321
  772. package/dist/utils/project-detection.js.map +0 -1
  773. package/dist/utils/project-mapper.d.ts +0 -92
  774. package/dist/utils/project-mapper.d.ts.map +0 -1
  775. package/dist/utils/project-mapper.js +0 -276
  776. package/dist/utils/project-mapper.js.map +0 -1
  777. package/dist/utils/spec-splitter.d.ts +0 -75
  778. package/dist/utils/spec-splitter.d.ts.map +0 -1
  779. package/dist/utils/spec-splitter.js +0 -332
  780. package/dist/utils/spec-splitter.js.map +0 -1
  781. package/dist/utils/string-utils.d.ts +0 -40
  782. package/dist/utils/string-utils.d.ts.map +0 -1
  783. package/dist/utils/string-utils.js +0 -58
  784. package/dist/utils/string-utils.js.map +0 -1
  785. package/dist/utils/translation.d.ts +0 -187
  786. package/dist/utils/translation.d.ts.map +0 -1
  787. package/dist/utils/translation.js +0 -414
  788. package/dist/utils/translation.js.map +0 -1
  789. /package/dist/{locales → src/locales}/de/.gitkeep +0 -0
  790. /package/dist/{locales → src/locales}/de/cli.json +0 -0
  791. /package/dist/{locales → src/locales}/en/cli.json +0 -0
  792. /package/dist/{locales → src/locales}/en/errors.json +0 -0
  793. /package/dist/{locales → src/locales}/en/templates.json +0 -0
  794. /package/dist/{locales → src/locales}/es/.gitkeep +0 -0
  795. /package/dist/{locales → src/locales}/es/cli.json +0 -0
  796. /package/dist/{locales → src/locales}/fr/.gitkeep +0 -0
  797. /package/dist/{locales → src/locales}/fr/cli.json +0 -0
  798. /package/dist/{locales → src/locales}/ja/.gitkeep +0 -0
  799. /package/dist/{locales → src/locales}/ja/cli.json +0 -0
  800. /package/dist/{locales → src/locales}/ko/.gitkeep +0 -0
  801. /package/dist/{locales → src/locales}/ko/cli.json +0 -0
  802. /package/dist/{locales → src/locales}/pt/.gitkeep +0 -0
  803. /package/dist/{locales → src/locales}/pt/cli.json +0 -0
  804. /package/dist/{locales → src/locales}/ru/.gitkeep +0 -0
  805. /package/dist/{locales → src/locales}/ru/cli.json +0 -0
  806. /package/dist/{locales → src/locales}/zh/.gitkeep +0 -0
  807. /package/dist/{locales → src/locales}/zh/cli.json +0 -0
@@ -1,208 +0,0 @@
1
- /**
2
- * Spec-Task Mapper for SpecWeave
3
- *
4
- * Maps tasks to spec user stories based on AC-IDs (Acceptance Criteria IDs).
5
- * Enables traceability from increment tasks back to living docs specs.
6
- */
7
- import path from 'path';
8
- import fs from 'fs/promises';
9
- /**
10
- * Parse spec.md to extract user stories and acceptance criteria
11
- */
12
- export async function parseSpec(specPath) {
13
- const content = await fs.readFile(specPath, 'utf-8');
14
- const userStories = [];
15
- // Match user story patterns:
16
- // **US-001**: As a developer, I want...
17
- const userStoryRegex = /\*\*US-(\d+)\*\*:\s*(.+)/g;
18
- const matches = [...content.matchAll(userStoryRegex)];
19
- for (const match of matches) {
20
- const usNumber = match[1];
21
- const usId = `US-${usNumber}`;
22
- const title = match[2].trim();
23
- // Find acceptance criteria for this user story
24
- // Pattern: - [x] **AC-US1-01**: Description (P1, testable)
25
- const acRegex = new RegExp(`- \\[([ x])\\] \\*\\*AC-US${usNumber}-(\\d+)\\*\\*:\\s*([^(]+)(?:\\(([^)]+)\\))?`, 'g');
26
- const acceptanceCriteria = [];
27
- const acMatches = [...content.matchAll(acRegex)];
28
- for (const acMatch of acMatches) {
29
- const completed = acMatch[1] === 'x';
30
- const acNumber = acMatch[2];
31
- const description = acMatch[3].trim();
32
- const metadata = acMatch[4] || '';
33
- acceptanceCriteria.push({
34
- id: `AC-US${usNumber}-${acNumber}`,
35
- description,
36
- priority: metadata.includes('P1') ? 'P1' : metadata.includes('P2') ? 'P2' : undefined,
37
- testable: metadata.includes('testable'),
38
- completed,
39
- });
40
- }
41
- userStories.push({
42
- id: usId,
43
- title,
44
- acceptanceCriteria,
45
- });
46
- }
47
- return userStories;
48
- }
49
- /**
50
- * Parse tasks.md to extract tasks with AC-IDs
51
- */
52
- export async function parseTasks(tasksPath) {
53
- const content = await fs.readFile(tasksPath, 'utf-8');
54
- const tasks = [];
55
- // Match task patterns:
56
- // ## T-001: Task Title
57
- const taskRegex = /##\s+T-(\d+):\s*(.+)/g;
58
- const taskMatches = [...content.matchAll(taskRegex)];
59
- for (const match of taskMatches) {
60
- const taskNumber = match[1];
61
- const taskId = `T-${taskNumber}`;
62
- const title = match[2].trim();
63
- // Extract AC-IDs for this task
64
- // Pattern: **AC**: AC-US1-01, AC-US1-02, AC-US2-01
65
- const taskSection = extractTaskSection(content, taskId);
66
- const acLine = taskSection.match(/\*\*AC\*\*:\s*(.+)/);
67
- const acIds = [];
68
- if (acLine) {
69
- const acText = acLine[1];
70
- const acMatches = acText.matchAll(/AC-US\d+-\d+/g);
71
- for (const acMatch of acMatches) {
72
- acIds.push(acMatch[0]);
73
- }
74
- }
75
- // Derive user story IDs from AC-IDs
76
- const userStories = [...new Set(acIds.map(acId => {
77
- const match = acId.match(/AC-US(\d+)-/);
78
- return match ? `US-${match[1]}` : null;
79
- }).filter(Boolean))];
80
- // Check if task is completed
81
- // Pattern: [x] T-001 or - [x] T-001
82
- const completedRegex = new RegExp(`\\[(x)\\]\\s+T-${taskNumber}\\b`, 'i');
83
- const completed = completedRegex.test(content);
84
- tasks.push({
85
- id: taskId,
86
- title,
87
- acIds,
88
- userStories,
89
- completed,
90
- });
91
- }
92
- return tasks;
93
- }
94
- /**
95
- * Extract task section from tasks.md content
96
- */
97
- function extractTaskSection(content, taskId) {
98
- const taskRegex = new RegExp(`##\\s+${taskId}:(.+?)(?=##\\s+T-\\d+:|---|\$)`, 's');
99
- const match = content.match(taskRegex);
100
- return match ? match[1] : '';
101
- }
102
- /**
103
- * Create mapping between tasks and user stories
104
- */
105
- export function createTaskToUserStoryMapping(tasks, userStories) {
106
- const mappings = [];
107
- for (const task of tasks) {
108
- mappings.push({
109
- taskId: task.id,
110
- userStoryIds: task.userStories,
111
- acIds: task.acIds,
112
- completed: task.completed,
113
- });
114
- }
115
- return mappings;
116
- }
117
- /**
118
- * Get full mapping for an increment
119
- */
120
- export async function getSpecTaskMapping(incrementPath, specPath) {
121
- try {
122
- // Read increment spec.md
123
- const incrementSpecPath = path.join(incrementPath, 'spec.md');
124
- const incrementSpec = await fs.readFile(incrementSpecPath, 'utf-8');
125
- // Extract spec ID from increment spec
126
- // Pattern: **Implements**: SPEC-001-core-framework-architecture
127
- const specIdMatch = incrementSpec.match(/\*\*Implements\*\*:\s*SPEC-(\d+)-/);
128
- const specId = specIdMatch ? `spec-${specIdMatch[1]}` : null;
129
- if (!specId && !specPath) {
130
- // No spec linked to this increment
131
- return null;
132
- }
133
- // Determine spec path
134
- let actualSpecPath = specPath;
135
- if (!actualSpecPath && specId) {
136
- // Try to find spec in living docs
137
- const projectRoot = incrementPath.split('.specweave')[0];
138
- const possiblePaths = [
139
- path.join(projectRoot, '.specweave', 'docs', 'internal', 'specs', `${specId}-*.md`),
140
- path.join(projectRoot, '.specweave', 'docs', 'internal', 'projects', 'default', 'specs', `${specId}-*.md`),
141
- ];
142
- for (const possiblePath of possiblePaths) {
143
- const glob = await import('glob');
144
- const matches = glob.sync(possiblePath);
145
- if (matches.length > 0) {
146
- actualSpecPath = matches[0];
147
- break;
148
- }
149
- }
150
- }
151
- if (!actualSpecPath) {
152
- return null;
153
- }
154
- // Parse spec and tasks
155
- const userStories = await parseSpec(actualSpecPath);
156
- const tasksPath = path.join(incrementPath, 'tasks.md');
157
- const tasks = await parseTasks(tasksPath);
158
- // Create mappings
159
- const mappings = createTaskToUserStoryMapping(tasks, userStories);
160
- return {
161
- specId: specId || 'unknown',
162
- specPath: actualSpecPath,
163
- incrementId: path.basename(incrementPath),
164
- incrementPath,
165
- userStories,
166
- tasks,
167
- mappings,
168
- };
169
- }
170
- catch (error) {
171
- console.error(`Failed to get spec-task mapping: ${error.message}`);
172
- return null;
173
- }
174
- }
175
- /**
176
- * Get completed user stories from mappings
177
- */
178
- export function getCompletedUserStories(mapping) {
179
- const completedUSIds = new Set();
180
- // Find user stories where ALL tasks are complete
181
- for (const us of mapping.userStories) {
182
- const relatedTasks = mapping.tasks.filter(t => t.userStories.includes(us.id));
183
- if (relatedTasks.length > 0 && relatedTasks.every(t => t.completed)) {
184
- completedUSIds.add(us.id);
185
- }
186
- }
187
- return mapping.userStories.filter(us => completedUSIds.has(us.id));
188
- }
189
- /**
190
- * Get recently completed tasks (completed since last sync)
191
- */
192
- export function getRecentlyCompletedTasks(mapping, lastSyncDate) {
193
- // If no last sync date, return all completed tasks
194
- if (!lastSyncDate) {
195
- return mapping.tasks.filter(t => t.completed);
196
- }
197
- // For now, return all completed tasks
198
- // In the future, we could track completion timestamps in metadata
199
- return mapping.tasks.filter(t => t.completed);
200
- }
201
- /**
202
- * Find spec path for an increment
203
- */
204
- export async function findSpecForIncrement(incrementPath) {
205
- const mapping = await getSpecTaskMapping(incrementPath);
206
- return mapping?.specPath || null;
207
- }
208
- //# sourceMappingURL=spec-task-mapper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spec-task-mapper.js","sourceRoot":"","sources":["../../src/core/spec-task-mapper.ts"],"names":[],"mappings":"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"}
@@ -1,70 +0,0 @@
1
- /**
2
- * Spec Metadata Manager
3
- *
4
- * Manages spec.md files in .specweave/docs/internal/specs/
5
- *
6
- * CRITICAL ARCHITECTURE:
7
- * - Specs are the SOURCE OF TRUTH for features
8
- * - Specs are PERMANENT (never deleted)
9
- * - External tools (GitHub/Jira/ADO) sync to specs, NOT increments
10
- *
11
- * @module spec-metadata-manager
12
- */
13
- import { SpecMetadata, SpecContent, SpecValidationResult } from '../types/spec-metadata.js';
14
- export declare class SpecMetadataManager {
15
- private specsDir;
16
- constructor(projectRoot?: string);
17
- /**
18
- * Get all spec files
19
- */
20
- getAllSpecs(): Promise<string[]>;
21
- /**
22
- * Load spec metadata and content
23
- */
24
- loadSpec(specId: string): Promise<SpecContent | null>;
25
- /**
26
- * Save spec metadata (update frontmatter)
27
- */
28
- saveMetadata(specId: string, metadata: Partial<SpecMetadata>): Promise<void>;
29
- /**
30
- * Link spec to external tool
31
- */
32
- linkToExternal(specId: string, provider: 'github' | 'jira' | 'ado', externalData: {
33
- id: string | number;
34
- url: string;
35
- [key: string]: any;
36
- }): Promise<void>;
37
- /**
38
- * Unlink spec from external tool
39
- */
40
- unlinkFromExternal(specId: string, provider: 'github' | 'jira' | 'ado'): Promise<void>;
41
- /**
42
- * Update sync status
43
- */
44
- updateSyncStatus(specId: string, provider: 'github' | 'jira' | 'ado', status: 'synced' | 'out-of-sync' | 'error', error?: string): Promise<void>;
45
- /**
46
- * Validate spec structure
47
- */
48
- validateSpec(specId: string): Promise<SpecValidationResult>;
49
- /**
50
- * Get spec file path
51
- */
52
- private getSpecPath;
53
- /**
54
- * Parse user stories from markdown content
55
- */
56
- private parseUserStories;
57
- /**
58
- * Parse increment references from markdown content
59
- */
60
- private parseIncrements;
61
- /**
62
- * Calculate progress from user stories
63
- */
64
- private calculateProgress;
65
- /**
66
- * Create a new spec (template)
67
- */
68
- createSpec(specId: string, title: string, priority?: 'P0' | 'P1' | 'P2' | 'P3'): Promise<string>;
69
- }
70
- //# sourceMappingURL=spec-metadata-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spec-metadata-manager.d.ts","sourceRoot":"","sources":["../../../src/core/specs/spec-metadata-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,EACL,YAAY,EACZ,WAAW,EAIX,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AAEnC,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAS;gBAEb,WAAW,GAAE,MAAsB;IAgB/C;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAStC;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAoC3D;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BlF;;OAEG;IACG,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,EACnC,YAAY,EAAE;QACZ,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;QACpB,GAAG,EAAE,MAAM,CAAC;QACZ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,GACA,OAAO,CAAC,IAAI,CAAC;IAqChB;;OAEG;IACG,kBAAkB,CACtB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,GAClC,OAAO,CAAC,IAAI,CAAC;IAYhB;;OAEG;IACG,gBAAgB,CACpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,EACnC,MAAM,EAAE,QAAQ,GAAG,aAAa,GAAG,OAAO,EAC1C,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;IAgBhB;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA4CjE;;OAEG;IACH,OAAO,CAAC,WAAW;IAMnB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAgDxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAoCvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAW,GAAG,OAAO,CAAC,MAAM,CAAC;CA2D7G"}
@@ -1,371 +0,0 @@
1
- /**
2
- * Spec Metadata Manager
3
- *
4
- * Manages spec.md files in .specweave/docs/internal/specs/
5
- *
6
- * CRITICAL ARCHITECTURE:
7
- * - Specs are the SOURCE OF TRUTH for features
8
- * - Specs are PERMANENT (never deleted)
9
- * - External tools (GitHub/Jira/ADO) sync to specs, NOT increments
10
- *
11
- * @module spec-metadata-manager
12
- */
13
- import fs from 'fs-extra';
14
- import path from 'path';
15
- import matter from 'gray-matter';
16
- export class SpecMetadataManager {
17
- constructor(projectRoot = process.cwd()) {
18
- // Support both old and new multi-project structure
19
- const newPath = path.join(projectRoot, '.specweave/docs/internal/projects/default/specs');
20
- const oldPath = path.join(projectRoot, '.specweave/docs/internal/specs');
21
- if (fs.existsSync(newPath)) {
22
- this.specsDir = newPath;
23
- }
24
- else if (fs.existsSync(oldPath)) {
25
- this.specsDir = oldPath;
26
- }
27
- else {
28
- // Create default structure
29
- this.specsDir = newPath;
30
- fs.ensureDirSync(this.specsDir);
31
- }
32
- }
33
- /**
34
- * Get all spec files
35
- */
36
- async getAllSpecs() {
37
- if (!fs.existsSync(this.specsDir)) {
38
- return [];
39
- }
40
- const files = await fs.readdir(this.specsDir);
41
- return files.filter(f => f.startsWith('spec-') && f.endsWith('.md'));
42
- }
43
- /**
44
- * Load spec metadata and content
45
- */
46
- async loadSpec(specId) {
47
- const filePath = this.getSpecPath(specId);
48
- if (!fs.existsSync(filePath)) {
49
- return null;
50
- }
51
- try {
52
- const fileContent = await fs.readFile(filePath, 'utf-8');
53
- const parsed = matter(fileContent);
54
- const metadata = parsed.data;
55
- metadata.id = specId;
56
- // Parse user stories from markdown content
57
- const userStories = this.parseUserStories(parsed.content);
58
- // Parse increments from markdown content
59
- const increments = this.parseIncrements(parsed.content);
60
- return {
61
- metadata: {
62
- ...metadata,
63
- userStories,
64
- increments,
65
- progress: this.calculateProgress(userStories)
66
- },
67
- markdown: parsed.content,
68
- filePath
69
- };
70
- }
71
- catch (error) {
72
- console.error(`Error loading spec ${specId}:`, error);
73
- return null;
74
- }
75
- }
76
- /**
77
- * Save spec metadata (update frontmatter)
78
- */
79
- async saveMetadata(specId, metadata) {
80
- const filePath = this.getSpecPath(specId);
81
- if (!fs.existsSync(filePath)) {
82
- throw new Error(`Spec ${specId} not found`);
83
- }
84
- const fileContent = await fs.readFile(filePath, 'utf-8');
85
- const parsed = matter(fileContent);
86
- // Merge metadata
87
- const updatedMetadata = {
88
- ...parsed.data,
89
- ...metadata,
90
- updated: new Date().toISOString().split('T')[0]
91
- };
92
- // Don't save calculated fields
93
- delete updatedMetadata.userStories;
94
- delete updatedMetadata.increments;
95
- delete updatedMetadata.progress;
96
- // Reconstruct file with updated frontmatter
97
- const newContent = matter.stringify(parsed.content, updatedMetadata);
98
- await fs.writeFile(filePath, newContent, 'utf-8');
99
- }
100
- /**
101
- * Link spec to external tool
102
- */
103
- async linkToExternal(specId, provider, externalData) {
104
- const spec = await this.loadSpec(specId);
105
- if (!spec) {
106
- throw new Error(`Spec ${specId} not found`);
107
- }
108
- const externalLinks = spec.metadata.externalLinks || {};
109
- if (provider === 'github') {
110
- externalLinks.github = {
111
- projectId: externalData.id,
112
- projectUrl: externalData.url,
113
- syncedAt: new Date().toISOString(),
114
- owner: externalData.owner,
115
- repo: externalData.repo
116
- };
117
- }
118
- else if (provider === 'jira') {
119
- externalLinks.jira = {
120
- epicKey: externalData.id,
121
- epicUrl: externalData.url,
122
- syncedAt: new Date().toISOString(),
123
- projectKey: externalData.projectKey,
124
- domain: externalData.domain
125
- };
126
- }
127
- else if (provider === 'ado') {
128
- externalLinks.ado = {
129
- featureId: externalData.id,
130
- featureUrl: externalData.url,
131
- syncedAt: new Date().toISOString(),
132
- organization: externalData.organization,
133
- project: externalData.project
134
- };
135
- }
136
- await this.saveMetadata(specId, { externalLinks });
137
- }
138
- /**
139
- * Unlink spec from external tool
140
- */
141
- async unlinkFromExternal(specId, provider) {
142
- const spec = await this.loadSpec(specId);
143
- if (!spec) {
144
- throw new Error(`Spec ${specId} not found`);
145
- }
146
- const externalLinks = spec.metadata.externalLinks || {};
147
- delete externalLinks[provider];
148
- await this.saveMetadata(specId, { externalLinks });
149
- }
150
- /**
151
- * Update sync status
152
- */
153
- async updateSyncStatus(specId, provider, status, error) {
154
- const spec = await this.loadSpec(specId);
155
- if (!spec) {
156
- throw new Error(`Spec ${specId} not found`);
157
- }
158
- const externalLinks = spec.metadata.externalLinks || {};
159
- if (externalLinks[provider]) {
160
- externalLinks[provider].syncedAt = new Date().toISOString();
161
- // Note: syncStatus and lastError are not in the interface yet, would need to add
162
- }
163
- await this.saveMetadata(specId, { externalLinks });
164
- }
165
- /**
166
- * Validate spec structure
167
- */
168
- async validateSpec(specId) {
169
- const spec = await this.loadSpec(specId);
170
- if (!spec) {
171
- return {
172
- valid: false,
173
- errors: [`Spec ${specId} not found`],
174
- warnings: [],
175
- specId
176
- };
177
- }
178
- const errors = [];
179
- const warnings = [];
180
- // Required metadata fields
181
- if (!spec.metadata.title) {
182
- errors.push('Missing required field: title');
183
- }
184
- if (!spec.metadata.status) {
185
- errors.push('Missing required field: status');
186
- }
187
- if (!spec.metadata.priority) {
188
- errors.push('Missing required field: priority');
189
- }
190
- // Validate user stories
191
- if (!spec.metadata.userStories || spec.metadata.userStories.length === 0) {
192
- warnings.push('No user stories found in spec');
193
- }
194
- // Validate frontmatter format
195
- if (!spec.markdown.includes('## Overview') && !spec.markdown.includes('## User Stories')) {
196
- warnings.push('Missing standard sections (Overview, User Stories)');
197
- }
198
- return {
199
- valid: errors.length === 0,
200
- errors,
201
- warnings,
202
- specId
203
- };
204
- }
205
- /**
206
- * Get spec file path
207
- */
208
- getSpecPath(specId) {
209
- // Handle both formats: "spec-001" and "001"
210
- const normalizedId = specId.startsWith('spec-') ? specId : `spec-${specId}`;
211
- return path.join(this.specsDir, `${normalizedId}.md`);
212
- }
213
- /**
214
- * Parse user stories from markdown content
215
- */
216
- parseUserStories(markdown) {
217
- const stories = [];
218
- // Look for user story patterns
219
- // Example: **US-001**: As a developer, I want to...
220
- const usPattern = /\*\*US-(\d+)\*\*:\s*(.+?)(?=\n|$)/g;
221
- const matches = markdown.matchAll(usPattern);
222
- for (const match of matches) {
223
- const id = `US-${match[1]}`;
224
- const title = match[2].trim();
225
- // Extract acceptance criteria for this user story
226
- const acPattern = new RegExp(`\\*\\*US-${match[1]}\\*\\*:[\\s\\S]*?(?:- \\[([x ])\\] \\*\\*AC-${match[1]}-(\\d+)\\*\\*: (.+?)(?=\\n|$))`, 'g');
227
- const acMatches = markdown.matchAll(acPattern);
228
- const acceptanceCriteria = [];
229
- for (const acMatch of acMatches) {
230
- acceptanceCriteria.push({
231
- id: `AC-${match[1]}-${acMatch[2]}`,
232
- description: acMatch[3].trim(),
233
- status: acMatch[1] === 'x' ? 'done' : 'todo'
234
- });
235
- }
236
- // Determine status based on AC completion
237
- let status = 'todo';
238
- if (acceptanceCriteria.length > 0) {
239
- const completedAC = acceptanceCriteria.filter(ac => ac.status === 'done').length;
240
- if (completedAC === acceptanceCriteria.length) {
241
- status = 'done';
242
- }
243
- else if (completedAC > 0) {
244
- status = 'in-progress';
245
- }
246
- }
247
- stories.push({
248
- id,
249
- title,
250
- status,
251
- priority: 'P1', // Default, could parse from markdown
252
- acceptanceCriteria
253
- });
254
- }
255
- return stories;
256
- }
257
- /**
258
- * Parse increment references from markdown content
259
- */
260
- parseIncrements(markdown) {
261
- const increments = [];
262
- // Look for increment table or list
263
- // Example: | **0001-core-framework** | ✅ Complete | 2025-10-15 | ...
264
- const incPattern = /\|\s*\*\*(\d{4}-[\w-]+)\*\*\s*\|\s*([✅❌⏳])?\s*(\w+)\s*\|\s*([0-9-]+)?\s*\|/g;
265
- const matches = markdown.matchAll(incPattern);
266
- for (const match of matches) {
267
- const id = match[1];
268
- const statusIcon = match[2];
269
- const statusText = match[3].toLowerCase();
270
- const completedAt = match[4];
271
- let status;
272
- if (statusText.includes('complete') || statusIcon === '✅') {
273
- status = 'complete';
274
- }
275
- else if (statusText.includes('progress') || statusIcon === '⏳') {
276
- status = 'in-progress';
277
- }
278
- else if (statusText.includes('abandon') || statusIcon === '❌') {
279
- status = 'abandoned';
280
- }
281
- else {
282
- status = 'planned';
283
- }
284
- increments.push({
285
- id,
286
- status,
287
- completedAt: completedAt || undefined,
288
- userStories: [] // Would need more parsing to determine which US each increment implemented
289
- });
290
- }
291
- return increments;
292
- }
293
- /**
294
- * Calculate progress from user stories
295
- */
296
- calculateProgress(userStories) {
297
- if (!userStories || userStories.length === 0) {
298
- return {
299
- totalUserStories: 0,
300
- completedUserStories: 0,
301
- percentComplete: 0
302
- };
303
- }
304
- const completedUserStories = userStories.filter(us => us.status === 'done').length;
305
- return {
306
- totalUserStories: userStories.length,
307
- completedUserStories,
308
- percentComplete: Math.round((completedUserStories / userStories.length) * 100)
309
- };
310
- }
311
- /**
312
- * Create a new spec (template)
313
- */
314
- async createSpec(specId, title, priority = 'P1') {
315
- const filePath = this.getSpecPath(specId);
316
- if (fs.existsSync(filePath)) {
317
- throw new Error(`Spec ${specId} already exists`);
318
- }
319
- const template = `---
320
- id: ${specId}
321
- title: "${title}"
322
- status: draft
323
- priority: ${priority}
324
- created: ${new Date().toISOString().split('T')[0]}
325
- ---
326
-
327
- # ${specId.toUpperCase()}: ${title}
328
-
329
- **Feature Area**: [Feature Category]
330
- **Status**: Draft
331
- **Priority**: ${priority}
332
-
333
- ---
334
-
335
- ## Overview
336
-
337
- [High-level description of the feature area]
338
-
339
- ---
340
-
341
- ## Increments (Implementation History)
342
-
343
- | Increment | Status | Completion | Notes |
344
- |-----------|--------|------------|-------|
345
- | **0001-example** | ⏳ Planned | - | Description |
346
-
347
- **Overall Progress**: 0/1 increments complete (0%)
348
-
349
- ---
350
-
351
- ## User Stories & Acceptance Criteria
352
-
353
- ### Epic 1: [Epic Name]
354
-
355
- **US-001**: As a [user type], I want [goal] so that [benefit]
356
- - [ ] **AC-001-01**: [Acceptance criteria description]
357
- - [ ] **AC-001-02**: [Acceptance criteria description]
358
-
359
- ---
360
-
361
- ## External References
362
-
363
- - GitHub Project: TBD
364
- - Jira Epic: TBD
365
- - ADO Feature: TBD
366
- `;
367
- await fs.writeFile(filePath, template, 'utf-8');
368
- return filePath;
369
- }
370
- }
371
- //# sourceMappingURL=spec-metadata-manager.js.map