@confluentinc/mcp-confluent 1.3.0 → 1.5.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 (429) hide show
  1. package/README.md +180 -78
  2. package/assets/oauth-templates/callback-success.html +80 -0
  3. package/assets/oauth-templates/styles.html +101 -40
  4. package/config.example.yaml +36 -7
  5. package/config.oauth.example.yaml +14 -1
  6. package/dist/config/env-config.d.ts +9 -3
  7. package/dist/config/env-config.d.ts.map +1 -1
  8. package/dist/config/env-config.js +20 -34
  9. package/dist/config/env-config.js.map +1 -1
  10. package/dist/config/models.d.ts +108 -13
  11. package/dist/config/models.d.ts.map +1 -1
  12. package/dist/config/models.js +54 -37
  13. package/dist/config/models.js.map +1 -1
  14. package/dist/confluent/base-client-manager.d.ts +36 -1
  15. package/dist/confluent/base-client-manager.d.ts.map +1 -1
  16. package/dist/confluent/base-client-manager.js +4 -0
  17. package/dist/confluent/base-client-manager.js.map +1 -1
  18. package/dist/confluent/client-manager.d.ts +14 -0
  19. package/dist/confluent/client-manager.d.ts.map +1 -1
  20. package/dist/confluent/direct-client-manager.d.ts +2 -2
  21. package/dist/confluent/direct-client-manager.d.ts.map +1 -1
  22. package/dist/confluent/direct-client-manager.js +25 -17
  23. package/dist/confluent/direct-client-manager.js.map +1 -1
  24. package/dist/confluent/node-deps.d.ts +1 -0
  25. package/dist/confluent/node-deps.d.ts.map +1 -1
  26. package/dist/confluent/node-deps.js +7 -1
  27. package/dist/confluent/node-deps.js.map +1 -1
  28. package/dist/confluent/oauth/auth0-config.d.ts +26 -4
  29. package/dist/confluent/oauth/auth0-config.d.ts.map +1 -1
  30. package/dist/confluent/oauth/auth0-config.js +59 -19
  31. package/dist/confluent/oauth/auth0-config.js.map +1 -1
  32. package/dist/confluent/oauth/callback-pages.d.ts +9 -1
  33. package/dist/confluent/oauth/callback-pages.d.ts.map +1 -1
  34. package/dist/confluent/oauth/callback-pages.js +14 -5
  35. package/dist/confluent/oauth/callback-pages.js.map +1 -1
  36. package/dist/confluent/oauth/pkce-login.d.ts +20 -1
  37. package/dist/confluent/oauth/pkce-login.d.ts.map +1 -1
  38. package/dist/confluent/oauth/pkce-login.js +118 -9
  39. package/dist/confluent/oauth/pkce-login.js.map +1 -1
  40. package/dist/confluent/oauth/types.d.ts +1 -2
  41. package/dist/confluent/oauth/types.d.ts.map +1 -1
  42. package/dist/confluent/oauth-client-manager.d.ts +7 -4
  43. package/dist/confluent/oauth-client-manager.d.ts.map +1 -1
  44. package/dist/confluent/oauth-client-manager.js +34 -12
  45. package/dist/confluent/oauth-client-manager.js.map +1 -1
  46. package/dist/confluent/oauth-resource-resolvers.d.ts +11 -0
  47. package/dist/confluent/oauth-resource-resolvers.d.ts.map +1 -1
  48. package/dist/confluent/oauth-resource-resolvers.js +24 -0
  49. package/dist/confluent/oauth-resource-resolvers.js.map +1 -1
  50. package/dist/confluent/schema-registry-helper.d.ts +119 -16
  51. package/dist/confluent/schema-registry-helper.d.ts.map +1 -1
  52. package/dist/confluent/schema-registry-helper.js +303 -49
  53. package/dist/confluent/schema-registry-helper.js.map +1 -1
  54. package/dist/confluent/telemetry.d.ts +7 -1
  55. package/dist/confluent/telemetry.d.ts.map +1 -1
  56. package/dist/confluent/telemetry.js +6 -0
  57. package/dist/confluent/telemetry.js.map +1 -1
  58. package/dist/confluent/tools/base-tools.d.ts +207 -21
  59. package/dist/confluent/tools/base-tools.d.ts.map +1 -1
  60. package/dist/confluent/tools/base-tools.js +259 -20
  61. package/dist/confluent/tools/base-tools.js.map +1 -1
  62. package/dist/confluent/tools/cluster-arg-resolvers.d.ts +21 -0
  63. package/dist/confluent/tools/cluster-arg-resolvers.d.ts.map +1 -1
  64. package/dist/confluent/tools/cluster-arg-resolvers.js +45 -0
  65. package/dist/confluent/tools/cluster-arg-resolvers.js.map +1 -1
  66. package/dist/confluent/tools/connection-predicates.d.ts +83 -12
  67. package/dist/confluent/tools/connection-predicates.d.ts.map +1 -1
  68. package/dist/confluent/tools/connection-predicates.js +85 -11
  69. package/dist/confluent/tools/connection-predicates.js.map +1 -1
  70. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.d.ts +2 -1
  71. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.d.ts.map +1 -1
  72. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.js +37 -4
  73. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.js.map +1 -1
  74. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.d.ts +3 -3
  75. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.d.ts.map +1 -1
  76. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.js +11 -6
  77. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.js.map +1 -1
  78. package/dist/confluent/tools/handlers/catalog/create-topic-tags.d.ts +3 -3
  79. package/dist/confluent/tools/handlers/catalog/create-topic-tags.d.ts.map +1 -1
  80. package/dist/confluent/tools/handlers/catalog/create-topic-tags.js +11 -6
  81. package/dist/confluent/tools/handlers/catalog/create-topic-tags.js.map +1 -1
  82. package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts +3 -3
  83. package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts.map +1 -1
  84. package/dist/confluent/tools/handlers/catalog/delete-tag.js +11 -6
  85. package/dist/confluent/tools/handlers/catalog/delete-tag.js.map +1 -1
  86. package/dist/confluent/tools/handlers/catalog/list-tags.d.ts +4 -4
  87. package/dist/confluent/tools/handlers/catalog/list-tags.d.ts.map +1 -1
  88. package/dist/confluent/tools/handlers/catalog/list-tags.js +16 -7
  89. package/dist/confluent/tools/handlers/catalog/list-tags.js.map +1 -1
  90. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts +3 -3
  91. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts.map +1 -1
  92. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.js +11 -6
  93. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.js.map +1 -1
  94. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.d.ts +2 -1
  95. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.d.ts.map +1 -1
  96. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js +3 -2
  97. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js.map +1 -1
  98. package/dist/confluent/tools/handlers/connect/connect-tool-handler.d.ts +22 -9
  99. package/dist/confluent/tools/handlers/connect/connect-tool-handler.d.ts.map +1 -1
  100. package/dist/confluent/tools/handlers/connect/connect-tool-handler.js +35 -11
  101. package/dist/confluent/tools/handlers/connect/connect-tool-handler.js.map +1 -1
  102. package/dist/confluent/tools/handlers/connect/create-connector-handler.d.ts.map +1 -1
  103. package/dist/confluent/tools/handlers/connect/create-connector-handler.js +1 -2
  104. package/dist/confluent/tools/handlers/connect/create-connector-handler.js.map +1 -1
  105. package/dist/confluent/tools/handlers/connect/delete-connector-handler.d.ts.map +1 -1
  106. package/dist/confluent/tools/handlers/connect/delete-connector-handler.js +1 -2
  107. package/dist/confluent/tools/handlers/connect/delete-connector-handler.js.map +1 -1
  108. package/dist/confluent/tools/handlers/connect/{read-connectors-handler.d.ts → get-connector-config-handler.d.ts} +2 -3
  109. package/dist/confluent/tools/handlers/connect/get-connector-config-handler.d.ts.map +1 -0
  110. package/dist/confluent/tools/handlers/connect/get-connector-config-handler.js +34 -0
  111. package/dist/confluent/tools/handlers/connect/get-connector-config-handler.js.map +1 -0
  112. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.d.ts +9 -0
  113. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.d.ts.map +1 -0
  114. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.js +65 -0
  115. package/dist/confluent/tools/handlers/connect/get-connector-error-recommendations-handler.js.map +1 -0
  116. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.d.ts +9 -0
  117. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.d.ts.map +1 -0
  118. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.js +130 -0
  119. package/dist/confluent/tools/handlers/connect/get-connector-error-summary-handler.js.map +1 -0
  120. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.d.ts +9 -0
  121. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.d.ts.map +1 -0
  122. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.js +269 -0
  123. package/dist/confluent/tools/handlers/connect/get-connector-logs-handler.js.map +1 -0
  124. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.d.ts +9 -0
  125. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.d.ts.map +1 -0
  126. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.js +34 -0
  127. package/dist/confluent/tools/handlers/connect/get-connector-offsets-handler.js.map +1 -0
  128. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.d.ts +9 -0
  129. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.d.ts.map +1 -0
  130. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.js +43 -0
  131. package/dist/confluent/tools/handlers/connect/get-connector-status-handler.js.map +1 -0
  132. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.d.ts +9 -0
  133. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.d.ts.map +1 -0
  134. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.js +34 -0
  135. package/dist/confluent/tools/handlers/connect/get-connector-tasks-handler.js.map +1 -0
  136. package/dist/confluent/tools/handlers/connect/list-connectors-handler.d.ts.map +1 -1
  137. package/dist/confluent/tools/handlers/connect/list-connectors-handler.js +1 -2
  138. package/dist/confluent/tools/handlers/connect/list-connectors-handler.js.map +1 -1
  139. package/dist/confluent/tools/handlers/connect/pause-connector-handler.d.ts +9 -0
  140. package/dist/confluent/tools/handlers/connect/pause-connector-handler.d.ts.map +1 -0
  141. package/dist/confluent/tools/handlers/connect/pause-connector-handler.js +34 -0
  142. package/dist/confluent/tools/handlers/connect/pause-connector-handler.js.map +1 -0
  143. package/dist/confluent/tools/handlers/connect/restart-connector-handler.d.ts +9 -0
  144. package/dist/confluent/tools/handlers/connect/restart-connector-handler.d.ts.map +1 -0
  145. package/dist/confluent/tools/handlers/connect/restart-connector-handler.js +34 -0
  146. package/dist/confluent/tools/handlers/connect/restart-connector-handler.js.map +1 -0
  147. package/dist/confluent/tools/handlers/connect/resume-connector-handler.d.ts +9 -0
  148. package/dist/confluent/tools/handlers/connect/resume-connector-handler.d.ts.map +1 -0
  149. package/dist/confluent/tools/handlers/connect/resume-connector-handler.js +34 -0
  150. package/dist/confluent/tools/handlers/connect/resume-connector-handler.js.map +1 -0
  151. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.d.ts +9 -0
  152. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.d.ts.map +1 -0
  153. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.js +43 -0
  154. package/dist/confluent/tools/handlers/connect/update-connector-config-handler.js.map +1 -0
  155. package/dist/confluent/tools/handlers/diagnostics/config-help-handler.d.ts +42 -0
  156. package/dist/confluent/tools/handlers/diagnostics/config-help-handler.d.ts.map +1 -0
  157. package/dist/confluent/tools/handlers/diagnostics/config-help-handler.js +297 -0
  158. package/dist/confluent/tools/handlers/diagnostics/config-help-handler.js.map +1 -0
  159. package/dist/confluent/tools/handlers/diagnostics/describe-configured-connection-handler.d.ts +31 -0
  160. package/dist/confluent/tools/handlers/diagnostics/describe-configured-connection-handler.d.ts.map +1 -0
  161. package/dist/confluent/tools/handlers/diagnostics/describe-configured-connection-handler.js +116 -0
  162. package/dist/confluent/tools/handlers/diagnostics/describe-configured-connection-handler.js.map +1 -0
  163. package/dist/confluent/tools/handlers/diagnostics/describe-fields.d.ts +52 -0
  164. package/dist/confluent/tools/handlers/diagnostics/describe-fields.d.ts.map +1 -0
  165. package/dist/confluent/tools/handlers/diagnostics/describe-fields.js +114 -0
  166. package/dist/confluent/tools/handlers/diagnostics/describe-fields.js.map +1 -0
  167. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.d.ts +21 -43
  168. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.d.ts.map +1 -1
  169. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.js +105 -78
  170. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.js.map +1 -1
  171. package/dist/confluent/tools/handlers/diagnostics/list-configured-connections-handler.d.ts +27 -0
  172. package/dist/confluent/tools/handlers/diagnostics/list-configured-connections-handler.d.ts.map +1 -0
  173. package/dist/confluent/tools/handlers/diagnostics/list-configured-connections-handler.js +93 -0
  174. package/dist/confluent/tools/handlers/diagnostics/list-configured-connections-handler.js.map +1 -0
  175. package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.d.ts +2 -1
  176. package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.d.ts.map +1 -1
  177. package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.js +2 -1
  178. package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.js.map +1 -1
  179. package/dist/confluent/tools/handlers/docs/search-product-docs-handler.d.ts +2 -1
  180. package/dist/confluent/tools/handlers/docs/search-product-docs-handler.d.ts.map +1 -1
  181. package/dist/confluent/tools/handlers/docs/search-product-docs-handler.js +2 -1
  182. package/dist/confluent/tools/handlers/docs/search-product-docs-handler.js.map +1 -1
  183. package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts +8 -7
  184. package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts.map +1 -1
  185. package/dist/confluent/tools/handlers/environments/list-environments-handler.js +8 -7
  186. package/dist/confluent/tools/handlers/environments/list-environments-handler.js.map +1 -1
  187. package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts +2 -1
  188. package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts.map +1 -1
  189. package/dist/confluent/tools/handlers/environments/read-environment-handler.js +3 -2
  190. package/dist/confluent/tools/handlers/environments/read-environment-handler.js.map +1 -1
  191. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.d.ts +16 -2
  192. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.d.ts.map +1 -1
  193. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.js +4 -4
  194. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.js.map +1 -1
  195. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.d.ts.map +1 -1
  196. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.js +43 -30
  197. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.js.map +1 -1
  198. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.d.ts.map +1 -1
  199. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.js +43 -30
  200. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.js.map +1 -1
  201. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.d.ts.map +1 -1
  202. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.js +18 -11
  203. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.js.map +1 -1
  204. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.d.ts.map +1 -1
  205. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.js +23 -16
  206. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.js.map +1 -1
  207. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.d.ts.map +1 -1
  208. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.js +23 -16
  209. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.js.map +1 -1
  210. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.d.ts.map +1 -1
  211. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.js +27 -22
  212. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.js.map +1 -1
  213. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.d.ts.map +1 -1
  214. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.js +20 -12
  215. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.js.map +1 -1
  216. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.d.ts.map +1 -1
  217. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.js +20 -12
  218. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.js.map +1 -1
  219. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.d.ts.map +1 -1
  220. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.js +20 -18
  221. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.js.map +1 -1
  222. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.d.ts.map +1 -1
  223. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.js +24 -22
  224. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.js.map +1 -1
  225. package/dist/confluent/tools/handlers/flink/flink-sql-helper.d.ts +15 -1
  226. package/dist/confluent/tools/handlers/flink/flink-sql-helper.d.ts.map +1 -1
  227. package/dist/confluent/tools/handlers/flink/flink-sql-helper.js +133 -57
  228. package/dist/confluent/tools/handlers/flink/flink-sql-helper.js.map +1 -1
  229. package/dist/confluent/tools/handlers/flink/flink-tool-handler.d.ts +29 -7
  230. package/dist/confluent/tools/handlers/flink/flink-tool-handler.d.ts.map +1 -1
  231. package/dist/confluent/tools/handlers/flink/flink-tool-handler.js +38 -8
  232. package/dist/confluent/tools/handlers/flink/flink-tool-handler.js.map +1 -1
  233. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.d.ts.map +1 -1
  234. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.js +20 -12
  235. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.js.map +1 -1
  236. package/dist/confluent/tools/handlers/flink/{read-flink-statement-handler.d.ts → get-flink-statement-results-handler.d.ts} +2 -2
  237. package/dist/confluent/tools/handlers/flink/get-flink-statement-results-handler.d.ts.map +1 -0
  238. package/dist/confluent/tools/handlers/flink/{read-flink-statement-handler.js → get-flink-statement-results-handler.js} +30 -22
  239. package/dist/confluent/tools/handlers/flink/get-flink-statement-results-handler.js.map +1 -0
  240. package/dist/confluent/tools/handlers/flink/list-compute-pools-handler.d.ts +10 -0
  241. package/dist/confluent/tools/handlers/flink/list-compute-pools-handler.d.ts.map +1 -0
  242. package/dist/confluent/tools/handlers/flink/list-compute-pools-handler.js +118 -0
  243. package/dist/confluent/tools/handlers/flink/list-compute-pools-handler.js.map +1 -0
  244. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.d.ts.map +1 -1
  245. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js +19 -18
  246. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js.map +1 -1
  247. package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts +2 -1
  248. package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts.map +1 -1
  249. package/dist/confluent/tools/handlers/kafka/alter-topic-config.js +3 -2
  250. package/dist/confluent/tools/handlers/kafka/alter-topic-config.js.map +1 -1
  251. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.d.ts +223 -28
  252. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.d.ts.map +1 -1
  253. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js +832 -68
  254. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js.map +1 -1
  255. package/dist/confluent/tools/handlers/kafka/consumer-group-enums.d.ts +48 -0
  256. package/dist/confluent/tools/handlers/kafka/consumer-group-enums.d.ts.map +1 -0
  257. package/dist/confluent/tools/handlers/kafka/consumer-group-enums.js +84 -0
  258. package/dist/confluent/tools/handlers/kafka/consumer-group-enums.js.map +1 -0
  259. package/dist/confluent/tools/handlers/kafka/consumer-group-helpers.d.ts +54 -0
  260. package/dist/confluent/tools/handlers/kafka/consumer-group-helpers.d.ts.map +1 -0
  261. package/dist/confluent/tools/handlers/kafka/consumer-group-helpers.js +89 -0
  262. package/dist/confluent/tools/handlers/kafka/consumer-group-helpers.js.map +1 -0
  263. package/dist/confluent/tools/handlers/kafka/create-topics-handler.d.ts +2 -1
  264. package/dist/confluent/tools/handlers/kafka/create-topics-handler.d.ts.map +1 -1
  265. package/dist/confluent/tools/handlers/kafka/create-topics-handler.js +14 -4
  266. package/dist/confluent/tools/handlers/kafka/create-topics-handler.js.map +1 -1
  267. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts +2 -1
  268. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts.map +1 -1
  269. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js +3 -2
  270. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js.map +1 -1
  271. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.d.ts +64 -0
  272. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.d.ts.map +1 -0
  273. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.js +140 -0
  274. package/dist/confluent/tools/handlers/kafka/describe-consumer-group-handler.js.map +1 -0
  275. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.d.ts +73 -0
  276. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.d.ts.map +1 -0
  277. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.js +337 -0
  278. package/dist/confluent/tools/handlers/kafka/get-consumer-group-lag-handler.js.map +1 -0
  279. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.d.ts +43 -0
  280. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.d.ts.map +1 -0
  281. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.js +123 -0
  282. package/dist/confluent/tools/handlers/kafka/get-partition-offsets-handler.js.map +1 -0
  283. package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts +2 -1
  284. package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts.map +1 -1
  285. package/dist/confluent/tools/handlers/kafka/get-topic-config.js +3 -2
  286. package/dist/confluent/tools/handlers/kafka/get-topic-config.js.map +1 -1
  287. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.d.ts +45 -0
  288. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.d.ts.map +1 -0
  289. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.js +86 -0
  290. package/dist/confluent/tools/handlers/kafka/list-consumer-groups-handler.js.map +1 -0
  291. package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts +2 -1
  292. package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts.map +1 -1
  293. package/dist/confluent/tools/handlers/kafka/list-topics-handler.js +3 -2
  294. package/dist/confluent/tools/handlers/kafka/list-topics-handler.js.map +1 -1
  295. package/dist/confluent/tools/handlers/kafka/partition-watermarks.d.ts +54 -0
  296. package/dist/confluent/tools/handlers/kafka/partition-watermarks.d.ts.map +1 -0
  297. package/dist/confluent/tools/handlers/kafka/partition-watermarks.js +56 -0
  298. package/dist/confluent/tools/handlers/kafka/partition-watermarks.js.map +1 -0
  299. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.d.ts +13 -5
  300. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.d.ts.map +1 -1
  301. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js +145 -47
  302. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js.map +1 -1
  303. package/dist/confluent/tools/handlers/kafka/topic-metadata.d.ts +18 -0
  304. package/dist/confluent/tools/handlers/kafka/topic-metadata.d.ts.map +1 -0
  305. package/dist/confluent/tools/handlers/kafka/topic-metadata.js +18 -0
  306. package/dist/confluent/tools/handlers/kafka/topic-metadata.js.map +1 -0
  307. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.d.ts +3 -3
  308. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.d.ts.map +1 -1
  309. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js +5 -4
  310. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js.map +1 -1
  311. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts +3 -3
  312. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts.map +1 -1
  313. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js +8 -5
  314. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js.map +1 -1
  315. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.d.ts +2 -1
  316. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.d.ts.map +1 -1
  317. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.js +4 -2
  318. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.js.map +1 -1
  319. package/dist/confluent/tools/handlers/schema/create-schema-handler.d.ts +10 -0
  320. package/dist/confluent/tools/handlers/schema/create-schema-handler.d.ts.map +1 -0
  321. package/dist/confluent/tools/handlers/schema/create-schema-handler.js +76 -0
  322. package/dist/confluent/tools/handlers/schema/create-schema-handler.js.map +1 -0
  323. package/dist/confluent/tools/handlers/schema/delete-schema-handler.d.ts +2 -1
  324. package/dist/confluent/tools/handlers/schema/delete-schema-handler.d.ts.map +1 -1
  325. package/dist/confluent/tools/handlers/schema/delete-schema-handler.js +3 -2
  326. package/dist/confluent/tools/handlers/schema/delete-schema-handler.js.map +1 -1
  327. package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts +2 -1
  328. package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts.map +1 -1
  329. package/dist/confluent/tools/handlers/schema/list-schemas-handler.js +3 -2
  330. package/dist/confluent/tools/handlers/schema/list-schemas-handler.js.map +1 -1
  331. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.d.ts +3 -3
  332. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.d.ts.map +1 -1
  333. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.js +11 -6
  334. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.js.map +1 -1
  335. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.d.ts +3 -3
  336. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.d.ts.map +1 -1
  337. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.js +11 -6
  338. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.js.map +1 -1
  339. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.d.ts.map +1 -1
  340. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.js +2 -2
  341. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.js.map +1 -1
  342. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.d.ts.map +1 -1
  343. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.js +2 -2
  344. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.js.map +1 -1
  345. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.d.ts.map +1 -1
  346. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.js +2 -2
  347. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.js.map +1 -1
  348. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.d.ts.map +1 -1
  349. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.js +2 -2
  350. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.js.map +1 -1
  351. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.d.ts.map +1 -1
  352. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.js +1 -1
  353. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.js.map +1 -1
  354. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.d.ts.map +1 -1
  355. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.js +2 -3
  356. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.js.map +1 -1
  357. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.d.ts +17 -11
  358. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.d.ts.map +1 -1
  359. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.js +19 -15
  360. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.js.map +1 -1
  361. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.d.ts.map +1 -1
  362. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.js +2 -2
  363. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.js.map +1 -1
  364. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.d.ts.map +1 -1
  365. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.js +2 -2
  366. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.js.map +1 -1
  367. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.d.ts.map +1 -1
  368. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.js +2 -2
  369. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.js.map +1 -1
  370. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.d.ts.map +1 -1
  371. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.js +2 -2
  372. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.js.map +1 -1
  373. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.d.ts.map +1 -1
  374. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.js +1 -1
  375. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.js.map +1 -1
  376. package/dist/confluent/tools/tool-availability.d.ts +84 -36
  377. package/dist/confluent/tools/tool-availability.d.ts.map +1 -1
  378. package/dist/confluent/tools/tool-availability.js +106 -65
  379. package/dist/confluent/tools/tool-availability.js.map +1 -1
  380. package/dist/confluent/tools/tool-metadata-handler.d.ts +51 -0
  381. package/dist/confluent/tools/tool-metadata-handler.d.ts.map +1 -0
  382. package/dist/confluent/tools/tool-metadata-handler.js +61 -0
  383. package/dist/confluent/tools/tool-metadata-handler.js.map +1 -0
  384. package/dist/confluent/tools/tool-name.d.ts +22 -3
  385. package/dist/confluent/tools/tool-name.d.ts.map +1 -1
  386. package/dist/confluent/tools/tool-name.js +21 -2
  387. package/dist/confluent/tools/tool-name.js.map +1 -1
  388. package/dist/confluent/tools/tool-registry.d.ts +1 -2
  389. package/dist/confluent/tools/tool-registry.d.ts.map +1 -1
  390. package/dist/confluent/tools/tool-registry.js +60 -7
  391. package/dist/confluent/tools/tool-registry.js.map +1 -1
  392. package/dist/env-schema.d.ts +1 -1
  393. package/dist/env-schema.d.ts.map +1 -1
  394. package/dist/env-schema.js +10 -12
  395. package/dist/env-schema.js.map +1 -1
  396. package/dist/env.d.ts +1 -1
  397. package/dist/index.d.ts +54 -64
  398. package/dist/index.d.ts.map +1 -1
  399. package/dist/index.js +78 -301
  400. package/dist/index.js.map +1 -1
  401. package/dist/lazy.d.ts +4 -2
  402. package/dist/lazy.d.ts.map +1 -1
  403. package/dist/lazy.js +27 -12
  404. package/dist/lazy.js.map +1 -1
  405. package/dist/mcp/server.d.ts.map +1 -1
  406. package/dist/mcp/server.js +9 -5
  407. package/dist/mcp/server.js.map +1 -1
  408. package/dist/preflight.d.ts +33 -0
  409. package/dist/preflight.d.ts.map +1 -0
  410. package/dist/preflight.js +68 -0
  411. package/dist/preflight.js.map +1 -0
  412. package/dist/server-main.d.ts +98 -0
  413. package/dist/server-main.d.ts.map +1 -0
  414. package/dist/server-main.js +383 -0
  415. package/dist/server-main.js.map +1 -0
  416. package/dist/server-runtime.d.ts +20 -5
  417. package/dist/server-runtime.d.ts.map +1 -1
  418. package/dist/server-runtime.js +45 -28
  419. package/dist/server-runtime.js.map +1 -1
  420. package/dist/utils/quote-join-ids.d.ts +9 -0
  421. package/dist/utils/quote-join-ids.d.ts.map +1 -0
  422. package/dist/utils/quote-join-ids.js +11 -0
  423. package/dist/utils/quote-join-ids.js.map +1 -0
  424. package/package.json +33 -34
  425. package/dist/confluent/tools/handlers/connect/read-connectors-handler.d.ts.map +0 -1
  426. package/dist/confluent/tools/handlers/connect/read-connectors-handler.js +0 -54
  427. package/dist/confluent/tools/handlers/connect/read-connectors-handler.js.map +0 -1
  428. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.d.ts.map +0 -1
  429. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.js.map +0 -1
@@ -3,41 +3,81 @@ export const OAUTH_CALLBACK_PORT = 26640;
3
3
  export const OAUTH_CALLBACK_PATH = "/gateway/v1/callback-local-mcp-docs";
4
4
  const OAUTH_CALLBACK_URL = `http://${OAUTH_CALLBACK_HOST}:${OAUTH_CALLBACK_PORT}${OAUTH_CALLBACK_PATH}`;
5
5
  const OAUTH_SCOPES = "email openid offline_access";
6
- const AUTH0_CONFIGS = {
6
+ /**
7
+ * The Confluent Cloud base domain per Auth0 environment. Every CCloud REST
8
+ * surface this server reaches is the same domain with a different prefix
9
+ * (`api.`, `api.telemetry.`, regional `flink.<region>.<cloud>.`), so the base
10
+ * domain is the single source of truth and each surface's URL is derived from
11
+ * it (see the `get*UrlForEnv` helpers below). `devel`/`stag` are
12
+ * internal-dev-only; a wrong derived URL there is a one-line fix here.
13
+ */
14
+ const CCLOUD_DOMAINS = {
15
+ devel: "devel.cpdev.cloud",
16
+ stag: "stag.cpdev.cloud",
17
+ prod: "confluent.cloud",
18
+ };
19
+ /**
20
+ * Per-environment Auth0 login identity. These are the only values that do NOT
21
+ * derive from {@link CCLOUD_DOMAINS}: login lives on a separate domain family
22
+ * (`login.confluent.io` / `login-stag.confluent-dev.io`) and the client ids are
23
+ * opaque Auth0 application identifiers.
24
+ */
25
+ const AUTH0_CLIENTS = {
7
26
  devel: {
8
27
  clientId: "D8DV9ee7XrKX4ncAc6vJtBFgIzTMNgoY",
9
28
  domain: "login.confluent-dev.io",
10
- apiUrl: "https://devel.cpdev.cloud",
11
- cloudRestUrl: "https://api.devel.cpdev.cloud",
12
- callbackUrl: OAUTH_CALLBACK_URL,
13
- scopes: OAUTH_SCOPES,
14
29
  },
15
30
  stag: {
16
31
  clientId: "adtjckxmHbjddhNK36PvcXIDDbrJUMDH",
17
32
  domain: "login-stag.confluent-dev.io",
18
- apiUrl: "https://stag.cpdev.cloud",
19
- cloudRestUrl: "https://api.stag.cpdev.cloud",
20
- callbackUrl: OAUTH_CALLBACK_URL,
21
- scopes: OAUTH_SCOPES,
22
33
  },
23
34
  prod: {
24
35
  clientId: "cZ0wejEDJLNocYDJ54mAmGK21klrv21h",
25
36
  domain: "login.confluent.io",
26
- apiUrl: "https://confluent.cloud",
27
- cloudRestUrl: "https://api.confluent.cloud",
28
- callbackUrl: OAUTH_CALLBACK_URL,
29
- scopes: OAUTH_SCOPES,
30
37
  },
31
38
  };
32
- export function getAuth0Config(environment) {
33
- return AUTH0_CONFIGS[environment];
39
+ /**
40
+ * Returns the Confluent Cloud session/login API base URL (no `api.` prefix) for
41
+ * the given Auth0 environment — the host that serves `/api/sessions` and
42
+ * `/api/access_tokens` during the token-exchange chain.
43
+ */
44
+ export function getApiUrlForEnv(environment) {
45
+ return `https://${CCLOUD_DOMAINS[environment]}`;
34
46
  }
35
47
  /**
36
- * Returns the Confluent Cloud REST API base URL for the given Auth0 environment.
37
- * Used by {@link OAuthClientManager} to derive the cloud surface's base URL when
38
- * the OAuth path doesn't carry an explicit `confluent_cloud.endpoint`.
48
+ * Returns the Confluent Cloud REST API base URL (`api.` prefix) for the given
49
+ * Auth0 environment. Used by {@link OAuthClientManager} to derive the cloud
50
+ * surface's base URL when the OAuth path doesn't carry an explicit
51
+ * `confluent_cloud.endpoint`.
39
52
  */
40
53
  export function getCloudRestUrlForEnv(environment) {
41
- return AUTH0_CONFIGS[environment].cloudRestUrl;
54
+ return `https://api.${CCLOUD_DOMAINS[environment]}`;
55
+ }
56
+ /**
57
+ * Returns the Confluent Cloud Telemetry REST API base URL
58
+ * (`api.telemetry.` prefix) for the given Auth0 environment. Used by
59
+ * {@link OAuthClientManager} to point the telemetry/metrics surface at the
60
+ * right host under OAuth.
61
+ */
62
+ export function getTelemetryRestUrlForEnv(environment) {
63
+ return `https://api.telemetry.${CCLOUD_DOMAINS[environment]}`;
64
+ }
65
+ /**
66
+ * Returns the regional Confluent Cloud Flink REST API base URL
67
+ * (`flink.<region>.<cloud>.` prefix) for the given Auth0 environment. Unlike
68
+ * the cloud/telemetry surfaces, the Flink host is regional, so {@link
69
+ * OAuthClientManager} can only build this per call once it has resolved the
70
+ * compute pool's `cloud` + `region` (via `GET /fcpm/v2/compute-pools/{id}`).
71
+ */
72
+ export function getFlinkRestUrlForRegion(environment, cloud, region) {
73
+ return `https://flink.${region}.${cloud.toLowerCase()}.${CCLOUD_DOMAINS[environment]}`;
74
+ }
75
+ export function getAuth0Config(environment) {
76
+ return {
77
+ ...AUTH0_CLIENTS[environment],
78
+ apiUrl: getApiUrlForEnv(environment),
79
+ callbackUrl: OAUTH_CALLBACK_URL,
80
+ scopes: OAUTH_SCOPES,
81
+ };
42
82
  }
43
83
  //# sourceMappingURL=auth0-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth0-config.js","sourceRoot":"","sources":["../../../src/confluent/oauth/auth0-config.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC;AAC/C,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AACzC,MAAM,CAAC,MAAM,mBAAmB,GAAG,qCAAqC,CAAC;AACzE,MAAM,kBAAkB,GAAG,UAAU,mBAAmB,IAAI,mBAAmB,GAAG,mBAAmB,EAAE,CAAC;AACxG,MAAM,YAAY,GAAG,6BAA6B,CAAC;AACnD,MAAM,aAAa,GAA0C;IAC3D,KAAK,EAAE;QACL,QAAQ,EAAE,kCAAkC;QAC5C,MAAM,EAAE,wBAAwB;QAChC,MAAM,EAAE,2BAA2B;QACnC,YAAY,EAAE,+BAA+B;QAC7C,WAAW,EAAE,kBAAkB;QAC/B,MAAM,EAAE,YAAY;KACrB;IACD,IAAI,EAAE;QACJ,QAAQ,EAAE,kCAAkC;QAC5C,MAAM,EAAE,6BAA6B;QACrC,MAAM,EAAE,0BAA0B;QAClC,YAAY,EAAE,8BAA8B;QAC5C,WAAW,EAAE,kBAAkB;QAC/B,MAAM,EAAE,YAAY;KACrB;IACD,IAAI,EAAE;QACJ,QAAQ,EAAE,kCAAkC;QAC5C,MAAM,EAAE,oBAAoB;QAC5B,MAAM,EAAE,yBAAyB;QACjC,YAAY,EAAE,6BAA6B;QAC3C,WAAW,EAAE,kBAAkB;QAC/B,MAAM,EAAE,YAAY;KACrB;CACF,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,WAA6B;IAC1D,OAAO,aAAa,CAAC,WAAW,CAAC,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,WAA6B;IACjE,OAAO,aAAa,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC;AACjD,CAAC"}
1
+ {"version":3,"file":"auth0-config.js","sourceRoot":"","sources":["../../../src/confluent/oauth/auth0-config.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC;AAC/C,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AACzC,MAAM,CAAC,MAAM,mBAAmB,GAAG,qCAAqC,CAAC;AACzE,MAAM,kBAAkB,GAAG,UAAU,mBAAmB,IAAI,mBAAmB,GAAG,mBAAmB,EAAE,CAAC;AACxG,MAAM,YAAY,GAAG,6BAA6B,CAAC;AAEnD;;;;;;;GAOG;AACH,MAAM,cAAc,GAAqC;IACvD,KAAK,EAAE,mBAAmB;IAC1B,IAAI,EAAE,kBAAkB;IACxB,IAAI,EAAE,iBAAiB;CACxB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,aAAa,GAGf;IACF,KAAK,EAAE;QACL,QAAQ,EAAE,kCAAkC;QAC5C,MAAM,EAAE,wBAAwB;KACjC;IACD,IAAI,EAAE;QACJ,QAAQ,EAAE,kCAAkC;QAC5C,MAAM,EAAE,6BAA6B;KACtC;IACD,IAAI,EAAE;QACJ,QAAQ,EAAE,kCAAkC;QAC5C,MAAM,EAAE,oBAAoB;KAC7B;CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,WAA6B;IAC3D,OAAO,WAAW,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,WAA6B;IACjE,OAAO,eAAe,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;AACtD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,WAA6B;IAE7B,OAAO,yBAAyB,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;AAChE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CACtC,WAA6B,EAC7B,KAAa,EACb,MAAc;IAEd,OAAO,iBAAiB,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,WAA6B;IAC1D,OAAO;QACL,GAAG,aAAa,CAAC,WAAW,CAAC;QAC7B,MAAM,EAAE,eAAe,CAAC,WAAW,CAAC;QACpC,WAAW,EAAE,kBAAkB;QAC/B,MAAM,EAAE,YAAY;KACrB,CAAC;AACJ,CAAC"}
@@ -1,4 +1,12 @@
1
- export declare function renderSuccessPage(): string;
1
+ /**
2
+ * Render the OAuth success page. The `copiedPath` and `streamPath` placeholders
3
+ * in the template are replaced with the same constants the server registers
4
+ * its handlers under, so the page and server can't drift on path naming.
5
+ */
6
+ export declare function renderSuccessPage(opts: {
7
+ copiedPath: string;
8
+ streamPath: string;
9
+ }): string;
2
10
  export declare function renderErrorPage(message: string): string;
3
11
  /** Test-only: reset the module-level template cache. */
4
12
  export declare function _resetCallbackPageCacheForTests(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"callback-pages.d.ts","sourceRoot":"","sources":["../../../src/confluent/oauth/callback-pages.ts"],"names":[],"mappings":"AAuCA,wBAAgB,iBAAiB,IAAI,MAAM,CAG1C;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED,wDAAwD;AACxD,wBAAgB,+BAA+B,IAAI,IAAI,CAGtD"}
1
+ {"version":3,"file":"callback-pages.d.ts","sourceRoot":"","sources":["../../../src/confluent/oauth/callback-pages.ts"],"names":[],"mappings":"AAuCA;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,MAAM,CAOT;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED,wDAAwD;AACxD,wBAAgB,+BAA+B,IAAI,IAAI,CAGtD"}
@@ -6,7 +6,7 @@ const PARTIALS = {
6
6
  "{#include logo/}": "logo.html",
7
7
  };
8
8
  const TEMPLATES_DIR_URL = new URL("../../../assets/oauth-templates/", import.meta.url);
9
- let cachedSuccessPage;
9
+ let cachedSuccessTemplate;
10
10
  let cachedFailureTemplate;
11
11
  function readTemplate(fileName) {
12
12
  return fs.readFileSync(new URL(fileName, TEMPLATES_DIR_URL), "utf-8");
@@ -22,9 +22,18 @@ function escapeHtml(value) {
22
22
  .replaceAll('"', "&quot;")
23
23
  .replaceAll("'", "&#39;");
24
24
  }
25
- export function renderSuccessPage() {
26
- cachedSuccessPage ??= inlinePartials(readTemplate(SUCCESS_TEMPLATE_FILE));
27
- return cachedSuccessPage;
25
+ /**
26
+ * Render the OAuth success page. The `copiedPath` and `streamPath` placeholders
27
+ * in the template are replaced with the same constants the server registers
28
+ * its handlers under, so the page and server can't drift on path naming.
29
+ */
30
+ export function renderSuccessPage(opts) {
31
+ cachedSuccessTemplate ??= inlinePartials(readTemplate(SUCCESS_TEMPLATE_FILE));
32
+ // Replacer-function form so `$&`, `$$`, etc. in path values are taken literally
33
+ // rather than processed as String.prototype.replace substitution patterns.
34
+ return cachedSuccessTemplate
35
+ .replaceAll("{{copiedPath}}", () => opts.copiedPath)
36
+ .replaceAll("{{streamPath}}", () => opts.streamPath);
28
37
  }
29
38
  export function renderErrorPage(message) {
30
39
  cachedFailureTemplate ??= inlinePartials(readTemplate(FAILURE_TEMPLATE_FILE));
@@ -32,7 +41,7 @@ export function renderErrorPage(message) {
32
41
  }
33
42
  /** Test-only: reset the module-level template cache. */
34
43
  export function _resetCallbackPageCacheForTests() {
35
- cachedSuccessPage = undefined;
44
+ cachedSuccessTemplate = undefined;
36
45
  cachedFailureTemplate = undefined;
37
46
  }
38
47
  //# sourceMappingURL=callback-pages.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"callback-pages.js","sourceRoot":"","sources":["../../../src/confluent/oauth/callback-pages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,6BAA6B,CAAC;AAEjD,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AACtD,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAEtD,MAAM,QAAQ,GAA2B;IACvC,oBAAoB,EAAE,aAAa;IACnC,kBAAkB,EAAE,WAAW;CAChC,CAAC;AAEF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAC/B,kCAAkC,EAClC,MAAM,CAAC,IAAI,CAAC,GAAG,CAChB,CAAC;AAEF,IAAI,iBAAqC,CAAC;AAC1C,IAAI,qBAAyC,CAAC;AAE9C,SAAS,YAAY,CAAC,QAAgB;IACpC,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB;IACtC,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CACpC,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,CAC7B,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,EAChD,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,KAAK;SACT,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;SACxB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC;SACzB,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,iBAAiB,KAAK,cAAc,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC1E,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,qBAAqB,KAAK,cAAc,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC9E,OAAO,qBAAqB,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,+BAA+B;IAC7C,iBAAiB,GAAG,SAAS,CAAC;IAC9B,qBAAqB,GAAG,SAAS,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"callback-pages.js","sourceRoot":"","sources":["../../../src/confluent/oauth/callback-pages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,6BAA6B,CAAC;AAEjD,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AACtD,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAEtD,MAAM,QAAQ,GAA2B;IACvC,oBAAoB,EAAE,aAAa;IACnC,kBAAkB,EAAE,WAAW;CAChC,CAAC;AAEF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAC/B,kCAAkC,EAClC,MAAM,CAAC,IAAI,CAAC,GAAG,CAChB,CAAC;AAEF,IAAI,qBAAyC,CAAC;AAC9C,IAAI,qBAAyC,CAAC;AAE9C,SAAS,YAAY,CAAC,QAAgB;IACpC,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB;IACtC,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CACpC,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,CAC7B,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,EAChD,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,KAAK;SACT,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;SACxB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC;SACzB,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAGjC;IACC,qBAAqB,KAAK,cAAc,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC9E,gFAAgF;IAChF,2EAA2E;IAC3E,OAAO,qBAAqB;SACzB,UAAU,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;SACnD,UAAU,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,qBAAqB,KAAK,cAAc,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC9E,OAAO,qBAAqB,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,+BAA+B;IAC7C,qBAAqB,GAAG,SAAS,CAAC;IAClC,qBAAqB,GAAG,SAAS,CAAC;AACpC,CAAC"}
@@ -2,8 +2,27 @@ import { type TokenChainResult } from "../../confluent/oauth/token-chain.js";
2
2
  import type { Auth0Config } from "../../confluent/oauth/types.js";
3
3
  /** Maximum time to wait for the user to complete the browser PKCE flow. */
4
4
  export declare const PKCE_LOGIN_TIMEOUT_MS = 120000;
5
+ /** Path the success page POSTs to when the user copies the install hint. */
6
+ export declare const SKILLS_HINT_COPIED_PATH = "/skills-hint-copied";
7
+ /**
8
+ * Path the success page opens an EventSource to. The open connection is what
9
+ * keeps the callback server alive past the OAuth redirect: as long as the page
10
+ * is in a tab, the stream is connected and beacons land on a live listener.
11
+ * When the tab closes, the stream disconnects and the server tears down.
12
+ */
13
+ export declare const SKILLS_HINT_STREAM_PATH = "/skills-hint-stream";
14
+ /**
15
+ * Safety cap on how long the callback server can stay bound after a successful
16
+ * auth. The stream-disconnect path is the normal closer; this is just the
17
+ * "user left the tab open and walked away" backstop. Kept tight (60s) because
18
+ * a lingering listener will collide with the next PKCE attempt — if a token
19
+ * refresh fails non-transiently inside this window and triggers a fresh login,
20
+ * the second attempt errors with `port_in_use` when in fact it's this same
21
+ * session's leftover listener still holding the port.
22
+ */
23
+ export declare const SUCCESS_PAGE_MAX_LIFETIME_MS = 60000;
5
24
  /** Reasons a PKCE login can fail. Carried on {@link PkceLoginError}. */
6
- export type PkceLoginFailureReason = "timeout" | "user_aborted" | "port_in_use" | "auth0_unreachable" | "configuration";
25
+ export type PkceLoginFailureReason = "timeout" | "user_aborted" | "port_in_use" | "auth0_unreachable" | "callback_server_error" | "configuration";
7
26
  /** Structured error so callers can react to the cause of a failed PKCE login. */
8
27
  export declare class PkceLoginError extends Error {
9
28
  readonly reason: PkceLoginFailureReason;
@@ -1 +1 @@
1
- {"version":3,"file":"pkce-login.d.ts","sourceRoot":"","sources":["../../../src/confluent/oauth/pkce-login.ts"],"names":[],"mappings":"AAiBA,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAGjE,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB,SAAU,CAAC;AAE7C,wEAAwE;AACxE,MAAM,MAAM,sBAAsB,GAC9B,SAAS,GACT,cAAc,GACd,aAAa,GACb,mBAAmB,GACnB,eAAe,CAAC;AAEpB,iFAAiF;AACjF,qBAAa,cAAe,SAAQ,KAAK;aAErB,MAAM,EAAE,sBAAsB;gBAA9B,MAAM,EAAE,sBAAsB,EAC9C,OAAO,EAAE,MAAM;CAKlB;AAwBD;;;;;;;;;;;;GAYG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,WAAW,EACxB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,gBAAgB,CAAC,CAqJ3B"}
1
+ {"version":3,"file":"pkce-login.d.ts","sourceRoot":"","sources":["../../../src/confluent/oauth/pkce-login.ts"],"names":[],"mappings":"AAiBA,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAIjE,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB,SAAU,CAAC;AAE7C,4EAA4E;AAC5E,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAE7D;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAE7D;;;;;;;;GAQG;AACH,eAAO,MAAM,4BAA4B,QAAS,CAAC;AAEnD,wEAAwE;AACxE,MAAM,MAAM,sBAAsB,GAC9B,SAAS,GACT,cAAc,GACd,aAAa,GACb,mBAAmB,GACnB,uBAAuB,GACvB,eAAe,CAAC;AAEpB,iFAAiF;AACjF,qBAAa,cAAe,SAAQ,KAAK;aAErB,MAAM,EAAE,sBAAsB;gBAA9B,MAAM,EAAE,sBAAsB,EAC9C,OAAO,EAAE,MAAM;CAKlB;AAwBD;;;;;;;;;;;;GAYG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,WAAW,EACxB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,gBAAgB,CAAC,CA2P3B"}
@@ -3,9 +3,29 @@ import { OAUTH_CALLBACK_HOST, OAUTH_CALLBACK_PATH, OAUTH_CALLBACK_PORT, } from "
3
3
  import { renderErrorPage, renderSuccessPage, } from "../../confluent/oauth/callback-pages.js";
4
4
  import { generateCodeChallenge, generateCodeVerifier, generateOpaqueToken, } from "../../confluent/oauth/crypto-utils.js";
5
5
  import { executeFullTokenChain, } from "../../confluent/oauth/token-chain.js";
6
+ import { TelemetryEvent, TelemetryService } from "../../confluent/telemetry.js";
6
7
  import { logger } from "../../logger.js";
7
8
  /** Maximum time to wait for the user to complete the browser PKCE flow. */
8
9
  export const PKCE_LOGIN_TIMEOUT_MS = 120_000;
10
+ /** Path the success page POSTs to when the user copies the install hint. */
11
+ export const SKILLS_HINT_COPIED_PATH = "/skills-hint-copied";
12
+ /**
13
+ * Path the success page opens an EventSource to. The open connection is what
14
+ * keeps the callback server alive past the OAuth redirect: as long as the page
15
+ * is in a tab, the stream is connected and beacons land on a live listener.
16
+ * When the tab closes, the stream disconnects and the server tears down.
17
+ */
18
+ export const SKILLS_HINT_STREAM_PATH = "/skills-hint-stream";
19
+ /**
20
+ * Safety cap on how long the callback server can stay bound after a successful
21
+ * auth. The stream-disconnect path is the normal closer; this is just the
22
+ * "user left the tab open and walked away" backstop. Kept tight (60s) because
23
+ * a lingering listener will collide with the next PKCE attempt — if a token
24
+ * refresh fails non-transiently inside this window and triggers a fresh login,
25
+ * the second attempt errors with `port_in_use` when in fact it's this same
26
+ * session's leftover listener still holding the port.
27
+ */
28
+ export const SUCCESS_PAGE_MAX_LIFETIME_MS = 60_000;
9
29
  /** Structured error so callers can react to the cause of a failed PKCE login. */
10
30
  export class PkceLoginError extends Error {
11
31
  reason;
@@ -62,9 +82,78 @@ export async function runPkceLogin(auth0Config, signal) {
62
82
  resolveCode = resolve;
63
83
  rejectFlow = reject;
64
84
  });
85
+ // Tracks whether the success page was served. After success, the server's
86
+ // lifetime is driven by the success page's EventSource: it stays bound while
87
+ // the tab is open and closes when the stream disconnects (or when the safety
88
+ // timer fires).
89
+ let successServed = false;
90
+ let serverClosed = false;
91
+ let lifetimeTimer;
92
+ const streamClients = new Set();
93
+ const closeServerOnce = () => {
94
+ if (serverClosed || !bound)
95
+ return;
96
+ serverClosed = true;
97
+ if (lifetimeTimer) {
98
+ clearTimeout(lifetimeTimer);
99
+ lifetimeTimer = undefined;
100
+ }
101
+ for (const client of streamClients)
102
+ client.end();
103
+ streamClients.clear();
104
+ server.close();
105
+ };
65
106
  const server = nodeHttp.createServer((req, res) => {
66
107
  const reqUrl = req.url ?? "";
67
108
  const parsed = new URL(reqUrl, "http://127.0.0.1");
109
+ if (parsed.pathname === SKILLS_HINT_COPIED_PATH) {
110
+ // Only reachable once we've served the success page. Anything earlier
111
+ // would be a stray request on localhost, not a copy of the install hint.
112
+ if (!successServed) {
113
+ res.writeHead(404);
114
+ res.end();
115
+ return;
116
+ }
117
+ if (req.method !== "POST") {
118
+ res.writeHead(405, { Allow: "POST" });
119
+ res.end();
120
+ return;
121
+ }
122
+ try {
123
+ TelemetryService.getInstance().track(TelemetryEvent.AGENT_SKILLS_HINT_COPIED, {});
124
+ }
125
+ catch (err) {
126
+ logger.warn({ err }, "Failed to track agent-skills hint copied event");
127
+ }
128
+ res.writeHead(204);
129
+ res.end();
130
+ return;
131
+ }
132
+ if (parsed.pathname === SKILLS_HINT_STREAM_PATH) {
133
+ // Same gate as the beacon: the stream only makes sense once the success
134
+ // page has been served. Pre-auth requests get a 404.
135
+ if (!successServed) {
136
+ res.writeHead(404);
137
+ res.end();
138
+ return;
139
+ }
140
+ res.writeHead(200, {
141
+ "Content-Type": "text/event-stream",
142
+ "Cache-Control": "no-cache",
143
+ Connection: "keep-alive",
144
+ });
145
+ // Flush headers so the browser considers the EventSource "open".
146
+ res.write(": connected\n\n");
147
+ streamClients.add(res);
148
+ req.on("close", () => {
149
+ streamClients.delete(res);
150
+ // When the last tab closes and auth already succeeded, the listener
151
+ // has no further reason to exist.
152
+ if (successServed && streamClients.size === 0)
153
+ closeServerOnce();
154
+ });
155
+ return;
156
+ }
68
157
  if (parsed.pathname !== OAUTH_CALLBACK_PATH) {
69
158
  sendHtml(res, 404, renderErrorPage("Not found"));
70
159
  return;
@@ -85,7 +174,11 @@ export async function runPkceLogin(auth0Config, signal) {
85
174
  sendHtml(res, 400, renderErrorPage("Missing authorization code"));
86
175
  return;
87
176
  }
88
- sendHtml(res, 200, renderSuccessPage());
177
+ sendHtml(res, 200, renderSuccessPage({
178
+ copiedPath: SKILLS_HINT_COPIED_PATH,
179
+ streamPath: SKILLS_HINT_STREAM_PATH,
180
+ }));
181
+ successServed = true;
89
182
  resolveCode(code);
90
183
  });
91
184
  let bound = false;
@@ -102,10 +195,12 @@ export async function runPkceLogin(auth0Config, signal) {
102
195
  server.listen(OAUTH_CALLBACK_PORT, OAUTH_CALLBACK_HOST, () => {
103
196
  bound = true;
104
197
  server.off("error", onBindError);
105
- // Replace the bind-time rejector with a log-only listener so a stray
106
- // post-bind socket error doesn't escape as an uncaught 'error' event.
198
+ // Post-bind socket errors must reject the in-flight flow, not just warn: if the listener
199
+ // dies mid-callback (EMFILE, broken TLS upgrade, etc.) the user would otherwise hang on
200
+ // `codePromise` until `PKCE_LOGIN_TIMEOUT_MS` (minutes) instead of failing fast.
107
201
  server.on("error", (err) => {
108
202
  logger.warn({ err }, "PKCE callback server post-bind error");
203
+ rejectFlow(new PkceLoginError("callback_server_error", `PKCE callback listener errored after bind: ${err.message}`));
109
204
  });
110
205
  resolve();
111
206
  });
@@ -126,11 +221,13 @@ export async function runPkceLogin(auth0Config, signal) {
126
221
  let authCode;
127
222
  try {
128
223
  await Promise.race([bindResult, abortPromise]);
224
+ const authUrl = buildAuthorizationUrl(auth0Config, codeChallenge, state);
225
+ // log the URL so users whose default browser misbehaves can open it manually. safe to log:
226
+ // the URL carries only the one-time PKCE code_challenge + state, both bound to this single
227
+ // login attempt and discarded once the callback resolves.
228
+ logger.info({ authUrl }, "Opening Auth0 authorization URL");
129
229
  try {
130
- await Promise.race([
131
- nodeOpen.open(buildAuthorizationUrl(auth0Config, codeChallenge, state)),
132
- abortPromise,
133
- ]);
230
+ await Promise.race([nodeOpen.open(authUrl), abortPromise]);
134
231
  }
135
232
  catch (err) {
136
233
  // Preserve user_aborted from the race; wrap any other open() failure.
@@ -147,8 +244,20 @@ export async function runPkceLogin(auth0Config, signal) {
147
244
  signal.removeEventListener("abort", abortListener);
148
245
  }
149
246
  clearTimeout(timer);
150
- if (bound)
151
- server.close();
247
+ if (bound) {
248
+ if (successServed) {
249
+ // The success page's EventSource keeps the listener alive while the
250
+ // browser tab is open; stream-disconnect calls closeServerOnce. The
251
+ // timer + unref'd server are the "tab left open" backstop so this
252
+ // listener can never keep the process alive on its own.
253
+ server.unref?.();
254
+ lifetimeTimer = setTimeout(closeServerOnce, SUCCESS_PAGE_MAX_LIFETIME_MS);
255
+ lifetimeTimer.unref?.();
256
+ }
257
+ else {
258
+ closeServerOnce();
259
+ }
260
+ }
152
261
  }
153
262
  logger.info("PKCE auth code received; exchanging for token chain");
154
263
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"pkce-login.js","sourceRoot":"","sources":["../../../src/confluent/oauth/pkce-login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pkce-login.js","sourceRoot":"","sources":["../../../src/confluent/oauth/pkce-login.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,8 @@ export type Auth0Environment = "devel" | "stag" | "prod";
2
2
  export interface Auth0Config {
3
3
  clientId: string;
4
4
  domain: string;
5
+ /** Confluent Cloud session/login API base URL (no `api.` prefix, e.g. https://confluent.cloud for prod). Used by the token-exchange chain. */
5
6
  apiUrl: string;
6
- /** Confluent Cloud REST API base URL for this environment (e.g. https://api.confluent.cloud for prod). */
7
- cloudRestUrl: string;
8
7
  callbackUrl: string;
9
8
  scopes: string;
10
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/confluent/oauth/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,0GAA0G;IAC1G,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,mEAAmE;IACnE,YAAY,EAAE,MAAM,CAAC;IACrB,2FAA2F;IAC3F,6BAA6B,EAAE,MAAM,CAAC;IACtC,uFAAuF;IACvF,yBAAyB,EAAE,MAAM,CAAC;IAElC,iFAAiF;IACjF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,6DAA6D;IAC7D,qBAAqB,EAAE,MAAM,CAAC;IAE9B,qFAAqF;IACrF,cAAc,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,kBAAkB,EAAE,MAAM,CAAC;IAE3B,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,gBAAgB,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/confluent/oauth/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,8IAA8I;IAC9I,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,mEAAmE;IACnE,YAAY,EAAE,MAAM,CAAC;IACrB,2FAA2F;IAC3F,6BAA6B,EAAE,MAAM,CAAC;IACtC,uFAAuF;IACvF,yBAAyB,EAAE,MAAM,CAAC;IAElC,iFAAiF;IACjF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,6DAA6D;IAC7D,qBAAqB,EAAE,MAAM,CAAC;IAE9B,qFAAqF;IACrF,cAAc,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,kBAAkB,EAAE,MAAM,CAAC;IAE3B,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,gBAAgB,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB"}
@@ -20,15 +20,15 @@
20
20
  */
21
21
  import type { KafkaJS } from "@confluentinc/kafka-javascript";
22
22
  import { SchemaRegistryClient } from "@confluentinc/schemaregistry";
23
- import { BaseClientManager } from "../confluent/base-client-manager.js";
23
+ import { BaseClientManager, type ConsumerBuildOptions } from "../confluent/base-client-manager.js";
24
24
  import type { ConfluentRestClient } from "../confluent/client-manager.js";
25
25
  import { OAuthHolder } from "../confluent/oauth/oauth-holder.js";
26
26
  import type { Auth0Environment } from "../confluent/oauth/types.js";
27
27
  /**
28
28
  * Bearer-auth client manager. Wires every REST surface to the OAuth holder's
29
- * tokens — control plane (cloud / tableflow / telemetry) reads
29
+ * tokens — control plane (cloud / tableflow) reads
30
30
  * {@link OAuthHolder.getControlPlaneToken}; data plane (flink / schema-registry
31
- * REST / kafka REST) reads {@link OAuthHolder.getDataPlaneToken}. Cloud REST URL
31
+ * REST / kafka REST / telemetry) reads {@link OAuthHolder.getDataPlaneToken}. Cloud REST URL
32
32
  * is auto-derived from the CCloud env. Native Kafka clients (admin, producer,
33
33
  * consumer) are built fresh per call against bootstrap endpoints resolved
34
34
  * via the cmk REST API; SASL/OAUTHBEARER is configured via librdkafka's
@@ -38,6 +38,7 @@ import type { Auth0Environment } from "../confluent/oauth/types.js";
38
38
  export declare class OAuthClientManager extends BaseClientManager {
39
39
  private readonly holder;
40
40
  private readonly kafkaDebug;
41
+ private readonly env;
41
42
  /**
42
43
  * @param kafkaDebug Optional librdkafka `debug` contexts string, threaded
43
44
  * through to every native Kafka client built by this manager. Sourced
@@ -50,13 +51,15 @@ export declare class OAuthClientManager extends BaseClientManager {
50
51
  /** @inheritdoc */
51
52
  getConfluentCloudKafkaRestClient(clusterId?: string, envId?: string): Promise<ConfluentRestClient>;
52
53
  /** @inheritdoc */
54
+ getFlinkRestClient(computePoolId?: string, envId?: string): Promise<ConfluentRestClient>;
55
+ /** @inheritdoc */
53
56
  getSchemaRegistryRestClient(envId?: string): Promise<ConfluentRestClient>;
54
57
  /** @inheritdoc */
55
58
  getKafkaAdminClient(clusterId?: string, envId?: string): Promise<KafkaJS.Admin>;
56
59
  /** @inheritdoc */
57
60
  getKafkaProducer(clusterId?: string, envId?: string): Promise<KafkaJS.Producer>;
58
61
  /** @inheritdoc */
59
- buildKafkaConsumer(clusterId?: string, envId?: string, groupId?: string): Promise<KafkaJS.Consumer>;
62
+ buildKafkaConsumer(opts?: ConsumerBuildOptions): Promise<KafkaJS.Consumer>;
60
63
  /** @inheritdoc */
61
64
  disconnect(): Promise<void>;
62
65
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-client-manager.d.ts","sourceRoot":"","sources":["../../src/confluent/oauth-client-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAgB,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAa5E,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAqBtE;;;;;;;;;;GAUG;AACH,qBAAa,kBAAmB,SAAQ,iBAAiB;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAEhD;;;;;OAKG;gBACS,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,gBAAgB,EAAE,UAAU,CAAC,EAAE,MAAM;IA8B3E,kBAAkB;IACZ,0BAA0B,CAC9B,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,oBAAoB,CAAC;IA0BhC,kBAAkB;IACZ,gCAAgC,CACpC,SAAS,CAAC,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC;IAoB/B,kBAAkB;IACZ,2BAA2B,CAC/B,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC;IA0B/B,kBAAkB;IACZ,mBAAmB,CACvB,SAAS,CAAC,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;IAuBzB,kBAAkB;IACZ,gBAAgB,CACpB,SAAS,CAAC,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;IAQ5B,kBAAkB;IACZ,kBAAkB,CACtB,SAAS,CAAC,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;IAY5B,kBAAkB;IACZ,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,kBAAkB;YAiBZ,qBAAqB;CAuDpC"}
1
+ {"version":3,"file":"oauth-client-manager.d.ts","sourceRoot":"","sources":["../../src/confluent/oauth-client-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAgB,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EACL,iBAAiB,EACjB,KAAK,oBAAoB,EAC1B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAkB5E,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAqBtE;;;;;;;;;;GAUG;AACH,qBAAa,kBAAmB,SAAQ,iBAAiB;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAmB;IAEvC;;;;;OAKG;gBACS,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,gBAAgB,EAAE,UAAU,CAAC,EAAE,MAAM;IA+B3E,kBAAkB;IACZ,0BAA0B,CAC9B,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,oBAAoB,CAAC;IA0BhC,kBAAkB;IACZ,gCAAgC,CACpC,SAAS,CAAC,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC;IAoB/B,kBAAkB;IACZ,kBAAkB,CACtB,aAAa,CAAC,EAAE,MAAM,EACtB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC;IA0B/B,kBAAkB;IACZ,2BAA2B,CAC/B,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC;IA0B/B,kBAAkB;IACZ,mBAAmB,CACvB,SAAS,CAAC,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;IAuBzB,kBAAkB;IACZ,gBAAgB,CACpB,SAAS,CAAC,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;IAQ5B,kBAAkB;IACZ,kBAAkB,CACtB,IAAI,CAAC,EAAE,oBAAoB,GAC1B,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;IAe5B,kBAAkB;IACZ,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,kBAAkB;YAiBZ,qBAAqB;CAuDpC"}
@@ -19,19 +19,19 @@
19
19
  * SDK client per call.
20
20
  */
21
21
  import { SchemaRegistryClient } from "@confluentinc/schemaregistry";
22
- import { BaseClientManager } from "../confluent/base-client-manager.js";
22
+ import { BaseClientManager, } from "../confluent/base-client-manager.js";
23
23
  import { createAuthMiddleware, } from "../confluent/middleware.js";
24
24
  import { kafkaDeps } from "../confluent/node-deps.js";
25
- import { resolveKafkaBootstrap, resolveKafkaRestEndpoint, resolveSchemaRegistryClusterId, resolveSchemaRegistryEndpoint, } from "../confluent/oauth-resource-resolvers.js";
26
- import { getCloudRestUrlForEnv } from "../confluent/oauth/auth0-config.js";
25
+ import { resolveFlinkComputePoolRegion, resolveKafkaBootstrap, resolveKafkaRestEndpoint, resolveSchemaRegistryClusterId, resolveSchemaRegistryEndpoint, } from "../confluent/oauth-resource-resolvers.js";
26
+ import { getCloudRestUrlForEnv, getFlinkRestUrlForRegion, getTelemetryRestUrlForEnv, } from "../confluent/oauth/auth0-config.js";
27
27
  import { kafkaLogger } from "../logger.js";
28
28
  import createClient from "openapi-fetch";
29
29
  import { DATA_PLANE_TOKEN_LIFETIME_MS } from "./oauth/token-lifetimes.js";
30
30
  /**
31
31
  * Bearer-auth client manager. Wires every REST surface to the OAuth holder's
32
- * tokens — control plane (cloud / tableflow / telemetry) reads
32
+ * tokens — control plane (cloud / tableflow) reads
33
33
  * {@link OAuthHolder.getControlPlaneToken}; data plane (flink / schema-registry
34
- * REST / kafka REST) reads {@link OAuthHolder.getDataPlaneToken}. Cloud REST URL
34
+ * REST / kafka REST / telemetry) reads {@link OAuthHolder.getDataPlaneToken}. Cloud REST URL
35
35
  * is auto-derived from the CCloud env. Native Kafka clients (admin, producer,
36
36
  * consumer) are built fresh per call against bootstrap endpoints resolved
37
37
  * via the cmk REST API; SASL/OAUTHBEARER is configured via librdkafka's
@@ -41,6 +41,7 @@ import { DATA_PLANE_TOKEN_LIFETIME_MS } from "./oauth/token-lifetimes.js";
41
41
  export class OAuthClientManager extends BaseClientManager {
42
42
  holder;
43
43
  kafkaDebug;
44
+ env;
44
45
  /**
45
46
  * @param kafkaDebug Optional librdkafka `debug` contexts string, threaded
46
47
  * through to every native Kafka client built by this manager. Sourced
@@ -57,12 +58,12 @@ export class OAuthClientManager extends BaseClientManager {
57
58
  flink: undefined,
58
59
  schemaRegistry: undefined,
59
60
  kafka: undefined,
60
- telemetry: undefined,
61
+ telemetry: getTelemetryRestUrlForEnv(env),
61
62
  },
62
63
  auth: {
63
64
  cloud: { type: "oauth", getToken: cpToken },
64
65
  tableflow: { type: "oauth", getToken: cpToken },
65
- telemetry: { type: "oauth", getToken: cpToken },
66
+ telemetry: { type: "oauth", getToken: dpToken },
66
67
  flink: { type: "oauth", getToken: dpToken },
67
68
  schemaRegistry: { type: "oauth", getToken: dpToken },
68
69
  kafka: { type: "oauth", getToken: dpToken },
@@ -70,6 +71,7 @@ export class OAuthClientManager extends BaseClientManager {
70
71
  });
71
72
  this.holder = holder;
72
73
  this.kafkaDebug = kafkaDebug;
74
+ this.env = env;
73
75
  // Eager construction: surface the cloud REST client at startup so a bad
74
76
  // endpoint or middleware wiring fails fast rather than at first tool call.
75
77
  this.getConfluentCloudRestClient();
@@ -115,6 +117,26 @@ export class OAuthClientManager extends BaseClientManager {
115
117
  return client;
116
118
  }
117
119
  /** @inheritdoc */
120
+ async getFlinkRestClient(computePoolId, envId) {
121
+ this.requireDataPlaneToken();
122
+ if (!computePoolId || !envId) {
123
+ throw new Error("computePoolId and environmentId are required under OAuth for Flink access. " +
124
+ "Discover the environment via list-environments, then call list-compute-pools " +
125
+ "with environmentId to discover the compute pool id (lfcp-...).");
126
+ }
127
+ // The Flink REST host is regional, so resolve the compute pool's cloud +
128
+ // region and derive the per-call base URL from the Auth0 env's base domain.
129
+ const { cloud, region } = await resolveFlinkComputePoolRegion(this.getConfluentCloudRestClient(), computePoolId, envId);
130
+ const baseUrl = getFlinkRestUrlForRegion(this.env, cloud, region);
131
+ const auth = {
132
+ type: "oauth",
133
+ getToken: () => this.holder.getDataPlaneToken(),
134
+ };
135
+ const client = createClient({ baseUrl });
136
+ client.use(createAuthMiddleware(auth));
137
+ return client;
138
+ }
139
+ /** @inheritdoc */
118
140
  async getSchemaRegistryRestClient(envId) {
119
141
  this.requireDataPlaneToken();
120
142
  if (!envId) {
@@ -171,15 +193,15 @@ export class OAuthClientManager extends BaseClientManager {
171
193
  return producer;
172
194
  }
173
195
  /** @inheritdoc */
174
- async buildKafkaConsumer(clusterId, envId, groupId) {
175
- this.requireClusterArgs(clusterId, envId);
176
- const kafka = await this.buildOAuthKafkaClient(clusterId, envId);
196
+ async buildKafkaConsumer(opts) {
197
+ this.requireClusterArgs(opts?.clusterId, opts?.envId);
198
+ const kafka = await this.buildOAuthKafkaClient(opts.clusterId, opts.envId);
177
199
  return kafka.consumer({
178
200
  kafkaJS: {
179
- groupId: groupId ?? "mcp-confluent",
201
+ groupId: opts?.groupId ?? "mcp-confluent",
180
202
  autoCommit: false,
181
- fromBeginning: true,
182
203
  },
204
+ "auto.offset.reset": opts?.offsetReset ?? "earliest",
183
205
  });
184
206
  }
185
207
  /** @inheritdoc */