specweave 0.18.1 → 0.20.1

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 (389) hide show
  1. package/CLAUDE.md +229 -1817
  2. package/README.md +68 -0
  3. package/bin/specweave.js +62 -6
  4. package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts.map +1 -1
  5. package/dist/plugins/specweave/lib/hooks/sync-living-docs.js +3 -0
  6. package/dist/plugins/specweave/lib/hooks/sync-living-docs.js.map +1 -1
  7. package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts +21 -0
  8. package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts.map +1 -0
  9. package/dist/plugins/specweave/lib/hooks/update-ac-status.js +162 -0
  10. package/dist/plugins/specweave/lib/hooks/update-ac-status.js.map +1 -0
  11. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.d.ts.map +1 -1
  12. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.js +65 -6
  13. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.js.map +1 -1
  14. package/dist/plugins/specweave-github/lib/completion-calculator.d.ts +112 -0
  15. package/dist/plugins/specweave-github/lib/completion-calculator.d.ts.map +1 -0
  16. package/dist/plugins/specweave-github/lib/completion-calculator.js +301 -0
  17. package/dist/plugins/specweave-github/lib/completion-calculator.js.map +1 -0
  18. package/dist/plugins/specweave-github/lib/duplicate-detector.d.ts +3 -3
  19. package/dist/plugins/specweave-github/lib/duplicate-detector.js +3 -3
  20. package/dist/plugins/specweave-github/lib/epic-content-builder.d.ts +7 -0
  21. package/dist/plugins/specweave-github/lib/epic-content-builder.d.ts.map +1 -1
  22. package/dist/plugins/specweave-github/lib/epic-content-builder.js +42 -0
  23. package/dist/plugins/specweave-github/lib/epic-content-builder.js.map +1 -1
  24. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts +14 -0
  25. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts.map +1 -1
  26. package/dist/plugins/specweave-github/lib/github-client-v2.js +51 -0
  27. package/dist/plugins/specweave-github/lib/github-client-v2.js.map +1 -1
  28. package/dist/plugins/specweave-github/lib/github-epic-sync.js +1 -1
  29. package/dist/plugins/specweave-github/lib/github-epic-sync.js.map +1 -1
  30. package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts +87 -0
  31. package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts.map +1 -0
  32. package/dist/plugins/specweave-github/lib/github-feature-sync.js +412 -0
  33. package/dist/plugins/specweave-github/lib/github-feature-sync.js.map +1 -0
  34. package/dist/plugins/specweave-github/lib/github-spec-content-sync.d.ts.map +1 -1
  35. package/dist/plugins/specweave-github/lib/github-spec-content-sync.js +64 -13
  36. package/dist/plugins/specweave-github/lib/github-spec-content-sync.js.map +1 -1
  37. package/dist/plugins/specweave-github/lib/progress-comment-builder.d.ts +78 -0
  38. package/dist/plugins/specweave-github/lib/progress-comment-builder.d.ts.map +1 -0
  39. package/dist/plugins/specweave-github/lib/progress-comment-builder.js +237 -0
  40. package/dist/plugins/specweave-github/lib/progress-comment-builder.js.map +1 -0
  41. package/dist/plugins/specweave-github/lib/user-story-content-builder.d.ts +97 -0
  42. package/dist/plugins/specweave-github/lib/user-story-content-builder.d.ts.map +1 -0
  43. package/dist/plugins/specweave-github/lib/user-story-content-builder.js +301 -0
  44. package/dist/plugins/specweave-github/lib/user-story-content-builder.js.map +1 -0
  45. package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts +83 -0
  46. package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts.map +1 -0
  47. package/dist/plugins/specweave-github/lib/user-story-issue-builder.js +386 -0
  48. package/dist/plugins/specweave-github/lib/user-story-issue-builder.js.map +1 -0
  49. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.d.ts +8 -6
  50. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.d.ts.map +1 -1
  51. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.js +78 -117
  52. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.js.map +1 -1
  53. package/dist/src/cli/commands/import-docs.js +4 -4
  54. package/dist/src/cli/commands/import-docs.js.map +1 -1
  55. package/dist/src/cli/commands/init-multiproject.d.ts.map +1 -1
  56. package/dist/src/cli/commands/init-multiproject.js +17 -18
  57. package/dist/src/cli/commands/init-multiproject.js.map +1 -1
  58. package/dist/src/cli/commands/migrate-to-multiproject.d.ts.map +1 -1
  59. package/dist/src/cli/commands/migrate-to-multiproject.js +8 -4
  60. package/dist/src/cli/commands/migrate-to-multiproject.js.map +1 -1
  61. package/dist/src/cli/commands/switch-project.d.ts.map +1 -1
  62. package/dist/src/cli/commands/switch-project.js +9 -26
  63. package/dist/src/cli/commands/switch-project.js.map +1 -1
  64. package/dist/src/cli/commands/sync-spec-content.js +3 -0
  65. package/dist/src/cli/commands/sync-spec-content.js.map +1 -1
  66. package/dist/src/core/deduplication/command-deduplicator.d.ts +166 -0
  67. package/dist/src/core/deduplication/command-deduplicator.d.ts.map +1 -0
  68. package/dist/src/core/deduplication/command-deduplicator.js +254 -0
  69. package/dist/src/core/deduplication/command-deduplicator.js.map +1 -0
  70. package/dist/src/core/increment/active-increment-manager.d.ts +42 -15
  71. package/dist/src/core/increment/active-increment-manager.d.ts.map +1 -1
  72. package/dist/src/core/increment/active-increment-manager.js +113 -46
  73. package/dist/src/core/increment/active-increment-manager.js.map +1 -1
  74. package/dist/src/core/increment/conflict-resolver.d.ts +40 -0
  75. package/dist/src/core/increment/conflict-resolver.d.ts.map +1 -0
  76. package/dist/src/core/increment/conflict-resolver.js +219 -0
  77. package/dist/src/core/increment/conflict-resolver.js.map +1 -0
  78. package/dist/src/core/increment/discipline-checker.d.ts.map +1 -1
  79. package/dist/src/core/increment/discipline-checker.js +7 -1
  80. package/dist/src/core/increment/discipline-checker.js.map +1 -1
  81. package/dist/src/core/increment/duplicate-detector.d.ts +52 -0
  82. package/dist/src/core/increment/duplicate-detector.d.ts.map +1 -0
  83. package/dist/src/core/increment/duplicate-detector.js +276 -0
  84. package/dist/src/core/increment/duplicate-detector.js.map +1 -0
  85. package/dist/src/core/increment/increment-archiver.d.ts +90 -0
  86. package/dist/src/core/increment/increment-archiver.d.ts.map +1 -0
  87. package/dist/src/core/increment/increment-archiver.js +368 -0
  88. package/dist/src/core/increment/increment-archiver.js.map +1 -0
  89. package/dist/src/core/increment/increment-reopener.d.ts +165 -0
  90. package/dist/src/core/increment/increment-reopener.d.ts.map +1 -0
  91. package/dist/src/core/increment/increment-reopener.js +390 -0
  92. package/dist/src/core/increment/increment-reopener.js.map +1 -0
  93. package/dist/src/core/increment/metadata-manager.d.ts +26 -1
  94. package/dist/src/core/increment/metadata-manager.d.ts.map +1 -1
  95. package/dist/src/core/increment/metadata-manager.js +143 -5
  96. package/dist/src/core/increment/metadata-manager.js.map +1 -1
  97. package/dist/src/core/increment/recent-work-scanner.d.ts +121 -0
  98. package/dist/src/core/increment/recent-work-scanner.d.ts.map +1 -0
  99. package/dist/src/core/increment/recent-work-scanner.js +303 -0
  100. package/dist/src/core/increment/recent-work-scanner.js.map +1 -0
  101. package/dist/src/core/increment/types.d.ts +1 -0
  102. package/dist/src/core/increment/types.d.ts.map +1 -1
  103. package/dist/src/core/increment-utils.d.ts +112 -0
  104. package/dist/src/core/increment-utils.d.ts.map +1 -0
  105. package/dist/src/core/increment-utils.js +210 -0
  106. package/dist/src/core/increment-utils.js.map +1 -0
  107. package/dist/src/core/living-docs/ac-project-specific-generator.d.ts +65 -0
  108. package/dist/src/core/living-docs/ac-project-specific-generator.d.ts.map +1 -0
  109. package/dist/src/core/living-docs/ac-project-specific-generator.js +175 -0
  110. package/dist/src/core/living-docs/ac-project-specific-generator.js.map +1 -0
  111. package/dist/src/core/living-docs/feature-archiver.d.ts +130 -0
  112. package/dist/src/core/living-docs/feature-archiver.d.ts.map +1 -0
  113. package/dist/src/core/living-docs/feature-archiver.js +549 -0
  114. package/dist/src/core/living-docs/feature-archiver.js.map +1 -0
  115. package/dist/src/core/living-docs/feature-id-manager.d.ts +81 -0
  116. package/dist/src/core/living-docs/feature-id-manager.d.ts.map +1 -0
  117. package/dist/src/core/living-docs/feature-id-manager.js +339 -0
  118. package/dist/src/core/living-docs/feature-id-manager.js.map +1 -0
  119. package/dist/src/core/living-docs/hierarchy-mapper.d.ts +144 -83
  120. package/dist/src/core/living-docs/hierarchy-mapper.d.ts.map +1 -1
  121. package/dist/src/core/living-docs/hierarchy-mapper.js +488 -270
  122. package/dist/src/core/living-docs/hierarchy-mapper.js.map +1 -1
  123. package/dist/src/core/living-docs/index.d.ts +6 -0
  124. package/dist/src/core/living-docs/index.d.ts.map +1 -1
  125. package/dist/src/core/living-docs/index.js +6 -0
  126. package/dist/src/core/living-docs/index.js.map +1 -1
  127. package/dist/src/core/living-docs/project-detector.d.ts +6 -0
  128. package/dist/src/core/living-docs/project-detector.d.ts.map +1 -1
  129. package/dist/src/core/living-docs/project-detector.js +35 -1
  130. package/dist/src/core/living-docs/project-detector.js.map +1 -1
  131. package/dist/src/core/living-docs/spec-distributor.d.ts +100 -26
  132. package/dist/src/core/living-docs/spec-distributor.d.ts.map +1 -1
  133. package/dist/src/core/living-docs/spec-distributor.js +1275 -258
  134. package/dist/src/core/living-docs/spec-distributor.js.map +1 -1
  135. package/dist/src/core/living-docs/task-project-specific-generator.d.ts +109 -0
  136. package/dist/src/core/living-docs/task-project-specific-generator.d.ts.map +1 -0
  137. package/dist/src/core/living-docs/task-project-specific-generator.js +221 -0
  138. package/dist/src/core/living-docs/task-project-specific-generator.js.map +1 -0
  139. package/dist/src/core/living-docs/types.d.ts +143 -0
  140. package/dist/src/core/living-docs/types.d.ts.map +1 -1
  141. package/dist/src/core/project-manager.d.ts +2 -17
  142. package/dist/src/core/project-manager.d.ts.map +1 -1
  143. package/dist/src/core/project-manager.js +68 -48
  144. package/dist/src/core/project-manager.js.map +1 -1
  145. package/dist/src/core/spec-content-sync.d.ts +1 -1
  146. package/dist/src/core/spec-content-sync.d.ts.map +1 -1
  147. package/dist/src/core/sync/enhanced-content-builder.d.ts.map +1 -1
  148. package/dist/src/core/sync/enhanced-content-builder.js +2 -1
  149. package/dist/src/core/sync/enhanced-content-builder.js.map +1 -1
  150. package/dist/src/core/sync/performance-optimizer.d.ts +153 -0
  151. package/dist/src/core/sync/performance-optimizer.d.ts.map +1 -0
  152. package/dist/src/core/sync/performance-optimizer.js +220 -0
  153. package/dist/src/core/sync/performance-optimizer.js.map +1 -0
  154. package/dist/src/core/sync/retry-handler.d.ts +98 -0
  155. package/dist/src/core/sync/retry-handler.d.ts.map +1 -0
  156. package/dist/src/core/sync/retry-handler.js +196 -0
  157. package/dist/src/core/sync/retry-handler.js.map +1 -0
  158. package/dist/src/core/types/config.d.ts +94 -0
  159. package/dist/src/core/types/config.d.ts.map +1 -1
  160. package/dist/src/core/types/config.js +16 -0
  161. package/dist/src/core/types/config.js.map +1 -1
  162. package/dist/src/core/types/increment-metadata.d.ts +6 -0
  163. package/dist/src/core/types/increment-metadata.d.ts.map +1 -1
  164. package/dist/src/core/types/increment-metadata.js +10 -1
  165. package/dist/src/core/types/increment-metadata.js.map +1 -1
  166. package/dist/src/integrations/jira/jira-incremental-mapper.d.ts.map +1 -1
  167. package/dist/src/integrations/jira/jira-incremental-mapper.js +4 -8
  168. package/dist/src/integrations/jira/jira-incremental-mapper.js.map +1 -1
  169. package/dist/src/integrations/jira/jira-mapper.d.ts.map +1 -1
  170. package/dist/src/integrations/jira/jira-mapper.js +4 -8
  171. package/dist/src/integrations/jira/jira-mapper.js.map +1 -1
  172. package/package.json +1 -1
  173. package/plugins/specweave/COMMANDS.md +13 -4
  174. package/plugins/specweave/commands/specweave-abandon.md +22 -20
  175. package/plugins/specweave/commands/specweave-archive-features.md +121 -0
  176. package/plugins/specweave/commands/specweave-archive-increments.md +82 -0
  177. package/plugins/specweave/commands/specweave-archive.md +363 -0
  178. package/plugins/specweave/commands/specweave-backlog.md +211 -0
  179. package/plugins/specweave/commands/specweave-fix-duplicates.md +517 -0
  180. package/plugins/specweave/commands/specweave-increment.md +4 -3
  181. package/plugins/specweave/commands/specweave-progress.md +176 -27
  182. package/plugins/specweave/commands/specweave-reopen.md +391 -0
  183. package/plugins/specweave/commands/specweave-restore-feature.md +90 -0
  184. package/plugins/specweave/commands/specweave-restore.md +309 -0
  185. package/plugins/specweave/commands/specweave-resume.md +51 -23
  186. package/plugins/specweave/commands/specweave-status.md +41 -7
  187. package/plugins/specweave/commands/specweave-sync-specs.md +425 -0
  188. package/plugins/specweave/hooks/hooks.json +4 -0
  189. package/plugins/specweave/hooks/lib/sync-spec-content.sh +2 -2
  190. package/plugins/specweave/hooks/post-task-completion.sh +39 -0
  191. package/plugins/specweave/hooks/pre-command-deduplication.sh +83 -0
  192. package/plugins/specweave/hooks/user-prompt-submit.sh +1 -1
  193. package/plugins/specweave/lib/hooks/sync-living-docs.js +2 -0
  194. package/plugins/specweave/lib/hooks/sync-living-docs.ts +4 -0
  195. package/plugins/specweave/lib/hooks/update-ac-status.js +102 -0
  196. package/plugins/specweave/lib/hooks/update-ac-status.ts +192 -0
  197. package/plugins/specweave/skills/archive-increments/SKILL.md +198 -0
  198. package/plugins/specweave/skills/increment-planner/scripts/feature-utils.js +14 -0
  199. package/plugins/specweave/skills/smart-reopen-detector/SKILL.md +244 -0
  200. package/plugins/specweave-ado/lib/ado-spec-content-sync.js +49 -5
  201. package/plugins/specweave-ado/lib/ado-spec-content-sync.ts +72 -6
  202. package/plugins/specweave-confluent/.claude-plugin/plugin.json +23 -0
  203. package/plugins/specweave-confluent/README.md +375 -0
  204. package/plugins/specweave-confluent/agents/confluent-architect/AGENT.md +306 -0
  205. package/plugins/specweave-confluent/skills/confluent-kafka-connect/SKILL.md +453 -0
  206. package/plugins/specweave-confluent/skills/confluent-ksqldb/SKILL.md +470 -0
  207. package/plugins/specweave-confluent/skills/confluent-schema-registry/SKILL.md +316 -0
  208. package/plugins/specweave-github/agents/github-task-splitter/AGENT.md +2 -2
  209. package/plugins/specweave-github/agents/user-story-updater/AGENT.md +148 -0
  210. package/plugins/specweave-github/commands/specweave-github-cleanup-duplicates.md +1 -1
  211. package/plugins/specweave-github/commands/specweave-github-update-user-story.md +156 -0
  212. package/plugins/specweave-github/hooks/post-task-completion.sh +10 -9
  213. package/plugins/specweave-github/lib/completion-calculator.js +262 -0
  214. package/plugins/specweave-github/lib/completion-calculator.ts +434 -0
  215. package/plugins/specweave-github/lib/duplicate-detector.js +3 -3
  216. package/plugins/specweave-github/lib/duplicate-detector.ts +4 -4
  217. package/plugins/specweave-github/lib/epic-content-builder.js +38 -0
  218. package/plugins/specweave-github/lib/epic-content-builder.ts +59 -0
  219. package/plugins/specweave-github/lib/github-client-v2.js +49 -0
  220. package/plugins/specweave-github/lib/github-client-v2.ts +59 -0
  221. package/plugins/specweave-github/lib/github-epic-sync.ts +1 -1
  222. package/plugins/specweave-github/lib/github-feature-sync.js +381 -0
  223. package/plugins/specweave-github/lib/github-feature-sync.ts +568 -0
  224. package/plugins/specweave-github/lib/github-spec-content-sync.js +40 -10
  225. package/plugins/specweave-github/lib/github-spec-content-sync.ts +82 -14
  226. package/plugins/specweave-github/lib/progress-comment-builder.js +229 -0
  227. package/plugins/specweave-github/lib/progress-comment-builder.ts +324 -0
  228. package/plugins/specweave-github/lib/user-story-content-builder.js +299 -0
  229. package/plugins/specweave-github/lib/user-story-content-builder.ts +413 -0
  230. package/plugins/specweave-github/lib/user-story-issue-builder.js +344 -0
  231. package/plugins/specweave-github/lib/user-story-issue-builder.ts +543 -0
  232. package/plugins/specweave-github/skills/github-issue-standard/SKILL.md +189 -0
  233. package/plugins/{specweave-ado/lib/enhanced-ado-sync.js → specweave-jira/lib/enhanced-jira-sync.js} +25 -61
  234. package/plugins/specweave-jira/lib/{enhanced-jira-sync.ts.disabled → enhanced-jira-sync.ts} +26 -52
  235. package/plugins/specweave-kafka/.claude-plugin/plugin.json +26 -0
  236. package/plugins/specweave-kafka/IMPLEMENTATION-COMPLETE.md +483 -0
  237. package/plugins/specweave-kafka/README.md +242 -0
  238. package/plugins/specweave-kafka/agents/kafka-architect/AGENT.md +235 -0
  239. package/plugins/specweave-kafka/agents/kafka-devops/AGENT.md +209 -0
  240. package/plugins/specweave-kafka/agents/kafka-observability/AGENT.md +266 -0
  241. package/plugins/specweave-kafka/commands/deploy.md +99 -0
  242. package/plugins/specweave-kafka/commands/dev-env.md +176 -0
  243. package/plugins/specweave-kafka/commands/mcp-configure.md +101 -0
  244. package/plugins/specweave-kafka/commands/monitor-setup.md +96 -0
  245. package/plugins/specweave-kafka/docker/kafka-local/docker-compose.yml +187 -0
  246. package/plugins/specweave-kafka/docker/redpanda/docker-compose.yml +199 -0
  247. package/plugins/specweave-kafka/docker/templates/consumer-nodejs.js +225 -0
  248. package/plugins/specweave-kafka/docker/templates/consumer-python.py +220 -0
  249. package/plugins/specweave-kafka/docker/templates/producer-nodejs.js +168 -0
  250. package/plugins/specweave-kafka/docker/templates/producer-python.py +167 -0
  251. package/plugins/specweave-kafka/lib/adapters/apache-kafka-adapter.js +438 -0
  252. package/plugins/specweave-kafka/lib/adapters/apache-kafka-adapter.ts +541 -0
  253. package/plugins/specweave-kafka/lib/adapters/platform-adapter.js +47 -0
  254. package/plugins/specweave-kafka/lib/adapters/platform-adapter.ts +343 -0
  255. package/plugins/specweave-kafka/lib/cli/kcat-wrapper.js +258 -0
  256. package/plugins/specweave-kafka/lib/cli/kcat-wrapper.ts +298 -0
  257. package/plugins/specweave-kafka/lib/cli/types.js +10 -0
  258. package/plugins/specweave-kafka/lib/cli/types.ts +92 -0
  259. package/plugins/specweave-kafka/lib/connectors/connector-catalog.js +305 -0
  260. package/plugins/specweave-kafka/lib/connectors/connector-catalog.ts +528 -0
  261. package/plugins/specweave-kafka/lib/documentation/diagram-generator.js +114 -0
  262. package/plugins/specweave-kafka/lib/documentation/diagram-generator.ts +195 -0
  263. package/plugins/specweave-kafka/lib/documentation/exporter.js +210 -0
  264. package/plugins/specweave-kafka/lib/documentation/exporter.ts +338 -0
  265. package/plugins/specweave-kafka/lib/documentation/schema-catalog-generator.js +60 -0
  266. package/plugins/specweave-kafka/lib/documentation/schema-catalog-generator.ts +130 -0
  267. package/plugins/specweave-kafka/lib/documentation/topology-generator.js +143 -0
  268. package/plugins/specweave-kafka/lib/documentation/topology-generator.ts +290 -0
  269. package/plugins/specweave-kafka/lib/mcp/detector.js +298 -0
  270. package/plugins/specweave-kafka/lib/mcp/detector.ts +352 -0
  271. package/plugins/specweave-kafka/lib/mcp/types.js +21 -0
  272. package/plugins/specweave-kafka/lib/mcp/types.ts +77 -0
  273. package/plugins/specweave-kafka/lib/multi-cluster/cluster-config-manager.js +193 -0
  274. package/plugins/specweave-kafka/lib/multi-cluster/cluster-config-manager.ts +362 -0
  275. package/plugins/specweave-kafka/lib/multi-cluster/cluster-switcher.js +188 -0
  276. package/plugins/specweave-kafka/lib/multi-cluster/cluster-switcher.ts +359 -0
  277. package/plugins/specweave-kafka/lib/multi-cluster/health-aggregator.js +195 -0
  278. package/plugins/specweave-kafka/lib/multi-cluster/health-aggregator.ts +380 -0
  279. package/plugins/specweave-kafka/lib/observability/opentelemetry-kafka.js +209 -0
  280. package/plugins/specweave-kafka/lib/observability/opentelemetry-kafka.ts +358 -0
  281. package/plugins/specweave-kafka/lib/patterns/advanced-ksqldb-patterns.js +354 -0
  282. package/plugins/specweave-kafka/lib/patterns/advanced-ksqldb-patterns.ts +563 -0
  283. package/plugins/specweave-kafka/lib/patterns/circuit-breaker-resilience.js +259 -0
  284. package/plugins/specweave-kafka/lib/patterns/circuit-breaker-resilience.ts +516 -0
  285. package/plugins/specweave-kafka/lib/patterns/dead-letter-queue.js +233 -0
  286. package/plugins/specweave-kafka/lib/patterns/dead-letter-queue.ts +423 -0
  287. package/plugins/specweave-kafka/lib/patterns/exactly-once-semantics.js +266 -0
  288. package/plugins/specweave-kafka/lib/patterns/exactly-once-semantics.ts +445 -0
  289. package/plugins/specweave-kafka/lib/patterns/flink-kafka-integration.js +312 -0
  290. package/plugins/specweave-kafka/lib/patterns/flink-kafka-integration.ts +561 -0
  291. package/plugins/specweave-kafka/lib/patterns/multi-dc-replication.js +289 -0
  292. package/plugins/specweave-kafka/lib/patterns/multi-dc-replication.ts +607 -0
  293. package/plugins/specweave-kafka/lib/patterns/rate-limiting-backpressure.js +264 -0
  294. package/plugins/specweave-kafka/lib/patterns/rate-limiting-backpressure.ts +498 -0
  295. package/plugins/specweave-kafka/lib/patterns/stream-processing-optimization.js +263 -0
  296. package/plugins/specweave-kafka/lib/patterns/stream-processing-optimization.ts +549 -0
  297. package/plugins/specweave-kafka/lib/patterns/tiered-storage-compaction.js +205 -0
  298. package/plugins/specweave-kafka/lib/patterns/tiered-storage-compaction.ts +399 -0
  299. package/plugins/specweave-kafka/lib/performance/performance-optimizer.js +249 -0
  300. package/plugins/specweave-kafka/lib/performance/performance-optimizer.ts +427 -0
  301. package/plugins/specweave-kafka/lib/security/kafka-security.js +252 -0
  302. package/plugins/specweave-kafka/lib/security/kafka-security.ts +494 -0
  303. package/plugins/specweave-kafka/lib/utils/capacity-planner.js +203 -0
  304. package/plugins/specweave-kafka/lib/utils/capacity-planner.ts +469 -0
  305. package/plugins/specweave-kafka/lib/utils/config-validator.js +419 -0
  306. package/plugins/specweave-kafka/lib/utils/config-validator.ts +564 -0
  307. package/plugins/specweave-kafka/lib/utils/partitioning.js +329 -0
  308. package/plugins/specweave-kafka/lib/utils/partitioning.ts +473 -0
  309. package/plugins/specweave-kafka/lib/utils/sizing.js +221 -0
  310. package/plugins/specweave-kafka/lib/utils/sizing.ts +374 -0
  311. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-broker-metrics.json +628 -0
  312. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-cluster-overview.json +564 -0
  313. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-consumer-lag.json +509 -0
  314. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-jvm-metrics.json +674 -0
  315. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-topic-metrics.json +578 -0
  316. package/plugins/specweave-kafka/monitoring/grafana/provisioning/dashboards/kafka.yml +17 -0
  317. package/plugins/specweave-kafka/monitoring/grafana/provisioning/datasources/prometheus.yml +17 -0
  318. package/plugins/specweave-kafka/monitoring/prometheus/kafka-alerts.yml +415 -0
  319. package/plugins/specweave-kafka/monitoring/prometheus/kafka-jmx-exporter.yml +256 -0
  320. package/plugins/specweave-kafka/package.json +41 -0
  321. package/plugins/specweave-kafka/skills/kafka-architecture/SKILL.md +647 -0
  322. package/plugins/specweave-kafka/skills/kafka-cli-tools/SKILL.md +433 -0
  323. package/plugins/specweave-kafka/skills/kafka-iac-deployment/SKILL.md +449 -0
  324. package/plugins/specweave-kafka/skills/kafka-kubernetes/SKILL.md +667 -0
  325. package/plugins/specweave-kafka/skills/kafka-mcp-integration/SKILL.md +273 -0
  326. package/plugins/specweave-kafka/skills/kafka-observability/SKILL.md +576 -0
  327. package/plugins/specweave-kafka/templates/config/broker-production.properties +254 -0
  328. package/plugins/specweave-kafka/templates/config/consumer-low-latency.properties +112 -0
  329. package/plugins/specweave-kafka/templates/config/producer-high-throughput.properties +120 -0
  330. package/plugins/specweave-kafka/templates/migration/mirrormaker2-config.properties +234 -0
  331. package/plugins/specweave-kafka/templates/monitoring/grafana/multi-cluster-dashboard.json +686 -0
  332. package/plugins/specweave-kafka/terraform/apache-kafka/main.tf +347 -0
  333. package/plugins/specweave-kafka/terraform/apache-kafka/outputs.tf +107 -0
  334. package/plugins/specweave-kafka/terraform/apache-kafka/templates/kafka-broker-init.sh.tpl +216 -0
  335. package/plugins/specweave-kafka/terraform/apache-kafka/variables.tf +156 -0
  336. package/plugins/specweave-kafka/terraform/aws-msk/main.tf +362 -0
  337. package/plugins/specweave-kafka/terraform/aws-msk/outputs.tf +93 -0
  338. package/plugins/specweave-kafka/terraform/aws-msk/templates/server.properties.tpl +32 -0
  339. package/plugins/specweave-kafka/terraform/aws-msk/variables.tf +235 -0
  340. package/plugins/specweave-kafka/terraform/azure-event-hubs/main.tf +281 -0
  341. package/plugins/specweave-kafka/terraform/azure-event-hubs/outputs.tf +118 -0
  342. package/plugins/specweave-kafka/terraform/azure-event-hubs/variables.tf +148 -0
  343. package/plugins/specweave-kafka/tsconfig.json +21 -0
  344. package/plugins/specweave-kafka-streams/.claude-plugin/plugin.json +23 -0
  345. package/plugins/specweave-kafka-streams/README.md +310 -0
  346. package/plugins/specweave-kafka-streams/skills/kafka-streams-topology/SKILL.md +539 -0
  347. package/plugins/specweave-n8n/.claude-plugin/plugin.json +22 -0
  348. package/plugins/specweave-n8n/README.md +354 -0
  349. package/plugins/specweave-n8n/skills/n8n-kafka-workflows/SKILL.md +504 -0
  350. package/plugins/specweave-release/commands/specweave-release-platform.md +1 -1
  351. package/plugins/specweave-release/hooks/post-task-completion.sh +2 -2
  352. package/src/templates/AGENTS.md.template +601 -7
  353. package/src/templates/CLAUDE.md.template +188 -88
  354. package/dist/locales/de/.gitkeep +0 -0
  355. package/dist/locales/de/cli.json +0 -108
  356. package/dist/locales/en/cli.json +0 -287
  357. package/dist/locales/en/errors.json +0 -7
  358. package/dist/locales/en/templates.json +0 -6
  359. package/dist/locales/es/.gitkeep +0 -0
  360. package/dist/locales/es/cli.json +0 -41
  361. package/dist/locales/fr/.gitkeep +0 -0
  362. package/dist/locales/fr/cli.json +0 -108
  363. package/dist/locales/ja/.gitkeep +0 -0
  364. package/dist/locales/ja/cli.json +0 -108
  365. package/dist/locales/ko/.gitkeep +0 -0
  366. package/dist/locales/ko/cli.json +0 -108
  367. package/dist/locales/pt/.gitkeep +0 -0
  368. package/dist/locales/pt/cli.json +0 -108
  369. package/dist/locales/ru/.gitkeep +0 -0
  370. package/dist/locales/ru/cli.json +0 -269
  371. package/dist/locales/zh/.gitkeep +0 -0
  372. package/dist/locales/zh/cli.json +0 -108
  373. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts +0 -25
  374. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts.map +0 -1
  375. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js +0 -191
  376. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js.map +0 -1
  377. package/dist/spec-parser.js +0 -629
  378. package/dist/src/core/sync/spec-content-sync.d.ts +0 -88
  379. package/dist/src/core/sync/spec-content-sync.d.ts.map +0 -1
  380. package/dist/src/core/sync/spec-content-sync.js +0 -5
  381. package/dist/src/core/sync/spec-content-sync.js.map +0 -1
  382. package/dist/tsconfig.tsbuildinfo +0 -1
  383. package/plugins/specweave-ado/commands/specweave-ado-sync-spec.md +0 -255
  384. package/plugins/specweave-github/commands/specweave-github-sync-epic.md +0 -248
  385. package/plugins/specweave-github/commands/specweave-github-sync-from.md +0 -147
  386. package/plugins/specweave-github/commands/specweave-github-sync-spec.md +0 -208
  387. package/plugins/specweave-github/commands/specweave-github-sync-tasks.md +0 -530
  388. package/plugins/specweave-jira/commands/specweave-jira-sync-epic.md +0 -267
  389. package/plugins/specweave-jira/commands/specweave-jira-sync-spec.md +0 -240
@@ -0,0 +1,244 @@
1
+ ---
2
+ name: smart-reopen-detector
3
+ description: |
4
+ Detects when user reports issues with recently completed work and suggests reopening relevant tasks, user stories, or increments. Auto-activates on keywords: not working, broken, bug, issue, problem, failing, error, crash, regression, still broken, incorrect, missing, wrong. Scans active and recently completed (7 days) work to find related items. Provides smart suggestions with relevance scoring.
5
+ ---
6
+
7
+ # Smart Reopen Detector
8
+
9
+ ## Purpose
10
+
11
+ When you report an issue with recently completed work, I'll automatically:
12
+ 1. šŸ” **Scan your recent work** (active + completed in last 7 days)
13
+ 2. šŸŽÆ **Identify related items** using keyword matching
14
+ 3. šŸ’” **Suggest what to reopen** with relevance scoring
15
+ 4. āš ļø **Check WIP limits** before suggesting reopen
16
+
17
+ ## When I Activate
18
+
19
+ I automatically activate when you mention these keywords:
20
+ - **Not working**: "not working", "broken", "failing", "error", "crash"
21
+ - **Quality issues**: "bug", "issue", "problem", "wrong", "incorrect", "missing"
22
+ - **Regressions**: "still broken", "regression", "broken again", "came back"
23
+
24
+ ## How I Help
25
+
26
+ ### Example 1: Issue Report
27
+ ```
28
+ User: "The GitHub sync isn't working, it was just completed yesterday"
29
+ ```
30
+
31
+ I'll respond with:
32
+ ```
33
+ šŸ” Scanning recent work...
34
+
35
+ Found 2 related item(s) in recent work:
36
+
37
+ šŸ“¦ INCREMENT: 0031-external-tool-status-sync
38
+ Increment: 0031-external-tool-status-sync
39
+ Completed: 2 days ago
40
+ Relevance: 15 points
41
+ Matched: github, sync
42
+
43
+ āœ“ TASK: T-003 GitHub Content Sync
44
+ Increment: 0031-external-tool-status-sync
45
+ Completed: 1 day ago
46
+ Relevance: 14 points
47
+ Matched: github, sync
48
+
49
+ šŸ’” Suggested action:
50
+ /specweave:reopen 0031-external-tool-status-sync --reason "GitHub sync not working"
51
+
52
+ Would you like me to:
53
+ 1. Reopen the entire increment (checks WIP limits)
54
+ 2. Reopen just task T-003 (targeted fix)
55
+ 3. Show me the WIP status first
56
+ ```
57
+
58
+ ### Example 2: Specific Feature Broken
59
+ ```
60
+ User: "The authentication is broken after the recent deployment"
61
+ ```
62
+
63
+ I'll respond with:
64
+ ```
65
+ šŸ” Scanning recent work...
66
+
67
+ Found 3 related item(s) in recent work:
68
+
69
+ āœ“ TASK: T-012 Authentication Service
70
+ Increment: 0025-user-auth
71
+ Completed: 3 days ago
72
+ Relevance: 10 points
73
+ Matched: authentication
74
+
75
+ āœ“ TASK: T-014 JWT Token Validation
76
+ Increment: 0025-user-auth
77
+ Completed: 3 days ago
78
+ Relevance: 7 points
79
+ Matched: authentication
80
+
81
+ šŸ’” Suggested action:
82
+ /specweave:reopen 0025-user-auth --task T-012 --reason "Authentication broken after deployment"
83
+
84
+ āš ļø Note: Increment 0025 was completed 3 days ago. Consider checking deployment config first.
85
+ ```
86
+
87
+ ### Example 3: No Recent Work Found
88
+ ```
89
+ User: "The payment flow is not working"
90
+ ```
91
+
92
+ I'll respond with:
93
+ ```
94
+ šŸ” Scanning recent work...
95
+
96
+ šŸ” No related work found in recent activity (last 7 days)
97
+
98
+ The payment functionality might be:
99
+ 1. From an older increment (>7 days ago)
100
+ 2. Not yet implemented
101
+ 3. Part of external dependencies
102
+
103
+ Would you like me to:
104
+ 1. Search all increments (not just recent)
105
+ 2. Create a new bug increment for investigation
106
+ 3. Check the backlog for related work
107
+ ```
108
+
109
+ ## What I Do
110
+
111
+ ### Step 1: Extract Keywords
112
+ From your message, I extract relevant keywords:
113
+ - Feature names (authentication, github, payment)
114
+ - Action words (sync, deploy, validate)
115
+ - Component names (api, database, frontend)
116
+
117
+ ### Step 2: Scan Recent Work
118
+ I scan:
119
+ - āœ… **Active increments** (currently being worked on)
120
+ - āœ… **Recently completed** (last 7 days)
121
+ - āœ… **All tasks** from these increments
122
+
123
+ ### Step 3: Score Matches
124
+ I assign relevance scores using:
125
+ - **+10 points**: Exact match in title/ID
126
+ - **+7 points**: Partial match in title
127
+ - **+5 points**: Match in increment ID
128
+ - **+3 points**: Match in description/AC
129
+
130
+ ### Step 4: Suggest Actions
131
+ I provide:
132
+ - Top matches (up to 5)
133
+ - Relevance scores
134
+ - Suggested `/specweave:reopen` command
135
+ - WIP limit warnings (if applicable)
136
+
137
+ ## Smart Suggestions
138
+
139
+ ### For Increments
140
+ ```bash
141
+ # Reopen entire increment
142
+ /specweave:reopen 0031-external-tool-status-sync --reason "GitHub sync failing"
143
+
144
+ # Check WIP limits first (recommended)
145
+ /specweave:status
146
+ ```
147
+
148
+ ### For Specific Tasks
149
+ ```bash
150
+ # Reopen single task (surgical fix)
151
+ /specweave:reopen 0031 --task T-003 --reason "GitHub API 500 error"
152
+
153
+ # Reopen multiple related tasks
154
+ /specweave:reopen 0031 --user-story US-001 --reason "All GitHub features broken"
155
+ ```
156
+
157
+ ### Force Reopen (Bypass WIP Limits)
158
+ ```bash
159
+ # Use --force for critical production issues
160
+ /specweave:reopen 0031 --force --reason "Production down, critical fix needed"
161
+ ```
162
+
163
+ ## WIP Limit Awareness
164
+
165
+ Before suggesting increment reopen, I check:
166
+ - āœ… Current active increment count
167
+ - āœ… Type-specific limits (feature: 2, refactor: 1, etc.)
168
+ - āš ļø Warn if reopening will exceed limits
169
+
170
+ **Example Warning**:
171
+ ```
172
+ āš ļø WIP LIMIT WARNING:
173
+ Current active: 2 features
174
+ Limit: 2 features
175
+ Reopening 0031-external-tool-status-sync will EXCEED the limit!
176
+
177
+ Options:
178
+ 1. Pause another feature first: /specweave:pause 0030
179
+ 2. Complete another feature: /specweave:done 0029
180
+ 3. Force reopen (not recommended): --force
181
+ ```
182
+
183
+ ## Integration with Commands
184
+
185
+ I work seamlessly with:
186
+ - `/specweave:reopen` - Execute reopen action
187
+ - `/specweave:status` - Check WIP limits
188
+ - `/specweave:progress` - See increment progress
189
+ - `/specweave:pause` - Pause another increment to make room
190
+
191
+ ## When NOT to Use
192
+
193
+ I don't activate for:
194
+ - āŒ General questions about code
195
+ - āŒ Feature requests (use `/specweave:increment`)
196
+ - āŒ Documentation questions
197
+ - āŒ Status inquiries (use `/specweave:status`)
198
+
199
+ I **only** activate when you explicitly report something is broken/not working.
200
+
201
+ ## Technical Implementation
202
+
203
+ **Core Logic**:
204
+ - Uses `RecentWorkScanner` to find matches
205
+ - Keyword extraction from user message
206
+ - Relevance scoring algorithm
207
+ - WIP limit validation before suggestions
208
+
209
+ **Smart Features**:
210
+ - Deduplication (same increment from active + recent)
211
+ - Recency bias (prefer more recent completions)
212
+ - Contextual hints (deployment, config, dependencies)
213
+
214
+ ## Examples of Activation
215
+
216
+ ### āœ… Will Activate
217
+ - "GitHub sync not working"
218
+ - "Authentication is broken"
219
+ - "Tests are failing after the last commit"
220
+ - "Deployment crashed"
221
+ - "API returns 500 error"
222
+ - "Still broken after the fix"
223
+
224
+ ### āŒ Won't Activate
225
+ - "How does GitHub sync work?"
226
+ - "Can you add authentication?"
227
+ - "What's the status of increment 0031?"
228
+ - "Show me the progress"
229
+ - "Create a new feature for payments"
230
+
231
+ ## Success Metrics
232
+
233
+ I'm successful when:
234
+ - āœ… You find the related work quickly (<30 seconds)
235
+ - āœ… The suggested reopen command is correct
236
+ - āœ… No false positives (only relevant matches)
237
+ - āœ… WIP limits are respected
238
+ - āœ… Clear next steps provided
239
+
240
+ ---
241
+
242
+ **Auto-loads when**: You report issues with recently completed work
243
+ **Commands**: `/specweave:reopen`, `/specweave:status`
244
+ **Related Skills**: `increment-planner`, `tdd-workflow`
@@ -4,8 +4,9 @@ import {
4
4
  hasExternalLink,
5
5
  updateSpecWithExternalLink
6
6
  } from "../../../src/core/spec-content-sync.js";
7
- import path from "path";
8
- import fs from "fs/promises";
7
+ import { SpecIncrementMapper } from "../../../src/core/sync/spec-increment-mapper.js";
8
+ import * as path from "path";
9
+ import * as fs from "fs/promises";
9
10
  async function syncSpecContentToAdo(options) {
10
11
  const { specPath, client, dryRun = false, verbose = false } = options;
11
12
  try {
@@ -44,8 +45,9 @@ async function syncSpecContentToAdo(options) {
44
45
  async function createAdoFeature(client, spec, options) {
45
46
  const { specPath, dryRun, verbose } = options;
46
47
  try {
48
+ const tasks = await getTaskMappings(specPath, spec.id);
47
49
  const title = `[${spec.id.toUpperCase()}] ${spec.title}`;
48
- const description = buildAdoDescription(spec);
50
+ const description = buildAdoDescription(spec, tasks);
49
51
  if (verbose) {
50
52
  console.log(`
51
53
  \u{1F4DD} Creating ADO feature:`);
@@ -125,8 +127,9 @@ async function updateAdoFeature(client, spec, workItemId, options) {
125
127
  console.log(` - ${change}`);
126
128
  }
127
129
  }
130
+ const tasks = await getTaskMappings(specPath, spec.id);
128
131
  const newTitle = `[${spec.id.toUpperCase()}] ${spec.title}`;
129
- const newDescription = buildAdoDescription(spec);
132
+ const newDescription = buildAdoDescription(spec, tasks);
130
133
  if (dryRun) {
131
134
  console.log("\n\u{1F50D} Dry run - would update feature:");
132
135
  console.log(` Title: ${newTitle}`);
@@ -160,7 +163,7 @@ ${newDescription}`);
160
163
  };
161
164
  }
162
165
  }
163
- function buildAdoDescription(spec) {
166
+ function buildAdoDescription(spec, tasks) {
164
167
  let html = "";
165
168
  if (spec.description) {
166
169
  html += `<p>${escapeHtml(spec.description)}</p>`;
@@ -179,11 +182,52 @@ function buildAdoDescription(spec) {
179
182
  }
180
183
  }
181
184
  }
185
+ if (tasks && tasks.length > 0) {
186
+ html += "<h2>Implementation Tasks</h2>";
187
+ html += "<ul>";
188
+ for (const task of tasks) {
189
+ html += `<li><strong>${task.id}</strong>: ${escapeHtml(task.title)}`;
190
+ if (task.userStories && task.userStories.length > 0) {
191
+ html += ` (${task.userStories.join(", ")})`;
192
+ }
193
+ html += "</li>";
194
+ }
195
+ html += "</ul>";
196
+ }
182
197
  if (spec.metadata.priority) {
183
198
  html += `<p><strong>Priority:</strong> ${spec.metadata.priority}</p>`;
184
199
  }
185
200
  return html;
186
201
  }
202
+ async function getTaskMappings(specPath, specId) {
203
+ try {
204
+ const rootDir = await findSpecWeaveRoot(specPath);
205
+ const mapper = new SpecIncrementMapper(rootDir);
206
+ const mapping = await mapper.mapSpecToIncrements(specId);
207
+ if (mapping.increments.length > 0) {
208
+ return mapping.increments[0].tasks;
209
+ }
210
+ return void 0;
211
+ } catch (error) {
212
+ return void 0;
213
+ }
214
+ }
215
+ async function findSpecWeaveRoot(specPath) {
216
+ let currentDir = path.dirname(specPath);
217
+ while (true) {
218
+ const specweaveDir = path.join(currentDir, ".specweave");
219
+ try {
220
+ await fs.access(specweaveDir);
221
+ return currentDir;
222
+ } catch {
223
+ const parentDir = path.dirname(currentDir);
224
+ if (parentDir === currentDir) {
225
+ throw new Error(".specweave directory not found");
226
+ }
227
+ currentDir = parentDir;
228
+ }
229
+ }
230
+ }
187
231
  function escapeHtml(text) {
188
232
  return text.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;");
189
233
  }
@@ -20,8 +20,9 @@ import {
20
20
  ContentSyncResult,
21
21
  } from '../../../src/core/spec-content-sync.js';
22
22
  import { SyncProfile } from '../../../src/core/types/sync-profile.js';
23
- import path from 'path';
24
- import fs from 'fs/promises';
23
+ import { SpecIncrementMapper, TaskInfo } from '../../../src/core/sync/spec-increment-mapper.js';
24
+ import * as path from 'path';
25
+ import * as fs from 'fs/promises';
25
26
 
26
27
  export interface AdoContentSyncOptions {
27
28
  specPath: string;
@@ -91,9 +92,12 @@ async function createAdoFeature(
91
92
  const { specPath, dryRun, verbose } = options;
92
93
 
93
94
  try {
95
+ // Get task mappings (if available)
96
+ const tasks = await getTaskMappings(specPath, spec.id);
97
+
94
98
  // Build feature title and description
95
99
  const title = `[${spec.id.toUpperCase()}] ${spec.title}`;
96
- const description = buildAdoDescription(spec);
100
+ const description = buildAdoDescription(spec, tasks);
97
101
 
98
102
  if (verbose) {
99
103
  console.log(`\nšŸ“ Creating ADO feature:`);
@@ -196,9 +200,12 @@ async function updateAdoFeature(
196
200
  }
197
201
  }
198
202
 
203
+ // Get task mappings (if available)
204
+ const tasks = await getTaskMappings(specPath, spec.id);
205
+
199
206
  // Build updated content
200
207
  const newTitle = `[${spec.id.toUpperCase()}] ${spec.title}`;
201
- const newDescription = buildAdoDescription(spec);
208
+ const newDescription = buildAdoDescription(spec, tasks);
202
209
 
203
210
  if (dryRun) {
204
211
  console.log('\nšŸ” Dry run - would update feature:');
@@ -242,10 +249,10 @@ async function updateAdoFeature(
242
249
  }
243
250
 
244
251
  /**
245
- * Build ADO description from spec content
252
+ * Build ADO description from spec content with optional task mappings
246
253
  * ADO supports HTML in description
247
254
  */
248
- function buildAdoDescription(spec: SpecContent): string {
255
+ function buildAdoDescription(spec: SpecContent, tasks?: TaskInfo[]): string {
249
256
  let html = '';
250
257
 
251
258
  // Add spec description
@@ -271,6 +278,20 @@ function buildAdoDescription(spec: SpecContent): string {
271
278
  }
272
279
  }
273
280
 
281
+ // Add task mappings (if provided)
282
+ if (tasks && tasks.length > 0) {
283
+ html += '<h2>Implementation Tasks</h2>';
284
+ html += '<ul>';
285
+ for (const task of tasks) {
286
+ html += `<li><strong>${task.id}</strong>: ${escapeHtml(task.title)}`;
287
+ if (task.userStories && task.userStories.length > 0) {
288
+ html += ` (${task.userStories.join(', ')})`;
289
+ }
290
+ html += '</li>';
291
+ }
292
+ html += '</ul>';
293
+ }
294
+
274
295
  // Add metadata
275
296
  if (spec.metadata.priority) {
276
297
  html += `<p><strong>Priority:</strong> ${spec.metadata.priority}</p>`;
@@ -279,6 +300,51 @@ function buildAdoDescription(spec: SpecContent): string {
279
300
  return html;
280
301
  }
281
302
 
303
+ /**
304
+ * Get task mappings for a spec (if available)
305
+ */
306
+ async function getTaskMappings(specPath: string, specId: string): Promise<TaskInfo[] | undefined> {
307
+ try {
308
+ // Find SpecWeave root
309
+ const rootDir = await findSpecWeaveRoot(specPath);
310
+
311
+ // Use SpecIncrementMapper to get task mappings
312
+ const mapper = new SpecIncrementMapper(rootDir);
313
+ const mapping = await mapper.mapSpecToIncrements(specId);
314
+
315
+ if (mapping.increments.length > 0) {
316
+ // Return tasks from the first (most recent) increment
317
+ return mapping.increments[0].tasks;
318
+ }
319
+
320
+ return undefined;
321
+ } catch (error) {
322
+ // If mapping fails, just return undefined (not critical)
323
+ return undefined;
324
+ }
325
+ }
326
+
327
+ /**
328
+ * Find SpecWeave root directory from spec path
329
+ */
330
+ async function findSpecWeaveRoot(specPath: string): Promise<string> {
331
+ let currentDir = path.dirname(specPath);
332
+
333
+ while (true) {
334
+ const specweaveDir = path.join(currentDir, '.specweave');
335
+ try {
336
+ await fs.access(specweaveDir);
337
+ return currentDir;
338
+ } catch {
339
+ const parentDir = path.dirname(currentDir);
340
+ if (parentDir === currentDir) {
341
+ throw new Error('.specweave directory not found');
342
+ }
343
+ currentDir = parentDir;
344
+ }
345
+ }
346
+ }
347
+
282
348
  /**
283
349
  * Escape HTML special characters
284
350
  */
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "specweave-confluent",
3
+ "description": "Confluent Cloud integration for SpecWeave - Schema Registry, ksqlDB, Kafka Connect, Flink, stream processing, and enterprise Kafka features",
4
+ "version": "1.0.0",
5
+ "author": {
6
+ "name": "SpecWeave Team",
7
+ "url": "https://spec-weave.com"
8
+ },
9
+ "repository": "https://github.com/anton-abyzov/specweave",
10
+ "homepage": "https://spec-weave.com/docs/plugins/confluent",
11
+ "license": "MIT",
12
+ "keywords": [
13
+ "kafka",
14
+ "confluent",
15
+ "schema-registry",
16
+ "ksqldb",
17
+ "kafka-connect",
18
+ "flink",
19
+ "stream-processing",
20
+ "avro",
21
+ "protobuf"
22
+ ]
23
+ }