@confluentinc/mcp-confluent 1.3.0 → 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 (297) hide show
  1. package/README.md +148 -67
  2. package/assets/oauth-templates/callback-success.html +80 -0
  3. package/assets/oauth-templates/styles.html +101 -40
  4. package/dist/config/env-config.d.ts.map +1 -1
  5. package/dist/config/env-config.js +5 -0
  6. package/dist/config/env-config.js.map +1 -1
  7. package/dist/config/models.d.ts +3 -0
  8. package/dist/config/models.d.ts.map +1 -1
  9. package/dist/config/models.js +5 -0
  10. package/dist/config/models.js.map +1 -1
  11. package/dist/confluent/base-client-manager.d.ts +34 -1
  12. package/dist/confluent/base-client-manager.d.ts.map +1 -1
  13. package/dist/confluent/base-client-manager.js.map +1 -1
  14. package/dist/confluent/direct-client-manager.d.ts +2 -2
  15. package/dist/confluent/direct-client-manager.d.ts.map +1 -1
  16. package/dist/confluent/direct-client-manager.js +25 -17
  17. package/dist/confluent/direct-client-manager.js.map +1 -1
  18. package/dist/confluent/node-deps.d.ts +1 -0
  19. package/dist/confluent/node-deps.d.ts.map +1 -1
  20. package/dist/confluent/node-deps.js +7 -1
  21. package/dist/confluent/node-deps.js.map +1 -1
  22. package/dist/confluent/oauth/callback-pages.d.ts +9 -1
  23. package/dist/confluent/oauth/callback-pages.d.ts.map +1 -1
  24. package/dist/confluent/oauth/callback-pages.js +14 -5
  25. package/dist/confluent/oauth/callback-pages.js.map +1 -1
  26. package/dist/confluent/oauth/pkce-login.d.ts +20 -1
  27. package/dist/confluent/oauth/pkce-login.d.ts.map +1 -1
  28. package/dist/confluent/oauth/pkce-login.js +118 -9
  29. package/dist/confluent/oauth/pkce-login.js.map +1 -1
  30. package/dist/confluent/oauth-client-manager.d.ts +2 -2
  31. package/dist/confluent/oauth-client-manager.d.ts.map +1 -1
  32. package/dist/confluent/oauth-client-manager.js +6 -6
  33. package/dist/confluent/oauth-client-manager.js.map +1 -1
  34. package/dist/confluent/schema-registry-helper.d.ts +5 -9
  35. package/dist/confluent/schema-registry-helper.d.ts.map +1 -1
  36. package/dist/confluent/schema-registry-helper.js +1 -9
  37. package/dist/confluent/schema-registry-helper.js.map +1 -1
  38. package/dist/confluent/telemetry.d.ts +7 -1
  39. package/dist/confluent/telemetry.d.ts.map +1 -1
  40. package/dist/confluent/telemetry.js +6 -0
  41. package/dist/confluent/telemetry.js.map +1 -1
  42. package/dist/confluent/tools/base-tools.d.ts +42 -0
  43. package/dist/confluent/tools/base-tools.d.ts.map +1 -1
  44. package/dist/confluent/tools/base-tools.js +36 -0
  45. package/dist/confluent/tools/base-tools.js.map +1 -1
  46. package/dist/confluent/tools/connection-predicates.d.ts +13 -5
  47. package/dist/confluent/tools/connection-predicates.d.ts.map +1 -1
  48. package/dist/confluent/tools/connection-predicates.js +16 -5
  49. package/dist/confluent/tools/connection-predicates.js.map +1 -1
  50. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.d.ts +2 -1
  51. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.d.ts.map +1 -1
  52. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.js +36 -3
  53. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.js.map +1 -1
  54. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.d.ts +2 -1
  55. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.d.ts.map +1 -1
  56. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.js +2 -1
  57. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.js.map +1 -1
  58. package/dist/confluent/tools/handlers/catalog/create-topic-tags.d.ts +2 -1
  59. package/dist/confluent/tools/handlers/catalog/create-topic-tags.d.ts.map +1 -1
  60. package/dist/confluent/tools/handlers/catalog/create-topic-tags.js +2 -1
  61. package/dist/confluent/tools/handlers/catalog/create-topic-tags.js.map +1 -1
  62. package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts +2 -1
  63. package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts.map +1 -1
  64. package/dist/confluent/tools/handlers/catalog/delete-tag.js +2 -1
  65. package/dist/confluent/tools/handlers/catalog/delete-tag.js.map +1 -1
  66. package/dist/confluent/tools/handlers/catalog/list-tags.d.ts +2 -1
  67. package/dist/confluent/tools/handlers/catalog/list-tags.d.ts.map +1 -1
  68. package/dist/confluent/tools/handlers/catalog/list-tags.js +2 -1
  69. package/dist/confluent/tools/handlers/catalog/list-tags.js.map +1 -1
  70. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts +2 -1
  71. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts.map +1 -1
  72. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.js +2 -1
  73. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.js.map +1 -1
  74. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.d.ts +2 -1
  75. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.d.ts.map +1 -1
  76. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js +2 -1
  77. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js.map +1 -1
  78. package/dist/confluent/tools/handlers/connect/connect-tool-handler.d.ts +14 -1
  79. package/dist/confluent/tools/handlers/connect/connect-tool-handler.d.ts.map +1 -1
  80. package/dist/confluent/tools/handlers/connect/connect-tool-handler.js +26 -1
  81. package/dist/confluent/tools/handlers/connect/connect-tool-handler.js.map +1 -1
  82. package/dist/confluent/tools/handlers/connect/{read-connectors-handler.d.ts → get-connector-config-handler.d.ts} +2 -3
  83. package/dist/confluent/tools/handlers/connect/get-connector-config-handler.d.ts.map +1 -0
  84. package/dist/confluent/tools/handlers/connect/get-connector-config-handler.js +35 -0
  85. package/dist/confluent/tools/handlers/connect/get-connector-config-handler.js.map +1 -0
  86. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.d.ts +9 -0
  87. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.d.ts.map +1 -0
  88. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.js +66 -0
  89. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.js.map +1 -0
  90. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.d.ts +9 -0
  91. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.d.ts.map +1 -0
  92. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.js +131 -0
  93. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.js.map +1 -0
  94. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.d.ts +9 -0
  95. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.d.ts.map +1 -0
  96. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.js +244 -0
  97. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.js.map +1 -0
  98. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.d.ts +9 -0
  99. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.d.ts.map +1 -0
  100. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.js +35 -0
  101. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.js.map +1 -0
  102. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.d.ts +9 -0
  103. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.d.ts.map +1 -0
  104. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.js +44 -0
  105. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.js.map +1 -0
  106. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.d.ts +9 -0
  107. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.d.ts.map +1 -0
  108. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.js +35 -0
  109. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.js.map +1 -0
  110. package/dist/confluent/tools/handlers/connect/pause-connector-handler.d.ts +9 -0
  111. package/dist/confluent/tools/handlers/connect/pause-connector-handler.d.ts.map +1 -0
  112. package/dist/confluent/tools/handlers/connect/pause-connector-handler.js +35 -0
  113. package/dist/confluent/tools/handlers/connect/pause-connector-handler.js.map +1 -0
  114. package/dist/confluent/tools/handlers/connect/restart-connector-handler.d.ts +9 -0
  115. package/dist/confluent/tools/handlers/connect/restart-connector-handler.d.ts.map +1 -0
  116. package/dist/confluent/tools/handlers/connect/restart-connector-handler.js +35 -0
  117. package/dist/confluent/tools/handlers/connect/restart-connector-handler.js.map +1 -0
  118. package/dist/confluent/tools/handlers/connect/resume-connector-handler.d.ts +9 -0
  119. package/dist/confluent/tools/handlers/connect/resume-connector-handler.d.ts.map +1 -0
  120. package/dist/confluent/tools/handlers/connect/resume-connector-handler.js +35 -0
  121. package/dist/confluent/tools/handlers/connect/resume-connector-handler.js.map +1 -0
  122. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.d.ts +9 -0
  123. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.d.ts.map +1 -0
  124. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.js +44 -0
  125. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.js.map +1 -0
  126. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.d.ts +3 -2
  127. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.d.ts.map +1 -1
  128. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.js +28 -15
  129. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.js.map +1 -1
  130. package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.d.ts +2 -1
  131. package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.d.ts.map +1 -1
  132. package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.js +2 -1
  133. package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.js.map +1 -1
  134. package/dist/confluent/tools/handlers/docs/search-product-docs-handler.d.ts +2 -1
  135. package/dist/confluent/tools/handlers/docs/search-product-docs-handler.d.ts.map +1 -1
  136. package/dist/confluent/tools/handlers/docs/search-product-docs-handler.js +2 -1
  137. package/dist/confluent/tools/handlers/docs/search-product-docs-handler.js.map +1 -1
  138. package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts +8 -7
  139. package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts.map +1 -1
  140. package/dist/confluent/tools/handlers/environments/list-environments-handler.js +7 -6
  141. package/dist/confluent/tools/handlers/environments/list-environments-handler.js.map +1 -1
  142. package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts +2 -1
  143. package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts.map +1 -1
  144. package/dist/confluent/tools/handlers/environments/read-environment-handler.js +2 -1
  145. package/dist/confluent/tools/handlers/environments/read-environment-handler.js.map +1 -1
  146. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.d.ts +16 -2
  147. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.d.ts.map +1 -1
  148. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.js +4 -4
  149. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.js.map +1 -1
  150. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.d.ts.map +1 -1
  151. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.js +19 -9
  152. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.js.map +1 -1
  153. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.d.ts.map +1 -1
  154. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.js +19 -9
  155. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.js.map +1 -1
  156. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.d.ts.map +1 -1
  157. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.js +9 -4
  158. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.js.map +1 -1
  159. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.d.ts.map +1 -1
  160. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.js +9 -4
  161. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.js.map +1 -1
  162. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.d.ts.map +1 -1
  163. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.js +9 -4
  164. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.js.map +1 -1
  165. package/dist/confluent/tools/handlers/flink/flink-sql-helper.d.ts +13 -0
  166. package/dist/confluent/tools/handlers/flink/flink-sql-helper.d.ts.map +1 -1
  167. package/dist/confluent/tools/handlers/flink/flink-sql-helper.js.map +1 -1
  168. package/dist/confluent/tools/handlers/flink/flink-tool-handler.d.ts +2 -1
  169. package/dist/confluent/tools/handlers/flink/flink-tool-handler.d.ts.map +1 -1
  170. package/dist/confluent/tools/handlers/flink/flink-tool-handler.js +2 -1
  171. package/dist/confluent/tools/handlers/flink/flink-tool-handler.js.map +1 -1
  172. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.d.ts.map +1 -1
  173. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js +0 -1
  174. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js.map +1 -1
  175. package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts +2 -1
  176. package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts.map +1 -1
  177. package/dist/confluent/tools/handlers/kafka/alter-topic-config.js +2 -1
  178. package/dist/confluent/tools/handlers/kafka/alter-topic-config.js.map +1 -1
  179. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.d.ts +212 -27
  180. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.d.ts.map +1 -1
  181. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js +783 -63
  182. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js.map +1 -1
  183. package/dist/confluent/tools/handlers/kafka/consumer-group-enums.d.ts +48 -0
  184. package/dist/confluent/tools/handlers/kafka/consumer-group-enums.d.ts.map +1 -0
  185. package/dist/confluent/tools/handlers/kafka/consumer-group-enums.js +84 -0
  186. package/dist/confluent/tools/handlers/kafka/consumer-group-enums.js.map +1 -0
  187. package/dist/confluent/tools/handlers/kafka/consumer-group-helpers.d.ts +54 -0
  188. package/dist/confluent/tools/handlers/kafka/consumer-group-helpers.d.ts.map +1 -0
  189. package/dist/confluent/tools/handlers/kafka/consumer-group-helpers.js +89 -0
  190. package/dist/confluent/tools/handlers/kafka/consumer-group-helpers.js.map +1 -0
  191. package/dist/confluent/tools/handlers/kafka/create-topics-handler.d.ts +2 -1
  192. package/dist/confluent/tools/handlers/kafka/create-topics-handler.d.ts.map +1 -1
  193. package/dist/confluent/tools/handlers/kafka/create-topics-handler.js +2 -1
  194. package/dist/confluent/tools/handlers/kafka/create-topics-handler.js.map +1 -1
  195. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts +2 -1
  196. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts.map +1 -1
  197. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js +2 -1
  198. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js.map +1 -1
  199. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.d.ts +64 -0
  200. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.d.ts.map +1 -0
  201. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.js +140 -0
  202. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.js.map +1 -0
  203. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.d.ts +73 -0
  204. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.d.ts.map +1 -0
  205. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.js +337 -0
  206. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.js.map +1 -0
  207. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.d.ts +43 -0
  208. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.d.ts.map +1 -0
  209. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.js +123 -0
  210. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.js.map +1 -0
  211. package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts +2 -1
  212. package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts.map +1 -1
  213. package/dist/confluent/tools/handlers/kafka/get-topic-config.js +2 -1
  214. package/dist/confluent/tools/handlers/kafka/get-topic-config.js.map +1 -1
  215. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.d.ts +45 -0
  216. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.d.ts.map +1 -0
  217. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.js +86 -0
  218. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.js.map +1 -0
  219. package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts +2 -1
  220. package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts.map +1 -1
  221. package/dist/confluent/tools/handlers/kafka/list-topics-handler.js +2 -1
  222. package/dist/confluent/tools/handlers/kafka/list-topics-handler.js.map +1 -1
  223. package/dist/confluent/tools/handlers/kafka/partition-watermarks.d.ts +54 -0
  224. package/dist/confluent/tools/handlers/kafka/partition-watermarks.d.ts.map +1 -0
  225. package/dist/confluent/tools/handlers/kafka/partition-watermarks.js +56 -0
  226. package/dist/confluent/tools/handlers/kafka/partition-watermarks.js.map +1 -0
  227. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.d.ts +5 -4
  228. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.d.ts.map +1 -1
  229. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js +6 -14
  230. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js.map +1 -1
  231. package/dist/confluent/tools/handlers/kafka/topic-metadata.d.ts +18 -0
  232. package/dist/confluent/tools/handlers/kafka/topic-metadata.d.ts.map +1 -0
  233. package/dist/confluent/tools/handlers/kafka/topic-metadata.js +18 -0
  234. package/dist/confluent/tools/handlers/kafka/topic-metadata.js.map +1 -0
  235. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.d.ts +2 -1
  236. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.d.ts.map +1 -1
  237. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js +2 -1
  238. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js.map +1 -1
  239. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts +2 -1
  240. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts.map +1 -1
  241. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js +2 -1
  242. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js.map +1 -1
  243. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.d.ts +2 -1
  244. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.d.ts.map +1 -1
  245. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.js +2 -1
  246. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.js.map +1 -1
  247. package/dist/confluent/tools/handlers/schema/delete-schema-handler.d.ts +2 -1
  248. package/dist/confluent/tools/handlers/schema/delete-schema-handler.d.ts.map +1 -1
  249. package/dist/confluent/tools/handlers/schema/delete-schema-handler.js +2 -1
  250. package/dist/confluent/tools/handlers/schema/delete-schema-handler.js.map +1 -1
  251. package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts +2 -1
  252. package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts.map +1 -1
  253. package/dist/confluent/tools/handlers/schema/list-schemas-handler.js +2 -1
  254. package/dist/confluent/tools/handlers/schema/list-schemas-handler.js.map +1 -1
  255. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.d.ts +2 -1
  256. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.d.ts.map +1 -1
  257. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.js +2 -1
  258. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.js.map +1 -1
  259. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.d.ts +2 -1
  260. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.d.ts.map +1 -1
  261. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.js +2 -1
  262. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.js.map +1 -1
  263. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.d.ts.map +1 -1
  264. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.js +1 -2
  265. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.js.map +1 -1
  266. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.d.ts +2 -1
  267. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.d.ts.map +1 -1
  268. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.js +2 -1
  269. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.js.map +1 -1
  270. package/dist/confluent/tools/tool-availability.d.ts +29 -12
  271. package/dist/confluent/tools/tool-availability.d.ts.map +1 -1
  272. package/dist/confluent/tools/tool-availability.js +19 -10
  273. package/dist/confluent/tools/tool-availability.js.map +1 -1
  274. package/dist/confluent/tools/tool-name.d.ts +15 -1
  275. package/dist/confluent/tools/tool-name.d.ts.map +1 -1
  276. package/dist/confluent/tools/tool-name.js +15 -1
  277. package/dist/confluent/tools/tool-name.js.map +1 -1
  278. package/dist/confluent/tools/tool-registry.d.ts +1 -2
  279. package/dist/confluent/tools/tool-registry.d.ts.map +1 -1
  280. package/dist/confluent/tools/tool-registry.js +36 -5
  281. package/dist/confluent/tools/tool-registry.js.map +1 -1
  282. package/dist/env-schema.d.ts +1 -0
  283. package/dist/env-schema.d.ts.map +1 -1
  284. package/dist/env-schema.js +10 -5
  285. package/dist/env-schema.js.map +1 -1
  286. package/dist/env.d.ts +1 -0
  287. package/dist/env.d.ts.map +1 -1
  288. package/dist/index.d.ts.map +1 -1
  289. package/dist/index.js +26 -3
  290. package/dist/index.js.map +1 -1
  291. package/dist/mcp/server.d.ts.map +1 -1
  292. package/dist/mcp/server.js +1 -0
  293. package/dist/mcp/server.js.map +1 -1
  294. package/package.json +2 -1
  295. package/dist/confluent/tools/handlers/connect/read-connectors-handler.d.ts.map +0 -1
  296. package/dist/confluent/tools/handlers/connect/read-connectors-handler.js +0 -54
  297. package/dist/confluent/tools/handlers/connect/read-connectors-handler.js.map +0 -1
@@ -0,0 +1,123 @@
1
+ import { KafkaJS } from "@confluentinc/kafka-javascript";
2
+ import { BaseToolHandler, READ_ONLY, ToolCategory, } from "../../../../confluent/tools/base-tools.js";
3
+ import { disposeIfOAuth, formatKafkaError, resolveKafkaClusterArgs, } from "../../../../confluent/tools/cluster-arg-resolvers.js";
4
+ import { kafkaBootstrapOrOAuth } from "../../../../confluent/tools/connection-predicates.js";
5
+ import { fetchPartitionWatermarks, narrowMessageCount, } from "../../../../confluent/tools/handlers/kafka/partition-watermarks.js";
6
+ import { ToolName } from "../../../../confluent/tools/tool-name.js";
7
+ import { logger } from "../../../../logger.js";
8
+ import { z } from "zod";
9
+ export const getPartitionOffsetsArgs = z.object({
10
+ topicName: z
11
+ .string()
12
+ .nonempty()
13
+ .describe("Name of the Kafka topic to fetch partition offsets for."),
14
+ partition: z
15
+ .number()
16
+ .int()
17
+ .nonnegative()
18
+ .optional()
19
+ .describe("Optional. Restrict the response to this partition (0-indexed). " +
20
+ "Omit to return every partition of the topic."),
21
+ cluster_id: z
22
+ .string()
23
+ .optional()
24
+ .describe("Confluent Cloud logical Kafka cluster ID (lkc-...). Discover via list-clusters."),
25
+ environment_id: z
26
+ .string()
27
+ .optional()
28
+ .describe("Confluent Cloud environment ID (env-...) that owns the cluster. Discover via list-environments."),
29
+ });
30
+ function mapToPartitionOffsetInfo(topicName, watermark) {
31
+ const low = BigInt(watermark.low);
32
+ const high = BigInt(watermark.high);
33
+ const diff = high - low;
34
+ return {
35
+ partition: watermark.partition,
36
+ lowWatermark: watermark.low,
37
+ highWatermark: watermark.high,
38
+ messageCount: narrowMessageCount(diff, {
39
+ topicName,
40
+ partition: watermark.partition,
41
+ low: watermark.low,
42
+ high: watermark.high,
43
+ }),
44
+ };
45
+ }
46
+ /**
47
+ * Read-only tool that returns per-partition low/high watermarks (and the
48
+ * derived message count) for a single Kafka topic. Thin wrapper over the
49
+ * broker's `Admin.fetchTopicOffsets` admin call — the metadata primitive
50
+ * that `consume-messages` already relies on internally for `start:
51
+ * "earliest" / "latest" / {timestamp} / {tail}` resolution but doesn't
52
+ * surface in its response.
53
+ */
54
+ export class GetPartitionOffsetsHandler extends BaseToolHandler {
55
+ async handle(runtime, toolArguments) {
56
+ const parsed = getPartitionOffsetsArgs.parse(toolArguments);
57
+ const { connId, clientManager } = this.resolveSoleConnection(runtime);
58
+ const resolved = resolveKafkaClusterArgs(parsed, runtime, connId);
59
+ const admin = await clientManager.getKafkaAdminClient(resolved.clusterId, resolved.envId);
60
+ try {
61
+ let watermarks;
62
+ try {
63
+ watermarks = await fetchPartitionWatermarks(admin, parsed.topicName);
64
+ }
65
+ catch (err) {
66
+ // Two distinct librdkafka codes report the same conceptual failure:
67
+ // - ERR_UNKNOWN_TOPIC_OR_PART (broker-issued, single underscore)
68
+ // - ERR__UNKNOWN_TOPIC (local-side, double underscore — fires when
69
+ // the client's own metadata cache rejects the topic before
70
+ // reaching the broker)
71
+ // Only those two get the friendly "topic not found" message;
72
+ // everything else (auth denials, TLS failures, broker timeouts,
73
+ // unknown shapes) flows through formatKafkaError so callers see
74
+ // actionable signal instead of a misleading not-found label.
75
+ const isUnknownTopic = err instanceof KafkaJS.KafkaJSError &&
76
+ (err.code === KafkaJS.ErrorCodes.ERR_UNKNOWN_TOPIC_OR_PART ||
77
+ err.code === KafkaJS.ErrorCodes.ERR__UNKNOWN_TOPIC);
78
+ if (isUnknownTopic) {
79
+ logger.warn({ error: err, topicName: parsed.topicName }, `fetchTopicOffsets rejected for "${parsed.topicName}" — surfacing as topic-not-found`);
80
+ return this.createResponse(`Topic "${parsed.topicName}" not found on this cluster.`, true);
81
+ }
82
+ return this.createResponse(`Failed to fetch partition offsets for "${parsed.topicName}": ${formatKafkaError(err)}`, true);
83
+ }
84
+ if (watermarks.length === 0) {
85
+ return this.createResponse(`Topic "${parsed.topicName}" not found on this cluster.`, true);
86
+ }
87
+ if (parsed.partition !== undefined) {
88
+ const numPartitions = watermarks.length;
89
+ const requested = parsed.partition;
90
+ const match = watermarks.find((w) => w.partition === requested);
91
+ if (!match) {
92
+ return this.createResponse(`Topic "${parsed.topicName}" has ${numPartitions} partition(s) ` +
93
+ `(0..${numPartitions - 1}); requested partition ${requested} is out of range.`, true);
94
+ }
95
+ watermarks = [match];
96
+ }
97
+ const payload = {
98
+ topicName: parsed.topicName,
99
+ partitions: watermarks.map((w) => mapToPartitionOffsetInfo(parsed.topicName, w)),
100
+ };
101
+ const summary = `Partition offsets for "${parsed.topicName}" ` +
102
+ `(${payload.partitions.length} partition(s)):\n` +
103
+ JSON.stringify(payload, null, 2);
104
+ return this.createStructuredResponse(summary, payload);
105
+ }
106
+ finally {
107
+ await disposeIfOAuth(runtime, connId, admin);
108
+ }
109
+ }
110
+ getToolConfig() {
111
+ return {
112
+ name: ToolName.GET_PARTITION_OFFSETS,
113
+ description: "Return per-partition low/high watermarks and message counts for a Kafka topic. " +
114
+ "Use this to size a backfill, measure lag relative to a known offset, or check whether a topic is still receiving writes — without consuming. " +
115
+ "Pass `partition` to restrict the response to a single partition.",
116
+ inputSchema: getPartitionOffsetsArgs.shape,
117
+ annotations: READ_ONLY,
118
+ };
119
+ }
120
+ category = ToolCategory.Kafka;
121
+ predicate = kafkaBootstrapOrOAuth;
122
+ }
123
+ //# sourceMappingURL=get-partition-offsets-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-partition-offsets-handler.js","sourceRoot":"","sources":["../../../../../src/confluent/tools/handlers/kafka/get-partition-offsets-handler.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { CallToolResult } from "../../../../confluent/schema.js";
2
- import { BaseToolHandler, ToolConfig } from "../../../../confluent/tools/base-tools.js";
2
+ import { BaseToolHandler, ToolCategory, ToolConfig } from "../../../../confluent/tools/base-tools.js";
3
3
  import { ServerRuntime } from "../../../../server-runtime.js";
4
4
  /**
5
5
  * Handler for retrieving Kafka topic configurations through Confluent Cloud REST API.
@@ -9,6 +9,7 @@ import { ServerRuntime } from "../../../../server-runtime.js";
9
9
  export declare class GetTopicConfigHandler extends BaseToolHandler {
10
10
  handle(runtime: ServerRuntime, toolArguments: Record<string, unknown>): Promise<CallToolResult>;
11
11
  getToolConfig(): ToolConfig;
12
+ readonly category = ToolCategory.Kafka;
12
13
  readonly predicate: import("../../../../confluent/tools/connection-predicates.js").ConnectionPredicate;
13
14
  }
14
15
  //# sourceMappingURL=get-topic-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-topic-config.d.ts","sourceRoot":"","sources":["../../../../../src/confluent/tools/handlers/kafka/get-topic-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EACL,eAAe,EAEf,UAAU,EACX,MAAM,oCAAoC,CAAC;AAI5C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAuBvD;;;;GAIG;AACH,qBAAa,qBAAsB,SAAQ,eAAe;IAClD,MAAM,CACV,OAAO,EAAE,aAAa,EACtB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACrC,OAAO,CAAC,cAAc,CAAC;IAgD1B,aAAa,IAAI,UAAU;IAQ3B,QAAQ,CAAC,SAAS,8EAA4B;CAC/C"}
1
+ {"version":3,"file":"get-topic-config.d.ts","sourceRoot":"","sources":["../../../../../src/confluent/tools/handlers/kafka/get-topic-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EACL,eAAe,EAEf,YAAY,EACZ,UAAU,EACX,MAAM,oCAAoC,CAAC;AAI5C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAuBvD;;;;GAIG;AACH,qBAAa,qBAAsB,SAAQ,eAAe;IAClD,MAAM,CACV,OAAO,EAAE,aAAa,EACtB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACrC,OAAO,CAAC,cAAc,CAAC;IAgD1B,aAAa,IAAI,UAAU;IAQ3B,QAAQ,CAAC,QAAQ,sBAAsB;IACvC,QAAQ,CAAC,SAAS,8EAA4B;CAC/C"}
@@ -1,4 +1,4 @@
1
- import { BaseToolHandler, READ_ONLY, } from "../../../../confluent/tools/base-tools.js";
1
+ import { BaseToolHandler, READ_ONLY, ToolCategory, } from "../../../../confluent/tools/base-tools.js";
2
2
  import { resolveKafkaRestArgs } from "../../../../confluent/tools/cluster-arg-resolvers.js";
3
3
  import { kafkaRestWithAuthOrOAuth } from "../../../../confluent/tools/connection-predicates.js";
4
4
  import { ToolName } from "../../../../confluent/tools/tool-name.js";
@@ -55,6 +55,7 @@ export class GetTopicConfigHandler extends BaseToolHandler {
55
55
  annotations: READ_ONLY,
56
56
  };
57
57
  }
58
+ category = ToolCategory.Kafka;
58
59
  predicate = kafkaRestWithAuthOrOAuth;
59
60
  }
60
61
  //# sourceMappingURL=get-topic-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-topic-config.js","sourceRoot":"","sources":["../../../../../src/confluent/tools/handlers/kafka/get-topic-config.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,SAAS,GAEV,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AACrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AACzF,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAE7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,CAAC,4CAA4C,CAAC;SACtD,QAAQ,EAAE;IACb,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,iFAAiF,CAClF;IACH,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,iGAAiG,CAClG;CACJ,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,OAAO,qBAAsB,SAAQ,eAAe;IACxD,KAAK,CAAC,MAAM,CACV,OAAsB,EACtB,aAAsC;QAEtC,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC5D,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACtE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAE3E,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,gCAAgC,CACrE,SAAS,EACT,KAAK,CACN,CAAC;QACF,MAAM,eAAe,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;QAE1D,2BAA2B;QAC3B,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,GAC1C,MAAM,eAAe,CACnB,sBAAsB,SAAS,WAAW,MAAM,CAAC,SAAS,EAAE,CAC7D,CAAC,GAAG,EAAE,CAAC;QAEV,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,cAAc,CACxB,qCAAqC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,EACjE,IAAI,CACL,CAAC;QACJ,CAAC;QAED,iCAAiC;QACjC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,GAC5C,MAAM,eAAe,CACnB,sBAAsB,SAAS,WAAW,MAAM,CAAC,SAAS,UAAU,CACrE,CAAC,GAAG,EAAE,CAAC;QAEV,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,cAAc,CACxB,2CAA2C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,EACxE,IAAI,CACL,CAAC;QACJ,CAAC;QAED,iEAAiE;QACjE,MAAM,QAAQ,GAAG;YACf,YAAY,EAAE,SAAS;YACvB,WAAW,EAAE,UAAU;SACxB,CAAC;QAEF,OAAO,IAAI,CAAC,cAAc,CACxB,4BAA4B,MAAM,CAAC,SAAS,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CACvF,CAAC;IACJ,CAAC;IAED,aAAa;QACX,OAAO;YACL,IAAI,EAAE,QAAQ,CAAC,gBAAgB;YAC/B,WAAW,EAAE,4DAA4D;YACzE,WAAW,EAAE,uBAAuB,CAAC,KAAK;YAC1C,WAAW,EAAE,SAAS;SACvB,CAAC;IACJ,CAAC;IACQ,SAAS,GAAG,wBAAwB,CAAC;CAC/C"}
1
+ {"version":3,"file":"get-topic-config.js","sourceRoot":"","sources":["../../../../../src/confluent/tools/handlers/kafka/get-topic-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
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 listConsumerGroupsArgs: z.ZodObject<{
6
+ matchStates: z.ZodOptional<z.ZodArray<z.ZodEnum<{
7
+ Unknown: "Unknown";
8
+ PreparingRebalance: "PreparingRebalance";
9
+ CompletingRebalance: "CompletingRebalance";
10
+ Stable: "Stable";
11
+ Dead: "Dead";
12
+ Empty: "Empty";
13
+ }>>>;
14
+ matchType: z.ZodOptional<z.ZodEnum<{
15
+ Classic: "Classic";
16
+ Consumer: "Consumer";
17
+ }>>;
18
+ cluster_id: z.ZodOptional<z.ZodString>;
19
+ environment_id: z.ZodOptional<z.ZodString>;
20
+ }, z.core.$strip>;
21
+ /**
22
+ * Wire-format response payload. `Record<string, unknown>` compatibility lets it
23
+ * thread cleanly through MCP's `structuredContent` channel without a boundary
24
+ * cast at the call site.
25
+ */
26
+ export type ListConsumerGroupsResponse = {
27
+ groups: Array<{
28
+ groupId: string;
29
+ state: string;
30
+ type: string;
31
+ protocolType: string;
32
+ isSimpleConsumerGroup: boolean;
33
+ }>;
34
+ errors: Array<{
35
+ message: string;
36
+ code?: number;
37
+ }>;
38
+ } & Record<string, unknown>;
39
+ export declare class ListConsumerGroupsHandler extends BaseToolHandler {
40
+ readonly category = ToolCategory.Kafka;
41
+ readonly predicate: import("../../../../confluent/tools/connection-predicates.js").ConnectionPredicate;
42
+ getToolConfig(): ToolConfig;
43
+ handle(runtime: ServerRuntime, toolArguments: Record<string, unknown>): Promise<CallToolResult>;
44
+ }
45
+ //# sourceMappingURL=list-consumer-groups-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-consumer-groups-handler.d.ts","sourceRoot":"","sources":["../../../../../src/confluent/tools/handlers/kafka/list-consumer-groups-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EACL,eAAe,EAEf,YAAY,EACZ,UAAU,EACX,MAAM,oCAAoC,CAAC;AAe5C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;iBA6BjC,CAAC;AAEH;;;;GAIG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACvC,MAAM,EAAE,KAAK,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,qBAAqB,EAAE,OAAO,CAAC;KAChC,CAAC,CAAC;IACH,MAAM,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5B,qBAAa,yBAA0B,SAAQ,eAAe;IAC5D,QAAQ,CAAC,QAAQ,sBAAsB;IACvC,QAAQ,CAAC,SAAS,8EAAyB;IAE3C,aAAa,IAAI,UAAU;IAcrB,MAAM,CACV,OAAO,EAAE,aAAa,EACtB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACrC,OAAO,CAAC,cAAc,CAAC;CA2D3B"}
@@ -0,0 +1,86 @@
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 { STATE_NAME_TO_ENUM, STATE_NAMES, stateName, TYPE_NAME_TO_ENUM, TYPE_NAMES, typeName, } from "../../../../confluent/tools/handlers/kafka/consumer-group-enums.js";
5
+ import { ToolName } from "../../../../confluent/tools/tool-name.js";
6
+ import { z } from "zod";
7
+ export const listConsumerGroupsArgs = z.object({
8
+ matchStates: z
9
+ .array(z.enum(STATE_NAMES))
10
+ .nonempty()
11
+ .optional()
12
+ .describe("Filter to groups in any of these states. Omit to return all. " +
13
+ 'Options: "Stable" (live), "Empty" (orphaned), "Dead", ' +
14
+ '"PreparingRebalance", "CompletingRebalance", "Unknown".'),
15
+ matchType: z
16
+ .enum(TYPE_NAMES)
17
+ .optional()
18
+ .describe("Filter to groups of this protocol type. Omit to return both. " +
19
+ 'Options: "Consumer" (new, KIP-848), "Classic" (legacy generation-based).'),
20
+ cluster_id: z
21
+ .string()
22
+ .optional()
23
+ .describe("Confluent Cloud logical Kafka cluster ID (lkc-...). Discover via list-clusters."),
24
+ environment_id: z
25
+ .string()
26
+ .optional()
27
+ .describe("Confluent Cloud environment ID (env-...) that owns the cluster. Discover via list-environments."),
28
+ });
29
+ export class ListConsumerGroupsHandler extends BaseToolHandler {
30
+ category = ToolCategory.Kafka;
31
+ predicate = kafkaBootstrapOrOAuth;
32
+ getToolConfig() {
33
+ return {
34
+ name: ToolName.LIST_CONSUMER_GROUPS,
35
+ description: "List consumer groups on a Kafka cluster — wraps the broker's " +
36
+ "listGroups admin call. Optional filters narrow the result " +
37
+ "server-side. Response carries one entry per group with groupId, " +
38
+ "state, type, protocolType, and isSimpleConsumerGroup, plus an " +
39
+ "errors array of any per-broker partial failures.",
40
+ inputSchema: listConsumerGroupsArgs.shape,
41
+ annotations: READ_ONLY,
42
+ };
43
+ }
44
+ async handle(runtime, toolArguments) {
45
+ const parsed = listConsumerGroupsArgs.parse(toolArguments);
46
+ const { connId, clientManager } = this.resolveSoleConnection(runtime);
47
+ const { clusterId, envId } = resolveKafkaClusterArgs(parsed, runtime, connId);
48
+ const admin = await clientManager.getKafkaAdminClient(clusterId, envId);
49
+ try {
50
+ const options = {};
51
+ if (parsed.matchStates !== undefined) {
52
+ options.matchConsumerGroupStates = parsed.matchStates.map((name) => STATE_NAME_TO_ENUM[name]);
53
+ }
54
+ if (parsed.matchType !== undefined) {
55
+ options.matchConsumerGroupTypes = [TYPE_NAME_TO_ENUM[parsed.matchType]];
56
+ }
57
+ const { groups: rawGroups, errors: rawErrors } = await admin.listGroups(options);
58
+ const filtered = parsed.matchStates !== undefined || parsed.matchType !== undefined;
59
+ if (rawGroups.length === 0 && rawErrors.length > 0) {
60
+ return this.createResponse(rawErrors[0].message, true);
61
+ }
62
+ const payload = {
63
+ groups: rawGroups.map((g) => ({
64
+ groupId: g.groupId,
65
+ state: stateName(g.state),
66
+ type: typeName(g.type),
67
+ protocolType: g.protocolType,
68
+ isSimpleConsumerGroup: g.isSimpleConsumerGroup,
69
+ })),
70
+ errors: rawErrors.map((e) => ({ message: e.message, code: e.code })),
71
+ };
72
+ const count = payload.groups.length;
73
+ const noun = count === 1 ? "group" : "groups";
74
+ const suffix = filtered ? " (filtered)" : "";
75
+ const summary = count === 0
76
+ ? `Found 0 consumer ${noun}${suffix}.`
77
+ : `Found ${count} consumer ${noun}${suffix}:\n` +
78
+ JSON.stringify(payload, null, 2);
79
+ return this.createStructuredResponse(summary, payload);
80
+ }
81
+ finally {
82
+ await disposeIfOAuth(runtime, connId, admin);
83
+ }
84
+ }
85
+ }
86
+ //# sourceMappingURL=list-consumer-groups-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-consumer-groups-handler.js","sourceRoot":"","sources":["../../../../../src/confluent/tools/handlers/kafka/list-consumer-groups-handler.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import { CallToolResult } from "../../../../confluent/schema.js";
2
- import { BaseToolHandler, ToolConfig } from "../../../../confluent/tools/base-tools.js";
2
+ import { BaseToolHandler, ToolCategory, ToolConfig } from "../../../../confluent/tools/base-tools.js";
3
3
  import { ServerRuntime } from "../../../../server-runtime.js";
4
4
  export declare class ListTopicsHandler extends BaseToolHandler {
5
5
  handle(runtime: ServerRuntime, toolArguments: Record<string, unknown>): Promise<CallToolResult>;
6
6
  getToolConfig(): ToolConfig;
7
+ readonly category = ToolCategory.Kafka;
7
8
  readonly predicate: import("../../../../confluent/tools/connection-predicates.js").ConnectionPredicate;
8
9
  }
9
10
  //# sourceMappingURL=list-topics-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-topics-handler.d.ts","sourceRoot":"","sources":["../../../../../src/confluent/tools/handlers/kafka/list-topics-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EACL,eAAe,EAEf,UAAU,EACX,MAAM,oCAAoC,CAAC;AAO5C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAkBvD,qBAAa,iBAAkB,SAAQ,eAAe;IAC9C,MAAM,CACV,OAAO,EAAE,aAAa,EACtB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACrC,OAAO,CAAC,cAAc,CAAC;IAgB1B,aAAa,IAAI,UAAU;IAS3B,QAAQ,CAAC,SAAS,8EAAyB;CAC5C"}
1
+ {"version":3,"file":"list-topics-handler.d.ts","sourceRoot":"","sources":["../../../../../src/confluent/tools/handlers/kafka/list-topics-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EACL,eAAe,EAEf,YAAY,EACZ,UAAU,EACX,MAAM,oCAAoC,CAAC;AAO5C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAkBvD,qBAAa,iBAAkB,SAAQ,eAAe;IAC9C,MAAM,CACV,OAAO,EAAE,aAAa,EACtB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACrC,OAAO,CAAC,cAAc,CAAC;IAgB1B,aAAa,IAAI,UAAU;IAS3B,QAAQ,CAAC,QAAQ,sBAAsB;IACvC,QAAQ,CAAC,SAAS,8EAAyB;CAC5C"}
@@ -1,4 +1,4 @@
1
- import { BaseToolHandler, READ_ONLY, } from "../../../../confluent/tools/base-tools.js";
1
+ import { BaseToolHandler, READ_ONLY, ToolCategory, } from "../../../../confluent/tools/base-tools.js";
2
2
  import { disposeIfOAuth, resolveKafkaClusterArgs, } from "../../../../confluent/tools/cluster-arg-resolvers.js";
3
3
  import { kafkaBootstrapOrOAuth } from "../../../../confluent/tools/connection-predicates.js";
4
4
  import { ToolName } from "../../../../confluent/tools/tool-name.js";
@@ -35,6 +35,7 @@ export class ListTopicsHandler extends BaseToolHandler {
35
35
  annotations: READ_ONLY,
36
36
  };
37
37
  }
38
+ category = ToolCategory.Kafka;
38
39
  predicate = kafkaBootstrapOrOAuth;
39
40
  }
40
41
  //# sourceMappingURL=list-topics-handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-topics-handler.js","sourceRoot":"","sources":["../../../../../src/confluent/tools/handlers/kafka/list-topics-handler.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,SAAS,GAEV,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,cAAc,EACd,uBAAuB,GACxB,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AACtF,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAE7D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,iFAAiF,CAClF;IACH,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,iGAAiG,CAClG;CACJ,CAAC,CAAC;AAEH,MAAM,OAAO,iBAAkB,SAAQ,eAAe;IACpD,KAAK,CAAC,MAAM,CACV,OAAsB,EACtB,aAAsC;QAEtC,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAClD,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACtE,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,mBAAmB,CACnD,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,KAAK,CACf,CAAC;QACF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC,cAAc,CAAC,iBAAiB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClE,CAAC;gBAAS,CAAC;YACT,MAAM,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,aAAa;QACX,OAAO;YACL,IAAI,EAAE,QAAQ,CAAC,WAAW;YAC1B,WAAW,EAAE,uCAAuC;YACpD,WAAW,EAAE,aAAa,CAAC,KAAK;YAChC,WAAW,EAAE,SAAS;SACvB,CAAC;IACJ,CAAC;IAEQ,SAAS,GAAG,qBAAqB,CAAC;CAC5C"}
1
+ {"version":3,"file":"list-topics-handler.js","sourceRoot":"","sources":["../../../../../src/confluent/tools/handlers/kafka/list-topics-handler.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,SAAS,EACT,YAAY,GAEb,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,cAAc,EACd,uBAAuB,GACxB,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AACtF,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAE7D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,iFAAiF,CAClF;IACH,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,iGAAiG,CAClG;CACJ,CAAC,CAAC;AAEH,MAAM,OAAO,iBAAkB,SAAQ,eAAe;IACpD,KAAK,CAAC,MAAM,CACV,OAAsB,EACtB,aAAsC;QAEtC,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAClD,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACtE,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,mBAAmB,CACnD,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,KAAK,CACf,CAAC;QACF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC,cAAc,CAAC,iBAAiB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClE,CAAC;gBAAS,CAAC;YACT,MAAM,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,aAAa;QACX,OAAO;YACL,IAAI,EAAE,QAAQ,CAAC,WAAW;YAC1B,WAAW,EAAE,uCAAuC;YACpD,WAAW,EAAE,aAAa,CAAC,KAAK;YAChC,WAAW,EAAE,SAAS;SACvB,CAAC;IACJ,CAAC;IAEQ,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC;IAC9B,SAAS,GAAG,qBAAqB,CAAC;CAC5C"}
@@ -0,0 +1,54 @@
1
+ import { KafkaJS } from "@confluentinc/kafka-javascript";
2
+ /**
3
+ * Per-partition low/high watermark pair, normalized to the fields the
4
+ * consume handler and the standalone `get-partition-offsets` tool both
5
+ * read. The upstream `admin.fetchTopicOffsets` response also carries a
6
+ * committed `offset` field (the next-to-be-committed group offset, not
7
+ * the partition end-of-log), which neither caller uses; this type drops
8
+ * it so a shared response shape governs both surfaces.
9
+ */
10
+ export interface PartitionWatermark {
11
+ partition: number;
12
+ low: string;
13
+ high: string;
14
+ }
15
+ /**
16
+ * Narrow a {@link BigInt} difference to a JS `Number`, saturating at
17
+ * {@link Number.MAX_SAFE_INTEGER} or {@link Number.MIN_SAFE_INTEGER}
18
+ * when the result would lose precision. The narrow path is the only one
19
+ * expected to fire in practice (even a million-msg/sec partition with
20
+ * infinite retention takes ~285 years to exceed 2^53 - 1); the
21
+ * saturation arms are defensive sentinels — hence the `Wacky --` log
22
+ * signaling "this branch firing means something genuinely surprising
23
+ * happened". Symmetric guards on both ends of the safe range so a `diff`
24
+ * produced by an unexpected caller pattern (e.g. a far-ahead committed
25
+ * offset, or a cross-partition sum of many negative lags) can't silently
26
+ * lose precision.
27
+ *
28
+ * `context` is forwarded verbatim into the log payload so each caller
29
+ * can name the dimensions it knows about (`{topicName, partition}` for
30
+ * the standalone watermark tool, `{groupId, topic, partition}` for the
31
+ * consumer-group lag tool) without this helper hard-coding either.
32
+ */
33
+ export declare function narrowMessageCount(diff: bigint, context: Record<string, unknown>): number;
34
+ /**
35
+ * Thin wrapper around `admin.fetchTopicOffsets(topic)` that normalizes
36
+ * the response to {@link PartitionWatermark}. Shared seam between the
37
+ * consume handler's per-call watermark cache (see
38
+ * {@link createWatermarkCache}) and standalone
39
+ * `get-partition-offsets` tool — single source of truth for the
40
+ * response shape both surfaces see.
41
+ */
42
+ export declare function fetchPartitionWatermarks(admin: KafkaJS.Admin, topic: string): Promise<PartitionWatermark[]>;
43
+ /**
44
+ * Lazy per-topic memoized watermark fetcher. The consume handler hits
45
+ * `admin.fetchTopicOffsets` from four independent resolution paths
46
+ * within a single tool call (explicit-offset bounds check, timestamp's
47
+ * silent-substitution cross-check, earliest-minority low-watermark
48
+ * seek, and tail-mode seek resolution); the cache keeps the admin
49
+ * round-trip count linear in the number of distinct topics rather than
50
+ * the number of resolution sites.
51
+ */
52
+ export type WatermarkCache = (topic: string) => Promise<PartitionWatermark[]>;
53
+ export declare function createWatermarkCache(admin: KafkaJS.Admin): WatermarkCache;
54
+ //# sourceMappingURL=partition-watermarks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"partition-watermarks.d.ts","sourceRoot":"","sources":["../../../../../src/confluent/tools/handlers/kafka/partition-watermarks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAGzD;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,MAAM,CAkBR;AAED;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,OAAO,CAAC,KAAK,EACpB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAG/B;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAE9E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,cAAc,CAUzE"}
@@ -0,0 +1,56 @@
1
+ import { logger } from "../../../../logger.js";
2
+ /**
3
+ * Narrow a {@link BigInt} difference to a JS `Number`, saturating at
4
+ * {@link Number.MAX_SAFE_INTEGER} or {@link Number.MIN_SAFE_INTEGER}
5
+ * when the result would lose precision. The narrow path is the only one
6
+ * expected to fire in practice (even a million-msg/sec partition with
7
+ * infinite retention takes ~285 years to exceed 2^53 - 1); the
8
+ * saturation arms are defensive sentinels — hence the `Wacky --` log
9
+ * signaling "this branch firing means something genuinely surprising
10
+ * happened". Symmetric guards on both ends of the safe range so a `diff`
11
+ * produced by an unexpected caller pattern (e.g. a far-ahead committed
12
+ * offset, or a cross-partition sum of many negative lags) can't silently
13
+ * lose precision.
14
+ *
15
+ * `context` is forwarded verbatim into the log payload so each caller
16
+ * can name the dimensions it knows about (`{topicName, partition}` for
17
+ * the standalone watermark tool, `{groupId, topic, partition}` for the
18
+ * consumer-group lag tool) without this helper hard-coding either.
19
+ */
20
+ export function narrowMessageCount(diff, context) {
21
+ const maxSafe = BigInt(Number.MAX_SAFE_INTEGER);
22
+ const minSafe = BigInt(Number.MIN_SAFE_INTEGER);
23
+ if (diff > maxSafe) {
24
+ logger.warn(context, "Wacky -- messageCount BigInt subtraction exceeds Number.MAX_SAFE_INTEGER; saturating to MAX_SAFE_INTEGER");
25
+ return Number.MAX_SAFE_INTEGER;
26
+ }
27
+ if (diff < minSafe) {
28
+ logger.warn(context, "Wacky -- messageCount BigInt subtraction below Number.MIN_SAFE_INTEGER; saturating to MIN_SAFE_INTEGER");
29
+ return Number.MIN_SAFE_INTEGER;
30
+ }
31
+ return Number(diff);
32
+ }
33
+ /**
34
+ * Thin wrapper around `admin.fetchTopicOffsets(topic)` that normalizes
35
+ * the response to {@link PartitionWatermark}. Shared seam between the
36
+ * consume handler's per-call watermark cache (see
37
+ * {@link createWatermarkCache}) and standalone
38
+ * `get-partition-offsets` tool — single source of truth for the
39
+ * response shape both surfaces see.
40
+ */
41
+ export async function fetchPartitionWatermarks(admin, topic) {
42
+ const raw = await admin.fetchTopicOffsets(topic);
43
+ return raw.map(({ partition, low, high }) => ({ partition, low, high }));
44
+ }
45
+ export function createWatermarkCache(admin) {
46
+ const cache = new Map();
47
+ return async (topic) => {
48
+ let wm = cache.get(topic);
49
+ if (!wm) {
50
+ wm = await fetchPartitionWatermarks(admin, topic);
51
+ cache.set(topic, wm);
52
+ }
53
+ return wm;
54
+ };
55
+ }
56
+ //# sourceMappingURL=partition-watermarks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"partition-watermarks.js","sourceRoot":"","sources":["../../../../../src/confluent/tools/handlers/kafka/partition-watermarks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAgBxC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,OAAgC;IAEhC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAChD,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CACT,OAAO,EACP,0GAA0G,CAC3G,CAAC;QACF,OAAO,MAAM,CAAC,gBAAgB,CAAC;IACjC,CAAC;IACD,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CACT,OAAO,EACP,wGAAwG,CACzG,CAAC;QACF,OAAO,MAAM,CAAC,gBAAgB,CAAC;IACjC,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,KAAoB,EACpB,KAAa;IAEb,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACjD,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3E,CAAC;AAaD,MAAM,UAAU,oBAAoB,CAAC,KAAoB;IACvD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgC,CAAC;IACtD,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE;QACrB,IAAI,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,EAAE,GAAG,MAAM,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAClD,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;AACJ,CAAC"}
@@ -1,14 +1,14 @@
1
1
  import { SchemaCheckResult } from "../../../../confluent/schema-registry-helper.js";
2
2
  import { CallToolResult } from "../../../../confluent/schema.js";
3
- import { BaseToolHandler, ToolConfig } from "../../../../confluent/tools/base-tools.js";
3
+ import { BaseToolHandler, ToolCategory, ToolConfig } from "../../../../confluent/tools/base-tools.js";
4
4
  import { ServerRuntime } from "../../../../server-runtime.js";
5
5
  /**
6
6
  * Handler for producing messages to a Kafka topic, with support for Confluent Schema Registry serialization (AVRO, JSON, PROTOBUF) for both key and value.
7
7
  *
8
- * - If schema registry is enabled, the handler checks if a schema is already registered for the topic's key/value subject.
9
- * - If a schema exists and none is provided, it returns the latest schema to the client for retry.
10
- * - If no schema exists and none is provided, it returns an error.
8
+ * - If schema registry is enabled, `schemaType` is required and the handler checks if a schema is already registered for the topic's key/value subject.
11
9
  * - If a schema is provided, it is registered before serialization.
10
+ * - If no schema is provided and one is already registered, the serializer uses the latest registered version.
11
+ * - If no schema is provided and none is registered, it returns an error.
12
12
  * - Serialization is performed using the appropriate serializer for the schema type.
13
13
  * - Produces the message to the specified Kafka topic, handling both key and value serialization as needed.
14
14
  */
@@ -32,6 +32,7 @@ export declare class ProduceKafkaMessageHandler extends BaseToolHandler {
32
32
  * @returns The tool configuration
33
33
  */
34
34
  getToolConfig(): ToolConfig;
35
+ readonly category = ToolCategory.Kafka;
35
36
  readonly predicate: import("../../../../confluent/tools/connection-predicates.js").ConnectionPredicate;
36
37
  }
37
38
  //# sourceMappingURL=produce-kafka-message-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"produce-kafka-message-handler.d.ts","sourceRoot":"","sources":["../../../../../src/confluent/tools/handlers/kafka/produce-kafka-message-handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,iBAAiB,EAElB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EACL,eAAe,EAEf,UAAU,EACX,MAAM,oCAAoC,CAAC;AAQ5C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AA8DvD;;;;;;;;;GASG;AACH,qBAAa,0BAA2B,SAAQ,eAAe;IAC7D;;;;OAIG;IACH,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,GAAG,cAAc,GAAG,IAAI;IAqBzE;;;;;;OAMG;IACG,MAAM,CACV,OAAO,EAAE,aAAa,EACtB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACrC,OAAO,CAAC,cAAc,CAAC;IAuG1B;;;OAGG;IACH,aAAa,IAAI,UAAU;IAS3B,QAAQ,CAAC,SAAS,8EAAyB;CAC5C"}
1
+ {"version":3,"file":"produce-kafka-message-handler.d.ts","sourceRoot":"","sources":["../../../../../src/confluent/tools/handlers/kafka/produce-kafka-message-handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,iBAAiB,EAElB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EACL,eAAe,EAEf,YAAY,EACZ,UAAU,EACX,MAAM,oCAAoC,CAAC;AAQ5C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AA8DvD;;;;;;;;;GASG;AACH,qBAAa,0BAA2B,SAAQ,eAAe;IAC7D;;;;OAIG;IACH,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,GAAG,cAAc,GAAG,IAAI;IAQzE;;;;;;OAMG;IACG,MAAM,CACV,OAAO,EAAE,aAAa,EACtB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACrC,OAAO,CAAC,cAAc,CAAC;IAuG1B;;;OAGG;IACH,aAAa,IAAI,UAAU;IAS3B,QAAQ,CAAC,QAAQ,sBAAsB;IACvC,QAAQ,CAAC,SAAS,8EAAyB;CAC5C"}
@@ -1,6 +1,6 @@
1
1
  import { SerdeType } from "@confluentinc/schemaregistry";
2
2
  import { checkSchemaNeeded, serializeMessage, } from "../../../../confluent/schema-registry-helper.js";
3
- import { BaseToolHandler, CREATE_UPDATE, } from "../../../../confluent/tools/base-tools.js";
3
+ import { BaseToolHandler, CREATE_UPDATE, ToolCategory, } from "../../../../confluent/tools/base-tools.js";
4
4
  import { disposeIfOAuth, formatKafkaError, resolveKafkaClusterArgs, } from "../../../../confluent/tools/cluster-arg-resolvers.js";
5
5
  import { kafkaBootstrapOrOAuth } from "../../../../confluent/tools/connection-predicates.js";
6
6
  import { ToolName } from "../../../../confluent/tools/tool-name.js";
@@ -49,10 +49,10 @@ const produceKafkaMessageArguments = z.object({
49
49
  /**
50
50
  * Handler for producing messages to a Kafka topic, with support for Confluent Schema Registry serialization (AVRO, JSON, PROTOBUF) for both key and value.
51
51
  *
52
- * - If schema registry is enabled, the handler checks if a schema is already registered for the topic's key/value subject.
53
- * - If a schema exists and none is provided, it returns the latest schema to the client for retry.
54
- * - If no schema exists and none is provided, it returns an error.
52
+ * - If schema registry is enabled, `schemaType` is required and the handler checks if a schema is already registered for the topic's key/value subject.
55
53
  * - If a schema is provided, it is registered before serialization.
54
+ * - If no schema is provided and one is already registered, the serializer uses the latest registered version.
55
+ * - If no schema is provided and none is registered, it returns an error.
56
56
  * - Serialization is performed using the appropriate serializer for the schema type.
57
57
  * - Produces the message to the specified Kafka topic, handling both key and value serialization as needed.
58
58
  */
@@ -65,16 +65,7 @@ export class ProduceKafkaMessageHandler extends BaseToolHandler {
65
65
  handleSchemaCheckResult(result) {
66
66
  if (!result)
67
67
  return null;
68
- if (result.type === "schema-needed") {
69
- return this.createResponse(`A schema already exists for subject '${result.subject}'. Please retry with the following schema:\n${result.latestSchema}, schemaType: ${result.schemaType}`, true, {
70
- latestSchema: result.latestSchema,
71
- subject: result.subject,
72
- schemaType: result.schemaType,
73
- });
74
- }
75
- else {
76
- return this.createResponse(`No schema registered for subject '${result.subject}', and no schema provided to register.`, true);
77
- }
68
+ return this.createResponse(`No schema registered for subject '${result.subject}', and no schema provided to register.`, true);
78
69
  }
79
70
  /**
80
71
  * Main handler for producing a message to a Kafka topic, including schema registry logic and serialization.
@@ -162,6 +153,7 @@ export class ProduceKafkaMessageHandler extends BaseToolHandler {
162
153
  annotations: CREATE_UPDATE,
163
154
  };
164
155
  }
156
+ category = ToolCategory.Kafka;
165
157
  predicate = kafkaBootstrapOrOAuth;
166
158
  }
167
159
  //# sourceMappingURL=produce-kafka-message-handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"produce-kafka-message-handler.js","sourceRoot":"","sources":["../../../../../src/confluent/tools/handlers/kafka/produce-kafka-message-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EACL,iBAAiB,EAGjB,gBAAgB,GACjB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EACL,eAAe,EACf,aAAa,GAEd,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AACtF,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAE7D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,OAAO,EAAE,CAAC;SACP,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;SAC/C,QAAQ,CACP,sHAAsH,CACvH;IACH,iBAAiB,EAAE,CAAC;SACjB,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CACP,oFAAoF,CACrF;IACH,UAAU,EAAE,CAAC;SACV,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;SAClC,QAAQ,EAAE;SACV,QAAQ,CAAC,2DAA2D,CAAC;IACxE,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,kIAAkI,CACnI;IACH,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,4EAA4E,CAC7E;IACH,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC/D,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAE7D,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,mDAAmD,CAAC;IAChE,KAAK,EAAE,YAAY;IACnB,GAAG,EAAE,UAAU,CAAC,QAAQ,EAAE;IAC1B,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,iFAAiF,CAClF;IACH,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,iGAAiG,CAClG;CACJ,CAAC,CAAC;AAKH;;;;;;;;;GASG;AACH,MAAM,OAAO,0BAA2B,SAAQ,eAAe;IAC7D;;;;OAIG;IACH,uBAAuB,CAAC,MAAyB;QAC/C,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEzB,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,cAAc,CACxB,wCAAwC,MAAM,CAAC,OAAO,+CAA+C,MAAM,CAAC,YAAY,iBAAiB,MAAM,CAAC,UAAU,EAAE,EAC5J,IAAI,EACJ;gBACE,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,cAAc,CACxB,qCAAqC,MAAM,CAAC,OAAO,wCAAwC,EAC3F,IAAI,CACL,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,CACV,OAAsB,EACtB,aAAsC;QAEtC,MAAM,MAAM,GACV,4BAA4B,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACpD,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;QAEzC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACtE,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAElE,MAAM,aAAa,GACjB,CAAC,KAAK,IAAI,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAEvE,IAAI,QAA0C,CAAC;QAC/C,IAAI,aAAa,EAAE,CAAC;YAClB,QAAQ,GAAG,MAAM,aAAa,CAAC,0BAA0B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC5E,CAAC;QAED,4CAA4C;QAC5C,MAAM,gBAAgB,GAAG,MAAM,iBAAiB,CAC9C,SAAS,EACT,KAAuB,EACvB,SAAS,CAAC,KAAK,EACf,QAAQ,CACT,CAAC;QACF,MAAM,iBAAiB,GAAG,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;QACzE,IAAI,iBAAiB;YAAE,OAAO,iBAAiB,CAAC;QAEhD,0CAA0C;QAC1C,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAC5C,SAAS,EACT,GAAqB,EACrB,SAAS,CAAC,GAAG,EACb,QAAQ,CACT,CAAC;YACF,MAAM,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAC;YACrE,IAAI,eAAe;gBAAE,OAAO,eAAe,CAAC;QAC9C,CAAC;QAED,IAAI,WAA4B,CAAC;QACjC,IAAI,SAAsC,CAAC;QAC3C,IAAI,CAAC;YACH,WAAW,GAAG,MAAM,gBAAgB,CAClC,SAAS,EACT,KAAuB,EACvB,SAAS,CAAC,KAAK,EACf,QAAQ,CACT,CAAC;YACF,IAAI,GAAG,EAAE,CAAC;gBACR,SAAS,GAAG,MAAM,gBAAgB,CAChC,SAAS,EACT,GAAqB,EACrB,SAAS,CAAC,GAAG,EACb,QAAQ,CACT,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,2EAA2E;YAC3E,0DAA0D;YAC1D,OAAO,IAAI,CAAC,cAAc,CACxB,wBAAwB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,EAClE,IAAI,CACL,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,gBAAgB,CACnD,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,KAAK,CACf,CAAC;QACF,IAAI,CAAC;YACH,mBAAmB;YACnB,IAAI,cAAgC,CAAC;YACrC,IAAI,CAAC;gBACH,cAAc,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC;oBACnC,KAAK,EAAE,SAAS;oBAChB,QAAQ,EAAE;wBACR,OAAO,SAAS,KAAK,WAAW;4BAC9B,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE;4BACxC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE;qBAC3B;iBACF,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC,cAAc,CACxB,8BAA8B,gBAAgB,CAAC,GAAG,CAAC,EAAE,EACrD,IAAI,CACL,CAAC;YACJ,CAAC;YACD,MAAM,iBAAiB,GAAG,cAAc;iBACrC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAChB,IAAI,QAAQ,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC;oBAC7B,OAAO,sCAAsC,QAAQ,CAAC,SAAS,gBAAgB,QAAQ,CAAC,SAAS,aAAa,QAAQ,CAAC,MAAM,oBAAoB,QAAQ,CAAC,SAAS,GAAG,CAAC;gBACzK,CAAC;gBACD,OAAO,4CAA4C,QAAQ,CAAC,SAAS,gBAAgB,QAAQ,CAAC,SAAS,aAAa,QAAQ,CAAC,MAAM,GAAG,CAAC;YACzI,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CACjC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,KAAK,CAAC,CACvC,CAAC;YACF,OAAO,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;QACzD,CAAC;gBAAS,CAAC;YACT,MAAM,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,aAAa;QACX,OAAO;YACL,IAAI,EAAE,QAAQ,CAAC,eAAe;YAC9B,WAAW,EAAE,iYAAiY,QAAQ,CAAC,aAAa,QAAQ;YAC5a,WAAW,EAAE,4BAA4B,CAAC,KAAK;YAC/C,WAAW,EAAE,aAAa;SAC3B,CAAC;IACJ,CAAC;IAEQ,SAAS,GAAG,qBAAqB,CAAC;CAC5C"}
1
+ {"version":3,"file":"produce-kafka-message-handler.js","sourceRoot":"","sources":["../../../../../src/confluent/tools/handlers/kafka/produce-kafka-message-handler.ts"],"names":[],"mappings":"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"}