@confluentinc/mcp-confluent 1.2.2 → 1.4.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 (508) hide show
  1. package/README.md +299 -240
  2. package/assets/oauth-templates/callback-failure.html +22 -0
  3. package/assets/oauth-templates/callback-success.html +99 -0
  4. package/assets/oauth-templates/logo.html +91 -0
  5. package/assets/oauth-templates/styles.html +110 -0
  6. package/config.example.yaml +149 -0
  7. package/config.oauth.example.yaml +45 -0
  8. package/dist/cli.d.ts +59 -12
  9. package/dist/cli.d.ts.map +1 -1
  10. package/dist/cli.js +131 -61
  11. package/dist/cli.js.map +1 -1
  12. package/dist/config/env-config.d.ts +33 -0
  13. package/dist/config/env-config.d.ts.map +1 -0
  14. package/dist/config/env-config.js +478 -0
  15. package/dist/config/env-config.js.map +1 -0
  16. package/dist/config/index.d.ts +31 -0
  17. package/dist/config/index.d.ts.map +1 -0
  18. package/dist/config/index.js +76 -0
  19. package/dist/config/index.js.map +1 -0
  20. package/dist/config/interpolation.d.ts +9 -0
  21. package/dist/config/interpolation.d.ts.map +1 -0
  22. package/dist/config/interpolation.js +51 -0
  23. package/dist/config/interpolation.js.map +1 -0
  24. package/dist/config/models.d.ts +399 -0
  25. package/dist/config/models.d.ts.map +1 -0
  26. package/dist/config/models.js +406 -0
  27. package/dist/config/models.js.map +1 -0
  28. package/dist/config/validation.d.ts +9 -0
  29. package/dist/config/validation.d.ts.map +1 -0
  30. package/dist/config/validation.js +46 -0
  31. package/dist/config/validation.js.map +1 -0
  32. package/dist/confluent/base-client-manager.d.ts +133 -0
  33. package/dist/confluent/base-client-manager.d.ts.map +1 -0
  34. package/dist/confluent/base-client-manager.js +188 -0
  35. package/dist/confluent/base-client-manager.js.map +1 -0
  36. package/dist/confluent/client-manager.d.ts +42 -77
  37. package/dist/confluent/client-manager.d.ts.map +1 -1
  38. package/dist/confluent/client-manager.js +5 -213
  39. package/dist/confluent/client-manager.js.map +1 -1
  40. package/dist/confluent/config-telemetry.d.ts +41 -0
  41. package/dist/confluent/config-telemetry.d.ts.map +1 -0
  42. package/dist/confluent/config-telemetry.js +17 -0
  43. package/dist/confluent/config-telemetry.js.map +1 -0
  44. package/dist/confluent/direct-client-manager.d.ts +43 -0
  45. package/dist/confluent/direct-client-manager.d.ts.map +1 -0
  46. package/dist/confluent/direct-client-manager.js +154 -0
  47. package/dist/confluent/direct-client-manager.js.map +1 -0
  48. package/dist/confluent/middleware.d.ts +32 -4
  49. package/dist/confluent/middleware.d.ts.map +1 -1
  50. package/dist/confluent/middleware.js +46 -2
  51. package/dist/confluent/middleware.js.map +1 -1
  52. package/dist/confluent/node-deps.d.ts +33 -39
  53. package/dist/confluent/node-deps.d.ts.map +1 -1
  54. package/dist/confluent/node-deps.js +48 -7
  55. package/dist/confluent/node-deps.js.map +1 -1
  56. package/dist/confluent/oauth/auth-context.d.ts +94 -0
  57. package/dist/confluent/oauth/auth-context.d.ts.map +1 -0
  58. package/dist/confluent/oauth/auth-context.js +323 -0
  59. package/dist/confluent/oauth/auth-context.js.map +1 -0
  60. package/dist/confluent/oauth/auth0-config.d.ts +12 -0
  61. package/dist/confluent/oauth/auth0-config.d.ts.map +1 -0
  62. package/dist/confluent/oauth/auth0-config.js +43 -0
  63. package/dist/confluent/oauth/auth0-config.js.map +1 -0
  64. package/dist/confluent/oauth/callback-pages.d.ts +13 -0
  65. package/dist/confluent/oauth/callback-pages.d.ts.map +1 -0
  66. package/dist/confluent/oauth/callback-pages.js +47 -0
  67. package/dist/confluent/oauth/callback-pages.js.map +1 -0
  68. package/dist/confluent/oauth/crypto-utils.d.ts +16 -0
  69. package/dist/confluent/oauth/crypto-utils.d.ts.map +1 -0
  70. package/dist/confluent/oauth/crypto-utils.js +23 -0
  71. package/dist/confluent/oauth/crypto-utils.js.map +1 -0
  72. package/dist/confluent/oauth/errors.d.ts +27 -0
  73. package/dist/confluent/oauth/errors.d.ts.map +1 -0
  74. package/dist/confluent/oauth/errors.js +6 -0
  75. package/dist/confluent/oauth/errors.js.map +1 -0
  76. package/dist/confluent/oauth/oauth-holder.d.ts +34 -0
  77. package/dist/confluent/oauth/oauth-holder.d.ts.map +1 -0
  78. package/dist/confluent/oauth/oauth-holder.js +155 -0
  79. package/dist/confluent/oauth/oauth-holder.js.map +1 -0
  80. package/dist/confluent/oauth/pkce-login.d.ts +45 -0
  81. package/dist/confluent/oauth/pkce-login.d.ts.map +1 -0
  82. package/dist/confluent/oauth/pkce-login.js +270 -0
  83. package/dist/confluent/oauth/pkce-login.js.map +1 -0
  84. package/dist/confluent/oauth/token-chain.d.ts +53 -0
  85. package/dist/confluent/oauth/token-chain.d.ts.map +1 -0
  86. package/dist/confluent/oauth/token-chain.js +141 -0
  87. package/dist/confluent/oauth/token-chain.js.map +1 -0
  88. package/dist/confluent/oauth/token-lifetimes.d.ts +13 -0
  89. package/dist/confluent/oauth/token-lifetimes.d.ts.map +1 -0
  90. package/dist/confluent/oauth/token-lifetimes.js +13 -0
  91. package/dist/confluent/oauth/token-lifetimes.js.map +1 -0
  92. package/dist/confluent/oauth/types.d.ts +68 -0
  93. package/dist/confluent/oauth/types.d.ts.map +1 -0
  94. package/dist/confluent/oauth/types.js +2 -0
  95. package/dist/confluent/oauth/types.js.map +1 -0
  96. package/dist/confluent/oauth-client-manager.d.ts +78 -0
  97. package/dist/confluent/oauth-client-manager.d.ts.map +1 -0
  98. package/dist/confluent/oauth-client-manager.js +265 -0
  99. package/dist/confluent/oauth-client-manager.js.map +1 -0
  100. package/dist/confluent/oauth-resource-resolvers.d.ts +6 -0
  101. package/dist/confluent/oauth-resource-resolvers.d.ts.map +1 -0
  102. package/dist/confluent/oauth-resource-resolvers.js +65 -0
  103. package/dist/confluent/oauth-resource-resolvers.js.map +1 -0
  104. package/dist/confluent/schema-registry-helper.d.ts +5 -9
  105. package/dist/confluent/schema-registry-helper.d.ts.map +1 -1
  106. package/dist/confluent/schema-registry-helper.js +1 -9
  107. package/dist/confluent/schema-registry-helper.js.map +1 -1
  108. package/dist/confluent/telemetry.d.ts +38 -1
  109. package/dist/confluent/telemetry.d.ts.map +1 -1
  110. package/dist/confluent/telemetry.js +37 -8
  111. package/dist/confluent/telemetry.js.map +1 -1
  112. package/dist/confluent/tools/base-tools.d.ts +140 -23
  113. package/dist/confluent/tools/base-tools.d.ts.map +1 -1
  114. package/dist/confluent/tools/base-tools.js +98 -4
  115. package/dist/confluent/tools/base-tools.js.map +1 -1
  116. package/dist/confluent/tools/cluster-arg-resolvers.d.ts +75 -0
  117. package/dist/confluent/tools/cluster-arg-resolvers.d.ts.map +1 -0
  118. package/dist/confluent/tools/cluster-arg-resolvers.js +127 -0
  119. package/dist/confluent/tools/cluster-arg-resolvers.js.map +1 -0
  120. package/dist/confluent/tools/connection-predicates.d.ts +176 -0
  121. package/dist/confluent/tools/connection-predicates.d.ts.map +1 -0
  122. package/dist/confluent/tools/connection-predicates.js +284 -0
  123. package/dist/confluent/tools/connection-predicates.js.map +1 -0
  124. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.d.ts +5 -6
  125. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.d.ts.map +1 -1
  126. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.js +40 -11
  127. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.js.map +1 -1
  128. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.d.ts +6 -6
  129. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.d.ts.map +1 -1
  130. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.js +6 -9
  131. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.js.map +1 -1
  132. package/dist/confluent/tools/handlers/catalog/create-topic-tags.d.ts +6 -6
  133. package/dist/confluent/tools/handlers/catalog/create-topic-tags.d.ts.map +1 -1
  134. package/dist/confluent/tools/handlers/catalog/create-topic-tags.js +6 -9
  135. package/dist/confluent/tools/handlers/catalog/create-topic-tags.js.map +1 -1
  136. package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts +6 -6
  137. package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts.map +1 -1
  138. package/dist/confluent/tools/handlers/catalog/delete-tag.js +6 -9
  139. package/dist/confluent/tools/handlers/catalog/delete-tag.js.map +1 -1
  140. package/dist/confluent/tools/handlers/catalog/list-tags.d.ts +6 -6
  141. package/dist/confluent/tools/handlers/catalog/list-tags.d.ts.map +1 -1
  142. package/dist/confluent/tools/handlers/catalog/list-tags.js +6 -9
  143. package/dist/confluent/tools/handlers/catalog/list-tags.js.map +1 -1
  144. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts +6 -6
  145. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts.map +1 -1
  146. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.js +6 -9
  147. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.js.map +1 -1
  148. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.d.ts +5 -6
  149. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.d.ts.map +1 -1
  150. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js +11 -13
  151. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js.map +1 -1
  152. package/dist/confluent/tools/handlers/connect/connect-tool-handler.d.ts +34 -0
  153. package/dist/confluent/tools/handlers/connect/connect-tool-handler.d.ts.map +1 -0
  154. package/dist/confluent/tools/handlers/connect/connect-tool-handler.js +47 -0
  155. package/dist/confluent/tools/handlers/connect/connect-tool-handler.js.map +1 -0
  156. package/dist/confluent/tools/handlers/connect/create-connector-handler.d.ts +11 -7
  157. package/dist/confluent/tools/handlers/connect/create-connector-handler.d.ts.map +1 -1
  158. package/dist/confluent/tools/handlers/connect/create-connector-handler.js +21 -21
  159. package/dist/confluent/tools/handlers/connect/create-connector-handler.js.map +1 -1
  160. package/dist/confluent/tools/handlers/connect/delete-connector-handler.d.ts +6 -7
  161. package/dist/confluent/tools/handlers/connect/delete-connector-handler.d.ts.map +1 -1
  162. package/dist/confluent/tools/handlers/connect/delete-connector-handler.js +10 -15
  163. package/dist/confluent/tools/handlers/connect/delete-connector-handler.js.map +1 -1
  164. package/dist/confluent/tools/handlers/connect/get-connector-config-handler.d.ts +9 -0
  165. package/dist/confluent/tools/handlers/connect/get-connector-config-handler.d.ts.map +1 -0
  166. package/dist/confluent/tools/handlers/connect/get-connector-config-handler.js +35 -0
  167. package/dist/confluent/tools/handlers/connect/get-connector-config-handler.js.map +1 -0
  168. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.d.ts +9 -0
  169. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.d.ts.map +1 -0
  170. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.js +66 -0
  171. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.js.map +1 -0
  172. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.d.ts +9 -0
  173. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.d.ts.map +1 -0
  174. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.js +131 -0
  175. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.js.map +1 -0
  176. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.d.ts +9 -0
  177. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.d.ts.map +1 -0
  178. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.js +244 -0
  179. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.js.map +1 -0
  180. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.d.ts +9 -0
  181. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.d.ts.map +1 -0
  182. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.js +35 -0
  183. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.js.map +1 -0
  184. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.d.ts +9 -0
  185. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.d.ts.map +1 -0
  186. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.js +44 -0
  187. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.js.map +1 -0
  188. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.d.ts +9 -0
  189. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.d.ts.map +1 -0
  190. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.js +35 -0
  191. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.js.map +1 -0
  192. package/dist/confluent/tools/handlers/connect/list-connectors-handler.d.ts +6 -7
  193. package/dist/confluent/tools/handlers/connect/list-connectors-handler.d.ts.map +1 -1
  194. package/dist/confluent/tools/handlers/connect/list-connectors-handler.js +15 -17
  195. package/dist/confluent/tools/handlers/connect/list-connectors-handler.js.map +1 -1
  196. package/dist/confluent/tools/handlers/connect/pause-connector-handler.d.ts +9 -0
  197. package/dist/confluent/tools/handlers/connect/pause-connector-handler.d.ts.map +1 -0
  198. package/dist/confluent/tools/handlers/connect/pause-connector-handler.js +35 -0
  199. package/dist/confluent/tools/handlers/connect/pause-connector-handler.js.map +1 -0
  200. package/dist/confluent/tools/handlers/connect/restart-connector-handler.d.ts +9 -0
  201. package/dist/confluent/tools/handlers/connect/restart-connector-handler.d.ts.map +1 -0
  202. package/dist/confluent/tools/handlers/connect/restart-connector-handler.js +35 -0
  203. package/dist/confluent/tools/handlers/connect/restart-connector-handler.js.map +1 -0
  204. package/dist/confluent/tools/handlers/connect/resume-connector-handler.d.ts +9 -0
  205. package/dist/confluent/tools/handlers/connect/resume-connector-handler.d.ts.map +1 -0
  206. package/dist/confluent/tools/handlers/connect/resume-connector-handler.js +35 -0
  207. package/dist/confluent/tools/handlers/connect/resume-connector-handler.js.map +1 -0
  208. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.d.ts +9 -0
  209. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.d.ts.map +1 -0
  210. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.js +44 -0
  211. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.js.map +1 -0
  212. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.d.ts +58 -0
  213. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.d.ts.map +1 -0
  214. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.js +135 -0
  215. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.js.map +1 -0
  216. package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.d.ts +18 -0
  217. package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.d.ts.map +1 -0
  218. package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.js +235 -0
  219. package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.js.map +1 -0
  220. package/dist/confluent/tools/handlers/docs/search-product-docs-handler.d.ts +14 -0
  221. package/dist/confluent/tools/handlers/docs/search-product-docs-handler.d.ts.map +1 -0
  222. package/dist/confluent/tools/handlers/docs/search-product-docs-handler.js +286 -0
  223. package/dist/confluent/tools/handlers/docs/search-product-docs-handler.js.map +1 -0
  224. package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts +11 -12
  225. package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts.map +1 -1
  226. package/dist/confluent/tools/handlers/environments/list-environments-handler.js +11 -14
  227. package/dist/confluent/tools/handlers/environments/list-environments-handler.js.map +1 -1
  228. package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts +5 -6
  229. package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts.map +1 -1
  230. package/dist/confluent/tools/handlers/environments/read-environment-handler.js +6 -9
  231. package/dist/confluent/tools/handlers/environments/read-environment-handler.js.map +1 -1
  232. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.d.ts +32 -11
  233. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.d.ts.map +1 -1
  234. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.js +22 -16
  235. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.js.map +1 -1
  236. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.d.ts +5 -7
  237. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.d.ts.map +1 -1
  238. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.js +34 -30
  239. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.js.map +1 -1
  240. package/dist/confluent/tools/handlers/flink/catalog/flink-catalog-tool-handler.d.ts +14 -0
  241. package/dist/confluent/tools/handlers/flink/catalog/flink-catalog-tool-handler.d.ts.map +1 -0
  242. package/dist/confluent/tools/handlers/flink/catalog/flink-catalog-tool-handler.js +15 -0
  243. package/dist/confluent/tools/handlers/flink/catalog/flink-catalog-tool-handler.js.map +1 -0
  244. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.d.ts +5 -7
  245. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.d.ts.map +1 -1
  246. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.js +34 -30
  247. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.js.map +1 -1
  248. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.d.ts +5 -7
  249. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.d.ts.map +1 -1
  250. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.js +21 -24
  251. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.js.map +1 -1
  252. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.d.ts +5 -7
  253. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.d.ts.map +1 -1
  254. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.js +21 -24
  255. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.js.map +1 -1
  256. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.d.ts +5 -7
  257. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.d.ts.map +1 -1
  258. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.js +22 -33
  259. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.js.map +1 -1
  260. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.d.ts +5 -7
  261. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.d.ts.map +1 -1
  262. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.js +18 -23
  263. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.js.map +1 -1
  264. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.d.ts +5 -7
  265. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.d.ts.map +1 -1
  266. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.js +7 -13
  267. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.js.map +1 -1
  268. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.d.ts +5 -7
  269. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.d.ts.map +1 -1
  270. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.js +7 -13
  271. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.js.map +1 -1
  272. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.d.ts +5 -7
  273. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.d.ts.map +1 -1
  274. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.js +8 -15
  275. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.js.map +1 -1
  276. package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.d.ts +2 -2
  277. package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.d.ts.map +1 -1
  278. package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.js.map +1 -1
  279. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.d.ts +7 -7
  280. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.d.ts.map +1 -1
  281. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.js +11 -17
  282. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.js.map +1 -1
  283. package/dist/confluent/tools/handlers/flink/flink-sql-helper.d.ts +15 -2
  284. package/dist/confluent/tools/handlers/flink/flink-sql-helper.d.ts.map +1 -1
  285. package/dist/confluent/tools/handlers/flink/flink-sql-helper.js.map +1 -1
  286. package/dist/confluent/tools/handlers/flink/flink-tool-handler.d.ts +22 -0
  287. package/dist/confluent/tools/handlers/flink/flink-tool-handler.d.ts.map +1 -0
  288. package/dist/confluent/tools/handlers/flink/flink-tool-handler.js +32 -0
  289. package/dist/confluent/tools/handlers/flink/flink-tool-handler.js.map +1 -0
  290. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.d.ts +5 -7
  291. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.d.ts.map +1 -1
  292. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.js +7 -13
  293. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.js.map +1 -1
  294. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.d.ts +5 -7
  295. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.d.ts.map +1 -1
  296. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js +9 -17
  297. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js.map +1 -1
  298. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.d.ts +5 -7
  299. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.d.ts.map +1 -1
  300. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.js +7 -13
  301. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.js.map +1 -1
  302. package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts +5 -6
  303. package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts.map +1 -1
  304. package/dist/confluent/tools/handlers/kafka/alter-topic-config.js +22 -20
  305. package/dist/confluent/tools/handlers/kafka/alter-topic-config.js.map +1 -1
  306. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.d.ts +216 -30
  307. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.d.ts.map +1 -1
  308. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js +797 -70
  309. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js.map +1 -1
  310. package/dist/confluent/tools/handlers/kafka/consumer-group-enums.d.ts +48 -0
  311. package/dist/confluent/tools/handlers/kafka/consumer-group-enums.d.ts.map +1 -0
  312. package/dist/confluent/tools/handlers/kafka/consumer-group-enums.js +84 -0
  313. package/dist/confluent/tools/handlers/kafka/consumer-group-enums.js.map +1 -0
  314. package/dist/confluent/tools/handlers/kafka/consumer-group-helpers.d.ts +54 -0
  315. package/dist/confluent/tools/handlers/kafka/consumer-group-helpers.d.ts.map +1 -0
  316. package/dist/confluent/tools/handlers/kafka/consumer-group-helpers.js +89 -0
  317. package/dist/confluent/tools/handlers/kafka/consumer-group-helpers.js.map +1 -0
  318. package/dist/confluent/tools/handlers/kafka/create-topics-handler.d.ts +5 -5
  319. package/dist/confluent/tools/handlers/kafka/create-topics-handler.d.ts.map +1 -1
  320. package/dist/confluent/tools/handlers/kafka/create-topics-handler.js +52 -15
  321. package/dist/confluent/tools/handlers/kafka/create-topics-handler.js.map +1 -1
  322. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts +5 -5
  323. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts.map +1 -1
  324. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js +26 -8
  325. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js.map +1 -1
  326. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.d.ts +64 -0
  327. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.d.ts.map +1 -0
  328. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.js +140 -0
  329. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.js.map +1 -0
  330. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.d.ts +73 -0
  331. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.d.ts.map +1 -0
  332. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.js +337 -0
  333. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.js.map +1 -0
  334. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.d.ts +43 -0
  335. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.d.ts.map +1 -0
  336. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.js +123 -0
  337. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.js.map +1 -0
  338. package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts +5 -6
  339. package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts.map +1 -1
  340. package/dist/confluent/tools/handlers/kafka/get-topic-config.js +22 -20
  341. package/dist/confluent/tools/handlers/kafka/get-topic-config.js.map +1 -1
  342. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.d.ts +45 -0
  343. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.d.ts.map +1 -0
  344. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.js +86 -0
  345. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.js.map +1 -0
  346. package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts +5 -5
  347. package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts.map +1 -1
  348. package/dist/confluent/tools/handlers/kafka/list-topics-handler.js +25 -10
  349. package/dist/confluent/tools/handlers/kafka/list-topics-handler.js.map +1 -1
  350. package/dist/confluent/tools/handlers/kafka/partition-watermarks.d.ts +54 -0
  351. package/dist/confluent/tools/handlers/kafka/partition-watermarks.d.ts.map +1 -0
  352. package/dist/confluent/tools/handlers/kafka/partition-watermarks.js +56 -0
  353. package/dist/confluent/tools/handlers/kafka/partition-watermarks.js.map +1 -0
  354. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.d.ts +8 -8
  355. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.d.ts.map +1 -1
  356. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js +57 -46
  357. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js.map +1 -1
  358. package/dist/confluent/tools/handlers/kafka/topic-metadata.d.ts +18 -0
  359. package/dist/confluent/tools/handlers/kafka/topic-metadata.d.ts.map +1 -0
  360. package/dist/confluent/tools/handlers/kafka/topic-metadata.js +18 -0
  361. package/dist/confluent/tools/handlers/kafka/topic-metadata.js.map +1 -0
  362. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.d.ts +6 -6
  363. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.d.ts.map +1 -1
  364. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js +6 -9
  365. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js.map +1 -1
  366. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts +24 -6
  367. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts.map +1 -1
  368. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js +88 -53
  369. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js.map +1 -1
  370. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.d.ts +50 -0
  371. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.d.ts.map +1 -0
  372. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.js +116 -0
  373. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.js.map +1 -0
  374. package/dist/confluent/tools/handlers/schema/delete-schema-handler.d.ts +5 -5
  375. package/dist/confluent/tools/handlers/schema/delete-schema-handler.d.ts.map +1 -1
  376. package/dist/confluent/tools/handlers/schema/delete-schema-handler.js +13 -8
  377. package/dist/confluent/tools/handlers/schema/delete-schema-handler.js.map +1 -1
  378. package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts +5 -5
  379. package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts.map +1 -1
  380. package/dist/confluent/tools/handlers/schema/list-schemas-handler.js +13 -7
  381. package/dist/confluent/tools/handlers/schema/list-schemas-handler.js.map +1 -1
  382. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.d.ts +6 -6
  383. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.d.ts.map +1 -1
  384. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.js +6 -9
  385. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.js.map +1 -1
  386. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.d.ts +6 -6
  387. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.d.ts.map +1 -1
  388. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.js +6 -9
  389. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.js.map +1 -1
  390. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.d.ts +5 -7
  391. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.d.ts.map +1 -1
  392. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.js +17 -13
  393. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.js.map +1 -1
  394. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.d.ts +5 -7
  395. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.d.ts.map +1 -1
  396. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.js +6 -12
  397. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.js.map +1 -1
  398. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.d.ts +5 -7
  399. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.d.ts.map +1 -1
  400. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.js +7 -13
  401. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.js.map +1 -1
  402. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.d.ts +5 -7
  403. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.d.ts.map +1 -1
  404. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.js +6 -12
  405. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.js.map +1 -1
  406. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.d.ts +5 -7
  407. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.d.ts.map +1 -1
  408. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.js +5 -9
  409. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.js.map +1 -1
  410. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.d.ts +5 -7
  411. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.d.ts.map +1 -1
  412. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.js +18 -21
  413. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.js.map +1 -1
  414. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.d.ts +26 -0
  415. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.d.ts.map +1 -0
  416. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.js +28 -0
  417. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.js.map +1 -0
  418. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.d.ts +5 -7
  419. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.d.ts.map +1 -1
  420. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.js +17 -13
  421. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.js.map +1 -1
  422. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.d.ts +5 -7
  423. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.d.ts.map +1 -1
  424. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.js +6 -12
  425. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.js.map +1 -1
  426. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.d.ts +5 -7
  427. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.d.ts.map +1 -1
  428. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.js +7 -13
  429. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.js.map +1 -1
  430. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.d.ts +5 -7
  431. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.d.ts.map +1 -1
  432. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.js +6 -12
  433. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.js.map +1 -1
  434. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.d.ts +5 -7
  435. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.d.ts.map +1 -1
  436. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.js +5 -9
  437. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.js.map +1 -1
  438. package/dist/confluent/tools/tool-availability.d.ts +91 -0
  439. package/dist/confluent/tools/tool-availability.d.ts.map +1 -0
  440. package/dist/confluent/tools/tool-availability.js +130 -0
  441. package/dist/confluent/tools/tool-availability.js.map +1 -0
  442. package/dist/confluent/tools/tool-name.d.ts +20 -2
  443. package/dist/confluent/tools/tool-name.d.ts.map +1 -1
  444. package/dist/confluent/tools/tool-name.js +19 -1
  445. package/dist/confluent/tools/tool-name.js.map +1 -1
  446. package/dist/confluent/tools/tool-registry.d.ts +17 -0
  447. package/dist/confluent/tools/tool-registry.d.ts.map +1 -0
  448. package/dist/confluent/tools/{tool-factory.js → tool-registry.js} +66 -22
  449. package/dist/confluent/tools/tool-registry.js.map +1 -0
  450. package/dist/env-schema.d.ts +6 -7
  451. package/dist/env-schema.d.ts.map +1 -1
  452. package/dist/env-schema.js +30 -44
  453. package/dist/env-schema.js.map +1 -1
  454. package/dist/env.d.ts +17 -7
  455. package/dist/env.d.ts.map +1 -1
  456. package/dist/env.js +16 -6
  457. package/dist/env.js.map +1 -1
  458. package/dist/index.d.ts +74 -1
  459. package/dist/index.d.ts.map +1 -1
  460. package/dist/index.js +302 -166
  461. package/dist/index.js.map +1 -1
  462. package/dist/logger.d.ts.map +1 -1
  463. package/dist/logger.js +21 -20
  464. package/dist/logger.js.map +1 -1
  465. package/dist/mcp/server.d.ts +29 -0
  466. package/dist/mcp/server.d.ts.map +1 -0
  467. package/dist/mcp/server.js +53 -0
  468. package/dist/mcp/server.js.map +1 -0
  469. package/dist/mcp/transports/auth.d.ts +20 -4
  470. package/dist/mcp/transports/auth.d.ts.map +1 -1
  471. package/dist/mcp/transports/auth.js +27 -7
  472. package/dist/mcp/transports/auth.js.map +1 -1
  473. package/dist/mcp/transports/http.d.ts +8 -2
  474. package/dist/mcp/transports/http.d.ts.map +1 -1
  475. package/dist/mcp/transports/http.js +57 -42
  476. package/dist/mcp/transports/http.js.map +1 -1
  477. package/dist/mcp/transports/manager.d.ts +23 -9
  478. package/dist/mcp/transports/manager.d.ts.map +1 -1
  479. package/dist/mcp/transports/manager.js +27 -24
  480. package/dist/mcp/transports/manager.js.map +1 -1
  481. package/dist/mcp/transports/server.d.ts +1 -1
  482. package/dist/mcp/transports/server.d.ts.map +1 -1
  483. package/dist/mcp/transports/server.js +17 -5
  484. package/dist/mcp/transports/server.js.map +1 -1
  485. package/dist/mcp/transports/session-registry.d.ts +33 -0
  486. package/dist/mcp/transports/session-registry.d.ts.map +1 -0
  487. package/dist/mcp/transports/session-registry.js +65 -0
  488. package/dist/mcp/transports/session-registry.js.map +1 -0
  489. package/dist/mcp/transports/sse.d.ts +13 -2
  490. package/dist/mcp/transports/sse.d.ts.map +1 -1
  491. package/dist/mcp/transports/sse.js +58 -46
  492. package/dist/mcp/transports/sse.js.map +1 -1
  493. package/dist/server-runtime.d.ts +28 -0
  494. package/dist/server-runtime.d.ts.map +1 -0
  495. package/dist/server-runtime.js +73 -0
  496. package/dist/server-runtime.js.map +1 -0
  497. package/package.json +26 -9
  498. package/dist/confluent/helpers.d.ts +0 -11
  499. package/dist/confluent/helpers.d.ts.map +0 -1
  500. package/dist/confluent/helpers.js +0 -17
  501. package/dist/confluent/helpers.js.map +0 -1
  502. package/dist/confluent/tools/handlers/connect/read-connectors-handler.d.ts +0 -11
  503. package/dist/confluent/tools/handlers/connect/read-connectors-handler.d.ts.map +0 -1
  504. package/dist/confluent/tools/handlers/connect/read-connectors-handler.js +0 -59
  505. package/dist/confluent/tools/handlers/connect/read-connectors-handler.js.map +0 -1
  506. package/dist/confluent/tools/tool-factory.d.ts +0 -9
  507. package/dist/confluent/tools/tool-factory.d.ts.map +0 -1
  508. package/dist/confluent/tools/tool-factory.js.map +0 -1
@@ -0,0 +1,64 @@
1
+ import { CallToolResult } from "../../../../confluent/schema.js";
2
+ import { BaseToolHandler, ToolCategory, ToolConfig } from "../../../../confluent/tools/base-tools.js";
3
+ import { ServerRuntime } from "../../../../server-runtime.js";
4
+ import { z } from "zod";
5
+ export declare const describeConsumerGroupArgs: z.ZodObject<{
6
+ groupId: z.ZodString;
7
+ cluster_id: z.ZodOptional<z.ZodString>;
8
+ environment_id: z.ZodOptional<z.ZodString>;
9
+ }, z.core.$strip>;
10
+ /** One topic/partition pair from a member's assignment. Deliberately narrower
11
+ * than the upstream {@link KafkaJS} `TopicPartition` — that type carries
12
+ * optional `error` and `leaderEpoch` fields which aren't meaningful for a
13
+ * consumer-group member assignment payload, so the handler strips them so
14
+ * callers see exactly the two-field shape the issue spec promised. */
15
+ export type AssignedPartition = {
16
+ topic: string;
17
+ partition: number;
18
+ };
19
+ /** Per-member entry on the response. `groupInstanceId` is present only when
20
+ * the upstream {@link MemberDescription} carries it (static membership). */
21
+ export type DescribeConsumerGroupMember = {
22
+ memberId: string;
23
+ clientId: string;
24
+ clientHost: string;
25
+ groupInstanceId?: string;
26
+ assignment: AssignedPartition[];
27
+ };
28
+ /** Coordinator entry on the response. `rack` is present only when the
29
+ * upstream {@link KafkaJS} `Node` carries it. */
30
+ export type DescribeConsumerGroupCoordinator = {
31
+ id: number;
32
+ host: string;
33
+ port: number;
34
+ rack?: string;
35
+ };
36
+ /**
37
+ * Wire-format response payload. `Record<string, unknown>` compatibility lets
38
+ * it thread cleanly through MCP's `structuredContent` channel without a
39
+ * boundary cast at the call site.
40
+ *
41
+ * Deliberately omits the raw `memberAssignment` / `memberMetadata` Buffer
42
+ * fields the upstream {@link MemberDescription} carries — they're
43
+ * librdkafka's protocol-level encoded form and useless to an LLM caller.
44
+ * Each member's {@link AssignedPartition}[] on `assignment` is the
45
+ * equivalent information in a callable shape, narrower than the upstream
46
+ * {@link KafkaJS} `TopicPartition` (no `error` / `leaderEpoch` fields).
47
+ */
48
+ export type DescribeConsumerGroupResponse = {
49
+ groupId: string;
50
+ state: string;
51
+ type: string;
52
+ protocol: string;
53
+ partitionAssignor: string;
54
+ isSimpleConsumerGroup: boolean;
55
+ coordinator: DescribeConsumerGroupCoordinator;
56
+ members: DescribeConsumerGroupMember[];
57
+ } & Record<string, unknown>;
58
+ export declare class DescribeConsumerGroupHandler extends BaseToolHandler {
59
+ readonly category = ToolCategory.Kafka;
60
+ readonly predicate: import("../../../../confluent/tools/connection-predicates.js").ConnectionPredicate;
61
+ getToolConfig(): ToolConfig;
62
+ handle(runtime: ServerRuntime, toolArguments: Record<string, unknown>): Promise<CallToolResult>;
63
+ }
64
+ //# sourceMappingURL=describe-consumer-group-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"describe-consumer-group-handler.d.ts","sourceRoot":"","sources":["../../../../../src/confluent/tools/handlers/kafka/describe-consumer-group-handler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EACL,eAAe,EAEf,YAAY,EACZ,UAAU,EACX,MAAM,oCAAoC,CAAC;AAgB5C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,yBAAyB;;;;iBAmBpC,CAAC;AAEH;;;;uEAIuE;AACvE,MAAM,MAAM,iBAAiB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAErE;6EAC6E;AAC7E,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,iBAAiB,EAAE,CAAC;CACjC,CAAC;AAEF;kDACkD;AAClD,MAAM,MAAM,gCAAgC,GAAG;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,6BAA6B,GAAG;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,WAAW,EAAE,gCAAgC,CAAC;IAC9C,OAAO,EAAE,2BAA2B,EAAE,CAAC;CACxC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5B,qBAAa,4BAA6B,SAAQ,eAAe;IAC/D,QAAQ,CAAC,QAAQ,sBAAsB;IACvC,QAAQ,CAAC,SAAS,8EAAyB;IAE3C,aAAa,IAAI,UAAU;IAarB,MAAM,CACV,OAAO,EAAE,aAAa,EACtB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACrC,OAAO,CAAC,cAAc,CAAC;CAyC3B"}
@@ -0,0 +1,140 @@
1
+ import { BaseToolHandler, READ_ONLY, ToolCategory, } from "../../../../confluent/tools/base-tools.js";
2
+ import { disposeIfOAuth, resolveKafkaClusterArgs, } from "../../../../confluent/tools/cluster-arg-resolvers.js";
3
+ import { kafkaBootstrapOrOAuth } from "../../../../confluent/tools/connection-predicates.js";
4
+ import { stateName, typeName, } from "../../../../confluent/tools/handlers/kafka/consumer-group-enums.js";
5
+ import { describeGroupOutcome, notFoundGroupMessage, } from "../../../../confluent/tools/handlers/kafka/consumer-group-helpers.js";
6
+ import { ToolName } from "../../../../confluent/tools/tool-name.js";
7
+ import { logger } from "../../../../logger.js";
8
+ import { z } from "zod";
9
+ export const describeConsumerGroupArgs = z.object({
10
+ groupId: z
11
+ .string()
12
+ .min(1)
13
+ .describe("Consumer group ID to describe. Discover existing group IDs via list-consumer-groups."),
14
+ cluster_id: z
15
+ .string()
16
+ .optional()
17
+ .describe("Confluent Cloud logical Kafka cluster ID (lkc-...). Discover via list-clusters."),
18
+ environment_id: z
19
+ .string()
20
+ .optional()
21
+ .describe("Confluent Cloud environment ID (env-...) that owns the cluster. Discover via list-environments."),
22
+ });
23
+ export class DescribeConsumerGroupHandler extends BaseToolHandler {
24
+ category = ToolCategory.Kafka;
25
+ predicate = kafkaBootstrapOrOAuth;
26
+ getToolConfig() {
27
+ return {
28
+ name: ToolName.DESCRIBE_CONSUMER_GROUP,
29
+ description: "Describe a single consumer group on a Kafka cluster. " +
30
+ "Returns the group's state, type, protocol, partition assignor, " +
31
+ "coordinator, and per-member assignment as a flat array " +
32
+ "of {topic, partition} pairs.",
33
+ inputSchema: describeConsumerGroupArgs.shape,
34
+ annotations: READ_ONLY,
35
+ };
36
+ }
37
+ async handle(runtime, toolArguments) {
38
+ const parsed = describeConsumerGroupArgs.parse(toolArguments);
39
+ const { connId, clientManager } = this.resolveSoleConnection(runtime);
40
+ const { clusterId, envId } = resolveKafkaClusterArgs(parsed, runtime, connId);
41
+ const admin = await clientManager.getKafkaAdminClient(clusterId, envId);
42
+ try {
43
+ const outcome = await describeGroupOutcome(admin, parsed.groupId);
44
+ if (outcome.kind === "notFound") {
45
+ return this.createResponse(notFoundGroupMessage(parsed.groupId), true);
46
+ }
47
+ if (outcome.kind === "error") {
48
+ return this.createResponse(outcome.error.message, true);
49
+ }
50
+ const groupDesc = outcome.group;
51
+ const payload = {
52
+ groupId: groupDesc.groupId,
53
+ state: stateName(groupDesc.state),
54
+ type: typeName(groupDesc.type),
55
+ protocol: groupDesc.protocol,
56
+ partitionAssignor: groupDesc.partitionAssignor,
57
+ isSimpleConsumerGroup: groupDesc.isSimpleConsumerGroup,
58
+ coordinator: buildCoordinator(groupDesc.coordinator),
59
+ members: groupDesc.members.map(buildMember),
60
+ };
61
+ const summary = `Consumer group "${payload.groupId}" is ${payload.state} ` +
62
+ `with ${payload.members.length} member(s); ` +
63
+ `coordinator ${payload.coordinator.host}:${payload.coordinator.port}.`;
64
+ return this.createStructuredResponse(summary, payload);
65
+ }
66
+ finally {
67
+ await disposeIfOAuth(runtime, connId, admin);
68
+ }
69
+ }
70
+ }
71
+ function buildCoordinator(node) {
72
+ const out = {
73
+ id: node.id,
74
+ host: node.host,
75
+ port: node.port,
76
+ };
77
+ if (node.rack !== undefined)
78
+ out.rack = node.rack;
79
+ return out;
80
+ }
81
+ function buildMember(member) {
82
+ const out = {
83
+ memberId: member.memberId,
84
+ clientId: member.clientId,
85
+ clientHost: member.clientHost,
86
+ assignment: buildAssignment(member),
87
+ };
88
+ if (member.groupInstanceId !== undefined) {
89
+ out.groupInstanceId = member.groupInstanceId;
90
+ }
91
+ return out;
92
+ }
93
+ /**
94
+ * Cooked partition-list extraction from a {@link MemberDescription}'s
95
+ * `assignment` field, working around an upstream type/runtime mismatch.
96
+ *
97
+ * The kafkajs `.d.ts` declares `assignment: TopicPartition[]` (flat array),
98
+ * but the native C++ binding actually returns `assignment: { topicPartitions:
99
+ * TopicPartition[] }` (wrapped object) — verified in
100
+ * `node_modules/@confluentinc/kafka-javascript/src/common.cc` →
101
+ * `FromMemberDescription`. The wrapped shape is also where the binding
102
+ * exposes an optional `targetAssignment: { topicPartitions: ... }` field
103
+ * the `.d.ts` doesn't acknowledge at all.
104
+ *
105
+ * Handle both shapes defensively: if the binding ever reconciles the
106
+ * mismatch in either direction, the handler keeps working. Anything else
107
+ * gets a "Wacky --" log and falls through to an empty array so a future
108
+ * binding surprise doesn't crash the tool.
109
+ *
110
+ * Map field-by-field rather than passing the upstream array verbatim —
111
+ * the upstream `TopicPartition` carries optional `error` / `leaderEpoch`
112
+ * fields we don't want leaking into the response.
113
+ */
114
+ function buildAssignment(member) {
115
+ const raw = member.assignment;
116
+ if (Array.isArray(raw)) {
117
+ return raw.map(toAssignedPartition);
118
+ }
119
+ if (raw !== null &&
120
+ typeof raw === "object" &&
121
+ "topicPartitions" in raw &&
122
+ Array.isArray(raw.topicPartitions)) {
123
+ return raw.topicPartitions.map(toAssignedPartition);
124
+ }
125
+ logger.warn({
126
+ memberId: member.memberId,
127
+ clientId: member.clientId,
128
+ assignmentType: typeof raw,
129
+ isBuffer: Buffer.isBuffer(raw),
130
+ sampleKeys: raw !== null && typeof raw === "object" && !Buffer.isBuffer(raw)
131
+ ? Object.keys(raw).slice(0, 10)
132
+ : undefined,
133
+ }, "Wacky -- MemberDescription.assignment is neither a TopicPartition[] " +
134
+ "nor a {topicPartitions: TopicPartition[]} wrapper; surfacing as empty array.");
135
+ return [];
136
+ }
137
+ function toAssignedPartition(tp) {
138
+ return { topic: tp.topic, partition: tp.partition };
139
+ }
140
+ //# sourceMappingURL=describe-consumer-group-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"describe-consumer-group-handler.js","sourceRoot":"","sources":["../../../../../src/confluent/tools/handlers/kafka/describe-consumer-group-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ import { CallToolResult } from "../../../../confluent/schema.js";
2
+ import { BaseToolHandler, ToolCategory, ToolConfig } from "../../../../confluent/tools/base-tools.js";
3
+ import { ServerRuntime } from "../../../../server-runtime.js";
4
+ import { z } from "zod";
5
+ export declare const getConsumerGroupLagArgs: z.ZodObject<{
6
+ groupId: z.ZodString;
7
+ topics: z.ZodOptional<z.ZodArray<z.ZodString>>;
8
+ cluster_id: z.ZodOptional<z.ZodString>;
9
+ environment_id: z.ZodOptional<z.ZodString>;
10
+ }, z.core.$strip>;
11
+ /**
12
+ * Per-partition lag row as the tool returns it. `committedOffset` /
13
+ * `highWatermark` are strings to preserve int64 precision past JS's 2^53
14
+ * safe-integer boundary; `lag` is a `Number` because the BigInt subtraction
15
+ * is done server-side and asking an LLM caller to subtract two int64-typed
16
+ * strings is the wrong ergonomic trade. `null` for both `committedOffset`
17
+ * and `lag` marks a partition where the lag is unknown — either the group
18
+ * has never committed (distinct from a zero-lag partition the group is
19
+ * caught up on) or the broker reported a per-partition error on the
20
+ * OffsetFetch response (see {@link error}).
21
+ */
22
+ export type ConsumerGroupLagPartition = {
23
+ partition: number;
24
+ committedOffset: string | null;
25
+ highWatermark: string;
26
+ lag: number | null;
27
+ metadata: string | null;
28
+ leaderEpoch: number | null;
29
+ /**
30
+ * Set when the broker reported a per-partition error on the
31
+ * OffsetFetch response (e.g., leader unavailable, partition-level
32
+ * authorization failure). `committedOffset` and `lag` are `null` in
33
+ * this case — the broker's `offset` value is not meaningful when an
34
+ * error is attached — and the partition is excluded from `totalLag`.
35
+ * Surfacing the `code` and `message` lets the caller act on the
36
+ * specific failure rather than guessing why the lag is unknown.
37
+ */
38
+ error?: {
39
+ code: number;
40
+ message: string;
41
+ };
42
+ };
43
+ /** Per-topic group of {@link ConsumerGroupLagPartition} rows. */
44
+ export type ConsumerGroupLagTopic = {
45
+ topic: string;
46
+ partitions: ConsumerGroupLagPartition[];
47
+ };
48
+ /** Structured response payload mirrored into `result.structuredContent`. */
49
+ export type GetConsumerGroupLagResponse = {
50
+ groupId: string;
51
+ topics: ConsumerGroupLagTopic[];
52
+ totalLag: number;
53
+ };
54
+ /**
55
+ * Read-only tool that computes live offset lag for a single Kafka
56
+ * consumer group, returning per-(topic, partition) {committed, high, lag}
57
+ * rows and a total lag count. Combines `admin.fetchOffsets({groupId})`
58
+ * (committed offsets) with the shared `fetchPartitionWatermarks` helper
59
+ * (high watermarks), then BigInt-subtracts per partition. A partition the
60
+ * group has never committed to surfaces as {committedOffset: null,
61
+ * lag: null} and is excluded from the `totalLag` sum. Lag may briefly go
62
+ * negative during a consumer-group rebalance (committed offset captured
63
+ * at a different isolation level than the watermark snapshot); the value
64
+ * is surfaced as-is rather than clamped, since clamping would hide a real
65
+ * if rare state.
66
+ */
67
+ export declare class GetConsumerGroupLagHandler extends BaseToolHandler {
68
+ readonly category = ToolCategory.Kafka;
69
+ readonly predicate: import("../../../../confluent/tools/connection-predicates.js").ConnectionPredicate;
70
+ getToolConfig(): ToolConfig;
71
+ handle(runtime: ServerRuntime, toolArguments: Record<string, unknown>): Promise<CallToolResult>;
72
+ }
73
+ //# sourceMappingURL=get-consumer-group-lag-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-consumer-group-lag-handler.d.ts","sourceRoot":"","sources":["../../../../../src/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EACL,eAAe,EAEf,YAAY,EACZ,UAAU,EACX,MAAM,oCAAoC,CAAC;AAoB5C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,uBAAuB;;;;;iBA2BlC,CAAC;AAEH;;;;;;;;;;GAUG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C,CAAC;AAEF,iEAAiE;AACjE,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,yBAAyB,EAAE,CAAC;CACzC,CAAC;AAEF,4EAA4E;AAC5E,MAAM,MAAM,2BAA2B,GAAG;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,qBAAqB,EAAE,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,qBAAa,0BAA2B,SAAQ,eAAe;IAC7D,QAAQ,CAAC,QAAQ,sBAAsB;IACvC,QAAQ,CAAC,SAAS,8EAAyB;IAE3C,aAAa,IAAI,UAAU;IAgBrB,MAAM,CACV,OAAO,EAAE,aAAa,EACtB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACrC,OAAO,CAAC,cAAc,CAAC;CAoH3B"}
@@ -0,0 +1,337 @@
1
+ import { KafkaJS } from "@confluentinc/kafka-javascript";
2
+ import { BaseToolHandler, READ_ONLY, ToolCategory, } from "../../../../confluent/tools/base-tools.js";
3
+ import { disposeIfOAuth, resolveKafkaClusterArgs, } from "../../../../confluent/tools/cluster-arg-resolvers.js";
4
+ import { kafkaBootstrapOrOAuth } from "../../../../confluent/tools/connection-predicates.js";
5
+ import { describeGroupOutcome, isGroupIdNotFoundError, notFoundGroupMessage, } from "../../../../confluent/tools/handlers/kafka/consumer-group-helpers.js";
6
+ import { createWatermarkCache, narrowMessageCount, } from "../../../../confluent/tools/handlers/kafka/partition-watermarks.js";
7
+ import { normalizeFetchTopicMetadataResponse } from "../../../../confluent/tools/handlers/kafka/topic-metadata.js";
8
+ import { ToolName } from "../../../../confluent/tools/tool-name.js";
9
+ import { logger } from "../../../../logger.js";
10
+ import { z } from "zod";
11
+ export const getConsumerGroupLagArgs = z.object({
12
+ groupId: z
13
+ .string()
14
+ .min(1)
15
+ .describe("Consumer group ID to compute lag for. Discover groups via list-consumer-groups."),
16
+ topics: z
17
+ .array(z.string().min(1))
18
+ .nonempty()
19
+ .optional()
20
+ .describe("Restrict lag computation to these topics. " +
21
+ "Omit to compute lag for every topic the group has committed offsets on."),
22
+ cluster_id: z
23
+ .string()
24
+ .optional()
25
+ .describe("Confluent Cloud logical Kafka cluster ID (lkc-...). Discover via list-clusters."),
26
+ environment_id: z
27
+ .string()
28
+ .optional()
29
+ .describe("Confluent Cloud environment ID (env-...) that owns the cluster. Discover via list-environments."),
30
+ });
31
+ /**
32
+ * Read-only tool that computes live offset lag for a single Kafka
33
+ * consumer group, returning per-(topic, partition) {committed, high, lag}
34
+ * rows and a total lag count. Combines `admin.fetchOffsets({groupId})`
35
+ * (committed offsets) with the shared `fetchPartitionWatermarks` helper
36
+ * (high watermarks), then BigInt-subtracts per partition. A partition the
37
+ * group has never committed to surfaces as {committedOffset: null,
38
+ * lag: null} and is excluded from the `totalLag` sum. Lag may briefly go
39
+ * negative during a consumer-group rebalance (committed offset captured
40
+ * at a different isolation level than the watermark snapshot); the value
41
+ * is surfaced as-is rather than clamped, since clamping would hide a real
42
+ * if rare state.
43
+ */
44
+ export class GetConsumerGroupLagHandler extends BaseToolHandler {
45
+ category = ToolCategory.Kafka;
46
+ predicate = kafkaBootstrapOrOAuth;
47
+ getToolConfig() {
48
+ return {
49
+ name: ToolName.GET_CONSUMER_GROUP_LAG,
50
+ description: "Compute live offset lag for a single Kafka consumer group. " +
51
+ "Returns per-(topic, partition) {committedOffset, highWatermark, lag} rows " +
52
+ "and a total lag count across the group. " +
53
+ "Pass `topics` to restrict the response to specific topics; " +
54
+ "omit to compute lag for every topic the group has touched. " +
55
+ "Partitions the group has never committed to surface with " +
56
+ "`committedOffset: null` and `lag: null` and are excluded from `totalLag`.",
57
+ inputSchema: getConsumerGroupLagArgs.shape,
58
+ annotations: READ_ONLY,
59
+ };
60
+ }
61
+ async handle(runtime, toolArguments) {
62
+ const parsed = getConsumerGroupLagArgs.parse(toolArguments);
63
+ const { connId, clientManager } = this.resolveSoleConnection(runtime);
64
+ const { clusterId, envId } = resolveKafkaClusterArgs(parsed, runtime, connId);
65
+ const admin = await clientManager.getKafkaAdminClient(clusterId, envId);
66
+ try {
67
+ // 1. Fetch the group's committed offsets.
68
+ let committedByTopic;
69
+ try {
70
+ committedByTopic = await admin.fetchOffsets(parsed.topics
71
+ ? { groupId: parsed.groupId, topics: parsed.topics }
72
+ : { groupId: parsed.groupId });
73
+ }
74
+ catch (err) {
75
+ if (isGroupIdNotFoundError(err)) {
76
+ return this.createResponse(notFoundGroupMessage(parsed.groupId), true);
77
+ }
78
+ throw err;
79
+ }
80
+ // Disambiguate "unknown group" from "real group, no commits". CCloud's
81
+ // fetchOffsets resolves with `[]` for an unknown group ID rather than
82
+ // rejecting with ERR_GROUP_ID_NOT_FOUND (the documented path the catch
83
+ // above handles), which means an empty result by itself can't tell the
84
+ // caller whether the group exists or not. Probe via describeGroups
85
+ // before continuing — only on the empty path, so happy-path calls pay
86
+ // nothing.
87
+ if (committedByTopic.length === 0) {
88
+ const outcome = await describeGroupOutcome(admin, parsed.groupId);
89
+ if (outcome.kind === "notFound") {
90
+ return this.createResponse(notFoundGroupMessage(parsed.groupId), true);
91
+ }
92
+ if (outcome.kind === "error") {
93
+ // Propagate the raw librdkafka error so downstream handlers
94
+ // and logs can inspect `code` / `errno` / `origin` rather
95
+ // than just a message string.
96
+ throw outcome.error;
97
+ }
98
+ }
99
+ // 2. For each topic+partition the group has committed to, fetch the
100
+ // partition's high watermark and compute lag = high - committed. A
101
+ // topic the group has committed offsets for but that's since been
102
+ // deleted from the cluster short-circuits with the same friendly
103
+ // "Topic not found" error the filter-topics path uses below.
104
+ const watermarkCache = createWatermarkCache(admin);
105
+ const lagResult = await buildLagFromCommittedOffsets(parsed.groupId, committedByTopic, watermarkCache);
106
+ if (lagResult.kind === "topicNotFound") {
107
+ return this.createResponse(lagResult.message, true);
108
+ }
109
+ const { topics: responseTopics, totalLagBigInt } = lagResult;
110
+ // 3. If the caller passed `topics`, verify that any never-committed
111
+ // filter topics exist on the cluster (so we can return
112
+ // `{topic, partitions: []}` for each) and surface a friendly
113
+ // "Topic not found" error for any that don't.
114
+ if (parsed.topics) {
115
+ const seenTopics = new Set(committedByTopic.map(({ topic }) => topic));
116
+ const filterResult = await resolveNeverCommittedFilterTopics(parsed.topics, seenTopics, admin);
117
+ if (filterResult.kind === "topicNotFound") {
118
+ return this.createResponse(filterResult.message, true);
119
+ }
120
+ responseTopics.push(...filterResult.topics);
121
+ }
122
+ // 4. Narrow the BigInt accumulator to a JS Number for the wire
123
+ // payload, saturating at Number.MAX_SAFE_INTEGER (and emitting a
124
+ // Wacky log) if the cross-partition sum exceeds the safe-integer
125
+ // boundary even though each individual partition fit.
126
+ const totalLag = narrowMessageCount(totalLagBigInt, {
127
+ groupId: parsed.groupId,
128
+ scope: "totalLag",
129
+ topicCount: responseTopics.length,
130
+ });
131
+ const payload = {
132
+ groupId: parsed.groupId,
133
+ topics: responseTopics,
134
+ totalLag,
135
+ };
136
+ const summary = `Consumer group "${parsed.groupId}" has ${totalLag} message(s) of lag ` +
137
+ `across ${responseTopics.length} topic(s).`;
138
+ return this.createStructuredResponse(summary, payload);
139
+ }
140
+ finally {
141
+ await disposeIfOAuth(runtime, connId, admin);
142
+ }
143
+ }
144
+ }
145
+ /**
146
+ * Build one {@link ConsumerGroupLagPartition} row from a committed offset
147
+ * and a paired watermark. Splits the never-committed sentinel
148
+ * (`offset === "-1"`) from the real arithmetic path so the latter remains
149
+ * a clean BigInt subtraction. Returns the raw BigInt diff (or `null` for
150
+ * the never-committed case) alongside the row so the caller can
151
+ * accumulate `totalLag` in BigInt across partitions and narrow once at
152
+ * the end via {@link narrowMessageCount} — individual per-partition lags
153
+ * each fit in `Number`, but their sum can still overflow the
154
+ * safe-integer boundary.
155
+ */
156
+ function buildLagRow(groupId, topic, committed, watermark) {
157
+ // Broker-reported per-partition error: the offset value isn't
158
+ // meaningful (could be a sentinel, stale, or garbage), so surface the
159
+ // error code and message verbatim and treat the lag as unknown.
160
+ // Excluded from the cross-partition `totalLag` sum. `!= null` (loose
161
+ // equality) catches both `undefined` (the TypeScript-declared shape)
162
+ // and `null` (what kafkajs-compat actually populates for successful
163
+ // partitions — the upstream type lies about the runtime).
164
+ if (committed.error != null) {
165
+ return {
166
+ row: {
167
+ partition: committed.partition,
168
+ committedOffset: null,
169
+ highWatermark: watermark.high,
170
+ lag: null,
171
+ metadata: committed.metadata,
172
+ leaderEpoch: committed.leaderEpoch,
173
+ error: {
174
+ code: committed.error.code,
175
+ message: committed.error.message,
176
+ },
177
+ },
178
+ lagBigInt: null,
179
+ };
180
+ }
181
+ if (committed.offset === "-1") {
182
+ return {
183
+ row: {
184
+ partition: committed.partition,
185
+ committedOffset: null,
186
+ highWatermark: watermark.high,
187
+ lag: null,
188
+ metadata: committed.metadata,
189
+ leaderEpoch: committed.leaderEpoch,
190
+ },
191
+ lagBigInt: null,
192
+ };
193
+ }
194
+ const diff = BigInt(watermark.high) - BigInt(committed.offset);
195
+ const lag = narrowMessageCount(diff, {
196
+ groupId,
197
+ topic,
198
+ partition: committed.partition,
199
+ committed: committed.offset,
200
+ high: watermark.high,
201
+ });
202
+ return {
203
+ row: {
204
+ partition: committed.partition,
205
+ committedOffset: committed.offset,
206
+ highWatermark: watermark.high,
207
+ lag,
208
+ metadata: committed.metadata,
209
+ leaderEpoch: committed.leaderEpoch,
210
+ },
211
+ lagBigInt: diff,
212
+ };
213
+ }
214
+ /**
215
+ * Two distinct librdkafka codes report the same conceptual failure:
216
+ * `ERR_UNKNOWN_TOPIC_OR_PART` (broker-issued, single underscore) and
217
+ * `ERR__UNKNOWN_TOPIC` (local-side, double underscore — fires when the
218
+ * client's own metadata cache rejects the topic before the broker is
219
+ * consulted). Both funnel into the same friendly "topic not found"
220
+ * message; same posture get-partition-offsets takes.
221
+ */
222
+ function isUnknownTopicError(err) {
223
+ if (typeof err !== "object" || err === null || !("code" in err)) {
224
+ return false;
225
+ }
226
+ const code = err.code;
227
+ return (code === KafkaJS.ErrorCodes.ERR_UNKNOWN_TOPIC_OR_PART ||
228
+ code === KafkaJS.ErrorCodes.ERR__UNKNOWN_TOPIC);
229
+ }
230
+ /**
231
+ * Iterate the group's committed offsets and produce per-(topic, partition)
232
+ * lag rows paired with a BigInt running total. The accumulator stays in
233
+ * BigInt so a sum that exceeds the safe-integer boundary stays precise;
234
+ * narrow once at the end via {@link narrowMessageCount}. A
235
+ * deleted-but-still-committed-to topic short-circuits with its name in
236
+ * the `topicNotFound` arm — see {@link BuildLagResult}.
237
+ */
238
+ async function buildLagFromCommittedOffsets(groupId, committedByTopic, watermarkCache) {
239
+ const topics = [];
240
+ let totalLagBigInt = 0n;
241
+ for (const { topic, partitions: committedPartitions } of committedByTopic) {
242
+ let watermarks;
243
+ try {
244
+ watermarks = await watermarkCache(topic);
245
+ }
246
+ catch (err) {
247
+ if (isUnknownTopicError(err)) {
248
+ return {
249
+ kind: "topicNotFound",
250
+ message: notFoundTopicMessage(topic),
251
+ };
252
+ }
253
+ throw err;
254
+ }
255
+ const watermarkByPartition = new Map(watermarks.map((w) => [w.partition, w]));
256
+ const rows = [];
257
+ for (const committed of committedPartitions) {
258
+ const watermark = watermarkByPartition.get(committed.partition);
259
+ if (watermark === undefined) {
260
+ logger.warn({ groupId, topic, partition: committed.partition }, "Wacky -- committed offset reported for a partition with no matching watermark; skipping");
261
+ continue;
262
+ }
263
+ const { row, lagBigInt } = buildLagRow(groupId, topic, committed, watermark);
264
+ rows.push(row);
265
+ if (lagBigInt !== null) {
266
+ totalLagBigInt += lagBigInt;
267
+ }
268
+ }
269
+ topics.push({ topic, partitions: rows });
270
+ }
271
+ return { kind: "resolved", topics, totalLagBigInt };
272
+ }
273
+ /**
274
+ * Verify each filter topic that didn't appear in the `fetchOffsets`
275
+ * response (group never committed to them) exists on the cluster, via
276
+ * `admin.fetchTopicMetadata` — the right primitive for a yes/no
277
+ * existence question, where `fetchTopicOffsets` would fan out per
278
+ * partition and discard the watermark data we don't need on this path.
279
+ * Topics that exist but the group hasn't committed to surface as
280
+ * `{topic, partitions: []}` in the `resolved` arm; topics that don't
281
+ * exist short-circuit with a pre-formatted user-facing message in the
282
+ * `topicNotFound` arm. Non-unknown-topic errors propagate via throw.
283
+ *
284
+ * Defensive against both unknown-topic surface shapes: librdkafka may
285
+ * reject the batched call with `ERR_UNKNOWN_TOPIC_OR_PART` /
286
+ * `ERR__UNKNOWN_TOPIC` (which doesn't identify which candidate
287
+ * triggered it — we surface the full list in the message) or resolve
288
+ * cleanly with the unknown topic absent from the returned `topics`
289
+ * array (which does give us specificity).
290
+ */
291
+ async function resolveNeverCommittedFilterTopics(filterTopics, seenTopics, admin) {
292
+ const missing = filterTopics.filter((t) => !seenTopics.has(t));
293
+ if (missing.length === 0) {
294
+ return { kind: "resolved", topics: [] };
295
+ }
296
+ let rawMetadata;
297
+ try {
298
+ rawMetadata = await admin.fetchTopicMetadata({ topics: [...missing] });
299
+ }
300
+ catch (err) {
301
+ if (!isUnknownTopicError(err))
302
+ throw err;
303
+ // The batched call rejected with an unknown-topic code but doesn't
304
+ // tell us which candidate triggered the failure. With K=1 there's
305
+ // only one possibility so we can still name it; with K>1 surface
306
+ // the full list so the caller can spot the typo without us paying
307
+ // K extra round-trips to identify the specific one.
308
+ const message = missing.length === 1
309
+ ? notFoundTopicMessage(missing[0])
310
+ : `Topic not found in [${missing.join(", ")}] on this cluster.`;
311
+ return { kind: "topicNotFound", message };
312
+ }
313
+ // Defensive against the silently-omits-missing-topic surface shape:
314
+ // locate the first requested topic that didn't come back, in
315
+ // user-supplied order.
316
+ const returnedNames = new Set(normalizeFetchTopicMetadataResponse(rawMetadata).map((t) => t.name));
317
+ const firstMissing = missing.find((t) => !returnedNames.has(t));
318
+ if (firstMissing !== undefined) {
319
+ return {
320
+ kind: "topicNotFound",
321
+ message: notFoundTopicMessage(firstMissing),
322
+ };
323
+ }
324
+ return {
325
+ kind: "resolved",
326
+ topics: missing.map((topic) => ({ topic, partitions: [] })),
327
+ };
328
+ }
329
+ /**
330
+ * Canonical user-facing "topic not found" message format. Centralizes
331
+ * the phrasing so the step-2 (deleted-since-commit topic) and step-3
332
+ * (filter topic missing from metadata) paths can't drift apart.
333
+ */
334
+ function notFoundTopicMessage(topic) {
335
+ return `Topic "${topic}" not found on this cluster.`;
336
+ }
337
+ //# sourceMappingURL=get-consumer-group-lag-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-consumer-group-lag-handler.js","sourceRoot":"","sources":["../../../../../src/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.ts"],"names":[],"mappings":"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"}