specweave 0.18.0 → 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 (428) hide show
  1. package/CLAUDE.md +229 -1817
  2. package/README.md +68 -0
  3. package/bin/specweave.js +62 -6
  4. package/dist/locales/de/.gitkeep +0 -0
  5. package/dist/locales/de/cli.json +108 -0
  6. package/dist/locales/en/cli.json +287 -0
  7. package/dist/locales/en/errors.json +7 -0
  8. package/dist/locales/en/templates.json +6 -0
  9. package/dist/locales/es/.gitkeep +0 -0
  10. package/dist/locales/es/cli.json +41 -0
  11. package/dist/locales/fr/.gitkeep +0 -0
  12. package/dist/locales/fr/cli.json +108 -0
  13. package/dist/locales/ja/.gitkeep +0 -0
  14. package/dist/locales/ja/cli.json +108 -0
  15. package/dist/locales/ko/.gitkeep +0 -0
  16. package/dist/locales/ko/cli.json +108 -0
  17. package/dist/locales/pt/.gitkeep +0 -0
  18. package/dist/locales/pt/cli.json +108 -0
  19. package/dist/locales/ru/.gitkeep +0 -0
  20. package/dist/locales/ru/cli.json +269 -0
  21. package/dist/locales/zh/.gitkeep +0 -0
  22. package/dist/locales/zh/cli.json +108 -0
  23. package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts.map +1 -1
  24. package/dist/plugins/specweave/lib/hooks/sync-living-docs.js +3 -0
  25. package/dist/plugins/specweave/lib/hooks/sync-living-docs.js.map +1 -1
  26. package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts +21 -0
  27. package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts.map +1 -0
  28. package/dist/plugins/specweave/lib/hooks/update-ac-status.js +162 -0
  29. package/dist/plugins/specweave/lib/hooks/update-ac-status.js.map +1 -0
  30. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.d.ts.map +1 -1
  31. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.js +65 -6
  32. package/dist/plugins/specweave-ado/lib/ado-spec-content-sync.js.map +1 -1
  33. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts +25 -0
  34. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts.map +1 -0
  35. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js +191 -0
  36. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js.map +1 -0
  37. package/dist/plugins/specweave-github/lib/completion-calculator.d.ts +112 -0
  38. package/dist/plugins/specweave-github/lib/completion-calculator.d.ts.map +1 -0
  39. package/dist/plugins/specweave-github/lib/completion-calculator.js +301 -0
  40. package/dist/plugins/specweave-github/lib/completion-calculator.js.map +1 -0
  41. package/dist/plugins/specweave-github/lib/duplicate-detector.d.ts +3 -3
  42. package/dist/plugins/specweave-github/lib/duplicate-detector.js +3 -3
  43. package/dist/plugins/specweave-github/lib/epic-content-builder.d.ts +70 -0
  44. package/dist/plugins/specweave-github/lib/epic-content-builder.d.ts.map +1 -0
  45. package/dist/plugins/specweave-github/lib/epic-content-builder.js +258 -0
  46. package/dist/plugins/specweave-github/lib/epic-content-builder.js.map +1 -0
  47. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts +14 -0
  48. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts.map +1 -1
  49. package/dist/plugins/specweave-github/lib/github-client-v2.js +51 -0
  50. package/dist/plugins/specweave-github/lib/github-client-v2.js.map +1 -1
  51. package/dist/plugins/specweave-github/lib/github-epic-sync.d.ts +2 -2
  52. package/dist/plugins/specweave-github/lib/github-epic-sync.d.ts.map +1 -1
  53. package/dist/plugins/specweave-github/lib/github-epic-sync.js +20 -5
  54. package/dist/plugins/specweave-github/lib/github-epic-sync.js.map +1 -1
  55. package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts +87 -0
  56. package/dist/plugins/specweave-github/lib/github-feature-sync.d.ts.map +1 -0
  57. package/dist/plugins/specweave-github/lib/github-feature-sync.js +412 -0
  58. package/dist/plugins/specweave-github/lib/github-feature-sync.js.map +1 -0
  59. package/dist/plugins/specweave-github/lib/github-spec-content-sync.d.ts.map +1 -1
  60. package/dist/plugins/specweave-github/lib/github-spec-content-sync.js +64 -13
  61. package/dist/plugins/specweave-github/lib/github-spec-content-sync.js.map +1 -1
  62. package/dist/plugins/specweave-github/lib/progress-comment-builder.d.ts +78 -0
  63. package/dist/plugins/specweave-github/lib/progress-comment-builder.d.ts.map +1 -0
  64. package/dist/plugins/specweave-github/lib/progress-comment-builder.js +237 -0
  65. package/dist/plugins/specweave-github/lib/progress-comment-builder.js.map +1 -0
  66. package/dist/plugins/specweave-github/lib/user-story-content-builder.d.ts +97 -0
  67. package/dist/plugins/specweave-github/lib/user-story-content-builder.d.ts.map +1 -0
  68. package/dist/plugins/specweave-github/lib/user-story-content-builder.js +301 -0
  69. package/dist/plugins/specweave-github/lib/user-story-content-builder.js.map +1 -0
  70. package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts +83 -0
  71. package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts.map +1 -0
  72. package/dist/plugins/specweave-github/lib/user-story-issue-builder.js +386 -0
  73. package/dist/plugins/specweave-github/lib/user-story-issue-builder.js.map +1 -0
  74. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.d.ts +28 -0
  75. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.d.ts.map +1 -0
  76. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.js +156 -0
  77. package/dist/plugins/specweave-jira/lib/enhanced-jira-sync.js.map +1 -0
  78. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts +57 -0
  79. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts.map +1 -0
  80. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js +248 -0
  81. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js.map +1 -0
  82. package/dist/plugins/specweave-kafka/lib/cli/types.d.ts +82 -0
  83. package/dist/plugins/specweave-kafka/lib/cli/types.d.ts.map +1 -0
  84. package/dist/plugins/specweave-kafka/lib/cli/types.js +13 -0
  85. package/dist/plugins/specweave-kafka/lib/cli/types.js.map +1 -0
  86. package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts +49 -0
  87. package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts.map +1 -0
  88. package/dist/plugins/specweave-kafka/lib/mcp/detector.js +316 -0
  89. package/dist/plugins/specweave-kafka/lib/mcp/detector.js.map +1 -0
  90. package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts +70 -0
  91. package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts.map +1 -0
  92. package/dist/plugins/specweave-kafka/lib/mcp/types.js +23 -0
  93. package/dist/plugins/specweave-kafka/lib/mcp/types.js.map +1 -0
  94. package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts +85 -0
  95. package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts.map +1 -0
  96. package/dist/plugins/specweave-kafka/lib/utils/partitioning.js +281 -0
  97. package/dist/plugins/specweave-kafka/lib/utils/partitioning.js.map +1 -0
  98. package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts +75 -0
  99. package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts.map +1 -0
  100. package/dist/plugins/specweave-kafka/lib/utils/sizing.js +238 -0
  101. package/dist/plugins/specweave-kafka/lib/utils/sizing.js.map +1 -0
  102. package/dist/spec-parser.js +629 -0
  103. package/dist/src/cli/commands/import-docs.js +4 -4
  104. package/dist/src/cli/commands/import-docs.js.map +1 -1
  105. package/dist/src/cli/commands/init-multiproject.d.ts.map +1 -1
  106. package/dist/src/cli/commands/init-multiproject.js +17 -18
  107. package/dist/src/cli/commands/init-multiproject.js.map +1 -1
  108. package/dist/src/cli/commands/init.d.ts.map +1 -1
  109. package/dist/src/cli/commands/init.js +107 -3
  110. package/dist/src/cli/commands/init.js.map +1 -1
  111. package/dist/src/cli/commands/migrate-to-multiproject.d.ts.map +1 -1
  112. package/dist/src/cli/commands/migrate-to-multiproject.js +8 -4
  113. package/dist/src/cli/commands/migrate-to-multiproject.js.map +1 -1
  114. package/dist/src/cli/commands/switch-project.d.ts.map +1 -1
  115. package/dist/src/cli/commands/switch-project.js +9 -26
  116. package/dist/src/cli/commands/switch-project.js.map +1 -1
  117. package/dist/src/cli/commands/sync-spec-content.js +3 -0
  118. package/dist/src/cli/commands/sync-spec-content.js.map +1 -1
  119. package/dist/src/core/deduplication/command-deduplicator.d.ts +166 -0
  120. package/dist/src/core/deduplication/command-deduplicator.d.ts.map +1 -0
  121. package/dist/src/core/deduplication/command-deduplicator.js +254 -0
  122. package/dist/src/core/deduplication/command-deduplicator.js.map +1 -0
  123. package/dist/src/core/increment/active-increment-manager.d.ts +42 -15
  124. package/dist/src/core/increment/active-increment-manager.d.ts.map +1 -1
  125. package/dist/src/core/increment/active-increment-manager.js +113 -46
  126. package/dist/src/core/increment/active-increment-manager.js.map +1 -1
  127. package/dist/src/core/increment/conflict-resolver.d.ts +40 -0
  128. package/dist/src/core/increment/conflict-resolver.d.ts.map +1 -0
  129. package/dist/src/core/increment/conflict-resolver.js +219 -0
  130. package/dist/src/core/increment/conflict-resolver.js.map +1 -0
  131. package/dist/src/core/increment/discipline-checker.d.ts.map +1 -1
  132. package/dist/src/core/increment/discipline-checker.js +7 -1
  133. package/dist/src/core/increment/discipline-checker.js.map +1 -1
  134. package/dist/src/core/increment/duplicate-detector.d.ts +52 -0
  135. package/dist/src/core/increment/duplicate-detector.d.ts.map +1 -0
  136. package/dist/src/core/increment/duplicate-detector.js +276 -0
  137. package/dist/src/core/increment/duplicate-detector.js.map +1 -0
  138. package/dist/src/core/increment/increment-archiver.d.ts +90 -0
  139. package/dist/src/core/increment/increment-archiver.d.ts.map +1 -0
  140. package/dist/src/core/increment/increment-archiver.js +368 -0
  141. package/dist/src/core/increment/increment-archiver.js.map +1 -0
  142. package/dist/src/core/increment/increment-reopener.d.ts +165 -0
  143. package/dist/src/core/increment/increment-reopener.d.ts.map +1 -0
  144. package/dist/src/core/increment/increment-reopener.js +390 -0
  145. package/dist/src/core/increment/increment-reopener.js.map +1 -0
  146. package/dist/src/core/increment/metadata-manager.d.ts +26 -1
  147. package/dist/src/core/increment/metadata-manager.d.ts.map +1 -1
  148. package/dist/src/core/increment/metadata-manager.js +143 -5
  149. package/dist/src/core/increment/metadata-manager.js.map +1 -1
  150. package/dist/src/core/increment/recent-work-scanner.d.ts +121 -0
  151. package/dist/src/core/increment/recent-work-scanner.d.ts.map +1 -0
  152. package/dist/src/core/increment/recent-work-scanner.js +303 -0
  153. package/dist/src/core/increment/recent-work-scanner.js.map +1 -0
  154. package/dist/src/core/increment/types.d.ts +1 -0
  155. package/dist/src/core/increment/types.d.ts.map +1 -1
  156. package/dist/src/core/increment-utils.d.ts +112 -0
  157. package/dist/src/core/increment-utils.d.ts.map +1 -0
  158. package/dist/src/core/increment-utils.js +210 -0
  159. package/dist/src/core/increment-utils.js.map +1 -0
  160. package/dist/src/core/living-docs/ac-project-specific-generator.d.ts +65 -0
  161. package/dist/src/core/living-docs/ac-project-specific-generator.d.ts.map +1 -0
  162. package/dist/src/core/living-docs/ac-project-specific-generator.js +175 -0
  163. package/dist/src/core/living-docs/ac-project-specific-generator.js.map +1 -0
  164. package/dist/src/core/living-docs/feature-archiver.d.ts +130 -0
  165. package/dist/src/core/living-docs/feature-archiver.d.ts.map +1 -0
  166. package/dist/src/core/living-docs/feature-archiver.js +549 -0
  167. package/dist/src/core/living-docs/feature-archiver.js.map +1 -0
  168. package/dist/src/core/living-docs/feature-id-manager.d.ts +81 -0
  169. package/dist/src/core/living-docs/feature-id-manager.d.ts.map +1 -0
  170. package/dist/src/core/living-docs/feature-id-manager.js +339 -0
  171. package/dist/src/core/living-docs/feature-id-manager.js.map +1 -0
  172. package/dist/src/core/living-docs/hierarchy-mapper.d.ts +144 -83
  173. package/dist/src/core/living-docs/hierarchy-mapper.d.ts.map +1 -1
  174. package/dist/src/core/living-docs/hierarchy-mapper.js +488 -270
  175. package/dist/src/core/living-docs/hierarchy-mapper.js.map +1 -1
  176. package/dist/src/core/living-docs/index.d.ts +6 -0
  177. package/dist/src/core/living-docs/index.d.ts.map +1 -1
  178. package/dist/src/core/living-docs/index.js +6 -0
  179. package/dist/src/core/living-docs/index.js.map +1 -1
  180. package/dist/src/core/living-docs/project-detector.d.ts +6 -0
  181. package/dist/src/core/living-docs/project-detector.d.ts.map +1 -1
  182. package/dist/src/core/living-docs/project-detector.js +35 -1
  183. package/dist/src/core/living-docs/project-detector.js.map +1 -1
  184. package/dist/src/core/living-docs/spec-distributor.d.ts +100 -26
  185. package/dist/src/core/living-docs/spec-distributor.d.ts.map +1 -1
  186. package/dist/src/core/living-docs/spec-distributor.js +1275 -258
  187. package/dist/src/core/living-docs/spec-distributor.js.map +1 -1
  188. package/dist/src/core/living-docs/task-project-specific-generator.d.ts +109 -0
  189. package/dist/src/core/living-docs/task-project-specific-generator.d.ts.map +1 -0
  190. package/dist/src/core/living-docs/task-project-specific-generator.js +221 -0
  191. package/dist/src/core/living-docs/task-project-specific-generator.js.map +1 -0
  192. package/dist/src/core/living-docs/types.d.ts +143 -0
  193. package/dist/src/core/living-docs/types.d.ts.map +1 -1
  194. package/dist/src/core/project-manager.d.ts +2 -17
  195. package/dist/src/core/project-manager.d.ts.map +1 -1
  196. package/dist/src/core/project-manager.js +68 -48
  197. package/dist/src/core/project-manager.js.map +1 -1
  198. package/dist/src/core/spec-content-sync.d.ts +1 -1
  199. package/dist/src/core/spec-content-sync.d.ts.map +1 -1
  200. package/dist/src/core/sync/enhanced-content-builder.d.ts +32 -54
  201. package/dist/src/core/sync/enhanced-content-builder.d.ts.map +1 -1
  202. package/dist/src/core/sync/enhanced-content-builder.js +142 -138
  203. package/dist/src/core/sync/enhanced-content-builder.js.map +1 -1
  204. package/dist/src/core/sync/performance-optimizer.d.ts +153 -0
  205. package/dist/src/core/sync/performance-optimizer.d.ts.map +1 -0
  206. package/dist/src/core/sync/performance-optimizer.js +220 -0
  207. package/dist/src/core/sync/performance-optimizer.js.map +1 -0
  208. package/dist/src/core/sync/retry-handler.d.ts +98 -0
  209. package/dist/src/core/sync/retry-handler.d.ts.map +1 -0
  210. package/dist/src/core/sync/retry-handler.js +196 -0
  211. package/dist/src/core/sync/retry-handler.js.map +1 -0
  212. package/dist/src/core/sync/spec-content-sync.d.ts +88 -0
  213. package/dist/src/core/sync/spec-content-sync.d.ts.map +1 -0
  214. package/dist/src/core/sync/spec-content-sync.js +5 -0
  215. package/dist/src/core/sync/spec-content-sync.js.map +1 -0
  216. package/dist/src/core/sync/types.d.ts +52 -0
  217. package/dist/src/core/sync/types.d.ts.map +1 -0
  218. package/dist/src/core/sync/types.js +5 -0
  219. package/dist/src/core/sync/types.js.map +1 -0
  220. package/dist/src/core/types/config.d.ts +125 -0
  221. package/dist/src/core/types/config.d.ts.map +1 -1
  222. package/dist/src/core/types/config.js +25 -0
  223. package/dist/src/core/types/config.js.map +1 -1
  224. package/dist/src/core/types/increment-metadata.d.ts +10 -0
  225. package/dist/src/core/types/increment-metadata.d.ts.map +1 -1
  226. package/dist/src/core/types/increment-metadata.js +10 -1
  227. package/dist/src/core/types/increment-metadata.js.map +1 -1
  228. package/dist/src/integrations/jira/jira-incremental-mapper.d.ts.map +1 -1
  229. package/dist/src/integrations/jira/jira-incremental-mapper.js +4 -8
  230. package/dist/src/integrations/jira/jira-incremental-mapper.js.map +1 -1
  231. package/dist/src/integrations/jira/jira-mapper.d.ts.map +1 -1
  232. package/dist/src/integrations/jira/jira-mapper.js +4 -8
  233. package/dist/src/integrations/jira/jira-mapper.js.map +1 -1
  234. package/dist/tsconfig.tsbuildinfo +1 -0
  235. package/package.json +1 -1
  236. package/plugins/specweave/COMMANDS.md +13 -4
  237. package/plugins/specweave/agents/pm/AGENT.md +159 -12
  238. package/plugins/specweave/commands/specweave-abandon.md +22 -20
  239. package/plugins/specweave/commands/specweave-archive-features.md +121 -0
  240. package/plugins/specweave/commands/specweave-archive-increments.md +82 -0
  241. package/plugins/specweave/commands/specweave-archive.md +363 -0
  242. package/plugins/specweave/commands/specweave-backlog.md +211 -0
  243. package/plugins/specweave/commands/specweave-fix-duplicates.md +517 -0
  244. package/plugins/specweave/commands/specweave-increment.md +4 -3
  245. package/plugins/specweave/commands/specweave-progress.md +176 -27
  246. package/plugins/specweave/commands/specweave-reopen.md +391 -0
  247. package/plugins/specweave/commands/specweave-restore-feature.md +90 -0
  248. package/plugins/specweave/commands/specweave-restore.md +309 -0
  249. package/plugins/specweave/commands/specweave-resume.md +51 -23
  250. package/plugins/specweave/commands/specweave-status.md +41 -7
  251. package/plugins/specweave/commands/specweave-sync-specs.md +425 -0
  252. package/plugins/specweave/commands/specweave.md +70 -405
  253. package/plugins/specweave/hooks/hooks.json +4 -0
  254. package/plugins/specweave/hooks/lib/sync-spec-content.sh +2 -2
  255. package/plugins/specweave/hooks/post-increment-planning.sh +26 -2
  256. package/plugins/specweave/hooks/post-task-completion.sh +39 -0
  257. package/plugins/specweave/hooks/pre-command-deduplication.sh +83 -0
  258. package/plugins/specweave/hooks/user-prompt-submit.sh +1 -1
  259. package/plugins/specweave/lib/hooks/sync-living-docs.js +2 -0
  260. package/plugins/specweave/lib/hooks/sync-living-docs.ts +4 -0
  261. package/plugins/specweave/lib/hooks/update-ac-status.js +102 -0
  262. package/plugins/specweave/lib/hooks/update-ac-status.ts +192 -0
  263. package/plugins/specweave/skills/archive-increments/SKILL.md +198 -0
  264. package/plugins/specweave/skills/increment-planner/scripts/feature-utils.js +14 -0
  265. package/plugins/specweave/skills/smart-reopen-detector/SKILL.md +244 -0
  266. package/plugins/specweave-ado/lib/ado-spec-content-sync.js +49 -5
  267. package/plugins/specweave-ado/lib/ado-spec-content-sync.ts +72 -6
  268. package/plugins/specweave-ado/lib/enhanced-ado-sync.js +170 -0
  269. package/plugins/specweave-confluent/.claude-plugin/plugin.json +23 -0
  270. package/plugins/specweave-confluent/README.md +375 -0
  271. package/plugins/specweave-confluent/agents/confluent-architect/AGENT.md +306 -0
  272. package/plugins/specweave-confluent/skills/confluent-kafka-connect/SKILL.md +453 -0
  273. package/plugins/specweave-confluent/skills/confluent-ksqldb/SKILL.md +470 -0
  274. package/plugins/specweave-confluent/skills/confluent-schema-registry/SKILL.md +316 -0
  275. package/plugins/specweave-github/agents/github-task-splitter/AGENT.md +2 -2
  276. package/plugins/specweave-github/agents/user-story-updater/AGENT.md +148 -0
  277. package/plugins/specweave-github/commands/specweave-github-cleanup-duplicates.md +1 -1
  278. package/plugins/specweave-github/commands/specweave-github-update-user-story.md +156 -0
  279. package/plugins/specweave-github/hooks/post-task-completion.sh +42 -9
  280. package/plugins/specweave-github/lib/completion-calculator.js +262 -0
  281. package/plugins/specweave-github/lib/completion-calculator.ts +434 -0
  282. package/plugins/specweave-github/lib/duplicate-detector.js +3 -3
  283. package/plugins/specweave-github/lib/duplicate-detector.ts +4 -4
  284. package/plugins/specweave-github/lib/epic-content-builder.js +265 -0
  285. package/plugins/specweave-github/lib/epic-content-builder.ts +376 -0
  286. package/plugins/specweave-github/lib/github-client-v2.js +49 -0
  287. package/plugins/specweave-github/lib/github-client-v2.ts +59 -0
  288. package/plugins/specweave-github/lib/github-epic-sync.js +23 -24
  289. package/plugins/specweave-github/lib/github-epic-sync.ts +30 -5
  290. package/plugins/specweave-github/lib/github-feature-sync.js +381 -0
  291. package/plugins/specweave-github/lib/github-feature-sync.ts +568 -0
  292. package/plugins/specweave-github/lib/github-spec-content-sync.js +40 -10
  293. package/plugins/specweave-github/lib/github-spec-content-sync.ts +82 -14
  294. package/plugins/specweave-github/lib/progress-comment-builder.js +229 -0
  295. package/plugins/specweave-github/lib/progress-comment-builder.ts +324 -0
  296. package/plugins/specweave-github/lib/user-story-content-builder.js +299 -0
  297. package/plugins/specweave-github/lib/user-story-content-builder.ts +413 -0
  298. package/plugins/specweave-github/lib/user-story-issue-builder.js +344 -0
  299. package/plugins/specweave-github/lib/user-story-issue-builder.ts +543 -0
  300. package/plugins/specweave-github/skills/github-issue-standard/SKILL.md +189 -0
  301. package/plugins/specweave-jira/lib/enhanced-jira-sync.js +134 -0
  302. package/plugins/specweave-jira/lib/{enhanced-jira-sync.ts.disabled → enhanced-jira-sync.ts} +26 -52
  303. package/plugins/specweave-kafka/.claude-plugin/plugin.json +26 -0
  304. package/plugins/specweave-kafka/IMPLEMENTATION-COMPLETE.md +483 -0
  305. package/plugins/specweave-kafka/README.md +242 -0
  306. package/plugins/specweave-kafka/agents/kafka-architect/AGENT.md +235 -0
  307. package/plugins/specweave-kafka/agents/kafka-devops/AGENT.md +209 -0
  308. package/plugins/specweave-kafka/agents/kafka-observability/AGENT.md +266 -0
  309. package/plugins/specweave-kafka/commands/deploy.md +99 -0
  310. package/plugins/specweave-kafka/commands/dev-env.md +176 -0
  311. package/plugins/specweave-kafka/commands/mcp-configure.md +101 -0
  312. package/plugins/specweave-kafka/commands/monitor-setup.md +96 -0
  313. package/plugins/specweave-kafka/docker/kafka-local/docker-compose.yml +187 -0
  314. package/plugins/specweave-kafka/docker/redpanda/docker-compose.yml +199 -0
  315. package/plugins/specweave-kafka/docker/templates/consumer-nodejs.js +225 -0
  316. package/plugins/specweave-kafka/docker/templates/consumer-python.py +220 -0
  317. package/plugins/specweave-kafka/docker/templates/producer-nodejs.js +168 -0
  318. package/plugins/specweave-kafka/docker/templates/producer-python.py +167 -0
  319. package/plugins/specweave-kafka/lib/adapters/apache-kafka-adapter.js +438 -0
  320. package/plugins/specweave-kafka/lib/adapters/apache-kafka-adapter.ts +541 -0
  321. package/plugins/specweave-kafka/lib/adapters/platform-adapter.js +47 -0
  322. package/plugins/specweave-kafka/lib/adapters/platform-adapter.ts +343 -0
  323. package/plugins/specweave-kafka/lib/cli/kcat-wrapper.js +258 -0
  324. package/plugins/specweave-kafka/lib/cli/kcat-wrapper.ts +298 -0
  325. package/plugins/specweave-kafka/lib/cli/types.js +10 -0
  326. package/plugins/specweave-kafka/lib/cli/types.ts +92 -0
  327. package/plugins/specweave-kafka/lib/connectors/connector-catalog.js +305 -0
  328. package/plugins/specweave-kafka/lib/connectors/connector-catalog.ts +528 -0
  329. package/plugins/specweave-kafka/lib/documentation/diagram-generator.js +114 -0
  330. package/plugins/specweave-kafka/lib/documentation/diagram-generator.ts +195 -0
  331. package/plugins/specweave-kafka/lib/documentation/exporter.js +210 -0
  332. package/plugins/specweave-kafka/lib/documentation/exporter.ts +338 -0
  333. package/plugins/specweave-kafka/lib/documentation/schema-catalog-generator.js +60 -0
  334. package/plugins/specweave-kafka/lib/documentation/schema-catalog-generator.ts +130 -0
  335. package/plugins/specweave-kafka/lib/documentation/topology-generator.js +143 -0
  336. package/plugins/specweave-kafka/lib/documentation/topology-generator.ts +290 -0
  337. package/plugins/specweave-kafka/lib/mcp/detector.js +298 -0
  338. package/plugins/specweave-kafka/lib/mcp/detector.ts +352 -0
  339. package/plugins/specweave-kafka/lib/mcp/types.js +21 -0
  340. package/plugins/specweave-kafka/lib/mcp/types.ts +77 -0
  341. package/plugins/specweave-kafka/lib/multi-cluster/cluster-config-manager.js +193 -0
  342. package/plugins/specweave-kafka/lib/multi-cluster/cluster-config-manager.ts +362 -0
  343. package/plugins/specweave-kafka/lib/multi-cluster/cluster-switcher.js +188 -0
  344. package/plugins/specweave-kafka/lib/multi-cluster/cluster-switcher.ts +359 -0
  345. package/plugins/specweave-kafka/lib/multi-cluster/health-aggregator.js +195 -0
  346. package/plugins/specweave-kafka/lib/multi-cluster/health-aggregator.ts +380 -0
  347. package/plugins/specweave-kafka/lib/observability/opentelemetry-kafka.js +209 -0
  348. package/plugins/specweave-kafka/lib/observability/opentelemetry-kafka.ts +358 -0
  349. package/plugins/specweave-kafka/lib/patterns/advanced-ksqldb-patterns.js +354 -0
  350. package/plugins/specweave-kafka/lib/patterns/advanced-ksqldb-patterns.ts +563 -0
  351. package/plugins/specweave-kafka/lib/patterns/circuit-breaker-resilience.js +259 -0
  352. package/plugins/specweave-kafka/lib/patterns/circuit-breaker-resilience.ts +516 -0
  353. package/plugins/specweave-kafka/lib/patterns/dead-letter-queue.js +233 -0
  354. package/plugins/specweave-kafka/lib/patterns/dead-letter-queue.ts +423 -0
  355. package/plugins/specweave-kafka/lib/patterns/exactly-once-semantics.js +266 -0
  356. package/plugins/specweave-kafka/lib/patterns/exactly-once-semantics.ts +445 -0
  357. package/plugins/specweave-kafka/lib/patterns/flink-kafka-integration.js +312 -0
  358. package/plugins/specweave-kafka/lib/patterns/flink-kafka-integration.ts +561 -0
  359. package/plugins/specweave-kafka/lib/patterns/multi-dc-replication.js +289 -0
  360. package/plugins/specweave-kafka/lib/patterns/multi-dc-replication.ts +607 -0
  361. package/plugins/specweave-kafka/lib/patterns/rate-limiting-backpressure.js +264 -0
  362. package/plugins/specweave-kafka/lib/patterns/rate-limiting-backpressure.ts +498 -0
  363. package/plugins/specweave-kafka/lib/patterns/stream-processing-optimization.js +263 -0
  364. package/plugins/specweave-kafka/lib/patterns/stream-processing-optimization.ts +549 -0
  365. package/plugins/specweave-kafka/lib/patterns/tiered-storage-compaction.js +205 -0
  366. package/plugins/specweave-kafka/lib/patterns/tiered-storage-compaction.ts +399 -0
  367. package/plugins/specweave-kafka/lib/performance/performance-optimizer.js +249 -0
  368. package/plugins/specweave-kafka/lib/performance/performance-optimizer.ts +427 -0
  369. package/plugins/specweave-kafka/lib/security/kafka-security.js +252 -0
  370. package/plugins/specweave-kafka/lib/security/kafka-security.ts +494 -0
  371. package/plugins/specweave-kafka/lib/utils/capacity-planner.js +203 -0
  372. package/plugins/specweave-kafka/lib/utils/capacity-planner.ts +469 -0
  373. package/plugins/specweave-kafka/lib/utils/config-validator.js +419 -0
  374. package/plugins/specweave-kafka/lib/utils/config-validator.ts +564 -0
  375. package/plugins/specweave-kafka/lib/utils/partitioning.js +329 -0
  376. package/plugins/specweave-kafka/lib/utils/partitioning.ts +473 -0
  377. package/plugins/specweave-kafka/lib/utils/sizing.js +221 -0
  378. package/plugins/specweave-kafka/lib/utils/sizing.ts +374 -0
  379. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-broker-metrics.json +628 -0
  380. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-cluster-overview.json +564 -0
  381. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-consumer-lag.json +509 -0
  382. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-jvm-metrics.json +674 -0
  383. package/plugins/specweave-kafka/monitoring/grafana/dashboards/kafka-topic-metrics.json +578 -0
  384. package/plugins/specweave-kafka/monitoring/grafana/provisioning/dashboards/kafka.yml +17 -0
  385. package/plugins/specweave-kafka/monitoring/grafana/provisioning/datasources/prometheus.yml +17 -0
  386. package/plugins/specweave-kafka/monitoring/prometheus/kafka-alerts.yml +415 -0
  387. package/plugins/specweave-kafka/monitoring/prometheus/kafka-jmx-exporter.yml +256 -0
  388. package/plugins/specweave-kafka/package.json +41 -0
  389. package/plugins/specweave-kafka/skills/kafka-architecture/SKILL.md +647 -0
  390. package/plugins/specweave-kafka/skills/kafka-cli-tools/SKILL.md +433 -0
  391. package/plugins/specweave-kafka/skills/kafka-iac-deployment/SKILL.md +449 -0
  392. package/plugins/specweave-kafka/skills/kafka-kubernetes/SKILL.md +667 -0
  393. package/plugins/specweave-kafka/skills/kafka-mcp-integration/SKILL.md +273 -0
  394. package/plugins/specweave-kafka/skills/kafka-observability/SKILL.md +576 -0
  395. package/plugins/specweave-kafka/templates/config/broker-production.properties +254 -0
  396. package/plugins/specweave-kafka/templates/config/consumer-low-latency.properties +112 -0
  397. package/plugins/specweave-kafka/templates/config/producer-high-throughput.properties +120 -0
  398. package/plugins/specweave-kafka/templates/migration/mirrormaker2-config.properties +234 -0
  399. package/plugins/specweave-kafka/templates/monitoring/grafana/multi-cluster-dashboard.json +686 -0
  400. package/plugins/specweave-kafka/terraform/apache-kafka/main.tf +347 -0
  401. package/plugins/specweave-kafka/terraform/apache-kafka/outputs.tf +107 -0
  402. package/plugins/specweave-kafka/terraform/apache-kafka/templates/kafka-broker-init.sh.tpl +216 -0
  403. package/plugins/specweave-kafka/terraform/apache-kafka/variables.tf +156 -0
  404. package/plugins/specweave-kafka/terraform/aws-msk/main.tf +362 -0
  405. package/plugins/specweave-kafka/terraform/aws-msk/outputs.tf +93 -0
  406. package/plugins/specweave-kafka/terraform/aws-msk/templates/server.properties.tpl +32 -0
  407. package/plugins/specweave-kafka/terraform/aws-msk/variables.tf +235 -0
  408. package/plugins/specweave-kafka/terraform/azure-event-hubs/main.tf +281 -0
  409. package/plugins/specweave-kafka/terraform/azure-event-hubs/outputs.tf +118 -0
  410. package/plugins/specweave-kafka/terraform/azure-event-hubs/variables.tf +148 -0
  411. package/plugins/specweave-kafka/tsconfig.json +21 -0
  412. package/plugins/specweave-kafka-streams/.claude-plugin/plugin.json +23 -0
  413. package/plugins/specweave-kafka-streams/README.md +310 -0
  414. package/plugins/specweave-kafka-streams/skills/kafka-streams-topology/SKILL.md +539 -0
  415. package/plugins/specweave-n8n/.claude-plugin/plugin.json +22 -0
  416. package/plugins/specweave-n8n/README.md +354 -0
  417. package/plugins/specweave-n8n/skills/n8n-kafka-workflows/SKILL.md +504 -0
  418. package/plugins/specweave-release/commands/specweave-release-platform.md +1 -1
  419. package/plugins/specweave-release/hooks/post-task-completion.sh +2 -2
  420. package/src/templates/AGENTS.md.template +601 -7
  421. package/src/templates/CLAUDE.md.template +188 -88
  422. package/plugins/specweave-ado/commands/specweave-ado-sync-spec.md +0 -255
  423. package/plugins/specweave-github/commands/specweave-github-sync-epic.md +0 -248
  424. package/plugins/specweave-github/commands/specweave-github-sync-from.md +0 -147
  425. package/plugins/specweave-github/commands/specweave-github-sync-spec.md +0 -208
  426. package/plugins/specweave-github/commands/specweave-github-sync-tasks.md +0 -530
  427. package/plugins/specweave-jira/commands/specweave-jira-sync-epic.md +0 -267
  428. package/plugins/specweave-jira/commands/specweave-jira-sync-spec.md +0 -240
@@ -0,0 +1,686 @@
1
+ {
2
+ "annotations": {
3
+ "list": [
4
+ {
5
+ "builtIn": 1,
6
+ "datasource": "-- Grafana --",
7
+ "enable": true,
8
+ "hide": true,
9
+ "iconColor": "rgba(0, 211, 255, 1)",
10
+ "name": "Annotations & Alerts",
11
+ "type": "dashboard"
12
+ }
13
+ ]
14
+ },
15
+ "editable": true,
16
+ "gnetId": null,
17
+ "graphTooltip": 0,
18
+ "id": null,
19
+ "links": [],
20
+ "panels": [
21
+ {
22
+ "datasource": "Prometheus",
23
+ "fieldConfig": {
24
+ "defaults": {
25
+ "color": {
26
+ "mode": "thresholds"
27
+ },
28
+ "mappings": [],
29
+ "thresholds": {
30
+ "mode": "absolute",
31
+ "steps": [
32
+ {
33
+ "color": "green",
34
+ "value": null
35
+ },
36
+ {
37
+ "color": "red",
38
+ "value": 80
39
+ }
40
+ ]
41
+ },
42
+ "unit": "none"
43
+ },
44
+ "overrides": []
45
+ },
46
+ "gridPos": {
47
+ "h": 4,
48
+ "w": 6,
49
+ "x": 0,
50
+ "y": 0
51
+ },
52
+ "id": 1,
53
+ "options": {
54
+ "orientation": "auto",
55
+ "reduceOptions": {
56
+ "values": false,
57
+ "calcs": [
58
+ "lastNotNull"
59
+ ],
60
+ "fields": ""
61
+ },
62
+ "showThresholdLabels": false,
63
+ "showThresholdMarkers": true
64
+ },
65
+ "pluginVersion": "8.0.0",
66
+ "targets": [
67
+ {
68
+ "expr": "count(kafka_server_replicamanager_partitioncount{cluster=~\"$cluster\"})",
69
+ "refId": "A"
70
+ }
71
+ ],
72
+ "title": "Total Clusters",
73
+ "type": "gauge"
74
+ },
75
+ {
76
+ "datasource": "Prometheus",
77
+ "fieldConfig": {
78
+ "defaults": {
79
+ "color": {
80
+ "mode": "thresholds"
81
+ },
82
+ "mappings": [],
83
+ "thresholds": {
84
+ "mode": "absolute",
85
+ "steps": [
86
+ {
87
+ "color": "green",
88
+ "value": null
89
+ }
90
+ ]
91
+ },
92
+ "unit": "none"
93
+ },
94
+ "overrides": []
95
+ },
96
+ "gridPos": {
97
+ "h": 4,
98
+ "w": 6,
99
+ "x": 6,
100
+ "y": 0
101
+ },
102
+ "id": 2,
103
+ "options": {
104
+ "orientation": "auto",
105
+ "reduceOptions": {
106
+ "values": false,
107
+ "calcs": [
108
+ "lastNotNull"
109
+ ],
110
+ "fields": ""
111
+ },
112
+ "showThresholdLabels": false,
113
+ "showThresholdMarkers": true
114
+ },
115
+ "pluginVersion": "8.0.0",
116
+ "targets": [
117
+ {
118
+ "expr": "sum(kafka_server_replicamanager_partitioncount{cluster=~\"$cluster\"})",
119
+ "refId": "A"
120
+ }
121
+ ],
122
+ "title": "Total Brokers (All Clusters)",
123
+ "type": "gauge"
124
+ },
125
+ {
126
+ "datasource": "Prometheus",
127
+ "fieldConfig": {
128
+ "defaults": {
129
+ "color": {
130
+ "mode": "thresholds"
131
+ },
132
+ "mappings": [],
133
+ "thresholds": {
134
+ "mode": "absolute",
135
+ "steps": [
136
+ {
137
+ "color": "green",
138
+ "value": null
139
+ }
140
+ ]
141
+ },
142
+ "unit": "none"
143
+ },
144
+ "overrides": []
145
+ },
146
+ "gridPos": {
147
+ "h": 4,
148
+ "w": 6,
149
+ "x": 12,
150
+ "y": 0
151
+ },
152
+ "id": 3,
153
+ "options": {
154
+ "orientation": "auto",
155
+ "reduceOptions": {
156
+ "values": false,
157
+ "calcs": [
158
+ "lastNotNull"
159
+ ],
160
+ "fields": ""
161
+ },
162
+ "showThresholdLabels": false,
163
+ "showThresholdMarkers": true
164
+ },
165
+ "pluginVersion": "8.0.0",
166
+ "targets": [
167
+ {
168
+ "expr": "sum(kafka_server_brokertopicmetrics_messagesinpersec{cluster=~\"$cluster\", topic!=\"\"})",
169
+ "refId": "A"
170
+ }
171
+ ],
172
+ "title": "Total Topics (All Clusters)",
173
+ "type": "gauge"
174
+ },
175
+ {
176
+ "datasource": "Prometheus",
177
+ "fieldConfig": {
178
+ "defaults": {
179
+ "color": {
180
+ "mode": "thresholds"
181
+ },
182
+ "mappings": [],
183
+ "thresholds": {
184
+ "mode": "absolute",
185
+ "steps": [
186
+ {
187
+ "color": "green",
188
+ "value": null
189
+ },
190
+ {
191
+ "color": "yellow",
192
+ "value": 1
193
+ },
194
+ {
195
+ "color": "red",
196
+ "value": 10
197
+ }
198
+ ]
199
+ },
200
+ "unit": "none"
201
+ },
202
+ "overrides": []
203
+ },
204
+ "gridPos": {
205
+ "h": 4,
206
+ "w": 6,
207
+ "x": 18,
208
+ "y": 0
209
+ },
210
+ "id": 4,
211
+ "options": {
212
+ "orientation": "auto",
213
+ "reduceOptions": {
214
+ "values": false,
215
+ "calcs": [
216
+ "lastNotNull"
217
+ ],
218
+ "fields": ""
219
+ },
220
+ "showThresholdLabels": false,
221
+ "showThresholdMarkers": true
222
+ },
223
+ "pluginVersion": "8.0.0",
224
+ "targets": [
225
+ {
226
+ "expr": "sum(kafka_server_replicamanager_underreplicatedpartitions{cluster=~\"$cluster\"})",
227
+ "refId": "A"
228
+ }
229
+ ],
230
+ "title": "Under-Replicated Partitions (All Clusters)",
231
+ "type": "gauge"
232
+ },
233
+ {
234
+ "datasource": "Prometheus",
235
+ "fieldConfig": {
236
+ "defaults": {
237
+ "color": {
238
+ "mode": "palette-classic"
239
+ },
240
+ "custom": {
241
+ "axisLabel": "",
242
+ "axisPlacement": "auto",
243
+ "barAlignment": 0,
244
+ "drawStyle": "line",
245
+ "fillOpacity": 10,
246
+ "gradientMode": "none",
247
+ "hideFrom": {
248
+ "tooltip": false,
249
+ "viz": false,
250
+ "legend": false
251
+ },
252
+ "lineInterpolation": "linear",
253
+ "lineWidth": 1,
254
+ "pointSize": 5,
255
+ "scaleDistribution": {
256
+ "type": "linear"
257
+ },
258
+ "showPoints": "never",
259
+ "spanNulls": true,
260
+ "stacking": {
261
+ "group": "A",
262
+ "mode": "none"
263
+ },
264
+ "thresholdsStyle": {
265
+ "mode": "off"
266
+ }
267
+ },
268
+ "mappings": [],
269
+ "thresholds": {
270
+ "mode": "absolute",
271
+ "steps": [
272
+ {
273
+ "color": "green",
274
+ "value": null
275
+ },
276
+ {
277
+ "color": "red",
278
+ "value": 80
279
+ }
280
+ ]
281
+ },
282
+ "unit": "msg/s"
283
+ },
284
+ "overrides": []
285
+ },
286
+ "gridPos": {
287
+ "h": 8,
288
+ "w": 12,
289
+ "x": 0,
290
+ "y": 4
291
+ },
292
+ "id": 5,
293
+ "options": {
294
+ "legend": {
295
+ "calcs": [],
296
+ "displayMode": "list",
297
+ "placement": "bottom"
298
+ },
299
+ "tooltip": {
300
+ "mode": "single"
301
+ }
302
+ },
303
+ "pluginVersion": "8.0.0",
304
+ "targets": [
305
+ {
306
+ "expr": "sum by (cluster) (rate(kafka_server_brokertopicmetrics_messagesinpersec{cluster=~\"$cluster\"}[5m]))",
307
+ "legendFormat": "{{cluster}}",
308
+ "refId": "A"
309
+ }
310
+ ],
311
+ "title": "Messages In Per Second (Per Cluster)",
312
+ "type": "timeseries"
313
+ },
314
+ {
315
+ "datasource": "Prometheus",
316
+ "fieldConfig": {
317
+ "defaults": {
318
+ "color": {
319
+ "mode": "palette-classic"
320
+ },
321
+ "custom": {
322
+ "axisLabel": "",
323
+ "axisPlacement": "auto",
324
+ "barAlignment": 0,
325
+ "drawStyle": "line",
326
+ "fillOpacity": 10,
327
+ "gradientMode": "none",
328
+ "hideFrom": {
329
+ "tooltip": false,
330
+ "viz": false,
331
+ "legend": false
332
+ },
333
+ "lineInterpolation": "linear",
334
+ "lineWidth": 1,
335
+ "pointSize": 5,
336
+ "scaleDistribution": {
337
+ "type": "linear"
338
+ },
339
+ "showPoints": "never",
340
+ "spanNulls": true,
341
+ "stacking": {
342
+ "group": "A",
343
+ "mode": "none"
344
+ },
345
+ "thresholdsStyle": {
346
+ "mode": "off"
347
+ }
348
+ },
349
+ "mappings": [],
350
+ "thresholds": {
351
+ "mode": "absolute",
352
+ "steps": [
353
+ {
354
+ "color": "green",
355
+ "value": null
356
+ },
357
+ {
358
+ "color": "red",
359
+ "value": 80
360
+ }
361
+ ]
362
+ },
363
+ "unit": "Bps"
364
+ },
365
+ "overrides": []
366
+ },
367
+ "gridPos": {
368
+ "h": 8,
369
+ "w": 12,
370
+ "x": 12,
371
+ "y": 4
372
+ },
373
+ "id": 6,
374
+ "options": {
375
+ "legend": {
376
+ "calcs": [],
377
+ "displayMode": "list",
378
+ "placement": "bottom"
379
+ },
380
+ "tooltip": {
381
+ "mode": "single"
382
+ }
383
+ },
384
+ "pluginVersion": "8.0.0",
385
+ "targets": [
386
+ {
387
+ "expr": "sum by (cluster) (rate(kafka_server_brokertopicmetrics_bytesinpersec{cluster=~\"$cluster\"}[5m]))",
388
+ "legendFormat": "{{cluster}}",
389
+ "refId": "A"
390
+ }
391
+ ],
392
+ "title": "Bytes In Per Second (Per Cluster)",
393
+ "type": "timeseries"
394
+ },
395
+ {
396
+ "datasource": "Prometheus",
397
+ "fieldConfig": {
398
+ "defaults": {
399
+ "color": {
400
+ "mode": "thresholds"
401
+ },
402
+ "custom": {
403
+ "align": "auto",
404
+ "displayMode": "auto"
405
+ },
406
+ "mappings": [],
407
+ "thresholds": {
408
+ "mode": "absolute",
409
+ "steps": [
410
+ {
411
+ "color": "green",
412
+ "value": null
413
+ },
414
+ {
415
+ "color": "yellow",
416
+ "value": 1
417
+ },
418
+ {
419
+ "color": "red",
420
+ "value": 10
421
+ }
422
+ ]
423
+ }
424
+ },
425
+ "overrides": [
426
+ {
427
+ "matcher": {
428
+ "id": "byName",
429
+ "options": "Status"
430
+ },
431
+ "properties": [
432
+ {
433
+ "id": "custom.displayMode",
434
+ "value": "color-background"
435
+ }
436
+ ]
437
+ }
438
+ ]
439
+ },
440
+ "gridPos": {
441
+ "h": 8,
442
+ "w": 24,
443
+ "x": 0,
444
+ "y": 12
445
+ },
446
+ "id": 7,
447
+ "options": {
448
+ "showHeader": true
449
+ },
450
+ "pluginVersion": "8.0.0",
451
+ "targets": [
452
+ {
453
+ "expr": "kafka_server_replicamanager_partitioncount{cluster=~\"$cluster\"}",
454
+ "format": "table",
455
+ "instant": true,
456
+ "refId": "A"
457
+ }
458
+ ],
459
+ "title": "Cluster Health Summary",
460
+ "transformations": [
461
+ {
462
+ "id": "organize",
463
+ "options": {
464
+ "excludeByName": {
465
+ "Time": true,
466
+ "__name__": true,
467
+ "job": true,
468
+ "instance": true
469
+ },
470
+ "indexByName": {},
471
+ "renameByName": {
472
+ "cluster": "Cluster",
473
+ "Value": "Brokers"
474
+ }
475
+ }
476
+ }
477
+ ],
478
+ "type": "table"
479
+ },
480
+ {
481
+ "datasource": "Prometheus",
482
+ "fieldConfig": {
483
+ "defaults": {
484
+ "color": {
485
+ "mode": "palette-classic"
486
+ },
487
+ "custom": {
488
+ "axisLabel": "",
489
+ "axisPlacement": "auto",
490
+ "barAlignment": 0,
491
+ "drawStyle": "line",
492
+ "fillOpacity": 10,
493
+ "gradientMode": "none",
494
+ "hideFrom": {
495
+ "tooltip": false,
496
+ "viz": false,
497
+ "legend": false
498
+ },
499
+ "lineInterpolation": "linear",
500
+ "lineWidth": 1,
501
+ "pointSize": 5,
502
+ "scaleDistribution": {
503
+ "type": "linear"
504
+ },
505
+ "showPoints": "never",
506
+ "spanNulls": true,
507
+ "stacking": {
508
+ "group": "A",
509
+ "mode": "none"
510
+ },
511
+ "thresholdsStyle": {
512
+ "mode": "off"
513
+ }
514
+ },
515
+ "mappings": [],
516
+ "thresholds": {
517
+ "mode": "absolute",
518
+ "steps": [
519
+ {
520
+ "color": "green",
521
+ "value": null
522
+ },
523
+ {
524
+ "color": "red",
525
+ "value": 80
526
+ }
527
+ ]
528
+ },
529
+ "unit": "none"
530
+ },
531
+ "overrides": []
532
+ },
533
+ "gridPos": {
534
+ "h": 8,
535
+ "w": 12,
536
+ "x": 0,
537
+ "y": 20
538
+ },
539
+ "id": 8,
540
+ "options": {
541
+ "legend": {
542
+ "calcs": [],
543
+ "displayMode": "list",
544
+ "placement": "bottom"
545
+ },
546
+ "tooltip": {
547
+ "mode": "single"
548
+ }
549
+ },
550
+ "pluginVersion": "8.0.0",
551
+ "targets": [
552
+ {
553
+ "expr": "kafka_server_replicamanager_underreplicatedpartitions{cluster=~\"$cluster\"}",
554
+ "legendFormat": "{{cluster}}",
555
+ "refId": "A"
556
+ }
557
+ ],
558
+ "title": "Under-Replicated Partitions (Per Cluster)",
559
+ "type": "timeseries"
560
+ },
561
+ {
562
+ "datasource": "Prometheus",
563
+ "fieldConfig": {
564
+ "defaults": {
565
+ "color": {
566
+ "mode": "palette-classic"
567
+ },
568
+ "custom": {
569
+ "axisLabel": "",
570
+ "axisPlacement": "auto",
571
+ "barAlignment": 0,
572
+ "drawStyle": "line",
573
+ "fillOpacity": 10,
574
+ "gradientMode": "none",
575
+ "hideFrom": {
576
+ "tooltip": false,
577
+ "viz": false,
578
+ "legend": false
579
+ },
580
+ "lineInterpolation": "linear",
581
+ "lineWidth": 1,
582
+ "pointSize": 5,
583
+ "scaleDistribution": {
584
+ "type": "linear"
585
+ },
586
+ "showPoints": "never",
587
+ "spanNulls": true,
588
+ "stacking": {
589
+ "group": "A",
590
+ "mode": "none"
591
+ },
592
+ "thresholdsStyle": {
593
+ "mode": "off"
594
+ }
595
+ },
596
+ "mappings": [],
597
+ "thresholds": {
598
+ "mode": "absolute",
599
+ "steps": [
600
+ {
601
+ "color": "green",
602
+ "value": null
603
+ },
604
+ {
605
+ "color": "red",
606
+ "value": 80
607
+ }
608
+ ]
609
+ },
610
+ "unit": "records"
611
+ },
612
+ "overrides": []
613
+ },
614
+ "gridPos": {
615
+ "h": 8,
616
+ "w": 12,
617
+ "x": 12,
618
+ "y": 20
619
+ },
620
+ "id": 9,
621
+ "options": {
622
+ "legend": {
623
+ "calcs": [],
624
+ "displayMode": "list",
625
+ "placement": "bottom"
626
+ },
627
+ "tooltip": {
628
+ "mode": "single"
629
+ }
630
+ },
631
+ "pluginVersion": "8.0.0",
632
+ "targets": [
633
+ {
634
+ "expr": "sum by (cluster, group) (kafka_consumer_group_lag{cluster=~\"$cluster\"})",
635
+ "legendFormat": "{{cluster}} - {{group}}",
636
+ "refId": "A"
637
+ }
638
+ ],
639
+ "title": "Consumer Lag (Per Cluster)",
640
+ "type": "timeseries"
641
+ }
642
+ ],
643
+ "schemaVersion": 27,
644
+ "style": "dark",
645
+ "tags": ["kafka", "multi-cluster"],
646
+ "templating": {
647
+ "list": [
648
+ {
649
+ "allValue": null,
650
+ "current": {
651
+ "selected": true,
652
+ "text": "All",
653
+ "value": "$__all"
654
+ },
655
+ "datasource": "Prometheus",
656
+ "definition": "label_values(kafka_server_replicamanager_partitioncount, cluster)",
657
+ "description": "Select Kafka cluster",
658
+ "error": null,
659
+ "hide": 0,
660
+ "includeAll": true,
661
+ "label": "Cluster",
662
+ "multi": true,
663
+ "name": "cluster",
664
+ "options": [],
665
+ "query": {
666
+ "query": "label_values(kafka_server_replicamanager_partitioncount, cluster)",
667
+ "refId": "StandardVariableQuery"
668
+ },
669
+ "refresh": 1,
670
+ "regex": "",
671
+ "skipUrlSync": false,
672
+ "sort": 1,
673
+ "type": "query"
674
+ }
675
+ ]
676
+ },
677
+ "time": {
678
+ "from": "now-6h",
679
+ "to": "now"
680
+ },
681
+ "timepicker": {},
682
+ "timezone": "",
683
+ "title": "Kafka Multi-Cluster Dashboard",
684
+ "uid": "kafka-multi-cluster",
685
+ "version": 1
686
+ }