specweave 0.18.1 → 0.20.0

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 (384) 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/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts +57 -0
  54. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts.map +1 -0
  55. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js +248 -0
  56. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js.map +1 -0
  57. package/dist/plugins/specweave-kafka/lib/cli/types.d.ts +82 -0
  58. package/dist/plugins/specweave-kafka/lib/cli/types.d.ts.map +1 -0
  59. package/dist/plugins/specweave-kafka/lib/cli/types.js +13 -0
  60. package/dist/plugins/specweave-kafka/lib/cli/types.js.map +1 -0
  61. package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts +49 -0
  62. package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts.map +1 -0
  63. package/dist/plugins/specweave-kafka/lib/mcp/detector.js +316 -0
  64. package/dist/plugins/specweave-kafka/lib/mcp/detector.js.map +1 -0
  65. package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts +70 -0
  66. package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts.map +1 -0
  67. package/dist/plugins/specweave-kafka/lib/mcp/types.js +23 -0
  68. package/dist/plugins/specweave-kafka/lib/mcp/types.js.map +1 -0
  69. package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts +85 -0
  70. package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts.map +1 -0
  71. package/dist/plugins/specweave-kafka/lib/utils/partitioning.js +281 -0
  72. package/dist/plugins/specweave-kafka/lib/utils/partitioning.js.map +1 -0
  73. package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts +75 -0
  74. package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts.map +1 -0
  75. package/dist/plugins/specweave-kafka/lib/utils/sizing.js +238 -0
  76. package/dist/plugins/specweave-kafka/lib/utils/sizing.js.map +1 -0
  77. package/dist/src/cli/commands/import-docs.js +4 -4
  78. package/dist/src/cli/commands/import-docs.js.map +1 -1
  79. package/dist/src/cli/commands/init-multiproject.d.ts.map +1 -1
  80. package/dist/src/cli/commands/init-multiproject.js +17 -18
  81. package/dist/src/cli/commands/init-multiproject.js.map +1 -1
  82. package/dist/src/cli/commands/migrate-to-multiproject.d.ts.map +1 -1
  83. package/dist/src/cli/commands/migrate-to-multiproject.js +8 -4
  84. package/dist/src/cli/commands/migrate-to-multiproject.js.map +1 -1
  85. package/dist/src/cli/commands/switch-project.d.ts.map +1 -1
  86. package/dist/src/cli/commands/switch-project.js +9 -26
  87. package/dist/src/cli/commands/switch-project.js.map +1 -1
  88. package/dist/src/cli/commands/sync-spec-content.js +3 -0
  89. package/dist/src/cli/commands/sync-spec-content.js.map +1 -1
  90. package/dist/src/core/deduplication/command-deduplicator.d.ts +166 -0
  91. package/dist/src/core/deduplication/command-deduplicator.d.ts.map +1 -0
  92. package/dist/src/core/deduplication/command-deduplicator.js +254 -0
  93. package/dist/src/core/deduplication/command-deduplicator.js.map +1 -0
  94. package/dist/src/core/increment/active-increment-manager.d.ts +42 -15
  95. package/dist/src/core/increment/active-increment-manager.d.ts.map +1 -1
  96. package/dist/src/core/increment/active-increment-manager.js +113 -46
  97. package/dist/src/core/increment/active-increment-manager.js.map +1 -1
  98. package/dist/src/core/increment/conflict-resolver.d.ts +40 -0
  99. package/dist/src/core/increment/conflict-resolver.d.ts.map +1 -0
  100. package/dist/src/core/increment/conflict-resolver.js +219 -0
  101. package/dist/src/core/increment/conflict-resolver.js.map +1 -0
  102. package/dist/src/core/increment/discipline-checker.d.ts.map +1 -1
  103. package/dist/src/core/increment/discipline-checker.js +7 -1
  104. package/dist/src/core/increment/discipline-checker.js.map +1 -1
  105. package/dist/src/core/increment/duplicate-detector.d.ts +52 -0
  106. package/dist/src/core/increment/duplicate-detector.d.ts.map +1 -0
  107. package/dist/src/core/increment/duplicate-detector.js +276 -0
  108. package/dist/src/core/increment/duplicate-detector.js.map +1 -0
  109. package/dist/src/core/increment/increment-archiver.d.ts +90 -0
  110. package/dist/src/core/increment/increment-archiver.d.ts.map +1 -0
  111. package/dist/src/core/increment/increment-archiver.js +368 -0
  112. package/dist/src/core/increment/increment-archiver.js.map +1 -0
  113. package/dist/src/core/increment/increment-reopener.d.ts +165 -0
  114. package/dist/src/core/increment/increment-reopener.d.ts.map +1 -0
  115. package/dist/src/core/increment/increment-reopener.js +390 -0
  116. package/dist/src/core/increment/increment-reopener.js.map +1 -0
  117. package/dist/src/core/increment/metadata-manager.d.ts +26 -1
  118. package/dist/src/core/increment/metadata-manager.d.ts.map +1 -1
  119. package/dist/src/core/increment/metadata-manager.js +143 -5
  120. package/dist/src/core/increment/metadata-manager.js.map +1 -1
  121. package/dist/src/core/increment/recent-work-scanner.d.ts +121 -0
  122. package/dist/src/core/increment/recent-work-scanner.d.ts.map +1 -0
  123. package/dist/src/core/increment/recent-work-scanner.js +303 -0
  124. package/dist/src/core/increment/recent-work-scanner.js.map +1 -0
  125. package/dist/src/core/increment/types.d.ts +1 -0
  126. package/dist/src/core/increment/types.d.ts.map +1 -1
  127. package/dist/src/core/increment-utils.d.ts +112 -0
  128. package/dist/src/core/increment-utils.d.ts.map +1 -0
  129. package/dist/src/core/increment-utils.js +210 -0
  130. package/dist/src/core/increment-utils.js.map +1 -0
  131. package/dist/src/core/living-docs/ac-project-specific-generator.d.ts +65 -0
  132. package/dist/src/core/living-docs/ac-project-specific-generator.d.ts.map +1 -0
  133. package/dist/src/core/living-docs/ac-project-specific-generator.js +175 -0
  134. package/dist/src/core/living-docs/ac-project-specific-generator.js.map +1 -0
  135. package/dist/src/core/living-docs/feature-archiver.d.ts +130 -0
  136. package/dist/src/core/living-docs/feature-archiver.d.ts.map +1 -0
  137. package/dist/src/core/living-docs/feature-archiver.js +549 -0
  138. package/dist/src/core/living-docs/feature-archiver.js.map +1 -0
  139. package/dist/src/core/living-docs/feature-id-manager.d.ts +81 -0
  140. package/dist/src/core/living-docs/feature-id-manager.d.ts.map +1 -0
  141. package/dist/src/core/living-docs/feature-id-manager.js +339 -0
  142. package/dist/src/core/living-docs/feature-id-manager.js.map +1 -0
  143. package/dist/src/core/living-docs/hierarchy-mapper.d.ts +144 -83
  144. package/dist/src/core/living-docs/hierarchy-mapper.d.ts.map +1 -1
  145. package/dist/src/core/living-docs/hierarchy-mapper.js +488 -270
  146. package/dist/src/core/living-docs/hierarchy-mapper.js.map +1 -1
  147. package/dist/src/core/living-docs/index.d.ts +6 -0
  148. package/dist/src/core/living-docs/index.d.ts.map +1 -1
  149. package/dist/src/core/living-docs/index.js +6 -0
  150. package/dist/src/core/living-docs/index.js.map +1 -1
  151. package/dist/src/core/living-docs/project-detector.d.ts +6 -0
  152. package/dist/src/core/living-docs/project-detector.d.ts.map +1 -1
  153. package/dist/src/core/living-docs/project-detector.js +35 -1
  154. package/dist/src/core/living-docs/project-detector.js.map +1 -1
  155. package/dist/src/core/living-docs/spec-distributor.d.ts +100 -26
  156. package/dist/src/core/living-docs/spec-distributor.d.ts.map +1 -1
  157. package/dist/src/core/living-docs/spec-distributor.js +1275 -258
  158. package/dist/src/core/living-docs/spec-distributor.js.map +1 -1
  159. package/dist/src/core/living-docs/task-project-specific-generator.d.ts +109 -0
  160. package/dist/src/core/living-docs/task-project-specific-generator.d.ts.map +1 -0
  161. package/dist/src/core/living-docs/task-project-specific-generator.js +221 -0
  162. package/dist/src/core/living-docs/task-project-specific-generator.js.map +1 -0
  163. package/dist/src/core/living-docs/types.d.ts +143 -0
  164. package/dist/src/core/living-docs/types.d.ts.map +1 -1
  165. package/dist/src/core/project-manager.d.ts +2 -17
  166. package/dist/src/core/project-manager.d.ts.map +1 -1
  167. package/dist/src/core/project-manager.js +68 -48
  168. package/dist/src/core/project-manager.js.map +1 -1
  169. package/dist/src/core/spec-content-sync.d.ts +1 -1
  170. package/dist/src/core/spec-content-sync.d.ts.map +1 -1
  171. package/dist/src/core/sync/enhanced-content-builder.d.ts.map +1 -1
  172. package/dist/src/core/sync/enhanced-content-builder.js +2 -1
  173. package/dist/src/core/sync/enhanced-content-builder.js.map +1 -1
  174. package/dist/src/core/sync/performance-optimizer.d.ts +153 -0
  175. package/dist/src/core/sync/performance-optimizer.d.ts.map +1 -0
  176. package/dist/src/core/sync/performance-optimizer.js +220 -0
  177. package/dist/src/core/sync/performance-optimizer.js.map +1 -0
  178. package/dist/src/core/sync/retry-handler.d.ts +98 -0
  179. package/dist/src/core/sync/retry-handler.d.ts.map +1 -0
  180. package/dist/src/core/sync/retry-handler.js +196 -0
  181. package/dist/src/core/sync/retry-handler.js.map +1 -0
  182. package/dist/src/core/types/config.d.ts +94 -0
  183. package/dist/src/core/types/config.d.ts.map +1 -1
  184. package/dist/src/core/types/config.js +16 -0
  185. package/dist/src/core/types/config.js.map +1 -1
  186. package/dist/src/core/types/increment-metadata.d.ts +6 -0
  187. package/dist/src/core/types/increment-metadata.d.ts.map +1 -1
  188. package/dist/src/core/types/increment-metadata.js +10 -1
  189. package/dist/src/core/types/increment-metadata.js.map +1 -1
  190. package/dist/src/integrations/jira/jira-incremental-mapper.d.ts.map +1 -1
  191. package/dist/src/integrations/jira/jira-incremental-mapper.js +4 -8
  192. package/dist/src/integrations/jira/jira-incremental-mapper.js.map +1 -1
  193. package/dist/src/integrations/jira/jira-mapper.d.ts.map +1 -1
  194. package/dist/src/integrations/jira/jira-mapper.js +4 -8
  195. package/dist/src/integrations/jira/jira-mapper.js.map +1 -1
  196. package/package.json +1 -1
  197. package/plugins/specweave/COMMANDS.md +13 -4
  198. package/plugins/specweave/commands/specweave-abandon.md +22 -20
  199. package/plugins/specweave/commands/specweave-archive-features.md +121 -0
  200. package/plugins/specweave/commands/specweave-archive-increments.md +82 -0
  201. package/plugins/specweave/commands/specweave-archive.md +363 -0
  202. package/plugins/specweave/commands/specweave-backlog.md +211 -0
  203. package/plugins/specweave/commands/specweave-fix-duplicates.md +517 -0
  204. package/plugins/specweave/commands/specweave-increment.md +4 -3
  205. package/plugins/specweave/commands/specweave-progress.md +176 -27
  206. package/plugins/specweave/commands/specweave-reopen.md +391 -0
  207. package/plugins/specweave/commands/specweave-restore-feature.md +90 -0
  208. package/plugins/specweave/commands/specweave-restore.md +309 -0
  209. package/plugins/specweave/commands/specweave-resume.md +51 -23
  210. package/plugins/specweave/commands/specweave-status.md +41 -7
  211. package/plugins/specweave/commands/specweave-sync-specs.md +425 -0
  212. package/plugins/specweave/hooks/hooks.json +4 -0
  213. package/plugins/specweave/hooks/lib/sync-spec-content.sh +2 -2
  214. package/plugins/specweave/hooks/post-task-completion.sh +39 -0
  215. package/plugins/specweave/hooks/pre-command-deduplication.sh +83 -0
  216. package/plugins/specweave/hooks/user-prompt-submit.sh +1 -1
  217. package/plugins/specweave/lib/hooks/sync-living-docs.js +2 -0
  218. package/plugins/specweave/lib/hooks/sync-living-docs.ts +4 -0
  219. package/plugins/specweave/lib/hooks/update-ac-status.js +102 -0
  220. package/plugins/specweave/lib/hooks/update-ac-status.ts +192 -0
  221. package/plugins/specweave/skills/archive-increments/SKILL.md +198 -0
  222. package/plugins/specweave/skills/increment-planner/scripts/feature-utils.js +14 -0
  223. package/plugins/specweave/skills/smart-reopen-detector/SKILL.md +244 -0
  224. package/plugins/specweave-ado/lib/ado-spec-content-sync.js +49 -5
  225. package/plugins/specweave-ado/lib/ado-spec-content-sync.ts +72 -6
  226. package/plugins/specweave-confluent/.claude-plugin/plugin.json +23 -0
  227. package/plugins/specweave-confluent/README.md +375 -0
  228. package/plugins/specweave-confluent/agents/confluent-architect/AGENT.md +306 -0
  229. package/plugins/specweave-confluent/skills/confluent-kafka-connect/SKILL.md +453 -0
  230. package/plugins/specweave-confluent/skills/confluent-ksqldb/SKILL.md +470 -0
  231. package/plugins/specweave-confluent/skills/confluent-schema-registry/SKILL.md +316 -0
  232. package/plugins/specweave-github/agents/github-task-splitter/AGENT.md +2 -2
  233. package/plugins/specweave-github/agents/user-story-updater/AGENT.md +148 -0
  234. package/plugins/specweave-github/commands/specweave-github-cleanup-duplicates.md +1 -1
  235. package/plugins/specweave-github/commands/specweave-github-update-user-story.md +156 -0
  236. package/plugins/specweave-github/hooks/post-task-completion.sh +10 -9
  237. package/plugins/specweave-github/lib/completion-calculator.js +262 -0
  238. package/plugins/specweave-github/lib/completion-calculator.ts +434 -0
  239. package/plugins/specweave-github/lib/duplicate-detector.js +3 -3
  240. package/plugins/specweave-github/lib/duplicate-detector.ts +4 -4
  241. package/plugins/specweave-github/lib/epic-content-builder.js +38 -0
  242. package/plugins/specweave-github/lib/epic-content-builder.ts +59 -0
  243. package/plugins/specweave-github/lib/github-client-v2.js +49 -0
  244. package/plugins/specweave-github/lib/github-client-v2.ts +59 -0
  245. package/plugins/specweave-github/lib/github-epic-sync.ts +1 -1
  246. package/plugins/specweave-github/lib/github-feature-sync.js +381 -0
  247. package/plugins/specweave-github/lib/github-feature-sync.ts +568 -0
  248. package/plugins/specweave-github/lib/github-spec-content-sync.js +40 -10
  249. package/plugins/specweave-github/lib/github-spec-content-sync.ts +82 -14
  250. package/plugins/specweave-github/lib/progress-comment-builder.js +229 -0
  251. package/plugins/specweave-github/lib/progress-comment-builder.ts +324 -0
  252. package/plugins/specweave-github/lib/user-story-content-builder.js +299 -0
  253. package/plugins/specweave-github/lib/user-story-content-builder.ts +413 -0
  254. package/plugins/specweave-github/lib/user-story-issue-builder.js +344 -0
  255. package/plugins/specweave-github/lib/user-story-issue-builder.ts +543 -0
  256. package/plugins/specweave-github/skills/github-issue-standard/SKILL.md +189 -0
  257. package/plugins/specweave-jira/lib/enhanced-jira-sync.js +134 -0
  258. package/plugins/specweave-jira/lib/{enhanced-jira-sync.ts.disabled → enhanced-jira-sync.ts} +26 -52
  259. package/plugins/specweave-kafka/.claude-plugin/plugin.json +26 -0
  260. package/plugins/specweave-kafka/IMPLEMENTATION-COMPLETE.md +483 -0
  261. package/plugins/specweave-kafka/README.md +242 -0
  262. package/plugins/specweave-kafka/agents/kafka-architect/AGENT.md +235 -0
  263. package/plugins/specweave-kafka/agents/kafka-devops/AGENT.md +209 -0
  264. package/plugins/specweave-kafka/agents/kafka-observability/AGENT.md +266 -0
  265. package/plugins/specweave-kafka/commands/deploy.md +99 -0
  266. package/plugins/specweave-kafka/commands/dev-env.md +176 -0
  267. package/plugins/specweave-kafka/commands/mcp-configure.md +101 -0
  268. package/plugins/specweave-kafka/commands/monitor-setup.md +96 -0
  269. package/plugins/specweave-kafka/docker/kafka-local/docker-compose.yml +187 -0
  270. package/plugins/specweave-kafka/docker/redpanda/docker-compose.yml +199 -0
  271. package/plugins/specweave-kafka/docker/templates/consumer-nodejs.js +225 -0
  272. package/plugins/specweave-kafka/docker/templates/consumer-python.py +220 -0
  273. package/plugins/specweave-kafka/docker/templates/producer-nodejs.js +168 -0
  274. package/plugins/specweave-kafka/docker/templates/producer-python.py +167 -0
  275. package/plugins/specweave-kafka/lib/adapters/apache-kafka-adapter.js +438 -0
  276. package/plugins/specweave-kafka/lib/adapters/apache-kafka-adapter.ts +541 -0
  277. package/plugins/specweave-kafka/lib/adapters/platform-adapter.js +47 -0
  278. package/plugins/specweave-kafka/lib/adapters/platform-adapter.ts +343 -0
  279. package/plugins/specweave-kafka/lib/cli/kcat-wrapper.js +258 -0
  280. package/plugins/specweave-kafka/lib/cli/kcat-wrapper.ts +298 -0
  281. package/plugins/specweave-kafka/lib/cli/types.js +10 -0
  282. package/plugins/specweave-kafka/lib/cli/types.ts +92 -0
  283. package/plugins/specweave-kafka/lib/connectors/connector-catalog.js +305 -0
  284. package/plugins/specweave-kafka/lib/connectors/connector-catalog.ts +528 -0
  285. package/plugins/specweave-kafka/lib/documentation/diagram-generator.js +114 -0
  286. package/plugins/specweave-kafka/lib/documentation/diagram-generator.ts +195 -0
  287. package/plugins/specweave-kafka/lib/documentation/exporter.js +210 -0
  288. package/plugins/specweave-kafka/lib/documentation/exporter.ts +338 -0
  289. package/plugins/specweave-kafka/lib/documentation/schema-catalog-generator.js +60 -0
  290. package/plugins/specweave-kafka/lib/documentation/schema-catalog-generator.ts +130 -0
  291. package/plugins/specweave-kafka/lib/documentation/topology-generator.js +143 -0
  292. package/plugins/specweave-kafka/lib/documentation/topology-generator.ts +290 -0
  293. package/plugins/specweave-kafka/lib/mcp/detector.js +298 -0
  294. package/plugins/specweave-kafka/lib/mcp/detector.ts +352 -0
  295. package/plugins/specweave-kafka/lib/mcp/types.js +21 -0
  296. package/plugins/specweave-kafka/lib/mcp/types.ts +77 -0
  297. package/plugins/specweave-kafka/lib/multi-cluster/cluster-config-manager.js +193 -0
  298. package/plugins/specweave-kafka/lib/multi-cluster/cluster-config-manager.ts +362 -0
  299. package/plugins/specweave-kafka/lib/multi-cluster/cluster-switcher.js +188 -0
  300. package/plugins/specweave-kafka/lib/multi-cluster/cluster-switcher.ts +359 -0
  301. package/plugins/specweave-kafka/lib/multi-cluster/health-aggregator.js +195 -0
  302. package/plugins/specweave-kafka/lib/multi-cluster/health-aggregator.ts +380 -0
  303. package/plugins/specweave-kafka/lib/observability/opentelemetry-kafka.js +209 -0
  304. package/plugins/specweave-kafka/lib/observability/opentelemetry-kafka.ts +358 -0
  305. package/plugins/specweave-kafka/lib/patterns/advanced-ksqldb-patterns.js +354 -0
  306. package/plugins/specweave-kafka/lib/patterns/advanced-ksqldb-patterns.ts +563 -0
  307. package/plugins/specweave-kafka/lib/patterns/circuit-breaker-resilience.js +259 -0
  308. package/plugins/specweave-kafka/lib/patterns/circuit-breaker-resilience.ts +516 -0
  309. package/plugins/specweave-kafka/lib/patterns/dead-letter-queue.js +233 -0
  310. package/plugins/specweave-kafka/lib/patterns/dead-letter-queue.ts +423 -0
  311. package/plugins/specweave-kafka/lib/patterns/exactly-once-semantics.js +266 -0
  312. package/plugins/specweave-kafka/lib/patterns/exactly-once-semantics.ts +445 -0
  313. package/plugins/specweave-kafka/lib/patterns/flink-kafka-integration.js +312 -0
  314. package/plugins/specweave-kafka/lib/patterns/flink-kafka-integration.ts +561 -0
  315. package/plugins/specweave-kafka/lib/patterns/multi-dc-replication.js +289 -0
  316. package/plugins/specweave-kafka/lib/patterns/multi-dc-replication.ts +607 -0
  317. package/plugins/specweave-kafka/lib/patterns/rate-limiting-backpressure.js +264 -0
  318. package/plugins/specweave-kafka/lib/patterns/rate-limiting-backpressure.ts +498 -0
  319. package/plugins/specweave-kafka/lib/patterns/stream-processing-optimization.js +263 -0
  320. package/plugins/specweave-kafka/lib/patterns/stream-processing-optimization.ts +549 -0
  321. package/plugins/specweave-kafka/lib/patterns/tiered-storage-compaction.js +205 -0
  322. package/plugins/specweave-kafka/lib/patterns/tiered-storage-compaction.ts +399 -0
  323. package/plugins/specweave-kafka/lib/performance/performance-optimizer.js +249 -0
  324. package/plugins/specweave-kafka/lib/performance/performance-optimizer.ts +427 -0
  325. package/plugins/specweave-kafka/lib/security/kafka-security.js +252 -0
  326. package/plugins/specweave-kafka/lib/security/kafka-security.ts +494 -0
  327. package/plugins/specweave-kafka/lib/utils/capacity-planner.js +203 -0
  328. package/plugins/specweave-kafka/lib/utils/capacity-planner.ts +469 -0
  329. package/plugins/specweave-kafka/lib/utils/config-validator.js +419 -0
  330. package/plugins/specweave-kafka/lib/utils/config-validator.ts +564 -0
  331. package/plugins/specweave-kafka/lib/utils/partitioning.js +329 -0
  332. package/plugins/specweave-kafka/lib/utils/partitioning.ts +473 -0
  333. package/plugins/specweave-kafka/lib/utils/sizing.js +221 -0
  334. package/plugins/specweave-kafka/lib/utils/sizing.ts +374 -0
  335. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-broker-metrics.json +628 -0
  336. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-cluster-overview.json +564 -0
  337. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-consumer-lag.json +509 -0
  338. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-jvm-metrics.json +674 -0
  339. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-topic-metrics.json +578 -0
  340. package/plugins/specweave-kafka/monitoring/grafana/provisioning/dashboards/kafka.yml +17 -0
  341. package/plugins/specweave-kafka/monitoring/grafana/provisioning/datasources/prometheus.yml +17 -0
  342. package/plugins/specweave-kafka/monitoring/prometheus/kafka-alerts.yml +415 -0
  343. package/plugins/specweave-kafka/monitoring/prometheus/kafka-jmx-exporter.yml +256 -0
  344. package/plugins/specweave-kafka/package.json +41 -0
  345. package/plugins/specweave-kafka/skills/kafka-architecture/SKILL.md +647 -0
  346. package/plugins/specweave-kafka/skills/kafka-cli-tools/SKILL.md +433 -0
  347. package/plugins/specweave-kafka/skills/kafka-iac-deployment/SKILL.md +449 -0
  348. package/plugins/specweave-kafka/skills/kafka-kubernetes/SKILL.md +667 -0
  349. package/plugins/specweave-kafka/skills/kafka-mcp-integration/SKILL.md +273 -0
  350. package/plugins/specweave-kafka/skills/kafka-observability/SKILL.md +576 -0
  351. package/plugins/specweave-kafka/templates/config/broker-production.properties +254 -0
  352. package/plugins/specweave-kafka/templates/config/consumer-low-latency.properties +112 -0
  353. package/plugins/specweave-kafka/templates/config/producer-high-throughput.properties +120 -0
  354. package/plugins/specweave-kafka/templates/migration/mirrormaker2-config.properties +234 -0
  355. package/plugins/specweave-kafka/templates/monitoring/grafana/multi-cluster-dashboard.json +686 -0
  356. package/plugins/specweave-kafka/terraform/apache-kafka/main.tf +347 -0
  357. package/plugins/specweave-kafka/terraform/apache-kafka/outputs.tf +107 -0
  358. package/plugins/specweave-kafka/terraform/apache-kafka/templates/kafka-broker-init.sh.tpl +216 -0
  359. package/plugins/specweave-kafka/terraform/apache-kafka/variables.tf +156 -0
  360. package/plugins/specweave-kafka/terraform/aws-msk/main.tf +362 -0
  361. package/plugins/specweave-kafka/terraform/aws-msk/outputs.tf +93 -0
  362. package/plugins/specweave-kafka/terraform/aws-msk/templates/server.properties.tpl +32 -0
  363. package/plugins/specweave-kafka/terraform/aws-msk/variables.tf +235 -0
  364. package/plugins/specweave-kafka/terraform/azure-event-hubs/main.tf +281 -0
  365. package/plugins/specweave-kafka/terraform/azure-event-hubs/outputs.tf +118 -0
  366. package/plugins/specweave-kafka/terraform/azure-event-hubs/variables.tf +148 -0
  367. package/plugins/specweave-kafka/tsconfig.json +21 -0
  368. package/plugins/specweave-kafka-streams/.claude-plugin/plugin.json +23 -0
  369. package/plugins/specweave-kafka-streams/README.md +310 -0
  370. package/plugins/specweave-kafka-streams/skills/kafka-streams-topology/SKILL.md +539 -0
  371. package/plugins/specweave-n8n/.claude-plugin/plugin.json +22 -0
  372. package/plugins/specweave-n8n/README.md +354 -0
  373. package/plugins/specweave-n8n/skills/n8n-kafka-workflows/SKILL.md +504 -0
  374. package/plugins/specweave-release/commands/specweave-release-platform.md +1 -1
  375. package/plugins/specweave-release/hooks/post-task-completion.sh +2 -2
  376. package/src/templates/AGENTS.md.template +601 -7
  377. package/src/templates/CLAUDE.md.template +188 -88
  378. package/plugins/specweave-ado/commands/specweave-ado-sync-spec.md +0 -255
  379. package/plugins/specweave-github/commands/specweave-github-sync-epic.md +0 -248
  380. package/plugins/specweave-github/commands/specweave-github-sync-from.md +0 -147
  381. package/plugins/specweave-github/commands/specweave-github-sync-spec.md +0 -208
  382. package/plugins/specweave-github/commands/specweave-github-sync-tasks.md +0 -530
  383. package/plugins/specweave-jira/commands/specweave-jira-sync-epic.md +0 -267
  384. package/plugins/specweave-jira/commands/specweave-jira-sync-spec.md +0 -240
@@ -0,0 +1,195 @@
1
+ /**
2
+ * Diagram Generator
3
+ *
4
+ * Generates Mermaid data flow diagrams for Kafka ecosystems
5
+ *
6
+ * @module diagram-generator
7
+ */
8
+
9
+ /**
10
+ * Data Flow Diagram Generator
11
+ *
12
+ * Creates Mermaid diagrams showing producer → topic → consumer flows
13
+ */
14
+ export class DiagramGenerator {
15
+ /**
16
+ * Generate data flow diagram
17
+ */
18
+ static generateDataFlow(options: {
19
+ producers: { name: string; topics: string[] }[];
20
+ topics: string[];
21
+ consumers: { name: string; topics: string[] }[];
22
+ }): string {
23
+ const lines: string[] = [];
24
+
25
+ lines.push('```mermaid');
26
+ lines.push('graph LR');
27
+
28
+ // Producers
29
+ for (const producer of options.producers) {
30
+ const producerId = producer.name.replace(/[^a-zA-Z0-9]/g, '_');
31
+ lines.push(` ${producerId}[${producer.name}]:::producer`);
32
+
33
+ for (const topic of producer.topics) {
34
+ const topicId = topic.replace(/[^a-zA-Z0-9]/g, '_');
35
+ lines.push(` ${producerId} -->|produce| T_${topicId}`);
36
+ }
37
+ }
38
+
39
+ // Topics
40
+ for (const topic of options.topics) {
41
+ const topicId = topic.replace(/[^a-zA-Z0-9]/g, '_');
42
+ lines.push(` T_${topicId}[(${topic})]:::topic`);
43
+ }
44
+
45
+ // Consumers
46
+ for (const consumer of options.consumers) {
47
+ const consumerId = consumer.name.replace(/[^a-zA-Z0-9]/g, '_');
48
+ lines.push(` ${consumerId}[${consumer.name}]:::consumer`);
49
+
50
+ for (const topic of consumer.topics) {
51
+ const topicId = topic.replace(/[^a-zA-Z0-9]/g, '_');
52
+ lines.push(` T_${topicId} -->|consume| ${consumerId}`);
53
+ }
54
+ }
55
+
56
+ // Styles
57
+ lines.push('');
58
+ lines.push(' classDef producer fill:#90EE90,stroke:#228B22,stroke-width:2px');
59
+ lines.push(' classDef topic fill:#87CEEB,stroke:#4682B4,stroke-width:2px');
60
+ lines.push(' classDef consumer fill:#FFB6C1,stroke:#FF69B4,stroke-width:2px');
61
+
62
+ lines.push('```');
63
+
64
+ return lines.join('\n');
65
+ }
66
+
67
+ /**
68
+ * Generate architecture diagram
69
+ */
70
+ static generateArchitecture(options: {
71
+ brokers: number;
72
+ zookeeper?: boolean;
73
+ schemaRegistry?: boolean;
74
+ connectCluster?: boolean;
75
+ ksqlDB?: boolean;
76
+ }): string {
77
+ const lines: string[] = [];
78
+
79
+ lines.push('```mermaid');
80
+ lines.push('graph TB');
81
+ lines.push(' subgraph Kafka Cluster');
82
+
83
+ // Brokers
84
+ for (let i = 1; i <= options.brokers; i++) {
85
+ lines.push(` B${i}[Broker ${i}]`);
86
+ }
87
+
88
+ lines.push(' end');
89
+
90
+ // ZooKeeper (legacy)
91
+ if (options.zookeeper) {
92
+ lines.push(' subgraph ZooKeeper Ensemble');
93
+ lines.push(' ZK1[ZooKeeper 1]');
94
+ lines.push(' ZK2[ZooKeeper 2]');
95
+ lines.push(' ZK3[ZooKeeper 3]');
96
+ lines.push(' end');
97
+
98
+ for (let i = 1; i <= options.brokers; i++) {
99
+ lines.push(` B${i} --> ZK1`);
100
+ }
101
+ }
102
+
103
+ // Schema Registry
104
+ if (options.schemaRegistry) {
105
+ lines.push(' SR[Schema Registry]:::schemaRegistry');
106
+ lines.push(' SR --> B1');
107
+ }
108
+
109
+ // Kafka Connect
110
+ if (options.connectCluster) {
111
+ lines.push(' subgraph Kafka Connect Cluster');
112
+ lines.push(' C1[Connect Worker 1]');
113
+ lines.push(' C2[Connect Worker 2]');
114
+ lines.push(' end');
115
+ lines.push(' C1 --> B1');
116
+ lines.push(' C2 --> B1');
117
+ }
118
+
119
+ // ksqlDB
120
+ if (options.ksqlDB) {
121
+ lines.push(' KSQL[ksqlDB Server]:::ksqlDB');
122
+ lines.push(' KSQL --> B1');
123
+ }
124
+
125
+ // Styles
126
+ lines.push('');
127
+ lines.push(' classDef schemaRegistry fill:#FFA500,stroke:#FF8C00,stroke-width:2px');
128
+ lines.push(' classDef ksqlDB fill:#9370DB,stroke:#8B008B,stroke-width:2px');
129
+
130
+ lines.push('```');
131
+
132
+ return lines.join('\n');
133
+ }
134
+
135
+ /**
136
+ * Generate multi-DC replication diagram
137
+ */
138
+ static generateMultiDCReplication(options: {
139
+ dataCenters: string[];
140
+ topology: 'active-passive' | 'active-active';
141
+ }): string {
142
+ const lines: string[] = [];
143
+
144
+ lines.push('```mermaid');
145
+ lines.push('graph LR');
146
+
147
+ if (options.topology === 'active-passive') {
148
+ lines.push(` DC1[${options.dataCenters[0]}<br/>Primary]:::primary`);
149
+ lines.push(` DC2[${options.dataCenters[1]}<br/>Standby]:::standby`);
150
+ lines.push(' DC1 -->|MirrorMaker 2| DC2');
151
+ lines.push(' Producers[Producers] --> DC1');
152
+ lines.push(' Consumers[Consumers] --> DC1');
153
+ } else {
154
+ lines.push(` DC1[${options.dataCenters[0]}<br/>Active]:::active`);
155
+ lines.push(` DC2[${options.dataCenters[1]}<br/>Active]:::active`);
156
+ lines.push(' DC1 <-->|Bidirectional<br/>Replication| DC2');
157
+ lines.push(' Producers1[Producers] --> DC1');
158
+ lines.push(' Producers2[Producers] --> DC2');
159
+ lines.push(' Consumers1[Consumers] --> DC1');
160
+ lines.push(' Consumers2[Consumers] --> DC2');
161
+ }
162
+
163
+ // Styles
164
+ lines.push('');
165
+ lines.push(' classDef primary fill:#90EE90,stroke:#228B22,stroke-width:3px');
166
+ lines.push(' classDef standby fill:#D3D3D3,stroke:#808080,stroke-width:2px');
167
+ lines.push(' classDef active fill:#87CEEB,stroke:#4682B4,stroke-width:3px');
168
+
169
+ lines.push('```');
170
+
171
+ return lines.join('\n');
172
+ }
173
+ }
174
+
175
+ /**
176
+ * Example Usage: Data Flow Diagram
177
+ *
178
+ * ```typescript
179
+ * const diagram = DiagramGenerator.generateDataFlow({
180
+ * producers: [
181
+ * { name: 'Order Service', topics: ['orders', 'order-events'] },
182
+ * { name: 'Payment Service', topics: ['payments'] },
183
+ * ],
184
+ * topics: ['orders', 'order-events', 'payments'],
185
+ * consumers: [
186
+ * { name: 'Analytics Service', topics: ['orders', 'payments'] },
187
+ * { name: 'Notification Service', topics: ['order-events'] },
188
+ * ],
189
+ * });
190
+ *
191
+ * console.log(diagram);
192
+ * ```
193
+ */
194
+
195
+ export default DiagramGenerator;
@@ -0,0 +1,210 @@
1
+ import * as fs from "fs";
2
+ import * as path from "path";
3
+ var ExportFormat = /* @__PURE__ */ ((ExportFormat2) => {
4
+ ExportFormat2["MARKDOWN"] = "markdown";
5
+ ExportFormat2["HTML"] = "html";
6
+ ExportFormat2["PDF"] = "pdf";
7
+ ExportFormat2["JSON"] = "json";
8
+ return ExportFormat2;
9
+ })(ExportFormat || {});
10
+ class DocumentationExporter {
11
+ /**
12
+ * Export documentation
13
+ */
14
+ static async export(content, options) {
15
+ if (!fs.existsSync(options.outputDir)) {
16
+ fs.mkdirSync(options.outputDir, { recursive: true });
17
+ }
18
+ const timestamp = options.includeTimestamp ? `-${(/* @__PURE__ */ new Date()).toISOString().replace(/:/g, "-").split(".")[0]}` : "";
19
+ const extension = this.getExtension(options.format);
20
+ const fileName = `${options.fileName}${timestamp}.${extension}`;
21
+ const filePath = path.join(options.outputDir, fileName);
22
+ switch (options.format) {
23
+ case "markdown" /* MARKDOWN */:
24
+ return this.exportMarkdown(content, filePath);
25
+ case "html" /* HTML */:
26
+ return this.exportHTML(content, filePath, options.customCSS);
27
+ case "pdf" /* PDF */:
28
+ return this.exportPDF(content, filePath, options.customCSS);
29
+ case "json" /* JSON */:
30
+ return this.exportJSON(content, filePath);
31
+ default:
32
+ throw new Error(`Unsupported export format: ${options.format}`);
33
+ }
34
+ }
35
+ /**
36
+ * Get file extension for format
37
+ */
38
+ static getExtension(format) {
39
+ switch (format) {
40
+ case "markdown" /* MARKDOWN */:
41
+ return "md";
42
+ case "html" /* HTML */:
43
+ return "html";
44
+ case "pdf" /* PDF */:
45
+ return "pdf";
46
+ case "json" /* JSON */:
47
+ return "json";
48
+ default:
49
+ return "txt";
50
+ }
51
+ }
52
+ /**
53
+ * Export as Markdown
54
+ */
55
+ static exportMarkdown(content, filePath) {
56
+ fs.writeFileSync(filePath, content, "utf-8");
57
+ return filePath;
58
+ }
59
+ /**
60
+ * Export as HTML
61
+ */
62
+ static exportHTML(content, filePath, customCSS) {
63
+ const htmlContent = this.markdownToHTML(content);
64
+ const html = `<!DOCTYPE html>
65
+ <html lang="en">
66
+ <head>
67
+ <meta charset="UTF-8">
68
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
69
+ <title>Kafka Documentation</title>
70
+ <style>
71
+ ${customCSS || this.getDefaultCSS()}
72
+ </style>
73
+ </head>
74
+ <body>
75
+ <div class="container">
76
+ ${htmlContent}
77
+ </div>
78
+ </body>
79
+ </html>`;
80
+ fs.writeFileSync(filePath, html, "utf-8");
81
+ return filePath;
82
+ }
83
+ /**
84
+ * Export as PDF
85
+ */
86
+ static exportPDF(content, filePath, customCSS) {
87
+ const htmlPath = filePath.replace(".pdf", ".html");
88
+ this.exportHTML(content, htmlPath, customCSS);
89
+ console.warn(
90
+ `PDF export requires additional setup (puppeteer, wkhtmltopdf, etc.). HTML file exported to: ${htmlPath}. Use a tool like puppeteer to convert to PDF.`
91
+ );
92
+ return htmlPath;
93
+ }
94
+ /**
95
+ * Export as JSON
96
+ */
97
+ static exportJSON(content, filePath) {
98
+ fs.writeFileSync(filePath, content, "utf-8");
99
+ return filePath;
100
+ }
101
+ /**
102
+ * Convert Markdown to HTML (simplified)
103
+ */
104
+ static markdownToHTML(markdown) {
105
+ let html = markdown;
106
+ html = html.replace(/^### (.*$)/gim, "<h3>$1</h3>");
107
+ html = html.replace(/^## (.*$)/gim, "<h2>$1</h2>");
108
+ html = html.replace(/^# (.*$)/gim, "<h1>$1</h1>");
109
+ html = html.replace(/\*\*(.*?)\*\*/g, "<strong>$1</strong>");
110
+ const tableRegex = /\|(.+)\|\n\|(.+)\|\n((?:\|.+\|\n?)+)/gm;
111
+ html = html.replace(tableRegex, (match) => {
112
+ const lines = match.trim().split("\n");
113
+ const headers = lines[0].split("|").filter((c) => c.trim()).map((h) => `<th>${h.trim()}</th>`).join("");
114
+ const rows = lines.slice(2).map((line) => {
115
+ const cells = line.split("|").filter((c) => c.trim()).map((c) => `<td>${c.trim()}</td>`).join("");
116
+ return `<tr>${cells}</tr>`;
117
+ }).join("");
118
+ return `<table><thead><tr>${headers}</tr></thead><tbody>${rows}</tbody></table>`;
119
+ });
120
+ html = html.replace(/```(.*?)\n([\s\S]*?)```/g, "<pre><code>$2</code></pre>");
121
+ html = html.replace(/\n\n/g, "</p><p>");
122
+ html = `<p>${html}</p>`;
123
+ return html;
124
+ }
125
+ /**
126
+ * Get default CSS for HTML export
127
+ */
128
+ static getDefaultCSS() {
129
+ return `
130
+ body {
131
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;
132
+ line-height: 1.6;
133
+ color: #333;
134
+ background: #f5f5f5;
135
+ }
136
+ .container {
137
+ max-width: 1000px;
138
+ margin: 40px auto;
139
+ padding: 40px;
140
+ background: white;
141
+ box-shadow: 0 2px 8px rgba(0,0,0,0.1);
142
+ }
143
+ h1 {
144
+ border-bottom: 3px solid #2196F3;
145
+ padding-bottom: 10px;
146
+ color: #1976D2;
147
+ }
148
+ h2 {
149
+ border-bottom: 2px solid #64B5F6;
150
+ padding-bottom: 8px;
151
+ color: #1976D2;
152
+ margin-top: 30px;
153
+ }
154
+ h3 {
155
+ color: #424242;
156
+ margin-top: 20px;
157
+ }
158
+ table {
159
+ width: 100%;
160
+ border-collapse: collapse;
161
+ margin: 20px 0;
162
+ }
163
+ th, td {
164
+ border: 1px solid #ddd;
165
+ padding: 12px;
166
+ text-align: left;
167
+ }
168
+ th {
169
+ background-color: #2196F3;
170
+ color: white;
171
+ font-weight: bold;
172
+ }
173
+ tr:nth-child(even) {
174
+ background-color: #f9f9f9;
175
+ }
176
+ pre {
177
+ background: #2e3440;
178
+ color: #d8dee9;
179
+ padding: 16px;
180
+ border-radius: 4px;
181
+ overflow-x: auto;
182
+ }
183
+ code {
184
+ font-family: 'Monaco', 'Courier New', monospace;
185
+ font-size: 14px;
186
+ }
187
+ `;
188
+ }
189
+ /**
190
+ * Batch export to multiple formats
191
+ */
192
+ static async exportMultiple(content, baseOptions) {
193
+ const formats = ["markdown" /* MARKDOWN */, "html" /* HTML */, "json" /* JSON */];
194
+ const results = [];
195
+ for (const format of formats) {
196
+ const filePath = await this.export(content, {
197
+ ...baseOptions,
198
+ format
199
+ });
200
+ results.push(filePath);
201
+ }
202
+ return results;
203
+ }
204
+ }
205
+ var exporter_default = DocumentationExporter;
206
+ export {
207
+ DocumentationExporter,
208
+ ExportFormat,
209
+ exporter_default as default
210
+ };