@confluentinc/mcp-confluent 1.2.2 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (428) hide show
  1. package/README.md +171 -193
  2. package/assets/oauth-templates/callback-failure.html +22 -0
  3. package/assets/oauth-templates/callback-success.html +19 -0
  4. package/assets/oauth-templates/logo.html +91 -0
  5. package/assets/oauth-templates/styles.html +49 -0
  6. package/config.example.yaml +149 -0
  7. package/config.oauth.example.yaml +45 -0
  8. package/dist/cli.d.ts +59 -12
  9. package/dist/cli.d.ts.map +1 -1
  10. package/dist/cli.js +131 -61
  11. package/dist/cli.js.map +1 -1
  12. package/dist/config/env-config.d.ts +33 -0
  13. package/dist/config/env-config.d.ts.map +1 -0
  14. package/dist/config/env-config.js +473 -0
  15. package/dist/config/env-config.js.map +1 -0
  16. package/dist/config/index.d.ts +31 -0
  17. package/dist/config/index.d.ts.map +1 -0
  18. package/dist/config/index.js +76 -0
  19. package/dist/config/index.js.map +1 -0
  20. package/dist/config/interpolation.d.ts +9 -0
  21. package/dist/config/interpolation.d.ts.map +1 -0
  22. package/dist/config/interpolation.js +51 -0
  23. package/dist/config/interpolation.js.map +1 -0
  24. package/dist/config/models.d.ts +396 -0
  25. package/dist/config/models.d.ts.map +1 -0
  26. package/dist/config/models.js +401 -0
  27. package/dist/config/models.js.map +1 -0
  28. package/dist/config/validation.d.ts +9 -0
  29. package/dist/config/validation.d.ts.map +1 -0
  30. package/dist/config/validation.js +46 -0
  31. package/dist/config/validation.js.map +1 -0
  32. package/dist/confluent/base-client-manager.d.ts +100 -0
  33. package/dist/confluent/base-client-manager.d.ts.map +1 -0
  34. package/dist/confluent/base-client-manager.js +188 -0
  35. package/dist/confluent/base-client-manager.js.map +1 -0
  36. package/dist/confluent/client-manager.d.ts +42 -77
  37. package/dist/confluent/client-manager.d.ts.map +1 -1
  38. package/dist/confluent/client-manager.js +5 -213
  39. package/dist/confluent/client-manager.js.map +1 -1
  40. package/dist/confluent/config-telemetry.d.ts +41 -0
  41. package/dist/confluent/config-telemetry.d.ts.map +1 -0
  42. package/dist/confluent/config-telemetry.js +17 -0
  43. package/dist/confluent/config-telemetry.js.map +1 -0
  44. package/dist/confluent/direct-client-manager.d.ts +43 -0
  45. package/dist/confluent/direct-client-manager.d.ts.map +1 -0
  46. package/dist/confluent/direct-client-manager.js +146 -0
  47. package/dist/confluent/direct-client-manager.js.map +1 -0
  48. package/dist/confluent/middleware.d.ts +32 -4
  49. package/dist/confluent/middleware.d.ts.map +1 -1
  50. package/dist/confluent/middleware.js +46 -2
  51. package/dist/confluent/middleware.js.map +1 -1
  52. package/dist/confluent/node-deps.d.ts +32 -39
  53. package/dist/confluent/node-deps.d.ts.map +1 -1
  54. package/dist/confluent/node-deps.js +42 -7
  55. package/dist/confluent/node-deps.js.map +1 -1
  56. package/dist/confluent/oauth/auth-context.d.ts +94 -0
  57. package/dist/confluent/oauth/auth-context.d.ts.map +1 -0
  58. package/dist/confluent/oauth/auth-context.js +323 -0
  59. package/dist/confluent/oauth/auth-context.js.map +1 -0
  60. package/dist/confluent/oauth/auth0-config.d.ts +12 -0
  61. package/dist/confluent/oauth/auth0-config.d.ts.map +1 -0
  62. package/dist/confluent/oauth/auth0-config.js +43 -0
  63. package/dist/confluent/oauth/auth0-config.js.map +1 -0
  64. package/dist/confluent/oauth/callback-pages.d.ts +5 -0
  65. package/dist/confluent/oauth/callback-pages.d.ts.map +1 -0
  66. package/dist/confluent/oauth/callback-pages.js +38 -0
  67. package/dist/confluent/oauth/callback-pages.js.map +1 -0
  68. package/dist/confluent/oauth/crypto-utils.d.ts +16 -0
  69. package/dist/confluent/oauth/crypto-utils.d.ts.map +1 -0
  70. package/dist/confluent/oauth/crypto-utils.js +23 -0
  71. package/dist/confluent/oauth/crypto-utils.js.map +1 -0
  72. package/dist/confluent/oauth/errors.d.ts +27 -0
  73. package/dist/confluent/oauth/errors.d.ts.map +1 -0
  74. package/dist/confluent/oauth/errors.js +6 -0
  75. package/dist/confluent/oauth/errors.js.map +1 -0
  76. package/dist/confluent/oauth/oauth-holder.d.ts +34 -0
  77. package/dist/confluent/oauth/oauth-holder.d.ts.map +1 -0
  78. package/dist/confluent/oauth/oauth-holder.js +155 -0
  79. package/dist/confluent/oauth/oauth-holder.js.map +1 -0
  80. package/dist/confluent/oauth/pkce-login.d.ts +26 -0
  81. package/dist/confluent/oauth/pkce-login.d.ts.map +1 -0
  82. package/dist/confluent/oauth/pkce-login.js +161 -0
  83. package/dist/confluent/oauth/pkce-login.js.map +1 -0
  84. package/dist/confluent/oauth/token-chain.d.ts +53 -0
  85. package/dist/confluent/oauth/token-chain.d.ts.map +1 -0
  86. package/dist/confluent/oauth/token-chain.js +141 -0
  87. package/dist/confluent/oauth/token-chain.js.map +1 -0
  88. package/dist/confluent/oauth/token-lifetimes.d.ts +13 -0
  89. package/dist/confluent/oauth/token-lifetimes.d.ts.map +1 -0
  90. package/dist/confluent/oauth/token-lifetimes.js +13 -0
  91. package/dist/confluent/oauth/token-lifetimes.js.map +1 -0
  92. package/dist/confluent/oauth/types.d.ts +68 -0
  93. package/dist/confluent/oauth/types.d.ts.map +1 -0
  94. package/dist/confluent/oauth/types.js +2 -0
  95. package/dist/confluent/oauth/types.js.map +1 -0
  96. package/dist/confluent/oauth-client-manager.d.ts +78 -0
  97. package/dist/confluent/oauth-client-manager.d.ts.map +1 -0
  98. package/dist/confluent/oauth-client-manager.js +265 -0
  99. package/dist/confluent/oauth-client-manager.js.map +1 -0
  100. package/dist/confluent/oauth-resource-resolvers.d.ts +6 -0
  101. package/dist/confluent/oauth-resource-resolvers.d.ts.map +1 -0
  102. package/dist/confluent/oauth-resource-resolvers.js +65 -0
  103. package/dist/confluent/oauth-resource-resolvers.js.map +1 -0
  104. package/dist/confluent/telemetry.d.ts +32 -1
  105. package/dist/confluent/telemetry.d.ts.map +1 -1
  106. package/dist/confluent/telemetry.js +31 -8
  107. package/dist/confluent/telemetry.js.map +1 -1
  108. package/dist/confluent/tools/base-tools.d.ts +98 -23
  109. package/dist/confluent/tools/base-tools.d.ts.map +1 -1
  110. package/dist/confluent/tools/base-tools.js +62 -4
  111. package/dist/confluent/tools/base-tools.js.map +1 -1
  112. package/dist/confluent/tools/cluster-arg-resolvers.d.ts +75 -0
  113. package/dist/confluent/tools/cluster-arg-resolvers.d.ts.map +1 -0
  114. package/dist/confluent/tools/cluster-arg-resolvers.js +127 -0
  115. package/dist/confluent/tools/cluster-arg-resolvers.js.map +1 -0
  116. package/dist/confluent/tools/connection-predicates.d.ts +168 -0
  117. package/dist/confluent/tools/connection-predicates.d.ts.map +1 -0
  118. package/dist/confluent/tools/connection-predicates.js +273 -0
  119. package/dist/confluent/tools/connection-predicates.js.map +1 -0
  120. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.d.ts +3 -5
  121. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.d.ts.map +1 -1
  122. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.js +4 -8
  123. package/dist/confluent/tools/handlers/billing/list-billing-costs-handler.js.map +1 -1
  124. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.d.ts +4 -5
  125. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.d.ts.map +1 -1
  126. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.js +4 -8
  127. package/dist/confluent/tools/handlers/catalog/add-tags-to-topic.js.map +1 -1
  128. package/dist/confluent/tools/handlers/catalog/create-topic-tags.d.ts +4 -5
  129. package/dist/confluent/tools/handlers/catalog/create-topic-tags.d.ts.map +1 -1
  130. package/dist/confluent/tools/handlers/catalog/create-topic-tags.js +4 -8
  131. package/dist/confluent/tools/handlers/catalog/create-topic-tags.js.map +1 -1
  132. package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts +4 -5
  133. package/dist/confluent/tools/handlers/catalog/delete-tag.d.ts.map +1 -1
  134. package/dist/confluent/tools/handlers/catalog/delete-tag.js +4 -8
  135. package/dist/confluent/tools/handlers/catalog/delete-tag.js.map +1 -1
  136. package/dist/confluent/tools/handlers/catalog/list-tags.d.ts +4 -5
  137. package/dist/confluent/tools/handlers/catalog/list-tags.d.ts.map +1 -1
  138. package/dist/confluent/tools/handlers/catalog/list-tags.js +4 -8
  139. package/dist/confluent/tools/handlers/catalog/list-tags.js.map +1 -1
  140. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts +4 -5
  141. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.d.ts.map +1 -1
  142. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.js +4 -8
  143. package/dist/confluent/tools/handlers/catalog/remove-tag-from-entity.js.map +1 -1
  144. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.d.ts +3 -5
  145. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.d.ts.map +1 -1
  146. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js +9 -12
  147. package/dist/confluent/tools/handlers/clusters/list-clusters-handler.js.map +1 -1
  148. package/dist/confluent/tools/handlers/connect/connect-tool-handler.d.ts +21 -0
  149. package/dist/confluent/tools/handlers/connect/connect-tool-handler.d.ts.map +1 -0
  150. package/dist/confluent/tools/handlers/connect/connect-tool-handler.js +22 -0
  151. package/dist/confluent/tools/handlers/connect/connect-tool-handler.js.map +1 -0
  152. package/dist/confluent/tools/handlers/connect/create-connector-handler.d.ts +11 -7
  153. package/dist/confluent/tools/handlers/connect/create-connector-handler.d.ts.map +1 -1
  154. package/dist/confluent/tools/handlers/connect/create-connector-handler.js +21 -21
  155. package/dist/confluent/tools/handlers/connect/create-connector-handler.js.map +1 -1
  156. package/dist/confluent/tools/handlers/connect/delete-connector-handler.d.ts +6 -7
  157. package/dist/confluent/tools/handlers/connect/delete-connector-handler.d.ts.map +1 -1
  158. package/dist/confluent/tools/handlers/connect/delete-connector-handler.js +10 -15
  159. package/dist/confluent/tools/handlers/connect/delete-connector-handler.js.map +1 -1
  160. package/dist/confluent/tools/handlers/connect/list-connectors-handler.d.ts +6 -7
  161. package/dist/confluent/tools/handlers/connect/list-connectors-handler.d.ts.map +1 -1
  162. package/dist/confluent/tools/handlers/connect/list-connectors-handler.js +15 -17
  163. package/dist/confluent/tools/handlers/connect/list-connectors-handler.js.map +1 -1
  164. package/dist/confluent/tools/handlers/connect/read-connectors-handler.d.ts +6 -7
  165. package/dist/confluent/tools/handlers/connect/read-connectors-handler.d.ts.map +1 -1
  166. package/dist/confluent/tools/handlers/connect/read-connectors-handler.js +10 -15
  167. package/dist/confluent/tools/handlers/connect/read-connectors-handler.js.map +1 -1
  168. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.d.ts +57 -0
  169. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.d.ts.map +1 -0
  170. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.js +122 -0
  171. package/dist/confluent/tools/handlers/diagnostics/explain-disabled-tools-handler.js.map +1 -0
  172. package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.d.ts +17 -0
  173. package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.d.ts.map +1 -0
  174. package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.js +234 -0
  175. package/dist/confluent/tools/handlers/docs/get-product-doc-page-handler.js.map +1 -0
  176. package/dist/confluent/tools/handlers/docs/search-product-docs-handler.d.ts +13 -0
  177. package/dist/confluent/tools/handlers/docs/search-product-docs-handler.d.ts.map +1 -0
  178. package/dist/confluent/tools/handlers/docs/search-product-docs-handler.js +285 -0
  179. package/dist/confluent/tools/handlers/docs/search-product-docs-handler.js.map +1 -0
  180. package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts +3 -5
  181. package/dist/confluent/tools/handlers/environments/list-environments-handler.d.ts.map +1 -1
  182. package/dist/confluent/tools/handlers/environments/list-environments-handler.js +4 -8
  183. package/dist/confluent/tools/handlers/environments/list-environments-handler.js.map +1 -1
  184. package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts +3 -5
  185. package/dist/confluent/tools/handlers/environments/read-environment-handler.d.ts.map +1 -1
  186. package/dist/confluent/tools/handlers/environments/read-environment-handler.js +4 -8
  187. package/dist/confluent/tools/handlers/environments/read-environment-handler.js.map +1 -1
  188. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.d.ts +16 -9
  189. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.d.ts.map +1 -1
  190. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.js +18 -12
  191. package/dist/confluent/tools/handlers/flink/catalog/catalog-resolver.js.map +1 -1
  192. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.d.ts +5 -7
  193. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.d.ts.map +1 -1
  194. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.js +15 -21
  195. package/dist/confluent/tools/handlers/flink/catalog/describe-table-handler.js.map +1 -1
  196. package/dist/confluent/tools/handlers/flink/catalog/flink-catalog-tool-handler.d.ts +14 -0
  197. package/dist/confluent/tools/handlers/flink/catalog/flink-catalog-tool-handler.d.ts.map +1 -0
  198. package/dist/confluent/tools/handlers/flink/catalog/flink-catalog-tool-handler.js +15 -0
  199. package/dist/confluent/tools/handlers/flink/catalog/flink-catalog-tool-handler.js.map +1 -0
  200. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.d.ts +5 -7
  201. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.d.ts.map +1 -1
  202. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.js +15 -21
  203. package/dist/confluent/tools/handlers/flink/catalog/get-table-info-handler.js.map +1 -1
  204. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.d.ts +5 -7
  205. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.d.ts.map +1 -1
  206. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.js +12 -20
  207. package/dist/confluent/tools/handlers/flink/catalog/list-catalogs-handler.js.map +1 -1
  208. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.d.ts +5 -7
  209. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.d.ts.map +1 -1
  210. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.js +12 -20
  211. package/dist/confluent/tools/handlers/flink/catalog/list-databases-handler.js.map +1 -1
  212. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.d.ts +5 -7
  213. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.d.ts.map +1 -1
  214. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.js +13 -29
  215. package/dist/confluent/tools/handlers/flink/catalog/list-tables-handler.js.map +1 -1
  216. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.d.ts +5 -7
  217. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.d.ts.map +1 -1
  218. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.js +18 -23
  219. package/dist/confluent/tools/handlers/flink/create-flink-statement-handler.js.map +1 -1
  220. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.d.ts +5 -7
  221. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.d.ts.map +1 -1
  222. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.js +7 -13
  223. package/dist/confluent/tools/handlers/flink/delete-flink-statement-handler.js.map +1 -1
  224. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.d.ts +5 -7
  225. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.d.ts.map +1 -1
  226. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.js +7 -13
  227. package/dist/confluent/tools/handlers/flink/diagnostics/check-health-handler.js.map +1 -1
  228. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.d.ts +5 -7
  229. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.d.ts.map +1 -1
  230. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.js +8 -15
  231. package/dist/confluent/tools/handlers/flink/diagnostics/detect-issues-handler.js.map +1 -1
  232. package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.d.ts +2 -2
  233. package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.d.ts.map +1 -1
  234. package/dist/confluent/tools/handlers/flink/diagnostics/metrics-helper.js.map +1 -1
  235. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.d.ts +7 -7
  236. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.d.ts.map +1 -1
  237. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.js +11 -17
  238. package/dist/confluent/tools/handlers/flink/diagnostics/query-profiler-handler.js.map +1 -1
  239. package/dist/confluent/tools/handlers/flink/flink-sql-helper.d.ts +2 -2
  240. package/dist/confluent/tools/handlers/flink/flink-sql-helper.d.ts.map +1 -1
  241. package/dist/confluent/tools/handlers/flink/flink-sql-helper.js.map +1 -1
  242. package/dist/confluent/tools/handlers/flink/flink-tool-handler.d.ts +21 -0
  243. package/dist/confluent/tools/handlers/flink/flink-tool-handler.d.ts.map +1 -0
  244. package/dist/confluent/tools/handlers/flink/flink-tool-handler.js +31 -0
  245. package/dist/confluent/tools/handlers/flink/flink-tool-handler.js.map +1 -0
  246. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.d.ts +5 -7
  247. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.d.ts.map +1 -1
  248. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.js +7 -13
  249. package/dist/confluent/tools/handlers/flink/get-flink-exceptions-handler.js.map +1 -1
  250. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.d.ts +5 -7
  251. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.d.ts.map +1 -1
  252. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js +9 -16
  253. package/dist/confluent/tools/handlers/flink/list-flink-statements-handler.js.map +1 -1
  254. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.d.ts +5 -7
  255. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.d.ts.map +1 -1
  256. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.js +7 -13
  257. package/dist/confluent/tools/handlers/flink/read-flink-statement-handler.js.map +1 -1
  258. package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts +3 -5
  259. package/dist/confluent/tools/handlers/kafka/alter-topic-config.d.ts.map +1 -1
  260. package/dist/confluent/tools/handlers/kafka/alter-topic-config.js +20 -19
  261. package/dist/confluent/tools/handlers/kafka/alter-topic-config.js.map +1 -1
  262. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.d.ts +5 -4
  263. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.d.ts.map +1 -1
  264. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js +23 -16
  265. package/dist/confluent/tools/handlers/kafka/consume-kafka-messages-handler.js.map +1 -1
  266. package/dist/confluent/tools/handlers/kafka/create-topics-handler.d.ts +3 -4
  267. package/dist/confluent/tools/handlers/kafka/create-topics-handler.d.ts.map +1 -1
  268. package/dist/confluent/tools/handlers/kafka/create-topics-handler.js +50 -14
  269. package/dist/confluent/tools/handlers/kafka/create-topics-handler.js.map +1 -1
  270. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts +3 -4
  271. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.d.ts.map +1 -1
  272. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js +24 -7
  273. package/dist/confluent/tools/handlers/kafka/delete-topics-handler.js.map +1 -1
  274. package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts +3 -5
  275. package/dist/confluent/tools/handlers/kafka/get-topic-config.d.ts.map +1 -1
  276. package/dist/confluent/tools/handlers/kafka/get-topic-config.js +20 -19
  277. package/dist/confluent/tools/handlers/kafka/get-topic-config.js.map +1 -1
  278. package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts +3 -4
  279. package/dist/confluent/tools/handlers/kafka/list-topics-handler.d.ts.map +1 -1
  280. package/dist/confluent/tools/handlers/kafka/list-topics-handler.js +23 -9
  281. package/dist/confluent/tools/handlers/kafka/list-topics-handler.js.map +1 -1
  282. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.d.ts +3 -4
  283. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.d.ts.map +1 -1
  284. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js +51 -32
  285. package/dist/confluent/tools/handlers/kafka/produce-kafka-message-handler.js.map +1 -1
  286. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.d.ts +4 -5
  287. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.d.ts.map +1 -1
  288. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js +4 -8
  289. package/dist/confluent/tools/handlers/metrics/list-metrics-handler.js.map +1 -1
  290. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts +22 -5
  291. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.d.ts.map +1 -1
  292. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js +86 -52
  293. package/dist/confluent/tools/handlers/metrics/query-metrics-handler.js.map +1 -1
  294. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.d.ts +49 -0
  295. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.d.ts.map +1 -0
  296. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.js +115 -0
  297. package/dist/confluent/tools/handlers/organizations/list-organizations-handler.js.map +1 -0
  298. package/dist/confluent/tools/handlers/schema/delete-schema-handler.d.ts +3 -4
  299. package/dist/confluent/tools/handlers/schema/delete-schema-handler.d.ts.map +1 -1
  300. package/dist/confluent/tools/handlers/schema/delete-schema-handler.js +11 -7
  301. package/dist/confluent/tools/handlers/schema/delete-schema-handler.js.map +1 -1
  302. package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts +3 -4
  303. package/dist/confluent/tools/handlers/schema/list-schemas-handler.d.ts.map +1 -1
  304. package/dist/confluent/tools/handlers/schema/list-schemas-handler.js +11 -6
  305. package/dist/confluent/tools/handlers/schema/list-schemas-handler.js.map +1 -1
  306. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.d.ts +4 -5
  307. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.d.ts.map +1 -1
  308. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.js +4 -8
  309. package/dist/confluent/tools/handlers/search/search-topic-by-tag-handler.js.map +1 -1
  310. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.d.ts +4 -5
  311. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.d.ts.map +1 -1
  312. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.js +4 -8
  313. package/dist/confluent/tools/handlers/search/search-topics-by-name-handler.js.map +1 -1
  314. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.d.ts +5 -7
  315. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.d.ts.map +1 -1
  316. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.js +17 -13
  317. package/dist/confluent/tools/handlers/tableflow/catalog/create-tableflow-catalog-integration-handler.js.map +1 -1
  318. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.d.ts +5 -7
  319. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.d.ts.map +1 -1
  320. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.js +6 -12
  321. package/dist/confluent/tools/handlers/tableflow/catalog/delete-tableflow-catalog-integration-handler.js.map +1 -1
  322. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.d.ts +5 -7
  323. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.d.ts.map +1 -1
  324. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.js +7 -13
  325. package/dist/confluent/tools/handlers/tableflow/catalog/list-tableflow-catalog-integrations-handler.js.map +1 -1
  326. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.d.ts +5 -7
  327. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.d.ts.map +1 -1
  328. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.js +6 -12
  329. package/dist/confluent/tools/handlers/tableflow/catalog/read-tableflow-catalog-integration-handler.js.map +1 -1
  330. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.d.ts +5 -7
  331. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.d.ts.map +1 -1
  332. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.js +5 -9
  333. package/dist/confluent/tools/handlers/tableflow/catalog/update-tableflow-catalog-integration-handler.js.map +1 -1
  334. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.d.ts +5 -7
  335. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.d.ts.map +1 -1
  336. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.js +19 -21
  337. package/dist/confluent/tools/handlers/tableflow/list-tableflow-regions-handler.js.map +1 -1
  338. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.d.ts +25 -0
  339. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.d.ts.map +1 -0
  340. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.js +27 -0
  341. package/dist/confluent/tools/handlers/tableflow/tableflow-tool-handler.js.map +1 -0
  342. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.d.ts +5 -7
  343. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.d.ts.map +1 -1
  344. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.js +17 -13
  345. package/dist/confluent/tools/handlers/tableflow/topic/create-tableflow-topic-handler.js.map +1 -1
  346. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.d.ts +5 -7
  347. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.d.ts.map +1 -1
  348. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.js +6 -12
  349. package/dist/confluent/tools/handlers/tableflow/topic/delete-tableflow-topic-handler.js.map +1 -1
  350. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.d.ts +5 -7
  351. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.d.ts.map +1 -1
  352. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.js +7 -13
  353. package/dist/confluent/tools/handlers/tableflow/topic/list-tableflow-topics-handler.js.map +1 -1
  354. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.d.ts +5 -7
  355. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.d.ts.map +1 -1
  356. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.js +6 -12
  357. package/dist/confluent/tools/handlers/tableflow/topic/read-tableflow-topic-handler.js.map +1 -1
  358. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.d.ts +5 -7
  359. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.d.ts.map +1 -1
  360. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.js +5 -9
  361. package/dist/confluent/tools/handlers/tableflow/topic/update-tableflow-topic-handler.js.map +1 -1
  362. package/dist/confluent/tools/tool-availability.d.ts +74 -0
  363. package/dist/confluent/tools/tool-availability.d.ts.map +1 -0
  364. package/dist/confluent/tools/tool-availability.js +121 -0
  365. package/dist/confluent/tools/tool-availability.js.map +1 -0
  366. package/dist/confluent/tools/tool-name.d.ts +5 -1
  367. package/dist/confluent/tools/tool-name.d.ts.map +1 -1
  368. package/dist/confluent/tools/tool-name.js +4 -0
  369. package/dist/confluent/tools/tool-name.js.map +1 -1
  370. package/dist/confluent/tools/tool-registry.d.ts +18 -0
  371. package/dist/confluent/tools/tool-registry.d.ts.map +1 -0
  372. package/dist/confluent/tools/{tool-factory.js → tool-registry.js} +32 -19
  373. package/dist/confluent/tools/tool-registry.js.map +1 -0
  374. package/dist/env-schema.d.ts +5 -7
  375. package/dist/env-schema.d.ts.map +1 -1
  376. package/dist/env-schema.js +20 -39
  377. package/dist/env-schema.js.map +1 -1
  378. package/dist/env.d.ts +16 -7
  379. package/dist/env.d.ts.map +1 -1
  380. package/dist/env.js +16 -6
  381. package/dist/env.js.map +1 -1
  382. package/dist/index.d.ts +74 -1
  383. package/dist/index.d.ts.map +1 -1
  384. package/dist/index.js +279 -166
  385. package/dist/index.js.map +1 -1
  386. package/dist/logger.d.ts.map +1 -1
  387. package/dist/logger.js +21 -20
  388. package/dist/logger.js.map +1 -1
  389. package/dist/mcp/server.d.ts +29 -0
  390. package/dist/mcp/server.d.ts.map +1 -0
  391. package/dist/mcp/server.js +52 -0
  392. package/dist/mcp/server.js.map +1 -0
  393. package/dist/mcp/transports/auth.d.ts +20 -4
  394. package/dist/mcp/transports/auth.d.ts.map +1 -1
  395. package/dist/mcp/transports/auth.js +27 -7
  396. package/dist/mcp/transports/auth.js.map +1 -1
  397. package/dist/mcp/transports/http.d.ts +8 -2
  398. package/dist/mcp/transports/http.d.ts.map +1 -1
  399. package/dist/mcp/transports/http.js +57 -42
  400. package/dist/mcp/transports/http.js.map +1 -1
  401. package/dist/mcp/transports/manager.d.ts +23 -9
  402. package/dist/mcp/transports/manager.d.ts.map +1 -1
  403. package/dist/mcp/transports/manager.js +27 -24
  404. package/dist/mcp/transports/manager.js.map +1 -1
  405. package/dist/mcp/transports/server.d.ts +1 -1
  406. package/dist/mcp/transports/server.d.ts.map +1 -1
  407. package/dist/mcp/transports/server.js +17 -5
  408. package/dist/mcp/transports/server.js.map +1 -1
  409. package/dist/mcp/transports/session-registry.d.ts +33 -0
  410. package/dist/mcp/transports/session-registry.d.ts.map +1 -0
  411. package/dist/mcp/transports/session-registry.js +65 -0
  412. package/dist/mcp/transports/session-registry.js.map +1 -0
  413. package/dist/mcp/transports/sse.d.ts +13 -2
  414. package/dist/mcp/transports/sse.d.ts.map +1 -1
  415. package/dist/mcp/transports/sse.js +58 -46
  416. package/dist/mcp/transports/sse.js.map +1 -1
  417. package/dist/server-runtime.d.ts +28 -0
  418. package/dist/server-runtime.d.ts.map +1 -0
  419. package/dist/server-runtime.js +73 -0
  420. package/dist/server-runtime.js.map +1 -0
  421. package/package.json +25 -9
  422. package/dist/confluent/helpers.d.ts +0 -11
  423. package/dist/confluent/helpers.d.ts.map +0 -1
  424. package/dist/confluent/helpers.js +0 -17
  425. package/dist/confluent/helpers.js.map +0 -1
  426. package/dist/confluent/tools/tool-factory.d.ts +0 -9
  427. package/dist/confluent/tools/tool-factory.d.ts.map +0 -1
  428. package/dist/confluent/tools/tool-factory.js.map +0 -1
@@ -0,0 +1,234 @@
1
+ import { nodeFetch } from "../../../../confluent/node-deps.js";
2
+ import { BaseToolHandler, READ_ONLY, } from "../../../../confluent/tools/base-tools.js";
3
+ import { alwaysEnabled } from "../../../../confluent/tools/connection-predicates.js";
4
+ import { ToolName } from "../../../../confluent/tools/tool-name.js";
5
+ import { logger } from "../../../../logger.js";
6
+ import * as cheerio from "cheerio";
7
+ import TurndownService from "turndown";
8
+ import { z } from "zod";
9
+ const ALLOWED_HOSTS = new Set([
10
+ "docs.confluent.io",
11
+ "developer.confluent.io",
12
+ "support.confluent.io",
13
+ ]);
14
+ const USER_AGENT = "mcp-confluent/get-product-doc-page";
15
+ const REQUEST_TIMEOUT_MS = 10_000;
16
+ const getProductDocPageArguments = z.object({
17
+ url: z
18
+ .url()
19
+ .describe("Absolute URL of a page under https://docs.confluent.io/, https://developer.confluent.io/, or https://support.confluent.io/. Prefer URLs returned by search-product-docs."),
20
+ });
21
+ export class GetProductDocPageHandler extends BaseToolHandler {
22
+ turndown = new TurndownService({
23
+ headingStyle: "atx",
24
+ codeBlockStyle: "fenced",
25
+ bulletListMarker: "-",
26
+ });
27
+ async handle(_runtime, toolArguments) {
28
+ const { url } = getProductDocPageArguments.parse(toolArguments);
29
+ const parsed = new URL(url);
30
+ if (parsed.protocol !== "https:" ||
31
+ !ALLOWED_HOSTS.has(parsed.hostname)) {
32
+ return this.createResponse(`Hostname '${parsed.hostname}' is not allowed. Only docs.confluent.io, developer.confluent.io, and support.confluent.io are supported.`, true);
33
+ }
34
+ try {
35
+ switch (parsed.hostname) {
36
+ case "docs.confluent.io":
37
+ return await this.fetchFromDocsConfluent(parsed);
38
+ case "developer.confluent.io":
39
+ return await this.fetchFromDeveloperConfluent(parsed);
40
+ case "support.confluent.io":
41
+ return await this.fetchFromSupportZendesk(parsed);
42
+ }
43
+ }
44
+ catch (error) {
45
+ const message = error instanceof Error ? error.message : String(error);
46
+ logger.warn({ url, error: message }, "get-product-doc-page fetch failed");
47
+ return this.createResponse(`Failed to fetch ${url}: ${message}`, true);
48
+ }
49
+ }
50
+ // Sphinx publishes a .md twin at the same path; HTML scrape is the fallback.
51
+ async fetchFromDocsConfluent(parsed) {
52
+ const mdResponse = await fetchWithTimeout(toMarkdownTwin(parsed), {
53
+ headers: { "user-agent": USER_AGENT, accept: "text/markdown,text/plain" },
54
+ });
55
+ if (mdResponse.ok &&
56
+ (mdResponse.headers.get("content-type") ?? "")
57
+ .toLowerCase()
58
+ .includes("markdown")) {
59
+ const body = (await mdResponse.text()).trim();
60
+ return this.formatResponse(parsed, undefined, body);
61
+ }
62
+ // 404s on docs.confluent.io soft-redirect to /index.html; reject path
63
+ // changes so we don't return the homepage as if it were the requested page.
64
+ const html = await this.fetchHtml(parsed, { rejectRedirect: true });
65
+ const $ = cheerio.load(html);
66
+ const main = $("div.rst-content").first();
67
+ const target = main.length > 0 ? main : $("body");
68
+ return this.formatResponse(parsed, undefined, this.toMarkdown(target.html()));
69
+ }
70
+ // Gatsby site has hashed CSS classes; key off stable data-swiftype-* attributes.
71
+ async fetchFromDeveloperConfluent(parsed) {
72
+ const html = await this.fetchHtml(parsed);
73
+ const $ = cheerio.load(html);
74
+ // <section data-test-id="section"> wraps both content and footer chrome
75
+ // (Cloud promo, newsletter). Real content is 3KB+ text; chrome is < 1KB.
76
+ $('section[data-test-id="section"]').each((_, el) => {
77
+ if ($(el).text().trim().length < 1500)
78
+ $(el).remove();
79
+ });
80
+ const title = $('[data-swiftype-name="title"]').first().text().trim();
81
+ let bodyHtml = null;
82
+ const swiftypeBody = $('[data-swiftype-name="body"]').first();
83
+ if (swiftypeBody.length > 0) {
84
+ swiftypeBody.find('[data-swiftype-index="false"]').remove();
85
+ bodyHtml = swiftypeBody.html();
86
+ }
87
+ else {
88
+ const fromPageData = await this.fetchFromGatsbyPageData(parsed);
89
+ if (fromPageData)
90
+ return fromPageData;
91
+ // Quickstart pages have no Swiftype body — content lives in <section> blocks.
92
+ const sections = $('section[data-test-id="section"]');
93
+ if (sections.length > 0) {
94
+ sections.find('[data-swiftype-index="false"]').remove();
95
+ bodyHtml = sections
96
+ .map((_, el) => $.html(el))
97
+ .get()
98
+ .join("\n");
99
+ }
100
+ else {
101
+ // Tutorial pages (/confluent-tutorials/...) have neither marker —
102
+ // strip <body> chrome and keep the rest.
103
+ const body = $("body");
104
+ body
105
+ .find('header, footer, nav, script, style, noscript, [data-swiftype-index="false"]')
106
+ .remove();
107
+ const stripped = body.html()?.trim();
108
+ if (stripped)
109
+ bodyHtml = stripped;
110
+ }
111
+ }
112
+ if (!bodyHtml) {
113
+ return this.createResponse(`Could not locate article body for ${parsed.toString()}. The page structure may have changed.`, true);
114
+ }
115
+ return this.formatResponse(parsed, title || undefined, this.toMarkdown(bodyHtml));
116
+ }
117
+ // Zendesk Help Center: prefer the public JSON API for clean body; HTML scrape is the fallback.
118
+ async fetchFromSupportZendesk(parsed) {
119
+ const articleId = parsed.pathname.match(/\/articles\/(\d+)/)?.[1];
120
+ if (articleId) {
121
+ const apiResponse = await fetchWithTimeout(`https://support.confluent.io/api/v2/help_center/articles/${articleId}.json`, {
122
+ headers: { "user-agent": USER_AGENT, accept: "application/json" },
123
+ });
124
+ if (apiResponse.ok) {
125
+ const { article } = (await apiResponse.json());
126
+ if (article?.body) {
127
+ return this.formatResponse(parsed, article.title, this.toMarkdown(article.body));
128
+ }
129
+ }
130
+ }
131
+ const html = await this.fetchHtml(parsed);
132
+ const $ = cheerio.load(html);
133
+ const article = $("article#main-content").first();
134
+ if (article.length === 0) {
135
+ return this.createResponse(`Could not locate article body for ${parsed.toString()}. ` +
136
+ `This URL may be a Help Center index or category page; only article URLs (containing "/articles/<id>") are supported.`, true);
137
+ }
138
+ return this.formatResponse(parsed, undefined, this.toMarkdown(article.html()));
139
+ }
140
+ // CSR pages (e.g. /get-started/<lang>/) expose their real content as JSON
141
+ // at /page-data/<path>/page-data.json instead of in the SSR HTML.
142
+ async fetchFromGatsbyPageData(parsed) {
143
+ const pageDataUrl = `${parsed.origin}/page-data${parsed.pathname.replace(/\/?$/, "/")}page-data.json`;
144
+ const resp = await fetchWithTimeout(pageDataUrl, {
145
+ headers: { "user-agent": USER_AGENT, accept: "application/json" },
146
+ });
147
+ if (!resp.ok)
148
+ return null;
149
+ let data;
150
+ try {
151
+ data = (await resp.json());
152
+ }
153
+ catch {
154
+ return null;
155
+ }
156
+ const ctx = data?.result?.pageContext;
157
+ const cm = ctx?.contentMappings;
158
+ if (!cm || typeof cm !== "object")
159
+ return null;
160
+ // If the URL has a fragment (e.g. #produce-events), return only that section.
161
+ const sections = parsed.hash && cm[parsed.hash] ? [cm[parsed.hash]] : Object.values(cm);
162
+ const html = sections.join("\n");
163
+ if (!html)
164
+ return null;
165
+ const title = ctx?.hero?.title ?? ctx?.seo?.title;
166
+ return this.formatResponse(parsed, title || undefined, this.toMarkdown(html));
167
+ }
168
+ async fetchHtml(parsed, opts) {
169
+ const response = await fetchWithTimeout(parsed.toString(), {
170
+ headers: { "user-agent": USER_AGENT },
171
+ });
172
+ if (!response.ok) {
173
+ throw new Error(`${response.status} ${response.statusText}`);
174
+ }
175
+ if (opts?.rejectRedirect) {
176
+ const finalPath = new URL(response.url || parsed.toString()).pathname;
177
+ if (finalPath !== parsed.pathname) {
178
+ throw new Error(`${parsed.toString()} redirected to ${finalPath}; page may have been moved or removed.`);
179
+ }
180
+ }
181
+ return response.text();
182
+ }
183
+ toMarkdown(html) {
184
+ return this.turndown.turndown(html ?? "").trim();
185
+ }
186
+ formatResponse(parsed, title, body) {
187
+ const heading = title ? `# ${title}\n\n` : "";
188
+ return this.createResponse(`# Source: ${parsed.toString()}\n\n${heading}${body}`);
189
+ }
190
+ getToolConfig() {
191
+ return {
192
+ name: ToolName.GET_PRODUCT_DOC_PAGE,
193
+ description: "Fetch the full markdown content of a Confluent product documentation page. Accepts URLs under https://docs.confluent.io/, https://developer.confluent.io/, or https://support.confluent.io/. Use this after search-product-docs to read a result's full content.",
194
+ inputSchema: getProductDocPageArguments.shape,
195
+ annotations: READ_ONLY,
196
+ };
197
+ }
198
+ predicate = alwaysEnabled;
199
+ }
200
+ function toMarkdownTwin(parsed) {
201
+ const twin = new URL(parsed.toString());
202
+ if (twin.pathname.endsWith(".html")) {
203
+ twin.pathname = twin.pathname.slice(0, -".html".length) + ".md";
204
+ }
205
+ else if (twin.pathname.endsWith("/")) {
206
+ twin.pathname += "index.md";
207
+ }
208
+ else {
209
+ twin.pathname += ".md";
210
+ }
211
+ return twin.toString();
212
+ }
213
+ // Adds a 10s deadline and re-checks the post-redirect host so a 3xx
214
+ // can't escape ALLOWED_HOSTS. Relabels TimeoutError with URL and budget.
215
+ async function fetchWithTimeout(url, init) {
216
+ try {
217
+ const response = await nodeFetch.fetch(url, {
218
+ ...init,
219
+ signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS),
220
+ });
221
+ const finalHost = new URL(response.url || url).hostname;
222
+ if (!ALLOWED_HOSTS.has(finalHost)) {
223
+ throw new Error(`Request to ${url} redirected to disallowed host ${finalHost}`);
224
+ }
225
+ return response;
226
+ }
227
+ catch (err) {
228
+ if (err instanceof Error && err.name === "TimeoutError") {
229
+ throw new Error(`Request to ${url} timed out after ${REQUEST_TIMEOUT_MS}ms`);
230
+ }
231
+ throw err;
232
+ }
233
+ }
234
+ //# sourceMappingURL=get-product-doc-page-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-product-doc-page-handler.js","sourceRoot":"","sources":["../../../../../src/confluent/tools/handlers/docs/get-product-doc-page-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { CallToolResult } from "../../../../confluent/schema.js";
2
+ import { BaseToolHandler, ToolConfig } from "../../../../confluent/tools/base-tools.js";
3
+ import { ServerRuntime } from "../../../../server-runtime.js";
4
+ export declare class SearchProductDocsHandler extends BaseToolHandler {
5
+ handle(_runtime: ServerRuntime, toolArguments: Record<string, unknown>): Promise<CallToolResult>;
6
+ private searchSwiftype;
7
+ private searchDeveloperProxy;
8
+ /** Zendesk Help Center public search API — no auth, support hits only. */
9
+ private searchSupportZendesk;
10
+ getToolConfig(): ToolConfig;
11
+ readonly predicate: import("../../../../confluent/tools/connection-predicates.js").ConnectionPredicate;
12
+ }
13
+ //# sourceMappingURL=search-product-docs-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-product-docs-handler.d.ts","sourceRoot":"","sources":["../../../../../src/confluent/tools/handlers/docs/search-product-docs-handler.ts"],"names":[],"mappings":"AACA,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;AAwDvD,qBAAa,wBAAyB,SAAQ,eAAe;IACrD,MAAM,CACV,QAAQ,EAAE,aAAa,EACvB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACrC,OAAO,CAAC,cAAc,CAAC;YAkDZ,cAAc;YAgCd,oBAAoB;IA4ClC,0EAA0E;YAC5D,oBAAoB;IA6BlC,aAAa,IAAI,UAAU;IAW3B,QAAQ,CAAC,SAAS,8EAAiB;CACpC"}
@@ -0,0 +1,285 @@
1
+ import { nodeFetch } from "../../../../confluent/node-deps.js";
2
+ import { BaseToolHandler, READ_ONLY, } from "../../../../confluent/tools/base-tools.js";
3
+ import { alwaysEnabled } from "../../../../confluent/tools/connection-predicates.js";
4
+ import { ToolName } from "../../../../confluent/tools/tool-name.js";
5
+ import { logger } from "../../../../logger.js";
6
+ import { z } from "zod";
7
+ // Public search-only key from docs.confluent.io frontend; safe to hardcode.
8
+ const SWIFTYPE_ENGINE_KEY = "FbBthqzRNii8B32is9R2";
9
+ const SWIFTYPE_SEARCH_URL = "https://search-api.swiftype.com/api/v1/public/engines/search.json";
10
+ const DEVELOPER_SEARCH_URL = "https://developer.confluent.io/api/search";
11
+ const SUPPORT_SEARCH_URL = "https://support.confluent.io/api/v2/help_center/articles/search.json";
12
+ const ALLOWED_HOSTS = new Set([
13
+ "docs.confluent.io",
14
+ "developer.confluent.io",
15
+ "support.confluent.io",
16
+ ]);
17
+ const DEVELOPER_CONTENT_TYPES = [
18
+ "documentation",
19
+ "tutorial",
20
+ "course",
21
+ "article",
22
+ "quickstart",
23
+ "recipe",
24
+ "pattern",
25
+ "faq",
26
+ ];
27
+ const DESCRIPTION_MAX_LENGTH = 300;
28
+ const USER_AGENT = "mcp-confluent/search-product-docs";
29
+ const REQUEST_TIMEOUT_MS = 10_000;
30
+ const searchProductDocsArguments = z.object({
31
+ query: z
32
+ .string()
33
+ .trim()
34
+ .min(1)
35
+ .describe("Keyword or phrase to search for in Confluent product docs."),
36
+ limit: z.coerce
37
+ .number()
38
+ .int()
39
+ .positive()
40
+ .max(50)
41
+ .default(10)
42
+ .describe("Maximum number of results to return (1-50, default 10)."),
43
+ });
44
+ export class SearchProductDocsHandler extends BaseToolHandler {
45
+ async handle(_runtime, toolArguments) {
46
+ const { query, limit } = searchProductDocsArguments.parse(toolArguments);
47
+ const [docsSettled, developerSettled, supportSettled] = await Promise.allSettled([
48
+ this.searchSwiftype(query, limit),
49
+ this.searchDeveloperProxy(query, limit),
50
+ this.searchSupportZendesk(query, limit),
51
+ ]);
52
+ const warnings = [];
53
+ // Whichever backend pushes into a bucket first leads it.
54
+ // dev-proxy is curated, so its hits outrank Swiftype's; Swiftype fills gaps.
55
+ const all = [
56
+ ...extractResults(developerSettled, "developer.confluent.io", warnings),
57
+ ...extractResults(supportSettled, "support.confluent.io", warnings),
58
+ ...extractResults(docsSettled, "docs.confluent.io", warnings),
59
+ ];
60
+ // Bucket by URL hostname, not backend: Swiftype indexes *.confluent.io
61
+ // and dev-proxy returns docs URLs, so backend→bucket would starve slots.
62
+ const buckets = {
63
+ "docs.confluent.io": [],
64
+ "developer.confluent.io": [],
65
+ "support.confluent.io": [],
66
+ };
67
+ for (const r of all)
68
+ buckets[r.source].push(r);
69
+ const merged = interleaveAndDedupe([
70
+ buckets["docs.confluent.io"],
71
+ buckets["developer.confluent.io"],
72
+ buckets["support.confluent.io"],
73
+ ], limit);
74
+ const payload = { results: merged, warnings };
75
+ if (merged.length === 0) {
76
+ payload.message = `No results found for "${query}".`;
77
+ }
78
+ return this.createResponse(JSON.stringify(payload, null, 2), merged.length === 0 && warnings.length > 0);
79
+ }
80
+ async searchSwiftype(query, limit) {
81
+ // Over-fetch: host-filtering may drop hits before we reach `limit`.
82
+ const params = new URLSearchParams({
83
+ engine_key: SWIFTYPE_ENGINE_KEY,
84
+ q: query,
85
+ per_page: String(Math.min(50, limit * 3)),
86
+ page: "1",
87
+ });
88
+ const json = await fetchSourceJson(`${SWIFTYPE_SEARCH_URL}?${params.toString()}`, { headers: { "user-agent": USER_AGENT, accept: "application/json" } }, "Swiftype");
89
+ const hits = json.records?.page ?? [];
90
+ return hits
91
+ .map((h) => {
92
+ const url = typeof h.url === "string" ? h.url : "";
93
+ const source = sourceForUrl(url);
94
+ if (source === null)
95
+ return null;
96
+ return {
97
+ title: coerceTitle(h.title) ?? url,
98
+ url,
99
+ description: buildDescription(h.highlight?.body, h.body),
100
+ source,
101
+ };
102
+ })
103
+ .filter((r) => r !== null);
104
+ }
105
+ async searchDeveloperProxy(query, limit) {
106
+ const json = await fetchSourceJson(DEVELOPER_SEARCH_URL, {
107
+ method: "POST",
108
+ headers: {
109
+ "content-type": "application/json",
110
+ "user-agent": USER_AGENT,
111
+ accept: "application/json",
112
+ },
113
+ body: JSON.stringify({
114
+ query,
115
+ page: 1,
116
+ perPage: limit,
117
+ contentTypes: DEVELOPER_CONTENT_TYPES,
118
+ }),
119
+ }, "developer.confluent.io /api/search");
120
+ const results = [];
121
+ for (const contentType of DEVELOPER_CONTENT_TYPES) {
122
+ const items = json[contentType]?.items ?? [];
123
+ for (const item of items) {
124
+ const url = typeof item.url === "string" ? item.url : "";
125
+ const source = sourceForUrl(url);
126
+ if (source === null)
127
+ continue;
128
+ results.push({
129
+ title: coerceTitle(item.title) ?? url,
130
+ url,
131
+ description: buildDescription(item.highlight?.body, item.description, item.body),
132
+ source,
133
+ });
134
+ }
135
+ }
136
+ return results;
137
+ }
138
+ /** Zendesk Help Center public search API — no auth, support hits only. */
139
+ async searchSupportZendesk(query, limit) {
140
+ const params = new URLSearchParams({
141
+ query,
142
+ per_page: String(limit),
143
+ });
144
+ const json = await fetchSourceJson(`${SUPPORT_SEARCH_URL}?${params.toString()}`, { headers: { "user-agent": USER_AGENT, accept: "application/json" } }, "Zendesk");
145
+ const hits = json.results ?? [];
146
+ return hits
147
+ .map((h) => {
148
+ const url = typeof h.html_url === "string" ? h.html_url : "";
149
+ const source = sourceForUrl(url);
150
+ if (source === null)
151
+ return null;
152
+ return {
153
+ title: coerceTitle(h.title) ?? url,
154
+ url,
155
+ description: buildDescription(h.snippet, h.body),
156
+ source,
157
+ };
158
+ })
159
+ .filter((r) => r !== null);
160
+ }
161
+ getToolConfig() {
162
+ return {
163
+ name: ToolName.SEARCH_PRODUCT_DOCS,
164
+ description: "Search Confluent product documentation (docs.confluent.io, developer.confluent.io, support.confluent.io) by keyword.",
165
+ inputSchema: searchProductDocsArguments.shape,
166
+ annotations: READ_ONLY,
167
+ };
168
+ }
169
+ // No service-block requirement; enabled on any connection.
170
+ predicate = alwaysEnabled;
171
+ }
172
+ /** Fetches JSON with a timeout. Errors are rethrown prefixed with `label`. */
173
+ async function fetchSourceJson(url, init, label) {
174
+ let response;
175
+ try {
176
+ response = await nodeFetch.fetch(url, {
177
+ ...init,
178
+ signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS),
179
+ });
180
+ }
181
+ catch (err) {
182
+ if (err instanceof Error && err.name === "TimeoutError") {
183
+ throw new Error(`${label} timed out after ${REQUEST_TIMEOUT_MS}ms`);
184
+ }
185
+ throw err;
186
+ }
187
+ if (!response.ok) {
188
+ throw new Error(`${label} ${response.status} ${response.statusText}`);
189
+ }
190
+ return (await response.json());
191
+ }
192
+ function extractResults(settled, source, warnings) {
193
+ if (settled.status === "fulfilled")
194
+ return settled.value;
195
+ const reason = settled.reason instanceof Error
196
+ ? settled.reason.message
197
+ : String(settled.reason);
198
+ warnings.push(`${source} search failed: ${reason}`);
199
+ logger.warn({ source, reason }, "search-product-docs source failed");
200
+ return [];
201
+ }
202
+ // Indices into [docs, developer, support]: docs and dev get 2× weight, support 1×.
203
+ const PICKUP_PATTERN = [0, 1, 1, 0, 2];
204
+ /** Interleaves sources per PICKUP_PATTERN, dedupes by URL, stops at `limit`. */
205
+ function interleaveAndDedupe(sources, limit) {
206
+ const seen = new Set();
207
+ const out = [];
208
+ const indices = sources.map(() => 0);
209
+ let progressed = true;
210
+ while (out.length < limit && progressed) {
211
+ progressed = false;
212
+ for (const s of PICKUP_PATTERN) {
213
+ if (out.length >= limit)
214
+ break;
215
+ const list = sources[s];
216
+ while (indices[s] < list.length) {
217
+ const r = list[indices[s]++];
218
+ progressed = true;
219
+ if (!seen.has(r.url)) {
220
+ seen.add(r.url);
221
+ out.push(r);
222
+ break;
223
+ }
224
+ }
225
+ }
226
+ }
227
+ return out;
228
+ }
229
+ function sourceForUrl(url) {
230
+ try {
231
+ const parsed = new URL(url);
232
+ if (parsed.protocol !== "https:")
233
+ return null;
234
+ if (ALLOWED_HOSTS.has(parsed.hostname))
235
+ return parsed.hostname;
236
+ return null;
237
+ }
238
+ catch {
239
+ return null;
240
+ }
241
+ }
242
+ /**
243
+ * Title may be a string or a `[seo, display]` array; pick the shorter one
244
+ * (usually the cleaner display title). Returns null if no usable title.
245
+ */
246
+ function coerceTitle(title) {
247
+ if (typeof title === "string")
248
+ return title.trim() || null;
249
+ if (Array.isArray(title)) {
250
+ const strings = title.filter((t) => typeof t === "string");
251
+ if (strings.length === 0)
252
+ return null;
253
+ const sorted = [...strings].sort((a, b) => a.length - b.length);
254
+ return sorted[0].trim() || null;
255
+ }
256
+ return null;
257
+ }
258
+ function buildDescription(...candidates) {
259
+ for (const candidate of candidates) {
260
+ if (!candidate)
261
+ continue;
262
+ const cleaned = stripHtmlAndCollapse(candidate);
263
+ if (cleaned.length > 0)
264
+ return truncate(cleaned, DESCRIPTION_MAX_LENGTH);
265
+ }
266
+ return "";
267
+ }
268
+ function stripHtmlAndCollapse(html) {
269
+ return html
270
+ .replaceAll(/<[^>]+>/g, " ")
271
+ .replaceAll("&nbsp;", " ")
272
+ .replaceAll("&amp;", "&")
273
+ .replaceAll("&lt;", "<")
274
+ .replaceAll("&gt;", ">")
275
+ .replaceAll("&quot;", '"')
276
+ .replaceAll("&#39;", "'")
277
+ .replaceAll(/\s+/g, " ")
278
+ .trim();
279
+ }
280
+ function truncate(text, max) {
281
+ if (text.length <= max)
282
+ return text;
283
+ return text.slice(0, max - 1).trimEnd() + "…";
284
+ }
285
+ //# sourceMappingURL=search-product-docs-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-product-docs-handler.js","sourceRoot":"","sources":["../../../../../src/confluent/tools/handlers/docs/search-product-docs-handler.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
- import { ClientManager } from "../../../../confluent/client-manager.js";
2
1
  import { CallToolResult } from "../../../../confluent/schema.js";
3
2
  import { BaseToolHandler, ToolConfig } from "../../../../confluent/tools/base-tools.js";
4
- import { EnvVar } from "../../../../env-schema.js";
3
+ import { ServerRuntime } from "../../../../server-runtime.js";
5
4
  import { z } from "zod";
6
5
  /**
7
6
  * Schema for validating Confluent Cloud environment responses
@@ -52,9 +51,8 @@ export declare const environmentListSchema: z.ZodObject<{
52
51
  export type Environment = z.infer<typeof environmentSchema>;
53
52
  export type EnvironmentList = z.infer<typeof environmentListSchema>;
54
53
  export declare class ListEnvironmentsHandler extends BaseToolHandler {
55
- handle(clientManager: ClientManager, toolArguments: Record<string, unknown>): Promise<CallToolResult>;
54
+ handle(runtime: ServerRuntime, toolArguments: Record<string, unknown>): Promise<CallToolResult>;
56
55
  getToolConfig(): ToolConfig;
57
- getRequiredEnvVars(): readonly EnvVar[];
58
- isConfluentCloudOnly(): boolean;
56
+ readonly predicate: import("../../../../confluent/tools/connection-predicates.js").ConnectionPredicate;
59
57
  }
60
58
  //# sourceMappingURL=list-environments-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-environments-handler.d.ts","sourceRoot":"","sources":["../../../../../src/confluent/tools/handlers/environments/list-environments-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EACL,eAAe,EAEf,UAAU,EACX,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAEL,MAAM,EACP,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;iBAiB5B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;iBAahC,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,qBAAa,uBAAwB,SAAQ,eAAe;IACpD,MAAM,CACV,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACrC,OAAO,CAAC,cAAc,CAAC;IAkG1B,aAAa,IAAI,UAAU;IAU3B,kBAAkB,IAAI,SAAS,MAAM,EAAE;IAIvC,oBAAoB,IAAI,OAAO;CAGhC"}
1
+ {"version":3,"file":"list-environments-handler.d.ts","sourceRoot":"","sources":["../../../../../src/confluent/tools/handlers/environments/list-environments-handler.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;AAEvD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;iBAiB5B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;iBAahC,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,qBAAa,uBAAwB,SAAQ,eAAe;IACpD,MAAM,CACV,OAAO,EAAE,aAAa,EACtB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACrC,OAAO,CAAC,cAAc,CAAC;IAmG1B,aAAa,IAAI,UAAU;IAS3B,QAAQ,CAAC,SAAS,8EAA4B;CAC/C"}
@@ -1,6 +1,6 @@
1
1
  import { BaseToolHandler, READ_ONLY, } from "../../../../confluent/tools/base-tools.js";
2
+ import { hasConfluentCloudOrOAuth } from "../../../../confluent/tools/connection-predicates.js";
2
3
  import { ToolName } from "../../../../confluent/tools/tool-name.js";
3
- import { CCLOUD_CONTROL_PLANE_REQUIRED_ENV_VARS, } from "../../../../env-schema.js";
4
4
  import { logger } from "../../../../logger.js";
5
5
  import { wrapAsPathBasedClient } from "openapi-fetch";
6
6
  import { z } from "zod";
@@ -46,7 +46,8 @@ export const environmentListSchema = z.object({
46
46
  data: z.array(environmentSchema),
47
47
  });
48
48
  export class ListEnvironmentsHandler extends BaseToolHandler {
49
- async handle(clientManager, toolArguments) {
49
+ async handle(runtime, toolArguments) {
50
+ const clientManager = runtime.clientManager;
50
51
  const { pageToken } = listEnvironmentsArguments.parse(toolArguments);
51
52
  try {
52
53
  const pathBasedClient = wrapAsPathBasedClient(clientManager.getConfluentCloudRestClient());
@@ -119,11 +120,6 @@ Pagination:${metadata.total_size ? `\n Total Environments: ${metadata.total_siz
119
120
  annotations: READ_ONLY,
120
121
  };
121
122
  }
122
- getRequiredEnvVars() {
123
- return CCLOUD_CONTROL_PLANE_REQUIRED_ENV_VARS;
124
- }
125
- isConfluentCloudOnly() {
126
- return true;
127
- }
123
+ predicate = hasConfluentCloudOrOAuth;
128
124
  }
129
125
  //# sourceMappingURL=list-environments-handler.js.map